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.
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.
- 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.
- launch - collection of files for running
roslaunch
chassis.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_*.launch
files 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.
'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.launch
on Phoebe - Launch
joystick.launch
on PC
- Launch
- Human-directed SLAM with GMapping
- Launch
chassis.launch
on Phoebe - Launch
joystick.launch
on PC - Launch
gmapping.launch
on PC - (Optional) Launch
rviz_gmapping.launch
on PC
- Launch
- Autonomous navigation
- Launch
chassis.launch
on Phoebe - Launch map server
- Launch amcl
- Launch
move_base.launch
- (Optional) Launch
rviz_nav2d.launch
on PC
- Launch
- Phoebe project page on Hackaday.io.
- CAD file for 3D-printed components as Onshape public document.
- Personal blog entries on Phoebe.