This page (revision-5) was last changed on 2024-05-31 00:03 by Murray Altheim

This page was created on 2024-05-30 22:45 by Murray Altheim

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
5 2024-05-31 00:03 4 KB Murray Altheim to previous
4 2024-05-31 00:00 4 KB Murray Altheim to previous | to last
3 2024-05-30 23:01 3 KB Murray Altheim to previous | to last
2 2024-05-30 22:58 3 KB Murray Altheim to previous | to last
1 2024-05-30 22:45 2 KB Murray Altheim to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 3 changed one line
There's also a [Steering Calculation] page describing some Python code for calculating the wheel angle for inner and outer wheels when turning using independent four or six wheel steering.
! Steering Mechanism
At line 5 changed one line
! Goals
A __steering mechanism__ is the mechanical means by which steering is accomplished. A normal automobile steers using what's called Ackermann steering. That's its mechanism as well as its mode, since that's the only way a car can steer.
At line 7 changed one line
The goals of most robot steering include:
A steering mode is the manner in which steering is done. For a four or six wheel robot with independent steering on each wheel, it's possible to mimic Ackermann steering, but also other styles, even "retrograde" styles such as Skid steering, e.g., to ignore the steering servos, lock each wheel at perpendicular/90° to the robot's centerline, and just use the different in port and starboard wheel velocity to change direction.
At line 9 changed 6 lines
* skid-free (apart from skid/tank style steering where this is the norm)
* simultaneous driving and steering
* bounded acceleration
* bounded velocity
* bounded steering angles
* and maybe something like no tipping over, or a minimum margin of stability or footprint
A 2 wheel differential drive robot (with a caster, or self-balancing) has one mechanism and one mode of steering:
At line 16 changed one line
(thanks to Calle on [Personal Robotics] for this list)
* __Differential Steering__: where the difference in port-starboard wheel velocity determines the steering angle (which we'll call ''theta''). Because there's only two wheels there's no skidding.
At line 13 added one line
If your robot has 4-6 wheels but only two motor controllers, i.e., all motors on each side operate at the same speed, that's:
At line 19 changed one line
! Steering Mechanism
* __Skid Steering__: this is like Differential Steering but because as the robot turns each of its wheels is going a different velocity in relation to the robot's velocity, it causes ''wheel scrub'', skidding or sliding like a tank.
At line 21 removed 11 lines
[{Image src='attach/Steering/SteeringServo.png' link='attach/Steering/SteeringServo.pngg' width='300' caption='A steering servo mechanism (click to enlarge)' align='right' class='imgFloatRight'}]
A __Steering Mechanism__ is the mechanical means by which steering is accomplished.
Many robots and other vehicles have a steering mode that is the same as (i.e., is limited to) its steering mechanism. A normal automobile steers using what's called Ackermann steering. That's both its mechanism as well as its mode, since that's the only way a car can steer. For a four or six wheel robot with independent steering on each wheel, it's possible to mimic Ackermann steering, but also other styles, even "retrograde" styles such as Skid steering, e.g., to ignore the steering servos, lock each wheel at perpendicular/90° to the robot's centerline, and just use the different in port and starboard wheel velocity to change direction.
* __Ackermann steering__: The angle of the rear wheels are fixed in place, with the front wheels able to pivot on a steering axis.
* __Differential Steering__: where all wheels' angles are fixed, with the difference in port-starboard wheel velocity determining the steering angle (which we'll call ''theta'', more on that below…). Because there's only two wheels there's no skidding. A 2 wheel differential drive robot (with a caster, or self-balancing) has just this one mechanism and mode of steering.
* __Skid Steering__: this is like Differential Steering but because as the robot turns each of its wheels is going a different velocity in relation to the robot's velocity, it causes ''wheel scrub'', skidding or sliding like a tank. If your robot has 4-6 wheels but only two motor controllers, i.e., all motors on each side operate at the same speed, this is its mechanism and mode.
* __Independent Steering__: this is where every wheel assembly has its own independent steering mechanism. Clearly, the angles need to be carefully coordinated, as there are only certain angles where skidding is minimised or eliminated, and some angles where the robot could not move at all. See the [Steering Calculation] page for details.
At line 22 added one line
At line 39 removed 2 lines
A __Steering Mode__ is the ''manner'' in which steering is done.
At line 53 removed 11 lines
! Steering via Velocity and Theta
When programming movement of a robot it's possible to set each motor's velocity to Skid-steer the robot. So you might set the port (left) side velocity at 80% and the starboard (right) side velocity at 20%, causing the robot to turn to starboard.
When you add the availability of steering servos, things get more complicated. And this points out a better way of approaching the design of a robot's navigation, using two variables: ''velocity'' and ''theta'' (turning angle).
More on this later…
(BTW, the easy way to remember port and starboard is that "port" and "left" both have four letters.)