Ardurover on Beaglebone blue

Hi all,
I want ardurover on my beaglebone blue. I followed mirkix guidelines for that and successfully done that.
The point is how can i control my two DC motor with this setup as i am getting the two servo outputs from RC transceiver but their range is not meant for DC motor control.
I also tried with skid_steering parameter but no success.
Thanks.

I want to add that i am using PPM Encoder with RC receiver with beaglebone.

Hello,

DC motors aren’t support from ardupilot on BBBlue for now.

Hi khancyr,

Thanks for the clarification.
There are two Servo outs i saw. These are used to control SERVOs and BLDC motors through ESCs. Correct me if i am wrong.

So can i interface a simple DC motor driver with that Servo out to drive my DC motors?
If yes, can you please suggest me necessary steps and changes required for that?

Thanks.

Hi,
any suggestion?

Thanks

Hello,

The current ouput on BBBlue aren’t PWM but RC PWM (also named RC signal), so if you got a motor controler that can have it as input you could control the DC motor

Hi,
Thanks for the reply.

I know that the output is RC PWM. Just wanted to clarify that in AP_MotorUGV driver code, there is an option for -
Brushed DC motor/Bipolar brushed DC motor control.
I was thinking that by switching to those parameters there should be PWM output from beaglebone. Is this right?
If it’s not true then can you elaborate me what is difference in selecting the above parameter?

Will appreciate your help.
Thanks.

Just for the information, I am doing some experiments to control a DC motor with DC motor driver by-

  1. Select the option for Brushed Motor
  2. Enable the Servo Motor7 for throttle function.
  3. In full parameter list changing the Servo Out7 min_value and trim_value to 0 and max value > 2200 (say 5000).

The DC motor is being controlled. So here the confusion arises, i am going beyond the range of servo_out to control the DC motor. Am i doing right?

I should add a comment for the pwm type in AP_MotorUGV : it is only for pixhawk currently. On other board, changing the value shouldn’t change anything (you stay on RC PWM at 50hz)

I am surprised it works ! Maybe the ouput aren’t limited on linux board …
But at 50Hz you should put servo_out max to 20000 to get full range, and you won’t have reverse. I don’t really know if it is safe to doing that

Hi,
Thank you for the clarification. I appreciate that.

Last thing, can you please suggest me the exact driver code where the RC_input to Servo_out mapping is being done?
I am founding a bit struggling for that.

Thanks.

Hi,
how can i link external c library function with ardurover?

Hi,
Any update?

Thanks.

Also how can i enable the debugging in project?
I have seen for SITL_debug() in
"http://diydrones.com/forum/topics/simple-debug-statement-in-arudpilot-code", which header is required to be incuded for that?

If you run “sim_vehicle.py -h” it show’s you all the options.

-D will turn debugging on. Make sure you do a waf clean first so all your source code is rebuilt with debugging symbols.

Thanks, Grant.

1 Like

yes try out L293N dc motor driver to control motors speed with pwm if servo pwm out can drive this than it will be possible to drive dc motors with bbb and ardurover.

Hello All,
I want to use external IMU with Beaglebone Blue. I don’t think so it will be as simple as getting an IMU and connecting it to I2C1 port, will it? Going through the schematic I found that the internal IMU is connected to I2C2. If I extend the SDC and SCL line from I2C2 and connect second IMU, will the ardupilot detect it automatically or I have to write the driver for it?

If you have the technical knowledge and that the project justifies that you absolutetly need to get the MPU9250 externally installed, I would recommand in that case to use the SPI port . SPI has to be short path with appropriate shielding and filtering.

I am keen to get the internal DC motor drivers working for a rover (ground vehicle, 2 motors skid steering). Using an external driver is not an option (the vehicle is very small). Anyone have any ideas what is the best way of doing this?
Currently I see 2 options:

  1. Mess with Ardurover code (HAL, etc)
    http://ardupilot.org/dev/docs/rover-adding-a-new-drive-mode.html
    https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_HAL_Linux/GPIO_BBB.h
    advantage: integration, it would work with Ardurover only
    disadvantage: I don’t fully understand yet how it could be done without doing some major changes to Ardurover source

  2. connect an on board motor controller
    I have python code that drives the DC motors at specific speed (using encoder feedback). I could connect to Ardurover via mavlink (e.g.: rcpy) and control motors to respond to heading…
    Advantage: speed-control, python :slight_smile: Could build more companion computer function on-board e.g.: ROS
    Disadvantage: it is kind of backwards from the way companion computer is supposed to work.

Any ideas/opinions?