/ros-rover

How to build a one-armed, self-driving, University Rover Challenge robot with ROS

This page lists my open source contributions made while at 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 our Autonomous Rover Navigation

Our autonomous navigation video: https://www.youtube.com/watch?v=p_1nkSQS8HE

demo Drawing

More video of rover: https://youtu.be/YEfgYmFqJqM

My Published Book Chapter:

Robot Operating System (ROS): The Complete Reference (Volume 3), Studies in Computational Intelligence Released July 2, 2018.

Detailed instructions and tips are published in a book chapter.
Link to chapter: PDF, LATEX, or an older DOCX version.
Link to book on Amazon.

Drawing Drawing

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

My Rover System Diagram:

Rover_Diagram

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)

19. RViz http://wiki.ros.org/rviz
20. rqt_image_view http://wiki.ros.org/rqt_image_view
22. MapViz http://wiki.ros.org/mapviz
23. usb_cam http://wiki.ros.org/usb_cam

simple_drive Build Status

A simple robot drive system for skid steering joystick teleoperation, control of a panning servo to look around the robot, and Arduino firmware.

Drawing Drawing Drawing

Project homepage: http://wiki.ros.org/simple_drive

simple_arm Build Status

Simple 6-axis robot arm teleoperation software and Arduino firmware.

follow_waypoints

Project homepage: http://wiki.ros.org/simple_arm

follow_waypoints Build Status

A package that will buffer move_base goals until instructed to navigate to all waypoints in sequence.

follow_waypoints

Project homepage: http://wiki.ros.org/follow_waypoints

image_overlay_scale_and_compass Build Status

Add an indication of scale and compass to live images.

Drawing

Project homepage: http://wiki.ros.org/image_overlay_scale_and_compass

hugin_panorama Build Status

Create panoramas in ROS using image snapshots or multiple video streams.

Drawing

Project homepage: http://wiki.ros.org/hugin_panorama

lost_comms_recovery Build Status

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

GPS_goal Build Status

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

Drawing Drawing

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 team members for a consistent view of the robot's inner workings.

Drawing Drawing

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.

Drawing Drawing

Project homepage: https://github.com/danielsnider/MapViz-Tile-Map-Google-Maps-Satellite