View Single Post
  #11   Spotlight this post!  
Unread 04-02-2017, 15:45
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,082
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: Path Planning and Trajectory Troubles

I suspect that your robot's actual kinematics and dynamics don't match the model your trajectory generator assumes.

An ideal differential drive robot only has two fixed wheels (plus friction-free casters, skids, or omniwheels for stability) and turns in place about the center of the axis of rotation of the wheels. This type of robot can turn without ever slipping its driven wheels because the axle is always tangent to the direction of motion. You can determine the necessary wheel speed/displacement by multiplying angular speed/displacement by half your wheelbase.

However, once you have more than two fixed wheels on the floor, your kinematics for steering change (here's some light reading on the topic). For example, a 4 wheel drive robot turns about a point somewhere between the four wheels (where exactly is a function of traction and weight distribution). This means that any turning motion necessarily results in some wheel slip. However, if you know where the center of rotation is, you can deal with the fact that your axles are no longer tangent to the direction of motion and command a velocity/displacement that compensates.

A 6 wheel drive robot is even more interesting. If you have no wheel drop, your drivetrain is now a statically indeterminate system. If you have wheel drop, your drivetrain may behave like an "ideal" 2 wheel drive robot most of the time, but may act more like a front- or rear- biased 4 wheel drive due to dynamics as you accelerate, decelerate, or corner.

So what can you do about this? There are a few options.

1) Ignore it - model your robot as an ideal diff drive robot and only drive straight segments and turns in place.

2) Assume the center of rotation is fixed - either analytically or experimentally (which is usually what I do) come up with a best guess of "mean" center of rotation and wheel slip. As long as you don't do crazy fast maneuvers (to limit the effect of superstructure dynamics on your drivetrain) this is often good enough for FRC. In your case this would simply manifest as slightly tweaked trajectories that compensate for wheel slip and center of rotation.

3) Measure it and compensate for it. You just need a way to measure robot motion without trusting your drivetrain encoders. A gyro is the most common way to do this; you can make the assumption that the average of your left and right encoder velocities/displacements is correct (e.g. that slip due to rotation is evenly distributed left to right) but then use the gyro for heading. However, this would preclude you from being able to do the whole thing on the Talons with a precomputed trajectory (at least for this year...). Alternatively, you can use passively sprung omniwheels with encoders to measure "true" robot velocity without slippage, but this can get complex mechanically.
Reply With Quote