The Prairiedog ROS stack contains all software necessary to run the Prairiedog robotic platform.
The Prairiedog robotic platform is being developed by Correll Lab at the University of Colorado at Boulder. It is built on the iRobot Create platform. The Prairiedog robotic platform is the 4th design iteration of an educational robotic platform developed within the Distributed Robot Garden project at MIT. In version 4, the robot is equipped with a more capable arm with position feedback, a laser scanner, and a netbook.
System overview
Nodes
The following is a simplified sketch of some of the system nodes and how they interact:
Coordinate Transformations
The tf package is used (by default) to facilitate transformations between the various coordinate systems. These include:
/world_cu: world coordinate system in which GPS data is received.
/map_cu: map coordinate system (also used by the planning system, and most messages containing position data (path, goal, robot pose, etc.).
/robot_cu: local coordinate frame of the robot.
/scanner_cu: local coordinate frame of the laser scanner.
Additional coordinate systems that are used internally by prairiedog include:
map updates from mapper_cu are sent in a scaled version of /map_cu, where units correspond to map-grids instead of meters.
local pose messages sent from the iRobot create to localization_cu are in their own coordinate frame that is a rotated and translated version of /world_cu.
/world_cu
The world coordinate system is assumed to use meters for units. A right-handed system is assumed. Orientation and translation can be defined by whatever GPS is used.
Note: If the tf package is NOT being used for coordinate transformations, we assume /world_cu = /map_cu.
/map_cu
In the 2D map coordinate frame, the x axis goes from left to right and the y axis goes from bottom to top. /map_cu is assumed to be a right-handed translation and/or rotation of /world_cu.
Note: If the tf package is NOT being used for coordinate transformations, we assume /world_cu = /map_cu.
/robot_cu
The local coordinate system of the robot is represented by the /robot_cu frame. Following ROS convention, x points out the front of the robot, y points to the left of the robot, and z points up. The origin is at ground level, under the center of the robot. /robot_cu is assumed to be a right-handed translation and/or rotation of /world_cu.
/scanner_cu
This coordinate system is currently defined as the center of the laser scanner, with x axis pointing in the direction of the first reading (i.e. reading with smallest theta), and z pointing toward the sky. Note that on prairiedog the laser scanner is mounted in a hanging configuration. /scanner_cu is assumed to be a right-handed translation and/or rotation of /robot_cu.
Configuration
After installing you will need to do the following steps (assuming that ROS is also already installed):
Add the path to prairiedog to the ROS_PACKAGE_PATH and ROS_STACK_PATH environment variables in ~/.bashrc.ros file:
export ROS_PACKAGE_PATH=/path/to/ros/ros/pkgs:/path/to/prairiedog ; export ROS_STACK_PATH=/path/to/ros/ros:/path/to/ros/pkgs:/path/to/prairiedog ;
where /path/to/ is dependent on where you installed everything
- Close and reopen the terminal
- Build prairiedog:
roscd prairiedog rosmake
- Add devices to udev:
roscd prairiedog/udev_config sudo ./udev_config.sh