Skip to main content

Lessons Learned Building a Self Driving Car on ROS

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

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

Abstract

Autonomous vehicles (AVs) capable of safe operation on urban roads are a complex problem that involves many subdomains of Robotics. This use case chapter presents the lessons that the authors learned while using the ROS framework to support the AV development efforts of Cruise, originally acquired by General Motors in 2016, and now an independent company. Scaling ROS to this level of complexity and team size brings an interesting viewpoint to its design decisions and can help guide the future direction of the community. After briefly introducing the hardware and software stack on a modern AV, the chapter begins with a discussion of ROS’ defining abstraction, publish/subscribe, and how it impacts system design and performance. Afterwards, we share our point of view about the complementary tools in the ROS ecosystem: visualization, data recording, and the build system. We conclude with the fundamental task of simulation and automated testing.

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

Access this chapter

eBook
USD 16.99
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

References

  1. J. Altenberg, Introduction to realtime linux, https://www.youtube.com/watch?v=BKkX9WASfpI

  2. Apex.ai homepage (2019), https://apex.ai

  3. Apollo project design doc: Native Support with Protobuf, https://github.com/ApolloAuto/apollo-platform/blob/master/ros/docs/design/native_support_with_protobuf.md

  4. Automated Driving with ROS at BMW (2016), https://www.ros.org/news/2016/05/michael-aeberhard-bmwautomated-driving-with-ros-at-bmw.html

  5. E. Bendersky, Measuring context switching and memory overheads for Linux threads (2018), https://eli.thegreenplace.net/2018/measuring-context-switching-and-memoryoverheads-for-linux-threads/

  6. G. Biggs, T. Foote, ROS 2 Design Documents: Managed Node, http://design.ros2.org/articles/node_lifecycle.html

  7. A. Bockenkamp, roslaunch2: versatile, flexible and dynamic launch configurations for the robot operating system, in Robot Operating System (ROS): The Complete Reference, ed. by A. Koubaa, vol. 4 (Springer International Publishing, Berlin, 2020), pp. 165–181

    Google Scholar 

  8. H. Bruyninckx, Open robot control software: the OROCOS project, in Proceedings 2001 ICRA. IEEE International Conference on Robotics and Automation (Cat. No.01CH37164), vol. 3, May 2001, pp. 2523–2528. https://doi.org/10.1109/ROBOT.2001.933002

  9. B. Cairl, Deterministic, asynchronous message driven task execution with ROS, presentation at ROSCon 2018 (2018), https://roscon.ros.org/2018/presentations/ROSCon2018_deterministic_asynchronous_message_driven_task_execution.pdf

  10. California DMV Autonomous Vehicle Disengagement Reports (2018), https://www.dmv.ca.gov/portal/dmv/detail/vr/autonomous/disengagement_report_2018

  11. A. Dosovitskiy et al., CARLA: an open urban driving simulator, in Proceedings of the 1st Annual Conference on Robot Learning (2017), pp. 1–16

    Google Scholar 

  12. S. Glaser, E. Berger, W. Meeussen, pr2 controller manager ROS wiki page, https://wiki.ros.org/pr2_controller_manager

  13. H. Fan et al., Baidu Apollo EM Motion Planner (2018), arXiv:1807.08048 [cs.RO]

  14. S. Glaser, realtime tools ROS wiki page, http://wiki.ros.org/realtime_tools

  15. C.S.V. Gutiérrez et al., Real-time Linux communications: an evaluation of the Linux communication stack for real-time robotic applications (2018), arXiv:1808.10821 [cs.OS]

  16. C.S.V. Gutiérrez et al., Time Synchronization in modular collaborative robots (2018), arXiv:1809.07295 [cs.RO]

  17. C.S.V. Gutiérrez et al., Towards a distributed and real-time framework for robots: evaluation of ROS 2.0 comLessons learned building a self driving car on ROS 29 munications for real-time robotic applications (2018), arXiv:1809.02595 [cs.RO]

  18. S. Kato et al., An open approach to autonomous vehicles. IEEE Micro 35(6), 60–68 (2015)

    Article  Google Scholar 

  19. J. Kay, A.R. Tsouroukdissian, Real-time control in ROS and ROS 2.0, presentation at ROSCon 2015 (2015), https://roscon.ros.org/2015/presentations/RealtimeROS2.pdf

  20. I. LĂĽtkebohle, Determinism in Robotics, presentation at ROSCon 2017 (2017), https://roscon.ros.org/2017/presentations/ROSCon20ROS.pdf

  21. I. LĂĽtkebohle, Why and how to achieve deterministic timing with ROS, presentation at ROS-Industrial Conference 2016 (2016), https://static1.squarespace.com/static/51df34b1e4b08840dcfd2841/t/58383609725e25680b8df592/1480078865773/ROS-I-Conf2016-day1-07-luetkebohle.pdf

  22. P.E. McKenney, ’Real Time’ vs.’Real Fast’: How to Choose?

    Google Scholar 

  23. NVIDIA Drive AGX Origin (2019), https://nvidianews.nvidia.com/news/nvidia-introduces-drive-agx-orinadvanced-software-defined-platform-for-autonomousmachines

  24. S.D. Pendleton et al., Perception, planning, control, and coordination for autonomous vehicles, in Machines 5.1 (2017). ISSN: 2075-1702. https://doi.org/10.3390/machines5010006, https://www.mdpi.com/2075-1702/5/1/6

  25. M. Quigley et al., ROS: an open-source Robot Operating System, vol. 3 (2009)

    Google Scholar 

  26. ros-bazel code repository (2019), https://github.com/nicolov/ros-bazel

  27. Self Driving Car Engineer Nanodegree homepage (2019), https://www.udacity.com/course/self-driving-carengineer-nanodegree--nd013

  28. shm\_transport ROS wiki page, http://wiki.ros.org/shm_transport

  29. Y.-P. Wang et al., TZC: efficient inter-process communication for robotics middleware with partial serialization (2018), arXiv:1810.00556 [cs.RO]

  30. webviz code repository (2019), https://github.com/cruise-automation/webviz

  31. W. Woodall, ROS 2 Launch, presentation at ROSCon 2018 (2018), https://roscon.ros.org/2018/presentations/ROSCon2018_launch.pdf

  32. E. Yurtsever et al., A survey of autonomous driving: common practices and emerging technologies (2019), arXiv:abs/1906.05113

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2021 Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Valigi, N. (2021). Lessons Learned Building a Self Driving Car on ROS. In: Koubaa, A. (eds) Robot Operating System (ROS). Studies in Computational Intelligence, vol 895. Springer, Cham. https://doi.org/10.1007/978-3-030-45956-7_5

Download citation

Publish with us

Policies and ethics