Go to Post While in the Navy, we had an apparent leak in one of our systems and it took me 7 months to track it down. Just because you haven't found it, doesn't mean it doesn't exist. - TubaMorg [more]
Home
Go Back   Chief Delphi > Technical > Control System
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
 
Thread Tools Rate Thread Display Modes
Prev Previous Post   Next Post Next
  #3   Spotlight this post!  
Unread 10-02-2016, 15:05
Jared Russell's Avatar
Jared Russell Jared Russell is offline
Taking a year (mostly) off
FRC #0254 (The Cheesy Poofs), FRC #0341 (Miss Daisy)
Team Role: Engineer
 
Join Date: Nov 2002
Rookie Year: 2001
Location: San Francisco, CA
Posts: 3,064
Jared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond repute
Re: Field Positioning with IMU

This is the right question to ask!

In the presentation, we mostly talked about the case where major disturbances are not expected, because this is simpler (still, I think the presentation was a bit too technically deep for most of the audience and we'll tweak our next one).

There are lots of strategies for how to deal with this, but generally they all boil down to some variation of the following:

1. Estimate where you believe your robot to be (from some combination of sensors as you describe)

2. Determine where you would like your robot to be right now (based on elapsed time in a trajectory, or the nearest point on a path, or something else).

3. Figure out the components of the error between these two poses (with respect to your current pose). There are naturally three parts:

a. Along-track error. Your robot is lagging behind (or leading) the desired pose.
b. Cross-track error. Your robot is deviating to the side of the desired pose.
c. Angular error. Your robot orientation is deviating from the desired pose.

4. Construct a controller to drive these sources of error to zero. PID controllers work just fine. For a holonomic robot, this is easy: put a PID controller on the x velocity (fwd/rev) based on along-track error; a PID controller on the y velocity (strafe) based on cross-track error; and a PID controller on the angular velocity based on the angular error.

For a non-holonomic robot, you can't strafe, but you can steer back towards the path...you actually want a PID controller that maps from cross-track error to a steering adjustment (if you are to the right, steer a bit left, etc.).

5. Execute your PID controllers, add in feedforward gains (from your original trajectory, for example), and now you have new desired velocities for your motors.

-----

Note that, as with most things, the devil is in the details and you will need to make sure you choose your desired pose carefully (using the time-indexed trajectory is simplest), and ensure your controllers don't end up fighting each other (since in the non-holonomic case, you will have two controllers that both want to affect steering...the easiest way to do this is make the output from the cross-track error controller be the input to the angular-error controller).
Reply With Quote
 


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 09:07.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


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