ROBOTIC PERCEPTION AND ACTION 2018/2019
PROJECT WORK – POINT TO POINT PATH PLANNING WITH CHAINED FORM SYSTEMS
Students: Alberto Gabriel, Jacopo Losi, Marco Moletta, Nicola Saljoughi
“In a point to point path planning the robot must reach a final position (position and attitude) starting from a given initial position. In general it must reach a final configuration given an initial configuration in the space of generalised coordinates. In order to solve this problem there are canonical forms for kinematic models that are functional for the development of both open loop and feedback control strategies. The most used canonical form is the chain shaped or “chained form” that it is possible to see as following:
You will find the implementation of these systems in this self-contained lesson made in a virtual reality environment created with Unity engine, made to let the user deeply understand the solution of this problem while having fun and seeing the solution changes based on the parameters that he chose.
Speaking about the theory part, in order to give to the Unity project a didactic aim it was decided to create inside the State Machine a section where the user can go and read the theory related to the animations performed in the scenes thus to understand how them work.To make it useful for a user and available in every situation it was decided to insert in the Unity scene the part of the report related to theory of each one of the methods used to make the animations of the vehicle.
Regarding the User Interface(UI) it was developed an intuitive and practical way to go through the different scenes and at the same time to return back to the initial scene (the Setup Scene) in order to leave the user free to choose to analyse the movement of the vehicle, with the possibility to change both the method with whom move the car and the input to give to it, or the theory associated to the different methods.
Model of the Vehicle
In order to import the Blender model of our vehicle into the Unity engine we need to solve a problem related to the way the two software differ in terms of coordinate systems. While Blender uses a right-handed coordinate system, Unity uses a left-handed coordinate system. We want our vehicle to use a mobile reference frame in which the z-axis points towards the front and the y-axis is normal to the surface. The following figure shows our model already imported into Unity.
We wanted to build a city game environment to improve both the aspect of our game and realistic environment. We used a Unity modelling plugin found on the asset store called CSape.
The final point of the trajectory that the car performs (the target) is identified by an animated red 3D arrow, placed at a certain height with respect to the ground so as not to collide with the car. The model was created with Blender and imported into each of the simulation scenes. The “up and down” animation was created with a simple sinusoidal function using the Unity command “transform.Translate”.
The very first thing to do to create a dynamic and interactive model of a car in a flat environment is to get the equations defining every relevant aspect we want to describe. Such a description lays on the choice of a physical model, that can be either a car-like or, for reasons to be explained, the one of a non-slipping rolling wheel.
Getting deeper into the approach that has been followed, the chained-form equations presented in the Theory are turned into some Maple codes: one for each kind of input, so as to allow the student or, in general, the final user of the software, to decide how to control the car. The available choices are:
- Piecewise Constant
All these choices also give the chance to reflect on how these solutions result in terms of motion: the resulting equations are very complex and impossible to understand just looking at their shape, so an animation is definitely more efficient when it comes to decide what eventually to implement in a real model.
Once the equations of the trajectories and the inputs are obtained in analytic form through Maple, they have to be implemented in scripts actually moving the 3D model in the game environment.
One more thing that is implemented in the codes controlling the motion of the car is a simulation of the drift, meaning that, if the car, in a real situation, is not well controlled in terms of understanding where it is with respect to the environment, the resulting motion can be different from the desired one.
Always keeping in mind the purely didactic aims of this simulator, such a drift is implemented directly stating the ratio in terms of real and desired coordinates in time, neglecting that it should be the result of missing or inefficient operations of sensor fusion.