ROS Package For Phoebe TurtleBot
This is a software package for running ROS (Robot Operating System) on Phoebe. Phoebe is a DIY variant of TurtleBot, the introductory hardware platform for ROS. Like the TurtleBots, Phoebe has a small onboard computer (Raspberry Pi 3) that can handle some ROS tasks, but there are robot tasks that require heavy computation beyond what the onboard computer can handle. Such tasks must be offloaded to a more powerful computer operating on the same network.
Phoebe leverages the extensive ROS component ecosystem for functionality, as a result there is almost no source code in this repository. Most of the files here composes open source ROS modules together to run Phoebe.
Dependencies
This package depends on a few pieces of code outside of standard ROS libraries.
- Neato XV-11 LIDAR - ROS driver for the LIDAR unit used on Phoebe. See documentation here.
- Roboclaw ROS - ROS driver for the motor control module used on Phoebe. IMPORTANT: Until my bug fix pull requests are accepted, use my fork of this code.
Phoebe Capabilities
- Human operation by joystick/gamepad. (Drive around like a remote control car.)
- Simultaneous location and mapping (SLAM) using GMapping. This typically requires assistance from a more powerful computer.
- Autonomous navigation using the ROS Navigation stack.
Current status: Phoebe is capable of the above, but at the moment only crudely. There is a great deal of room for improvement in tuning system parameters for better performance.
Directory Structure
- launch - collection of files for running
roslaunchchassis.launch- ROS nodes to interface with chassis hardware. (Launch onboard Raspberry Pi.)gmapping.launch- Launch ROS GMapping SLAM node. (Launch on networked, more powerful computer.)joystick.launch- Launch ROS joystick control node. (Launch on networked computer with attached joystick.)move_base.launch- Launch ROS Navigation stack. (Can be run onboard for simple maps.)rviz_gmapping.launch- Launch RViz to visualize GMapping in progress. (Launch on networked computer with screen.)rviz_nav2d.launch- Launch RViz to visualize navigation in progress. (Launch on networked computer with screen.)
- nav2d - configuration files for ROS navigation. Mostly copied from this section of ROS tutorial with minor modifications described here.
- rviz - Configuration files for RViz, the ROS Visualization tool. Used
by
rviz_*.launchfiles in the launch subdirectory. - scripts - Hard coded transform for debugging purposes, not typically used.
baseneato.py- Publish a fixed transform to relate Neato LIDAR to robot base link. Used to isolate whether a problem is due to misconfigured robot state publisher and/or URDF bugs.mapodom.py- Publish a fixed transform to relate map frame to odometry frame. Used to isolate whether a problem is due to misconfigured localization algorithm.
- urdf - A simplified geometry description of Phoebe in URDF format, used for RViz visualization and for publishing robot state transforms.
Launching Tasks
'on Phoebe' means launching on Phoebe's onboard Raspberry Pi 3
'on PC' means launching on a computer on the same network as Phoebe.
One of the two need to be running roscore
and the two computers need to be in communication via ROS_MASTER_URI, ROS_IP,
and related parameters.
- Human operation (drive like a remote control car)
- Launch
chassis.launchon Phoebe - Launch
joystick.launchon PC
- Launch
- Human-directed SLAM with GMapping
- Launch
chassis.launchon Phoebe - Launch
joystick.launchon PC - Launch
gmapping.launchon PC - (Optional) Launch
rviz_gmapping.launchon PC
- Launch
- Autonomous navigation
- Launch
chassis.launchon Phoebe - Launch map server
- Launch amcl
- Launch
move_base.launch - (Optional) Launch
rviz_nav2d.launchon PC
- Launch
Additional Resources
- Phoebe project page on Hackaday.io.
- CAD file for 3D-printed components as Onshape public document.
- Personal blog entries on Phoebe.