Skip to main content

University Rover Challenge: Tutorials and Team Survey

  • Chapter
  • First Online:
Robot Operating System (ROS)

Part of the book series: Studies in Computational Intelligence ((SCI,volume 778))

Abstract

In this tutorial chapter we present a guide to building a robot through 11 tutorials. We prescribe simple software solutions to build a wheeled robot and manipulator arm that can autonomously drive and be remotely controlled. These tutorials are what worked for several teams at the University Rover Challenge 2017 (URC). Certain tutorials provide a quick start guide to using existing Robot Operating System (ROS) tools. Others are new contributions, or explain challenging topics such as wireless communication and robot administration. We also present the results of an original survey of 8 competing teams to gather information about trends in URC’s community, which consists of hundreds of university students on over 80 teams. Additional topics include satellite mapping of robot location (mapviz), GPS integration (original code) to autonomous navigation (move_base), and more. We hope to promote collaboration and code reuse.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 99.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 129.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 199.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    URC 2017 Rules http://tinyurl.com/urc-rules.

  2. 2.

    URC 2017 competition score results and standings http://urc.marssociety.org/home/urc-news/americanroverearnsworldstopmarsrovertitle.

  3. 3.

    URC 2017 Rules http://tinyurl.com/urc-rules.

  4. 4.

    URC 2018 Rules http://tinyurl.com/urc-rules2018.

  5. 5.

    Continuum Inverse kinematics python source: https://gist.github.com/danielsnider/5181ca50cef0ec8fdea5c11279a9fdbc.

  6. 6.

    A recent video of from the University of Wroclaw of their rover has incredible cinematography: https://www.youtube.com/watch?v=MF8DkKDBXtg.

  7. 7.

    Team R3’s rover software architecture diagram in Microsoft Visio format https://github.com/danielsnider/ros-rover/blob/master/diagrams/Rover_Diagram.vsdx?raw=true.

  8. 8.

    ROS Navigation stack http://wiki.ros.org/navigation.

  9. 9.

    RTAB-Map tutorial for the ROS navigation stack http://wiki.ros.org/rtabmap_ros/Tutorials/StereoOutdoorNavigation.

  10. 10.

    Source code for follow_waypoints ROS package https://github.com/danielsnider/follow_waypoints.

  11. 11.

    Wiki page for follow_waypoints ROS package http://wiki.ros.org/follow_waypoints.

  12. 12.

    SMACH state machine library for python http://wiki.ros.org/smach.

  13. 13.

    One alternative to SMACH is py-trees, a behavior tree library http://py-trees.readthedocs.io/en/devel/background.html.

  14. 14.

    Source code for the image_overlay_compass_and_scale ROS package https://github.com/danielsnider/image_overlay_scale_and_compass.

  15. 15.

    Wiki page for the image_overlay_compass_and_scale ROS package http://wiki.ros.org/image_overlay_scale_and_compass.

  16. 16.

    Source code for simple_drive ROS package https://github.com/danielsnider/simple_drive.

  17. 17.

    Wiki page for simple_drive ROS package http://wiki.ros.org/simple_drive.

  18. 18.

    Xbox 360 joystick button layout diagram in Visio format https://github.com/danielsnider/ros-rover/blob/master/diagrams/simple_drive_Xbox_Controller.vsdx?raw=true.

  19. 19.

    Wheel linear velocity is meant to be the speed at which distance is travelled and not rpm.

  20. 20.

    PlatformIO is an open source ecosystem for IoT development http://platformio.org/.

  21. 21.

    More information on how to install PlatformIO is here http://docs.platformio.org/en/latest/installation.html#super-quick-mac-linux.

  22. 22.

    More documentation about PlatformIO: http://docs.platformio.org/en/latest/quickstart.html.

  23. 23.

    Source code for simple_arm ROS package https://github.com/danielsnider/simple_arm.

  24. 24.

    Wiki page for simple_arm ROS package http://wiki.ros.org/simple_arm.

  25. 25.

    Logitech Extreme 3D Pro joystick button layout diagram in Visio format https://github.com/danielsnider/ros-rover/blob/master/diagrams/simple_arm_joystick_diagram.vsdx?raw=true.

  26. 26.

    Source code for lost_comms_recovery ROS package https://github.com/danielsnider/lost_comms_recovery.

  27. 27.

    Wiki page for lost_comms_recovery ROS package http://wiki.ros.org/lost_comms_recovery.

  28. 28.

    Source code for hugin_panorama ROS package https://github.com/danielsnider/hugin_panorama.

  29. 29.

    Wiki page for hugin_panorama ROS package http://wiki.ros.org/hugin_panorama.

  30. 30.

    The Hugin image processing library http://hugin.sourceforge.net/.

  31. 31.

    Panorama scripting with Hugin http://wiki.panotools.org/Panorama_scripting_in_a_nutshell.

  32. 32.

    Main launch file of the hugin_panorama package https://github.com/danielsnider/hugin_panorama/blob/master/launch/hugin_panorama.launch.

  33. 33.

    Documentation for the image_saver ROS node http://wiki.ros.org/image_view#image_view.2BAC8-diamondback.image_saver.

  34. 34.

    Source code for gps_goal ROS package https://github.com/danielsnider/gps_goal.

  35. 35.

    Wiki page for gps_goal ROS package http://wiki.ros.org/gps_goal.

  36. 36.

    The World Geodetic System (WGS) 84 is the reference coordinate system used by the Global Positioning System (GPS). WGS84 uses degrees. It consists of a latitudinal axis from −90 to 90\(^\circ \) and a longitudinal axis from −180 to 180\(^\circ \). As it is the standard coordinate system for GPS it is also commonly used in robotics. https://en.wikipedia.org/wiki/World_Geodetic_System#A_new_World_Geodetic_System:_WGS_84.

  37. 37.

    The GeographicLib software library https://geographiclib.sourceforge.io/.

  38. 38.

    When a connection is latched, the last message published is saved and automatically sent to any future subscribers of that connection.

  39. 39.

    Team ITU’s low level communication source code https://github.com/itu-rover/2016-2017-Sensor-GPS-STM-Codes-/blob/master/STM32/project/mpu_test/Src/main.c.

  40. 40.

    Team ITU’s high level communication source code https://github.com/itu-rover/communication.

  41. 41.

    TerraUnity computer graphics software used to the visualize the rover at its GPS location in a topographical simulation of earth http://terraunity.com/.

  42. 42.

    Team R3’s autonomous software architecture diagram in Microsoft Visio format https://github.com/danielsnider/ros-rover/blob/master/diagrams/team_r3_AUTO_Diagram.vsdx?raw=true.

  43. 43.

    ZED stereo camera technical specs https://www.stereolabs.com/zed/.

  44. 44.

    More ZED camera documentation https://www.stereolabs.com/documentation/guides/using-zed-with-ros/ZED_node.html.

  45. 45.

    Team R3’s ZED launch file https://github.com/teamr3/URC/blob/master/rosws/src/rover/launch/zed_up.launch.

  46. 46.

    Nvidia Jetson TX1 technical specs https://developer.nvidia.com/embedded/buy/jetson-tx1-devkit.

  47. 47.

    Republish ROS node documentation http://wiki.ros.org/image_transport#republish.

  48. 48.

    Python ROS script to reduce bandwidth usage of video streams https://github.com/teamr3/URC/blob/master/rosws/src/rover/src/low_res_stream.py.

  49. 49.

    pcl_ros ROS documentation http://wiki.ros.org/pcl_ros.

  50. 50.

    rgbd_odometry ROS node documentation http://wiki.ros.org/rtabmap_ros#rgbd_odometry.

  51. 51.

    Team R3’s rgbd_odometry launch file https://github.com/teamr3/URC/blob/master/rosws/src/rover_navigation/launch/rgbd_odometry.launch.

  52. 52.

    RTAB-Map documentation http://wiki.ros.org/rtabmap_ros.

  53. 53.

    Team R3’s launch file for RTAB-Map https://github.com/teamr3/URC/blob/master/rosws/src/rover_navigation/launch/rtabmap.launch.

  54. 54.

    Video of an autonomous navigation by Team R3 with RTAB-Map and the ZED stereo camera https://www.youtube.com/watch?v=p_1nkSQS8HE.

  55. 55.

    More information about loop closures https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping#Loop_closure.

  56. 56.

    RViz flag tool http://docs.ros.org/jade/api/rviz_plugin_tutorials/html/tool_plugin_tutorial.html.

  57. 57.

    ROS Navigation Stack http://wiki.ros.org/navigation.

  58. 58.

    Team R3’s move_base configuration file https://github.com/teamr3/URC/blob/master/rosws/src/rover_navigation/launch/move_base.launch.

  59. 59.

    Team R3’s config file for base_local_planner_params.yaml configuration of move_base https://github.com/teamr3/URC/blob/master/rosws/src/rover_navigation/config/base_local_planner_params.yaml.

  60. 60.

    Documentation for base_local_planner http://wiki.ros.org/base_local_planner.

  61. 61.

    Documentation and source code for MapViz https://github.com/swri-robotics/mapviz.

  62. 62.

    Docker container for proxying Google Maps toMapViz https://github.com/danielsnider/MapViz-Tile-Map-Google-Maps-Satellite.

  63. 63.

    MapProxy config file https://github.com/danielsnider/docker-mapproxy-googlemaps/blob/master/mapproxy.yaml.

  64. 64.

    Homepage for Tmux the terminal multiplexer https://github.com/tmux/tmux/wiki.

  65. 65.

    A crash course to learn tmux https://robots.thoughtbot.com/a-tmux-crash-course.

  66. 66.

    Tmuxinator is an tool for tmux that lets to write tmux layout configuration files for repeatable layouts https://github.com/tmuxinator/tmuxinator.

  67. 67.

    The tmuxinator config used by Team R3 to start all the rover software components https://github.com/teamr3/URC/blob/master/.tmuxinator.yml.

  68. 68.

    The tmuxinator config used by Team R3 to start all the base station software components https://github.com/teamr3/URC/blob/master/devstuff/dan/.tmuxinator.yml.

  69. 69.

    Team R3’s ROS master helper script https://gist.github.com/danielsnider/13aa8c21e4fb12621b7d8ba59a762e75.

References

  1. G. Bradski, The OpenCV Library. Dr. Dobb’s J. Softw. Tools (2000)

    Google Scholar 

  2. Camera Module - Raspberry Pi Documentation, https://www.raspberrypi.org/documentation/hardware/camera/. Accessed 23 Dec 2017

  3. P. Fankhauser, M. Hutter, A universal grid map library: implementation and use case for rough terrain navigation, in Robot Operating System (ROS) - The Complete Reference (Volume 1), ed. by A. Koubaa (Springer, Berlin, 2016), www.springer.com/de/book/9783319260525. (Chap. 5, ISBN: 978-3-319-26052-5)

  4. D. Helmick, M. Bajracharya, M.W. Maimone, Autonomy for mars rovers: past, present, and future. Computer 41, 44–50 (2008). https://doi.org/10.1109/MC.2008.515. (ISSN: 0018-9162)

  5. M. Labbe, F. Michaud, Appearance-based loop closure detection for online large-scale and long-term operation. IEEE Trans. Robot. 29(3), 734–745 (2013)

    Google Scholar 

  6. M. Labbe, F. Michaud, Online global loop closure detection for large-scale multi-session graph-based slam, in 2014 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2014) (IEEE, 2014), pp. 2661–2666

    Google Scholar 

  7. M. Labbé, F. Michaud, Long-term online multi-session graph-based SPLAM with memory management. Auton. Robot. 1–18 (2017)

    Google Scholar 

  8. Learn About Me: Curiosity, NASA, https://marsmobile.jpl.nasa.gov/msl/multimedia/interactives/learncuriosity/index-2.html. Accessed 03 Feb 2018

  9. Mars Science Laboratory, NASA, https://mars.nasa.gov/msl/. Accessed 28 Dec 2017

  10. Mars Science Laboratory - Curiosity, NASA, https://www.nasa.gov/mission_pages/msl/index.html. Accessed 28 Dec 2017

  11. S. Montabone, Beginning Digital Image Processing: Using Free Tools for Photographers (Apress, 2010). ISBN: 978-1-430-22841-7

    Google Scholar 

  12. T. Moore, D. Stouch, A generalized extended Kalman filter implementation for the robot operating system, in Proceedings of the 13th International Conference on Intelligent Autonomous Systems (IAS-13) (Springer, Berlin, 2014)

    Google Scholar 

  13. MoveIt! Motion Planning Framework, http://moveit.ros.org/. Accessed 24 Dec 2017

  14. M. Quigley et al., ROS: an open-source robot operating system, in ICRA Workshop on Open Source Software (2009)

    Google Scholar 

  15. The Rover’s Brains, NASA, https://mars.jpl.nasa.gov/msl/mission/rover/brains/. Accessed 03 Feb 2018

Download references

Acknowledgements

We thank our advisor Professor Michael R. M. Jenkin P. Eng., Professor of Electrical Engineering and Computer Science, York University, NSERC Canadian Field Robotics Network. We also thank and appreciate the contributions of our survey respondents: Khalil Estell from San Jose State University, SJSU Robotics, and Jacob Glueck from Cornell University, Cornell Mars Rover, and Hunter D. Goldstein from Cornell University, Cornell Mars Rover, and Akshit Kumar from Indian Institute of Technology, Madras, Team Anveshak, and Jerry Li from University of Waterloo, UWRT, and Gabe Casciano from Ryerson University, Team R3, and Jonathan Boyson from Missouri University of Science and Technology (Missouri S&T), Mars Rover Design Team.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Daniel Snider .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer International Publishing AG, part of Springer Nature

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Snider, D., Mirvish, M., Barcis, M., Tezer, V.A. (2019). University Rover Challenge: Tutorials and Team Survey. In: Koubaa, A. (eds) Robot Operating System (ROS). Studies in Computational Intelligence, vol 778. Springer, Cham. https://doi.org/10.1007/978-3-319-91590-6_10

Download citation

Publish with us

Policies and ethics