This page lists open source contributions made by Team R3 of Ryerson University in Toronto, Canada and built for the University Rover Challenge (URC) 2017. We share our rover software architecture diagram and several ROS packages for the URC competition.
Demonstration of Autonomous Rover Navigation
Autonomous navigation video: https://www.youtube.com/watch?v=p_1nkSQS8HE
More video of rover: https://www.youtube.com/watch?v=DtilGB2vnQI
Published Book Chapter:
Robot Operating System (ROS): The Complete Reference (Volume 3), Studies in Computational Intelligence Released July 2, 2018.
Full documentation in a book chapter: Book Chapter - University Rover Challenge Tutorials and Team Survey.pdf
Full source code for our rover: https://github.com/danielsnider/URC
Rover Diagram in Visio Format: Rover_Diagram.vsdx
ROS-Rover has five main systems: the drive system, the autonomous system, the global positioning system, the visual feedback system, and the odometry system.
Autonomous System (Diagram Reference)
1. zed-ros-wrapper http://wiki.ros.org/zed-ros-wrapper
2. follow_waypoints.py http://wiki.ros.org/follow_waypoints
3. rgbd_odometry http://wiki.ros.org/rtabmap_ros#rgbd_odometry
4. rtabmap http://wiki.ros.org/rtabmap_ros
21. gps_goal.py http://wiki.ros.org/gps_goal
Odometry System (Diagram Reference)
5. ekf_localization http://docs.ros.org/kinetic/api/robot_localization/html/
6. rtimulib_ros https://github.com/romainreignier/rtimulib_ros
7. navsat_transform http://docs.ros.org/kinetic/api/robot_localization/html/
8. nmea_navsat_driver http://wiki.ros.org/nmea_navsat_driver
Drive System (Diagram Reference)
9. joy http://wiki.ros.org/joy
10. drive_teleop.py http://wiki.ros.org/simple_drive#drive_teleop
11. cmd_vel_mux.py http://wiki.ros.org/simple_drive#cmd_vel_mux
12. simple_drive.py http://wiki.ros.org/simple_drive#simple_drive-1
Navigation Stack (Diagram Reference)
13. move_base http://wiki.ros.org/move_base
14. Cost Map costmap_2d http://wiki.ros.org/costmap_2d
15. Cost Map Obstacle Layer http://wiki.ros.org/costmap_2d/hydro/obstacles
16. Cost Map Static Layer http://wiki.ros.org/costmap_2d/hydro/staticmap
17. Global Planner Navfn http://wiki.ros.org/navfn
18. Local Planner base_local_planner http://wiki.ros.org/base_local_planner
Visual Feedback (Diagram Reference)
A simple robot drive system for skid steering joystick teleoperation, control of a panning servo to look around the robot, and Arduino firmware.
Project homepage: http://wiki.ros.org/simple_drive
Simple 6-axis robot arm teleoperation software and Arduino firmware.
Project homepage: http://wiki.ros.org/simple_arm
A package that will buffer
move_base goals until instructed to navigate to all waypoints in sequence.
Project homepage: http://wiki.ros.org/follow_waypoints
Add an indication of scale and compass to live images.
Project homepage: http://wiki.ros.org/image_overlay_scale_and_compass
Create panoramas in ROS using image snapshots or multiple video streams.
Project homepage: http://wiki.ros.org/hugin_panorama
If robot loses its network connection it will stop motors or set a goal to navigate home autonomously.
Project homepage: http://wiki.ros.org/lost_comms_recovery
Set navigation goals in ROS frame coordinates using latitude and longitude.
Project homepage: http://wiki.ros.org/GPS_goal
Survey of eight rover teams that competed in URC 2017
Advanced Terminal Organization
ROS robots are often controlled by many bash terminals and the startup sequence involves many roslaunch commands in different terminals. I demonstrate how you can use Tmux on your robot to codify your terminal layout into a powerful ROS administration system. The organized, repeatable tmux view can be shared in real-time by all of your teammembers for a consistent view of the robot's inner workings.
- The tmuxinator config used by Team R3 to start all the rover software components is here: https://github.com/teamr3/URC/blob/master/.tmuxinator.yml
- The tmuxinator config used by Team R3 to start all the base station control components is here: https://github.com/teamr3/URC/blob/master/devstuff/dan/.tmuxinator.yml
MapProxy docker container for ROS MapViz
Proxy zoomable map tiles from Google Maps to ROS MapViz for use with outdoor robots. For easy setup of MapProxy in a docker container to proxy Google Maps satellite view into a WMTS tile service so that it can be viewed by ROS's MapViz Tile Map plugin. Support for offline maps after loading once, maps stay cached. For outdoor robotics and vehicles.
Project homepage: https://github.com/danielsnider/MapViz-Tile-Map-Google-Maps-Satellite