├── interview_questions.md ├── discussion_topics.md ├── LICENSE └── README.md /interview_questions.md: -------------------------------------------------------------------------------- 1 | # Software Design 2 | 3 | - "Design a remote-controlled car" 4 | - "Design a scenario-based simulation framework for autonomous vehicles" 5 | - "Design a launch system" 6 | - "Design a data record and replayer" 7 | 8 | # System Design 9 | 10 | - "Design a hardware-in-the-loop (HIL) testing system for autonomous vehicles" 11 | - "Design a multi-robot pick-and-place system" 12 | - "Design a CI/CD pipeline for autonomous vehicle software" 13 | 14 | # Robotics System Design 15 | 16 | - "Design a control algorithm autonomous race car" 17 | - "Design a planning and control algorithm for outdoor mobile robots that can handle various terrains" 18 | 19 | Also see https://gist.github.com/sunsided/b76260626cefb7512a9b3579f1c9660e 20 | -------------------------------------------------------------------------------- /discussion_topics.md: -------------------------------------------------------------------------------- 1 | # Robotics System Design Topics 2 | 3 | ## Framework 4 | 5 | ### ROS 6 | 7 | What is ROS? 8 | * Capabilities, e.g., [MoveIt](https://moveit.picknik.ai/main/index.html), [Nav2](https://navigation.ros.org/) 9 | * Utilities, e.g., [tf](https://wiki.ros.org/tf), [Time](https://wiki.ros.org/roscpp/Overview/Time) and [Clock](https://wiki.ros.org/Clock), [ROS Command-line tools](https://wiki.ros.org/ROS/CommandLineTools) 10 | * Simulation, e.g., [Gazebo](https://gazebosim.org/) 11 | * Debug tools, e.g., [RViz](https://wiki.ros.org/rviz), [rosbag](https://wiki.ros.org/rosbag) 12 | * Build, package management, deployment tools, e.g., [colcon](https://colcon.readthedocs.io/en/released/)/[catkin](https://wiki.ros.org/catkin), [rospack](https://wiki.ros.org/rospack), [bloom](http://bloom.readthedocs.org/) 13 | * Documentation and communicty, e.g., [ROS Wiki](https://wiki.ros.org/Documentation), [ROS Answers](https://answers.ros.org/) 14 | 15 | ### Other Frameworks 16 | 17 | * [YARP](https://www.yarp.it/) 18 | * [Orocos](https://docs.orocos.org/) 19 | * [MOOS-IvP](https://oceanai.mit.edu/moos-ivp/pmwiki/pmwiki.php) 20 | * [ArduPilot](https://ardupilot.org/) 21 | 22 | ### Framework vs. No-Framework 23 | 24 | Reasons for using a framework 25 | 26 | * (Initial) Development speed 27 | * Community and support 28 | 29 | Reasons for not using a framework 30 | 31 | * Performance 32 | * Less dependencies/More control 33 | 34 | 35 | ## Zerocopy 36 | 37 | ### Considerations 38 | 39 | * Serialization vs. Transport vs. Both 40 | * Hardware dependency 41 | * IDL support, interoperability with build systems 42 | 43 | ### Examples 44 | 45 | * [Cap'n Proto](https://capnproto.org/) 46 | * [Zenoh](https://zenoh.io/) 47 | * [RTI Connext DDS Micro](https://community.rti.com/static/documentation/connext-micro/3.0.0/doc/html/usersmanual/zerocopy.html) and [Eclipse iceoryx](https://github.com/eclipse/iceoryx) 48 | 49 | 50 | ## Build System 51 | 52 | ### Monorepo 53 | 54 | Why? 55 | 56 | * [Monorepo Explained](https://monorepo.tools/) 57 | * [Building Self Driving Cars with Bazel](https://youtu.be/fjfFe98LTm8) 58 | 59 | Why not? 60 | 61 | * Team autonomy 62 | * Migration & maintenance efforts 63 | 64 | 65 | ## Hardware-in-The-Loop Testing 66 | 67 | * [CI for Embedded Systems](https://jamesmunns.com/blog/hardware-ci-overview/) 68 | * [How to Build a Continuous Integration and Delivery Process for Embedded Software](https://medium.com/jumperiot/how-to-build-a-continuous-integration-and-delivery-flow-for-embedded-software-b0b5bf220a2) 69 | 70 | 71 | ## Deployment 72 | 73 | ### Considerations 74 | 75 | * Checkout [The landscape of software deployment in robotics](https://web.archive.org/web/20230330175041/https://www.airbotics.io/blog/software-deployment-landscape) 76 | 77 | 78 | ## Launch System 79 | 80 | ### Examples 81 | 82 | - [Supervisor](http://supervisord.org/) 83 | - [docker-compose](https://docs.docker.com/compose/) 84 | - [AdAstra Subsystem Launcher](https://github.com/dallison/adastra) 85 | - [ROS 2 Launch](https://github.com/ros2/launch) 86 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Robotics System Design 2 | 3 | Stuff I read to learn about robotics system & software design and more, e.g., [design interview questions](./interview_questions.md), [design discussion topics](./discussion_topics.md). 4 | 5 | ## Blogs 6 | 7 | - [Airbotics blog](https://www.airbotics.io/blog/) 8 | - [The landscape of software deployment in robotics](https://web.archive.org/web/20230330175041/https://www.airbotics.io/blog/software-deployment-landscape) 9 | - [Apex.AI Blog](https://www.apex.ai/blog/) 10 | - [ADE—Ensuring that all developers in a project have a common, consistent development environment](https://www.apex.ai/post/ade-ensuring-that-all-developers-in-a-project-have-a-common-consistent-development-environment) 11 | - [Performance Testing in ROS 2](https://www.apex.ai/post/ade-ensuring-that-all-developers-in-a-project-have-a-common-consistent-development-environment) 12 | - [AUTOSAR and ROS 2 for Software-Defined Vehicle](https://www.apex.ai/post/autosar-and-ros-2-for-software-defined-vehicle) 13 | - [Applied Intuition blog](https://blog.applied.co/) 14 | - [ISO 26262, SOTIF, and Simulation in Autonomy Systems](https://blog.applied.co/blog-post/iso26262-sotif-simulation) 15 | - [Quantifying Known and Unknown Metrics in ADAS and AV Development](https://blog.applied.co/blog-post/quantifying-knowns-and-unknowns) 16 | - [Balena.io Blog](https://www.balena.io/blog/) 17 | - [OpenTelemetry for IoT Metrics](https://blog.balena.io/opentelemetry-for-iot-metrics/) 18 | - [Scale your Industrial deployment with IIoT Edge Gateways Managed by HiveMQ and balena](https://blog.balena.io/scale-industrial-deployment-iiot-edge-gateway-balena-hivemq/) 19 | - [comma.ai blog](https://blog.comma.ai/) 20 | - [End-to-end lateral planning](https://blog.comma.ai/end-to-end-lateral-planning/) 21 | - [How openpilot works in 2021](https://blog.comma.ai/openpilot-in-2021/) 22 | - [Development speed over everything](https://blog.comma.ai/dev-speed/) 23 | - [Cruise news](https://getcruise.com/news/) 24 | - [Cruise's Continuous Learning Machine Predicts the Unpredictable on San Francisco Roads](https://getcruise.com/news/blog/2020/cruises-continuous-learning-machine-predicts-the-unpredictable-on-san/) 25 | - [Building continuous integration & continuous delivery for autonomous vehicles on Google Cloud](https://cloud.google.com/blog/products/containers-kubernetes/how-cruise-tests-its-avs-on-a-google-cloud-platform) 26 | - [Foxglove blog](https://foxglove.dev/blog/) 27 | - [MCAP vs ROS 1 Bag Index Performance](https://foxglove.dev/blog/mcap-vs-ros1-bag-index-performance) 28 | - [Spotlight: Using Web-Based Technologies to Make Robotics Accessible to All](https://foxglove.dev/blog/spotlight-using-web-based-technologies-to-make-robotics-accessible-to-all) 29 | - [Sending ROS 2 Message Types Over the Wire](https://foxglove.dev/blog/sending-ros2-message-types-over-the-wire) 30 | - [NVIDIA DEVELOPER Blog](https://developer.nvidia.com/blog) 31 | - [Design Your Robot on Hardware-in-the-Loop with NVIDIA Jetson](https://developer.nvidia.com/blog/design-your-robot-on-hardware-in-the-loop-with-nvidia-jetson/) 32 | - [Create Realistic Robotics Simulations with ROS 2 MoveIt and NVIDIA Isaac Sim](https://developer.nvidia.com/blog/create-realistic-robotics-simulations-with-ros-2-moveit-and-nvidia-isaac-sim/) 33 | - [PICKNIK blog](https://picknik.ai/blog/) 34 | - [Packaging ROS with GitHub Actions](https://picknik.ai/ros/debian/packaging/2023/02/27/packaging-ros-with-github-actions.html) 35 | - [Real-Time Programming: Priority Inversion](https://picknik.ai/real-time/priority%20inversion/roscon/2024/01/31/Real-Time_Programming_Priority_Inversion.html) 36 | - [WAYVE Blog](https://wayve.ai/thinking/) 37 | - [Introducing GAIA-1: A Cutting-Edge Generative AI Model for Autonomy](https://wayve.ai/thinking/introducing-gaia1/) 38 | - [Ghost Gym: A Neural Simulator for Autonomous Driving](https://wayve.ai/thinking/ghost-gym-neural-simulator/) 39 | 40 | 41 | ## Conferences 42 | 43 | - [ROSCon](https://roscon.ros.org/) 44 | - [Physical Continuous Integration — CI on Real Robots!](https://vimeo.com/187705231), 2016 45 | - [Determinism in ROS – or when things break sometimes and how to fix it](https://www.youtube.com/watch?v=II8yCw5tPE0), 2017 46 | - [Concurrency in ROS 1 and ROS 2](https://vimeopro.com/osrfoundation/roscon-2019/video/379127709), 2019 47 | - [Rosbag2 for Power Users](https://vimeo.com/649655219/75630c8cff), 2021 48 | - [Tracing ROS 2 with ros2_tracing](https://vimeo.com/652633418), 2021 49 | - [MCAP - A Next Generation File Format for ROS Recording](https://www.youtube.com/watch?v=Ly1XSxW8XF4), 2022 50 | - [Improving Your Application's Algorithms and Optimizing Performance Using Trace Data](https://vimeo.com/879001159/7d588b2cc4), 2023 51 | - [Leveraging a functional approach for more testable and maintainable ROS code](https://vimeo.com/879001204/ad5a36bb36), 2023 52 | - [Octomap is dead long life Bonxai](https://vimeo.com/879001365/4e5a1c2e0a), 2023 53 | - [Real-time Data-flow extension for ROS 2](https://vimeo.com/879001546/54514e92c0) 54 | - [Simulate robots like never before with Open 3D Engine](https://vimeo.com/879001753/80b62256e1), 2023 55 | - [Surviving the Flood (of Rosbags)](https://vimeo.com/879001892/66580b9633), 2023 56 | - [What is Robotics Observability? Scaling ROS from Prototype to Production](https://vimeo.com/879001947/f15b94d3a4), 2023 57 | - [COMMA_CON](https://commacon.splashthat.com/) 58 | - [How We Test openpilot](https://youtu.be/vc6q9yIz6Ys?si=iJu4wZI87WTl37m5), 2021 59 | - [Amazon re:MARS](https://remars.amazonevents.com/) 60 | - [Functional safety product development for autonomous mobile robots](https://youtu.be/0MV5fVxhM9M?si=tdXxzqkZzZH3T1X1), 2022 61 | - [BazelCon](https://conf.bazel.build/) 62 | - [Building Self Driving Cars with Bazel](https://youtu.be/fjfFe98LTm8?si=ekcExfMAgI7-GZDG), 2019 63 | - [CppCon](https://cppcon.org/) 64 | - [Efficiency with Algorithms, Performance with Data Structures](https://www.youtube.com/watch?v=fHNmRkzxHWs), 2014 65 | - [An Introduction to Tracy Profiler in C++](https://www.youtube.com/watch?v=ghXk3Bk5F2U), 2023 66 | - [BehaviorTree.CPP: Task Planning for Robots and Virtual Agents](https://www.youtube.com/watch?v=7MZDBihsR_U), 2023 67 | 68 | 69 | ## Design Docs 70 | 71 | - [ROS2 Design](http://design.ros2.org/) 72 | - [Clock and Time](https://design.ros2.org/articles/clock_and_time.html) 73 | - [Managed nodes](https://design.ros2.org/articles/node_lifecycle.html) 74 | - [ROS 2 Launch System](https://design.ros2.org/articles/roslaunch.html) 75 | - [ROS 2.0 rosbags](https://github.com/ros2/design/blob/ros2bags/articles/rosbags.md) 76 | - [ROS on DDS](https://design.ros2.org/articles/ros_on_dds.html) 77 | - [ROS on ZeroMQ and Friends](https://design.ros2.org/articles/ros_with_zeromq.html) 78 | - [Autoware's Design](https://autowarefoundation.github.io/autoware-documentation/main/design/) 79 | - [Planning component design](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/) 80 | - [openpilot](https://github.com/commaai/openpilot) 81 | - [cereal](https://github.com/commaai/cereal/tree/master) 82 | - [loggerd](https://github.com/commaai/openpilot/tree/master/system/loggerd) 83 | 84 | 85 | ## Articles by Topics 86 | 87 | ### CI/CD 88 | 89 | - [CI for Embedded Systems](https://jamesmunns.com/blog/hardware-ci-overview/) 90 | - [Comprehensive CI/CD System Design](https://tryexceptpass.org/article/continuous-builds-1/) 91 | - [Hardware-In-the-Loop for Connected Automated Vehicles Testing in Real Traffic](https://arxiv.org/pdf/1907.09052.pdf) 92 | - [Improving Embedded Software Development through CI/CD](https://medium.com/@tom_80522/improving-embedded-software-development-through-ci-cd-00e9628d0a12) 93 | 94 | ### Safety, Metrics, Standards 95 | 96 | - [Amazon re:MARS 2022 - Functional safety product development for autonomous mobile robots](https://youtu.be/0MV5fVxhM9M?si=tdXxzqkZzZH3T1X1) 97 | - [Functional Safety Assessment of an Automated Lane Centering System | NHTSA](https://www.nhtsa.gov/sites/nhtsa.gov/files/documents/13498a_812_573_alcsystemreport.pdf) 98 | - [ISO 26262, SOTIF, and Simulation in Autonomy Systems](https://blog.applied.co/blog-post/iso26262-sotif-simulation) 99 | - [Safety Performance Indicators (SPIs) for Autonomous Vehicles](https://users.ece.cmu.edu/~koopman/lectures/L124_SPI_vs_KPI.pdf) 100 | - [A Safety Standard Approach for Fully Autonomous Vehicles](https://users.ece.cmu.edu/~koopman/pubs/Koopman19_WAISE_UL4600.pdf) 101 | - [A Literature Review of Performance Metrics of Automated Driving Systems for On-Road Vehicles](https://www.frontiersin.org/articles/10.3389/ffutr.2021.759125) 102 | - [Title Key performance indicators for assessing the impacts of automation in road transportation Results of the Trilateral key performance](https://www.connectedautomateddriving.eu/wp-content/uploads/2018/03/KPS-for-Assessing-Impact-CAD_VTT.pdf) 103 | - [Quantifying Known and Unknown Metrics in ADAS and AV Development](https://blog.applied.co/blog-post/quantifying-knowns-and-unknowns) 104 | - [ISO 26262-1:2018 - Road vehicles — Functional safety — Part 1: Vocabulary](https://www.iso.org/standard/68383.html) 105 | - [ISO 11270:2014 - Intelligent transport systems — Lane keeping assistance systems (LKAS) — Performance requirements and test procedures](https://www.iso.org/standard/50347.html) 106 | 107 | ### Testing 108 | 109 | - [Testing robotics systems in fast-paced startups](https://mjyc.github.io/2020/12/16/testing.html) 110 | - [How Lessons From Self-Driving Can Improve LLMs](https://web.archive.org/web/20231209121342/https://www.tidepool.so/2023/11/08/how-lessons-from-self-driving-can-improve-llms/) 111 | 112 | ### Observability 113 | 114 | - [Prometheus vs. OpenTelemetry Metrics: A Complete Guide](https://www.timescale.com/blog/prometheus-vs-opentelemetry-metrics-a-complete-guide/) 115 | - [Robo-Observability](https://mjyc.github.io/2023/04/21/observability.html) 116 | - [First Mile Observability and the Rise of Observability Pipelines](https://bit.kevinslin.com/p/first-mile-observability-and-the) 117 | - [Surviving the Flood (of Rosbags)](https://vimeo.com/879001892/66580b9633) 118 | - [What is Robotics Observability? Scaling ROS from Prototype to Production](https://vimeo.com/879001947/f15b94d3a4) 119 | - [Improving Your Application's Algorithms and Optimizing Performance Using Trace Data](https://vimeo.com/879001159/7d588b2cc4) 120 | - [An Introduction to Tracy Profiler in C++](https://www.youtube.com/watch?v=ghXk3Bk5F2U) 121 | 122 | ### C/C++ 123 | 124 | - [An introduction to C++'s SFINAE concept: compile-time introspection of a class member](https://jguegant.github.io/blogs/tech/sfinae-introduction.html) 125 | - [The C++ Bestiary](http://videocortex.io/2017/Bestiary/) 126 | - [Reflection in C++ Part 1: The Present](https://gracicot.github.io/reflection/2018/04/03/reflection-present.html) 127 | - [Challenge your performance intuition with C++ magic squares](https://wordsandbuttons.online/challenge_your_performance_intuition_with_cpp_magic_squares.html) 128 | - [Brain Unrolling](http://videocortex.io/2019/Brain-Unrolling/) 129 | [TBB Data Flow graphs in Robotics](https://nicolovaligi.com/talks/tbb-data-flow-robotics/) 130 | - [C++ medley](https://docs.google.com/presentation/d/1syD-vSwfrGoRZXi8uybnP6qfU8tjcht0vJAdmrRU0_Y/edit) 131 | - [Context is Everything](https://vimeo.com/644068002) 132 | - [Async stack traces in folly: Improving debugging in the developer lifecycle](https://developers.facebook.com/blog/post/2021/10/21/async-stack-traces-folly-improving-debugging-developer-lifecycle/) 133 | - [Real-time programming with Linux, part 1: What is real-time?](https://shuhaowu.com/blog/2022/01-linux-rt-appdev-part1.html) 134 | - [The Danger of Atomic Operations](https://abseil.io/blog/01222022-atomic-operations) 135 | - [In Defense Of Linked Lists](https://www.rfleury.com/p/in-defense-of-linked-lists) 136 | - [coffeeintobugs](https://github.com/dallison/coffeeintobugs) 137 | - [Coffee Into Bugs: Life After Threads, Coroutines](https://www.linkedin.com/pulse/coffee-bugs-life-after-threads-coroutines-dave-allison) 138 | - [An easy-to-implement, arena-friendly hash map](https://nullprogram.com/blog/2023/09/30/) 139 | - [CPP Optimizations Diary](https://cpp-optimizations.netlify.app/) 140 | 141 | ### MLOps 142 | 143 | - [Woven by Toyota | Data Processing, MLOps and training at Scale With Flyte](https://www.youtube.com/watch?v=OVLZ6-uR_so) 144 | - [ML Infrastructure for Autonomous Vehicles @ Cruise | Alexander Sidorov](https://www.youtube.com/watch?v=zAT8sGsjnZ0) 145 | - [Cruise.data - A new dataset processing pipeline for Cruise ML](https://www.youtube.com/watch?v=gj0BqvfX_wI) 146 | - [Building a Data Lakehouse to Manage PBs of Autonomous Vehicle Data](https://www.youtube.com/watch?v=MaQQmjtFUK8) 147 | - [What is MLOps?](https://aws.amazon.com/what-is/mlops/) 148 | - [Machine Learning Operations](https://ml-ops.org/) 149 | 150 | 151 | ## Learning Resources 152 | 153 | ### Mindmaps & Diagrams 154 | 155 | - [roadmap.sh](https://roadmap.sh/) - [Backend](https://roadmap.sh/backend) | [DevOps](https://roadmap.sh/devops) 156 | - [scikit-learn - Choosing the right estimator](https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html) 157 | - [Software Architecture Styles](https://images.app.goo.gl/YQPSrKNV8d7MeW176) 158 | - [The Map of Control Theory](https://engineeringmedia.com/) 159 | 160 | ### University Courses 161 | 162 | with publically available slides and/or homeworks (problems). 163 | 164 | - [Georgia Institute of Technology: Interactive Linear Algebra \[1553\]](https://textbooks.math.gatech.edu/ila/) 165 | - [Georgia Tech CS 3630: Introduction to Computer Vision](https://dellaert.github.io/20S-3630/schedule.html) 166 | - [Georgia Tech CS x476: Introduction to Computer Vision](https://dellaert.github.io/21F-x476/schedule.html) 167 | - [MIT 6.4210/6.4212 - Robotic Manipulation](https://manipulation.csail.mit.edu/) 168 | - [University of California, Berkely CS 287 Advanced Robotics](https://people.eecs.berkeley.edu/~pabbeel/cs287-fa19/) 169 | - [University of Washington CSE 571: AI-Robotics](https://courses.cs.washington.edu/courses/cse571/23sp/) 170 | - [Homework 1 - EKF and Particle Filter for Localization](https://courses.cs.washington.edu/courses/cse571/23sp/homeworks/CSE571_HW1.pdf) 171 | - [University of Washington CSE 478: Autonomous Robotics](https://courses.cs.washington.edu/courses/cse478/20wi/) 172 | - [Assignments](https://gitlab.cs.washington.edu/cse-478wi) 173 | - [University of Washington CSE 599g1: Introduction to Deep Learning](https://courses.cs.washington.edu/courses/cse599g1/19au/) 174 | - [dubnet](https://github.com/pjreddie/dubnet/tree/main) 175 | - [University of Washington CSE P576: Computer Vision](https://courses.cs.washington.edu/courses/csep576/18sp/) 176 | 177 | ### System Design 178 | 179 | - [Grokking the System Design Interview](https://www.educative.io/courses/grokking-the-system-design-interview) 180 | - [Preparing for the Systems Design and Coding Interview](https://blog.pragmaticengineer.com/preparing-for-the-systems-design-and-coding-interviews/) 181 | - [How to best prepare for system design interviews | Top Tips for system design interviews preparation](https://www.youtube.com/watch?v=aht20iQXfRY) 182 | - [System Design Interview – Step By Step Guide](https://www.youtube.com/watch?v=bUHFg8CZFws) 183 | - [Systems Design Interview Guide](http://patrickhalina.com/posts/systems-design-interview-guide/?ref=blog.pragmaticengineer.com) 184 | - [The System Design Primer](https://github.com/donnemartin/system-design-primer) 185 | - [tssovi/grokking-the-object-oriented-design-interview](https://github.com/tssovi/grokking-the-object-oriented-design-interview/tree/master/object-oriented-design-case-studies) 186 | 187 | ### Software Architecture 188 | 189 | - [Software Architecture Guide](https://martinfowler.com/architecture/) 190 | - [Refactoring.Guru](https://refactoring.guru/) 191 | 192 | ### Hands-on Exercise 193 | 194 | - [Autonomous Systems Interview Preparations](https://gist.github.com/sunsided/b76260626cefb7512a9b3579f1c9660e) 195 | - [EvalAI](https://github.com/Cloud-CV/EvalAI) 196 | - [Kaggle](https://www.kaggle.com/) 197 | - [LeetCode](https://leetcode.com/): [Data Stream](https://leetcode.com/tag/data-stream/), [Design](https://leetcode.com/tag/design/), [Matrix](https://leetcode.com/tag/matrix/), [Simulation](https://leetcode.com/tag/simulation/), [Bit Manipulation](https://leetcode.com/tag/bit-manipulation/) 198 | - [mint-lab/awesome-robotics-datasets](https://github.com/mint-lab/awesome-robotics-datasets) 199 | - [NeetCode](https://neetcode.io/) 200 | - [Robotics Course by Hugging Face](https://huggingface.co/robotics-course), featuring [LeRobot](https://huggingface.co/lerobot) 201 | - [PythonRobotics](https://github.com/AtsushiSakai/PythonRobotics) 202 | - [SadServers](https://sadservers.com/) 203 | 204 | ### Engineering in Organization 205 | 206 | - [Going from Junior -> Senior engineer in 2 years](https://careercutler.substack.com/p/going-from-junior-senior-engineer) 207 | - [How to Lead a Project - as a Software Engineer](https://blog.pragmaticengineer.com/how-to-lead-a-project-in-software-development/) 208 | - [project-checklist by amilajack](https://github.com/amilajack/project-checklist) 209 | - [Spotify Engineering Culture - Part 1](https://youtu.be/Yvfz4HGtoPc) 210 | - [The Glue Engineer](https://noidea.dog/glue) 211 | - [The Scrum Guide](https://scrumguides.org/index.html) 212 | - [Why you should stop using product roadmaps and try the GIST Framework](https://itamargilad.com/gist-framework/) 213 | - [GIST Planning](https://www.productplan.com/glossary/gist-planning/) 214 | 215 | 216 | ## Related Lists 217 | 218 | - [Awesome Collision Detection](https://github.com/jslee02/awesome-collision-detection) 219 | - [awesome-ecs](https://github.com/jslee02/awesome-entity-component-system) 220 | - [awesome-gpgpu](https://github.com/jslee02/awesome-gpgpu) 221 | - [Why Aren't There C Conferences?](https://nullprogram.com/blog/2018/11/21/) 222 | 223 | 224 | ## License 225 | 226 | [![CC0](https://licensebuttons.net/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/) 227 | --------------------------------------------------------------------------------