Hi
I am in the process of building a rover with a 6WD Dagu platform and Pixhawk.
I put it together and noticed the following:
In manual mode - driving forward or backwards is fine
In manual mode - while driving forward the steering is fine
In manual mode - while driving backwards the steering is reversed
Before I installed the Pixhawk I used the "skid steering" mixer function of the motor controller to try out the platform - the steering was fine (the way I expected it to be).
Now I use the Pixhawk to do the skid steering mixing (enabled in the parameters) - but it is different while driving backwards than before (without Pixhawk).
Is this correct? Does the Pixhawk handle steering while driving backwards different?
hoping for some enlightenment :)
Felix
Replies
Nevermind, I think I have it figured out.
Thanks!
Hmm, I can't verify/compile. I get;
RCmode.ino: In function 'void RCmode()':
RCmode:5: error: 'RCspeedpin' was not declared in this scope
RCmode:6: error: 'RCsteerpin' was not declared in this scope
RCmode:11: error: 'RCdeadband' was not declared in this scope
RCmode:12: error: 'RCdeadband' was not declared in this scope
RCmode:18: error: 'lmspeed' was not declared in this scope
RCmode:19: error: 'rmspeed' was not declared in this scope
RCmode:26: error: 'Motors' was not declared in this scope
Any suggestions?
Thanks
Were you by chance using the T'rex motor controller? If so, how did you disable skid steering? I am looking at the RC Mode INO but can figure out what needs to be changed.
Thanks
Yes - I am using the T-Rex controller,
I did the following:
void RCmode()
{
//------------------------------------------------------------ Code for RC inputs ---------------------------------------------------------
int Speed=int(pulseIn(RCspeedpin,HIGH,25000)); // read throttle/left stick
int Steer=int(pulseIn(RCsteerpin,HIGH,25000)); // read steering/right stick
if (Speed==0) Speed=1500; // if pulseIn times out (25mS) then set speed to stop
if (Steer==0) Steer=1500; // if pulseIn times out (25mS) then set steer to centre
if (abs(Speed-1500)<RCdeadband) Speed=1500; // if Speed input is within deadband set to 1500 (1500uS=center position for most servos)
if (abs(Steer-1500)<RCdeadband) Steer=1500; // if Steer input is within deadband set to 1500 (1500uS=center position for most servos)
//Steer=Steer-1500;
//lmspeed=(Speed-Steer-1500)*8/10;
//rmspeed=(Speed+Steer-1500)*8/10;
lmspeed=Speed-1500;
rmspeed=Steer-1500;
if(lmspeed<-255) lmspeed=-255;
if(lmspeed>255) lmspeed=255;
if(rmspeed<-255) rmspeed=-255;
if(rmspeed>255) rmspeed=255;
Motors();
}
Hi Felix,
I configured mine as follows, but am using the sabertooth controller instead of the T-Rex (was less expensive :)
-Skid_steer_output set to 1 in parameters list
-Skid_steer_input left disabled (0)
-Sabertooth controller is set so that the left motors and right motors are controlled independently by Pixhawk (so no mixing, no skid steerring activated in the sabertooth controller)
-All left motors + cables soldered together, all left motors - cables soldered together. All right motors + cables soldered together, all right - motors soldered together.
In such a way your left motors are seen as one single track and right motors are seen as one single track.
So the controller controls the spinning direction of, in fact, each of the two tracks. You should have two motors output on your controller : one output is a red and black cable for each track (two tracks, two outputs). You have to make sure that the spinning direction is the same for each track when applying the same PWM signal on the two S1 and S2 controller's inputs. If tracks are moving in opposite direction, you have to swap one fo the track's red and black cables at one of the two outputs.
I'm not sure it is clear but I hope so...
Hi Hugues,
thank you very much for your answer.
That's exactly what I did.
But I observe the following:
a) driving only with an RC receiver, using the skid steering function of the motor controller:
- stick forward => rover drives forward (ok)
- stick backwards => rover drives backwards (ok)
- stick to the front and left => rover drives forward left turn (ok)
- stick to the front and right => rover drives forward right turn (ok)
- stick to the back and left => rover drives backwards left turn (ok)
- stick to the back and right => rover drives backwards right turn (ok)
b) driving only with the Pixhawk, skid steering function of the motor controller is deactivated, skid steering function in the Pixhawk is activated (cabling changed accordingly)
- stick forward => rover drives forward (ok)
- stick backwards => rover drives backwards (ok)
- stick to the front and left => rover drives forward left turn (ok)
- stick to the front and right => rover drives forward right turn (ok)
- stick to the back and left => rover drives backwards RIGHT turn (???)
- stick to the back and right => rover drives backwards LEFT turn (???)
do you observe the same?
Hi Felix,
With mine:
- stick to the back and left => rover nose goes left (butt goes right)
-- stick to the back and right => rover nose goes right (butt goes left)
That seems logical to me.