Learning Robotics using Python
上QQ阅读APP看书,第一时间看更新

Explanations of the forward kinematics equation

We can start by formulating a solution for forward kinematics. The following figure is an illustration of one of the wheels of the robot:

A single wheel of the robot rotating along the local y-axis

The motion around the y-axis is known as the roll; everything else is called the slip. Let's assume that no slip occurs in this case. When the wheel completes one full rotation, it covers a distance of 2π r, where r is the radius of the wheel. We will assume that the movement is two-dimensional. This means that the surface is flat and even.

When the robot is about to perform a turning motion, the robot must rotate around a point that lies along its common left and right wheel axis. The point that the robot rotates around is known as the ICC-the instantaneous center of curvature. The ICC is located outside the robot. The following diagram shows the wheel configuration of the differential drive robot in relation to its ICC:

Wheel configuration for a robot with a differential drive

The central concept for the derivation of the kinematic equation is the ω angular velocity of the robot. Each wheel on the robot rotates around the ICC along the circumference of a circle with a wheel radius of r.

The speed of the wheel is v = 2 π r / T, where T is the time taken to complete one full turn around the ICC. The ω angular velocity is defined as 2 π / T, and typically has the unit of radians (or degrees) per second. Combining the equations for v and w yields ω= 2 π / T, and we can conclude the following:

Equation of linear velocity

A detailed model of the differential drive system is shown in the following diagram:

Detailed diagram of the differential drive system

If we apply the previous equation to both wheels, the result will be the same-that is, ω:

Differential drive wheel equation

Here, R is the distance between the ICC and the midpoint of the wheel axis and l is the length of the wheel axis. After solving ω and R, we get the following result:

Equation to find the distance from the ICC to the center of the robot and the angular velocity of the robot

The previous equation is useful for solving the forward kinematics problem. Suppose the robot moves with an angular velocity of ω for δt seconds. This will result in the robot's orientation or heading changed to the following:

Equation to find the change in heading

Here, the center of the ICC rotation is given by basic trigonometry as the following:

Equation to find the ICC

Rotating the robot ωδt degrees around the ICC

Given a starting position (x, y), the new position (x', y') can be computed using the 2D rotation matrix. The rotation around the ICC with the angular velocity ω for δt seconds yields the following position at the time t + δt:

Equation to calculate the new position of the robot

The new pose (x', y', and θ') can be computed from equation (6) and (8), given ω, δt, and R.

ω can be computed from equation (5); Vr and Vl are often more difficult to measure accurately. Instead of measuring the velocity, the rotation of each wheel can be measured using sensors called wheel encoders. The data from the wheel encoders is the robot's odometry values. These sensors are mounted on the wheel axes and deliver binary signals for each degree that the wheel rotates (each degree may be in the order of 0.1 mm). We will look at the detailed workings of the wheel encoders in Chapter 6, Interfacing Actuators and Sensors to the Robot Controller. These signals are fed to a counter so that vδt is the distance traveled from the time t to t + δt. We can write the following:

n * step = vδt

From this, we can calculate v:

Equation calculating the linear velocity from the encoder data

If we insert equation (9) in equations (3) and (4), we get the following result:

Equation to calculate R from the encoder values

Here, nl and nr are the encoder counts of the left and right wheels. Vl and Vr are the speeds of the left and right wheels respectively. Thus, the robot stands in pose (x, y, θ) and moves nl and nr counts during a time frame of δt; the new pose (x', y', θ') is given by calculating the following:

Equation to calculate the robot's position from the encoder values

where,

Equation to calculate the ICC and other parameters from the encoder values

The derived kinematic equation depends mainly on the design and geometry of the robot. Different designs can lead to different equations.