Volksbot Control
From Experimental Robotics
The Volksbot RT uses a TMC200 to control the two attached motors. Each motor is attached directly to one wheel and via a chain to the second wheel on the same side.
Contents |
Odometry
When working on the Volksbot we found that the Odometric information, once configured correctly, when travelling in a straight line provided an accurate reading to +- 2% based on tests run at upto 8m. The odometric information when the Volk sbot was turning was found to be approximately +- 20 degrees based on a full 360 of revolution. However the Volksbot does drift while turning dependant on the what surface it is running on and the rate of turn depends highly upon the material.
Odometry was configured by setting the:
- Encoder and Gearing Constants: Distance covered.
- Odometric Rotation Angle Constant: Rate of rotation.
Encoder and Gearing Constants
For configuring the movement of the Volksbot in a straight line odometry was relatively simple to configure. The TMC200 is sent a command for each motor containing:
- Twice the encoder resolution
- Maximum motor speed (cm/min)
- Change of distance per encoder pulse (ucm)
For the Volksbot RT this meant issuing the following commands to ensure both motors were configure correctly.
- "SENCO M1 1000 11000 11" - "SENCO M2 1000 11000 11"
After testing of the Volksbot RT it was found that with the above values the Volksbot was accurate to within 2cm/100cm. Testing was done by increasing the values up and down by 1 which increased the rate of error. As the Volksbot uses rubber wheels with an inner tube this value will change as the tire pressure changes.
Odometric Rotation Angle Constant
The rotation angle constant is set by configuring the Micro degrees of rotation per encoder pulse. This set in the TMC200 by issuing the single command:
- "SMDPT 1000"
This value was taken via an eye measurement for the carpet in the Robotics Lab of CSE, UNSW. As the Volksbot turns by slipping the wheel the value will change with different floor materials. The value found appears to be accurate to within 10 degrees per rotation. However doing a 360 rotation by moving one set of wheels forward and the other set backwards at the same rate gave a sideways drift of 5-10cm and a forward drift up to 6 cm compared to the intial position of the Volksbot.
Manual Control System
The control.pl script available from Group 7 was developed to allow for manual control of the Volksbot RT using a keyboard. This control script is written in perl and uses the Ncurses interface for output. The control keys can be seen from within the script and are available below:
* d - Change left velocity by +128 * c - Change left velocity by -128 * k - Change right velocity by +128 * m - Change right velocity by -128 * s - Stop the Volksbot * q - Quit the program
This script also outputs all of the different feedback sensors from the TMC200 and should be used for performing manual callibration of the Volksbot.
Autonomous Control System
The autonomous control script takes as input a tuple of angle in degrees to the next marker and distance in centimeters to the next marker. When a command is sent the Volksbot will calculate its current position based on Odometry and then begin moving towards the traget location.
The main goal of this method is to allow for constant feedback from the camera system on where the Volksbot is located in relation to the marker so that even with inaccuracies from the odometry it will gradually correct its movements as it gets closer to the traget marker.