The PR2 Burn in test operates the PR2 to stress the robot and verify its functionality before shipping.
The PR2 burn in test runs in the a special fixture. The fixture is designed to provide an easy place for the robot to localize and operate. The PR2 shuffles from side to side during the burn in test.
The back of the fixture leaves a 2" gap for power and ethernet to the robot.
Foam gloves need to be installed onto the PR2 grippers. The grippers can occasionally graze obstacles in the workspace.
The burn in test requires the wg_hardware_test stack to be installed on the robot. Generally, it is best to use "trunk" of that stack rather than the latest released version in case any changes need to be made.
The pr2_dashboard should be monitored when running this test. A nearby computer with ROS installed will be able to run the dashboard. No special software is required on the GUI computer.
The life_test package contains the configuration files to run this test in the pr2_test/ directory.
The file life_test/scripts/pr2_test_logger.py logs the status of the PR2 burn in test. It logs data from the test_status topic, which is published by a pr2_hardware_test_monitor.
The log file is loaded into Invent after "Ctrl-C" is pressed in the the logging window. Temporary log files are stored in the "~/wg_hardware_test/test_manager" directory.
Main launch file is life_test/pr2_test/pr2_burn_in_test.launch.
Resetting a Lost Robot
Even in the small constrained environment of the PR2 burn in test fixture, the robot can occasionally become mislocalized. If the robot becomes mislocalized, an operator can reset the robot.
- Press runstop to stop robot.
- Enable runstop. The arm and head controllers will resume.
- Drive robot using joystick to center of burn in fixture, pointing forward.
- Press "R2" on the joystick. This resets the drive commander and relocalizes the robot.
A person should watch the PR2 burn in test at all times.
The complete burn in SOP is located in the PR2 functional checklist, WGPN 68-03642.
The test status is monitored using a pr2_hardware_test_monitor. This "monitor" publishes a pr2_self_test_msgs/TestStatus message on "test_status" with the current status.
Listeners loaded during PR2 Burn In:
DriveListener - Checks that robot is driving and resets drive if necessary.
DiagAggListener - Checks that robot diagnostics are OK.
The PR2 base shuffling is controlled using the pr2_drive_life_test system. The map loaded in pr2_drive_life_test/life_test.pgm is a map of the PR2 test fixture.
This test uses the PR2 arm navigation system to operate the PR2 arms. It uses a special controller to move both arms collision free through the workspace.
Special joint limits and controller gains for the burn in test are located the life_test/pr2_test directory.
The arms are controller using a life_test/scripts/both_arm_cmder.py script. The script will command an unsafe "recovery" behavior for the arms if the arms report that they are unable to move safely.
The head uses a joint_qualification_controllers/HeadController to move the head through its range of motion.
The torso is commanded to hold a position of 25cm, so that the arms are clear to move during the test.
Echo the test_status topic for a human-readable explaination of why the robot stopped moving during the burn in test.
Messages may print from the arm controllers warning of invalid trajectories. These messages can be ignored. The arm trajectories are randomly generated. Only valid and safe trajectories will be sent to the arms. Invalid ones will generate the warning message to the console.