Motion
From GT RoboJackets
Contents |
Software Requirements
The motion system is comprised of several subsystems, the path planner, the position loop, and a velocity based planner which are executed in that order. Below are details for each.
Components
Path Planner
An RRT based path planner will be implemented to determine the way-points for the robot based on the goal position, other robots, and the no-zones determined by the rules. Old plans will be stored on stack to be used by the planner and for debugging.
Position loop
Several different controllers will be tried starting with a proportional controller with feed forward.
Velocity Planner
Dynamic obstacles create an extra headache in terms of collision avoidance. A velocity based planner will be implemented to ensure that safe velocities are sent to the robots at each time step.
Motion Apps
There are two apps to the motion system the module for integration into the framework and a stand-alone test application.
Software Module
This system takes points, velocities, and paths and outputs velocities. It is comprised of a path planner for obstacle avoidance, a PID loop for motion control, and a velocity based path planner. The PID loop gains are derived from an XML file.
Motion Test App
This app will provide a means of debugging the motion system by way of setting gains for the controller, setting the maximum velocity and acceleration for the robots, creating test paths for the robots to follow, and providing data on the performance of the system. It maintains all the functionality of the motion software module. Some of its features will be
- Ability to generate paths, both linear and Bezier
- Ability to command the robot travel a set distance horizontally and vertically.
- Ability to run an individual motor
- Ability to command the robot to perform basic game-play such as goto ball
- Speed setting for robot
- Ability to set position and on-robot velocity loop parameters
- Command line interface built into app
- Auto-tune procedures
API
- Velocity based control
- Motion primitives - The ability to command robots to do such things a circle an area, cover an area, and other basic motion tasks
Acceptance Test Procedures
Software acceptance test will be the method of verification for the motion system. The following are some of the test that have been discussed. The motion system must pass each test and the results verified by a third party.
- Point to Point - A test of the accuracy and stability of point to point motion.
- Static Obstacle Avoidance - A test of obstacle avoidance for static obstacles. Will support work on qualification.
- Nav Challenge - An exact replica of the 2008 Nav Challenge for RoboCup. This test the navigation and speed.
- The Gautlet - A test of obstacle avoidance for dynamic obstacles.
TODO List
MotionTest
Work on integrating processor into the test app-
Make robots stop in simulator when they aren't being commanded -
Get robots visible in MotionTest - Write TrajectoryGen Module
-
Investigate using signal and slot to control it from MotionTest GUI- works if one uses a queued connection - Get point to point motion working
-
* Add code to write out user generated trajectories to file
** File contains header with number of sub-paths, user generated max speed for robot, and then parameters for each sub-path
** Also code up a file reader for TrajectoryGen - Will pass the paths vector from RobotPath when the user hits start
- Loading PID parameters from configFile
- Add ability to write PID parameters to the configfile
- Print robot positions at each time step to a file
- Trajectory generation code
- Read-up on Contour following, post Michaels' ppt
- Takes sub-paths and speed and samples sub-path based on speed
- Similar to the Michaels' approach for contour following
- Add box to set speed setting
- Add X and Y driving
- Input pop-up for setting distance to travel in X or Y
- Feedback for position error, speed error and signal quality
- Add box to change velocity loop parameters
Motion
- Look at last year's path planner
- Sketch out path planner
- Implement single robot avoidance
- Implement multi-robot avoidance
- Implement zones
Action Log
- 1/25/2008 - Talked with Alex about where to store state data. Showed Stefan the MotionTest and got some ideas from him. Worked on integrating processor into the MotionTest and finally got RobotPath to extend the FieldView in log. Finally, determined that it would be best to write the TrajectoryGen module and use a signal and slot arch to control it per Ben's advise.
- 2/2/2009 - Fixed some blatant memory leaks and also got the file stuff for paths done. Start implementing the code to generate trajectories in the TrajectoryGen. Will need to go back and re-do the path drawing in RobotPath as its a little hacked. Finally found that passing the path info to TrajectoryGen by file was not the best idea. Will pass that directly instead.