Kinematics – Group 3



Robotic Perception & Action Course


a.a. 2018/19

De Paoli Piera, Maistri Riccardo,Piazzola Filippo, Tomasi Monica

The goal of the project was to develop a vehicle that could move autonomously within a specified path in a mine. The path is made of points of interest (nodes), so the trajectory is discrete and not continuous. We made this choice in order to highlight the difference between the two algorithms implemented.
The vehicle is controlled in linear and angular velocity. The two algorithms are the Instantaneous Center of Rotation and the Follow the Carrot. We used an all-wheel drive set up.
The first step was to create the actual model of the vehicle. In order to do so we exploited the software Blender.
Starting from pictures of truck taken from different perspectives, we were able to get a good idea of dimensions and proportions. Starting from a cube, we split the faces in order to refine the shape. The faces where positioned so that point of interest in the truck could be better modeled with the presence of more faces. In this way each face corresponds to an object or an orientation of a bigger object, and we could move the nodes to get the shape we desired.
Once we were satisfied with the model, we exported it in order to use it in Unity.
Once truck was built, we moved to the Unity© suite to develop the scene.
We gave the model of the mine the vehicle needed to move in, so we needed to actually move the vehicle. In order to do so, we attached WheelColliders to the object that represented the truck.
WheelColliders are special colliders in unity that simulates kinematics and dynamics of the wheel of a ground vehicle. The model is very complex, and there is the possibility to tweak some parameters to make the spring-dumper system of the suspension stiffer or softer.
Once we were confident with the moving truck, we begun the creation of the trajectory.
We placed a number of points in the scene; these points represented the discrete coordinates of a trajectory. We linked these nodes in order to get a spline allowing the truck to follow the it.
Clearly, since the spline is not as smooth as a continuous trajectory, we already knew that the result could not be smooth, but we implemented that to better explain how the algorithm works, a nonperfect would make the explanation clearer.
Follow the Carrot Algorithm
The procedure to implement this algorithm is the following:
  1. Create a straight trajectory connecting the origin node and the arrival node (N1,N2)
  2. Determine the projection of the vehicle on the path (Pp)
  3. Determine the Carrot Point (Pc) by moving along the path of the
  4. Look-Ahead Distance (D)
  5. Determine the segment connecting the vehicle and the Carrot Point(Pb-Pc)
At this point it is easy to determine the steering angle alpha, as the angle between the vehicle axis and the Pb-Pc segment, even called Correction Angle.
If this angle results bigger than the maximum allowed steering angle,we used the former as α.
This algorithm has some drawbacks: it’s a low precision algorithm, it’s very dependent on the Look Ahead Distance, it has a tendency tocut corners due to the immediate turn towards new Carrot Point and it causes the oscillation around the path with small D and high value of velocity. On the other hand, we applied this algorithm because is often used for academic applications thanks to its easily implementation.
Instantaneous Center of Rotation Algorithm
This second algorithm is more complex, analytically and computationally. The idea behind it is that every trajectory can be reduced to a circumference, passing through the main point of the vehicle. By computing the center of this circumference and its associated angle, it’s possible to adjust the steering of the vehicle and correct its motion in order to follow the correct path.
The procedure is the following:
  1. Create a straight trajectory connecting the origin node and the arrival node (N1,N2)
  2. Determine the projection of the vehicle on the path (Pp) and trace the line through it and the vehicle (Gray Line)
  3. Determine the “Look-Ahead Distance Point” (Pd) by moving along the path of the Look-Ahead Distance (D)
  4. Determine the segment connecting the vehicle and the “Look-Ahead Distance Point” (Pb-Pd)
  5. Determine the MidPoint (Pm) of the Pb-Pd segment and plot the perpendicular to it (Green Line)
  6. Determine the ICR Point (ICR) from the intersection of the line passing through Pm (Green Line) with the line passing through Pp(Grey Line)
At this point it easy to determine the steering angle alpha, as the angle between the line passing through Pp and the line passing through Pf, both starting from ICR Point.
This algorithm is more precise but also more demanding. A key point is to find the correct dimension of Look Ahead Distance: if it’s too short, the vehicle will correct a lot it’s trajectory by steering left and right to stay of the path, if it’s too long the vehicle will crash because the angle will be very small.
Velocity Control
If the vehicle moves too fast, it’s harder to follow the trajectory.
In addition to this, the environment in which the truck moves, requires a different approach to the maximum velocity allowed.
If the vehicle is climbing the mine, then we gave it the maximum torque available to allow it to ascend without slipping, but if the velocity was too high, we released momentarily the torque until it reached a threshold that makes the truck accelerate again.
In the descending phase, if the truck was too fast, a brake torque was applied to the wheel to have a smooth movement.
When the vehicle was close to the node, the vehicle slowed down to initiate the corner as better as possible.
Both the algorithms work fine. The ICR is used for real applications,while the other is used only for didactic purposes.
They both have drawback, but by adapting the values for this application we were able to reach the goal with both of them.

Leave a Reply