Gabrielle Wink
LINK to course website.
This software plans a trajectory for the end-effector of the youBot mobile manipulator (a mobile base with four mecanum wheels and a 5R robot arm), performs odometry as the chassis moves, and performs feedback control to drive the youBot to pick up a block at a specified location, carry it to a desired location, and put it down (3).
The youBot was able to achieve the task specified in the assignment description. One unexpected behavior encounter was sometime the block sometimes exhibited small vibrations after being grasped by the robot. This is an artifact of dynamic simulation. The results for each simulation are further described and located in the results directory.
- Download and save best.py
- Navigate to directory where the script is saved
- Run: best.py
- Follow the runscript instructions
- Then, after running the code, the csv file will be saved in the same location as the script
- Open CoppeliaSim Scene 6 and play the csv file produced by the code
The required code inputs, code outputs, and solution steps are clearly labeled in the code files: best.py, newTask.py, and overshoot.py.
This directory contains best.py, newTask.py, and overshoot.py. These files output a CoppeliaSim .csv file of successive youbot configurations, an Xerr csv file, and a plot of the six elements of Xerr as a function of time. These files are essentially the same, however, have different inputs. These differences are specified in the README files located in the results directory. In the code directory there is also a Milestones directory. This directory contains the three Milestones. These Milestones pass all the tests specified on the Project Wiki.
CoppeliaSim Scene 6 physics engine: ODE
The screencast software slowed down the simulation, therefore, the video demonstrations are slower that the actual total time of the motion of the youBot. When the simulation is running without using the screencast application the total time of motion of the youBot is 33 seconds, as expected from the time specifications in my TrajectoryGenerator Function.