BASICS ON DEVELOPING SIMPLE ROBOT
Contents
[1.] Introduction
[2.] The Differential Steering System
[3.] Rounding a Corner
[4.] Some Preliminaries to Developing a Model
[5.] The Derivation
[6.] Dead Reckoning and Odometry
[7.] A Simpler Formula for Dead Reckoning
[8.] Acceleration
Introduction These notes present equations describing the path of a robot or vehicle equipped with a differentially steered drive system. This simple and reliable wheel-based propulsion system is commonly used in small ler robots. It is familiar from ordinary life because it is essentially the same system that is used in a wheelchair: two wheels mounted on a single axis are independently powered and controlled, thus providing both drive and steering functions. The equations in these notes provide a an elementary model for the differentially steered drive system (which is often called a differential steering system). This model can be used to predict how a robot equipped with such a system will respond to changes in its wheel speed and what path it will follow under various conditions. The model can also be used to calculate a robot's position in dead-reckoning or localization by odometry applications (techniques that estimate a robot's position based on distances measured with odometer devices mounted on each wheel). It is worth emphasizing that the equations given here do represent an elementary model for the motion of a robot or vehicle. They describe the robot's position and orientation as a function of the movement of its wheels, but ignore the underlying physics involved in making that motion happen. Issues such as torques and forces, friction, energy and inertia will be left for a more advanced discussion. In technical terms, this method of describing motion is referred to as a kinematics approach. It ignores the causes of motion (which would be studied in a dynamics approach) and focuses on the effects. These notes also ignore the many interesting details of motors, gearing, electromagnetics, power supplies, and other engineering considerations that make wheel-based actuators possible. As such they provide a first step to understanding the behavior of robots with differentially steered drive systems, not a complete description. The intended audience for this web page includes high school and undergraduate students who may not be comfortable with the calculus techniques used to develop the differential steering model. Such students should be able to "parse out" the relevant information by scanning the text and paying attention to the results in equations [3] and [5]. To really take advantage of the model requires understanding something of the math and kinematics behind it. So the discussion on this page includes a lot of background information on the problem and a more-than-customary amount of explanation. By providing so much detail, these notes should help the reader apply the differential steering model to his or her own robotic applications. The differential steering system is sometimes incorrectly called a "differential drive system." The term differential drive is used in automotive engineering to represent a kind of propulsion system that transfers power to its drive wheels through a differential gear or related device (as in the classic rear-wheel drive vehicle). Clearly, it is a different concept than the system described here. Robotics enthusiasts are careful to make the distinction. The Differential Steering System As mentioned above, the differentially steered drive system used in many robots is essentially the same arrangement as that used in a wheelchair. So, most of us have an intuitive grasp of the way it behaves. If both drive wheels turn in tandem, the robot moves in a straight line. If one wheel rotates faster than the other, the robot follows a curved path inward toward the slower wheel. If the wheels turn at equal speed, but in opposite directions, the robot pivots. Thus, steering the robot is just a matter of varying the speeds of the drive wheels. But how exactly do we choose the speeds so that the robot will move where we want it to go? In these notes, we will try to refine this intuitive understanding into mathematical expressions that can be used for implementing robot control software. |
Rounding a Corner Before tackling the differential steering model, let's consider the problem of getting a robot with a to make a 90-degree turn around a corner in a hallway or a road. A simple approach is to have the robot drive to the intersection, stop, and pivot. Clearly, though, such an approach is inefficient and a bit ungainly. A more elegant approach would be for the robot to round the corner, following a gradual circular arc through the intersection while maintaining a steady speed. To accomplish this end, we increase the speed of the outer wheel while slowing that of the inner. Is the path that the robot follows truly circular, or is it some other kind of curve? Later on, we will show that if both wheels turn at constant, but different, speeds, the robot does indeed follow a circular path. For now, just assume that path is circular. With that in mind, we see that wheel speeds are selected based on how wide a turn we desire the robot to make. | | |
| | Figure 1. Path of wheels through a turn. |
| Referring to Figure 1, observe the relationships: |
| |
| | [1] |
The Derivation Let's derive functions for the robot's trajectory. For now, it will be easier to defer thinking about acceleration and just assume that the speeds of the wheels are constant. If both wheels are moving at the same velocity, the robot travels in a straight line and the equation for its trajectory is trivial. So, instead, we will consider the case where the wheels travel at different velocities. |
| The point that we select as our reference is the center point of the left wheel. This is the point where an idealized wheel makes contact with the floor. Again, all motion in this frame of reference is treated in relative to the left-wheel point. Because the right wheel is mounted perpendicular to the axle, its motion within the frame of reference follows a circular arc with a radius corresponding to the length of the axle (from hub center to hub center). Now the central point itself may be in motion, so the actual path of the right wheel will not necessarily correspond to that particular circular arc. But the change in orientation theta is not restricted to the robot's frame of reference. Because we treat the robot as a rigid body, all points in the system undergo the same change in orientation. If we pivot the robot 10 degrees about the left wheel, all points undergo a 10 degree change in orientation. And any change in orientation in the special frame of reference is, in fact, equivalent to that of the more general case. Based on these observations, we can derive a differential equation describing the change in orientation as with respect to time of time. The definition of an angle given in radians is the length of a circular arc divided by the radius of that circle. The relative velocity of the right wheel gives us that length of arc per unit time. The length from the wheel to the center point gives us the radius. Combining these facts, we have: |
| | [2] |
| Integrating [2] and taking the initial orientation of the robot as , ![]() we find a function for calculating the robot's orientation as a function of wheel velocity and time: |
| | [3] |
| | [4] |
| Note that the equations in [4] are in the same form as that shown in [1]. Integrating and applying the initial position of the robot , we have |
| | [5] |
| | [6] |
| | [7] |
| give the velocities of the right and left wheels where aR,aL give the values for a constant acceleration (or deceleration) and wR,wL give the initial velocities. Substituting into [2] and [4] we have |
| | [8] |
| We were able to solve the differential equation for orientation directly. The equations for position are intractable and must be evaluated numerically. In the real world, when a robot applies constant power to a wheel, it does not achieve a constant rate of acceleration. As the parts of the drive system turns faster, it experiences greater internal friction and requires more and more power to realize the same increase in speed. Based on your own system characteristics, you may wish to implement an acceleration model based on a time-dependent polynomial rather than the linear function used in [7]. An even more sophisticated analysis might yield better, more complicated functions for velocity and acceleration. Due to the inaccuracies inherent in robot mechanical systems, however, you will soon reach a point where improving the model is worth neither the human effort or extra CPU processing power needed to do so. |






















0 comments:
Post a Comment