Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   C/C++ (http://www.chiefdelphi.com/forums/forumdisplay.php?f=183)
-   -   Arcade Drive Troubles in Autonomous (http://www.chiefdelphi.com/forums/showthread.php?t=86086)

Tanner 13-06-2010 20:12

Re: Arcade Drive Troubles in Autonomous
 
Quote:

Originally Posted by Pat Fairbank (Post 966482)
I suspect that your problem is that your RobotDrive class is not set up properly for the way your robot is wired (one side is either not inverted (using RobotDrive::SetInvertedMotor()), or inverted when it shouldn't be).

I'm not sure how that would work, cause then wouldn't teleop not drive correctly at all? There's only one way a drivetrain will correctly work, yeah (unless the joystick values are strange)?

Quote:

Originally Posted by Pat Fairbank (Post 966482)
It's probably just working in teleop mode by lucky coincidence, because your joystick setup looks strange - you're feeding what seems to be the twist axis (4) into the moveValue parameter of ArcadeDrive, and the Y-axis (2) into the rotateValue parameter.

Well, I'm not using the kit joysticks. I'm using two XBox 360 controllers, so the numbers don't exactly correspond to the names in the WPI library.

-Tanner

Pat Fairbank 13-06-2010 20:18

Re: Arcade Drive Troubles in Autonomous
 
Quote:

Originally Posted by Tanner (Post 966484)
I'm using two XBox 360 controllers, so the numbers don't exactly correspond to the names in the WPI library.

Okay, that makes sense, then. If you haven't already, maybe you should check the outputs of those axes directly with printf statements to make sure they are doing what you think they are doing in terms of axis and polarity.

Ether 13-06-2010 20:32

Re: Arcade Drive Troubles in Autonomous
 
Quote:

Originally Posted by Pat Fairbank (Post 966482)
I'm pretty sure all the Periodic/Continuous methods in IterativeRobot execute in the same thread.

Good point.

Tanner 13-06-2010 20:34

Re: Arcade Drive Troubles in Autonomous
 
Quote:

Originally Posted by Pat Fairbank (Post 966485)
Okay, that makes sense, then. If you haven't already, maybe you should check the outputs of those axes directly with printf statements to make sure they are doing what you think they are doing in terms of axis and polarity.

Yeah, I should do that. I kinda just took it directly from LabVIEW thinking that things would be the same, but you never really know. I'll write that down to check as well.

-Tanner

Tanner 15-06-2010 21:38

Re: Arcade Drive Troubles in Autonomous
 
Haven't been able to get to the office to test on the robot. Worked overtime today.

Yeah...

-Tanner

Tanner 16-06-2010 12:46

Re: Arcade Drive Troubles in Autonomous
 
Tested autonomous with just the drivetrain movement (i.e. - drivetrain->ArcadeDrive(autonomousForwardPower, 0.0);, and it still turns.

Didn't have time to test anything else (I was on my lunch break), but I will this afternoon. We're doing nothing at work today so I should be able to get off early.

-Tanner

Ether 16-06-2010 14:01

Re: Arcade Drive Troubles in Autonomous
 
Quote:

Originally Posted by Tanner (Post 966814)
Tested autonomous with just the drivetrain movement (i.e. - drivetrain->ArcadeDrive(autonomousForwardPower, 0.0);, and it still turns.

Well it wasn't time wasted - you've eliminated an entire realm of possibilities and narrowed down the problem.

Try putting
drivetrain->ArcadeDrive(0.5, 0.0);
in TeleOp and see if it still turns there.

If so, maybe "0.0" doesn't mean "straight ahead".

Do a printf of the value you are feeding in when the 'bot is going straight ahead in TeleOp, and see if it is "0.0" or some other number.


~

Tanner 16-06-2010 15:44

Re: Arcade Drive Troubles in Autonomous
 
I think the arguments for RobotDrive::ArcadeDrive are backwards somehow. Cause when I do drivetrain->ArcadeDrive(0.0, autonomousForwardPower); the robot goes forward, but when I do drivetrain->ArcadeDrive(autonomousForwardPower, 0.0); the robot turns left.

So, I checked the joystick numbers and the inversion of the drivetrain motors - they were totally wacky. The joysticks for the ArcadeDrive function were backwards and the inversion was programmed in that format, hence the robot worked, but everything was backward. Heh.

Autonomous drives in the right direction now (or rather it turns in the right direction...). All is well.

What did we learn? Never program the drivetrain with joysticks first and then do the inversions. Figure out what those values are, determine what they should be (positive or negative) or use magic numbers (like 1 and 0), then figure out the inversions.

Glad that is figured out. Now to see if it still crashes...

Thanks all!

-Tanner

Edit: And it doesn't crash with the updates, yay!


All times are GMT -5. The time now is 14:25.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi