Leveraging a Functional Approach for More Testable and Maintainable ROS 2 Code
Outline ● Introduction ● Overview of ROS 2 ● ROS 2 Conventional Approach ● Introduction to Functional Programming Principles ● Refactoring using Functional Programming Principles ● ConclusionIntroductionAbout System (ROS) is the de facto middleware of choice across robotics academia and industry Why use Robot Operating System? Clip taken from: https://robots.ros.org/● Robot Operating System (ROS) is the ● According to the ROS 2022 Metrics Report, more than 740 companies use ROS! Why use Robot Operating System? Clip taken from: https://robots.ros.org/● Robot Operating System (ROS) is the de facto middleware0 码力 | 200 页 | 1.77 MB | 5 月前3Building bridges: Leveraging C++ and ROS for simulators, sensor data and algorithms
Apex.Alan, Apex.Ray are trademarks of Apex.AI. CppCon 2023 Building bridges: Leveraging C++ and ROS for simulators, sensor data and algorithms Divya Aggarwal October 5, 2023© 2023 Apex.AI, Inc. | 1. ROS and simulators 2. What is missing? 3. Our proposal© 2023 Apex.AI, Inc. | All rights reserved. Apex.AI, Apex.OS, Apex.Grace, Apex.Ida, Apex.Alan, Apex.Ray are trademarks of Apex.AI. ROS and simulators© Apex.Grace, Apex.Ida, Apex.Alan, Apex.Ray are trademarks of Apex.AI. Back to basics — ROS ROS & simulators 5 ROS is an open-source Robot Operating System 1. A set of software libraries and tools that0 码力 | 38 页 | 2.17 MB | 5 月前3Conan 2.10 Documentation
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 6.12 ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . platforms, all build systems and compilers 5 Conan Documentation, Release 2.10.1 1.5 Stable From Conan 2.0 and onwards, there is a commitment to stability, with the goal of not breaking user space while evolving using Conan 1.X, please read the Conan 2 Migration guide , to start preparing your package recipes to 2.0 and be aware of some changes while you still work in Conan 1.X. That guide summarizes the above mentioned0 码力 | 803 页 | 5.02 MB | 10 月前3Conan 2.9 Documentation
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 6.11 ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . platforms, all build systems and compilers 5 Conan Documentation, Release 2.9.3 1.5 Stable From Conan 2.0 and onwards, there is a commitment to stability, with the goal of not breaking user space while evolving using Conan 1.X, please read the Conan 2 Migration guide , to start preparing your package recipes to 2.0 and be aware of some changes while you still work in Conan 1.X. That guide summarizes the above mentioned0 码力 | 795 页 | 4.99 MB | 10 月前3Plug-in Based Software Architecture for Robotics
system ● Cross-platform ● Memory Management 35Library used to implement plugin architecture in ROS projects• Robot Operating System • Set of libraries and tools to help build robotic applications communicate between nodes using topics What is ROS? Image from https://docs.ros.org/en/rolling/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Nodes/Understanding- ROS2-Nodes.html 37• Network layer communication • Need plugins for performance • In a perfect world, ROS would not require plugins Why use plugins over nodes? 38• Defacto Plugin Manager for ROS projects • Built on top of class_loader, rcpputils and0 码力 | 75 页 | 2.40 MB | 5 月前3Robotics at Compile-Time: Optimizing Robotics Algorithms with C++'s Compile-Time Features
format • Requires lots of run-time decisions • Generally maintained by a corporate entity • ROS and ROS 2 ecosystem (Open Robotics/ Intrinsic) • Drake (TRI) • Ignition and Gazebo (Open Robotics/Intrinsic) Locking primitives that block • Optimize for CPU and memory budgets, missed deadlines https://design.ros2.org/articles/realtime_background.htmlWhy C++ is Great for Real-Time Robotics • isocpp and --Wpedantic0 码力 | 45 页 | 20.73 MB | 5 月前3Julia 1.11.4
220446049250313e-16 julia> eps() # same as eps(Float64) 2.220446049250313e-16 These values are 2.0^-23 and 2.0^-52 as Float32 and Float64 values, respectively. The eps function can also take a floating-point 1.234567890123456789010000000000000000000000000000000000000000000000000000000004 julia> BigFloat(2.0^66) / 3 2.459565876494606882133333333333333333333333333333333333333333333333333333333344e+19 julia> 2(1 - 1im) 2 - 2im julia> (2 + 3im) - 1 1 + 3im julia> (1 + 2im) + 0.5 1.5 + 2.0im julia> (2 + 3im) - 0.5im 2.0 + 2.5im julia> 0.75(1 + 2im) 0.75 + 1.5im julia> (2 + 3im) / 2 1.0 + 1.5im julia>0 码力 | 2007 页 | 6.73 MB | 3 月前3Julia 1.11.5 Documentation
eps(Float64) 2.220446049250313e-16CHAPTER 5. INTEGERS AND FLOATING-POINT NUMBERS 24 These values are 2.0^-23 and 2.0^-52 as Float32 and Float64 values, respectively. The eps function can also take a floating-point 1.234567890123456789010000000000000000000000000000000000000000000000000000000004 julia> BigFloat(2.0^66) / 3 2.459565876494606882133333333333333333333333333333333333333333333333333333333344e+19 julia> 2(1 - 1im) 2 - 2im julia> (2 + 3im) - 1 1 + 3im julia> (1 + 2im) + 0.5 1.5 + 2.0im julia> (2 + 3im) - 0.5im 2.0 + 2.5im julia> 0.75(1 + 2im) 0.75 + 1.5im julia> (2 + 3im) / 2 1.0 + 1.5im julia>0 码力 | 2007 页 | 6.73 MB | 3 月前3Julia 1.11.6 Release Notes
eps(Float64) 2.220446049250313e-16CHAPTER 5. INTEGERS AND FLOATING-POINT NUMBERS 24 These values are 2.0^-23 and 2.0^-52 as Float32 and Float64 values, respectively. The eps function can also take a floating-point 1.234567890123456789010000000000000000000000000000000000000000000000000000000004 julia> BigFloat(2.0^66) / 3 2.459565876494606882133333333333333333333333333333333333333333333333333333333344e+19 julia> 2(1 - 1im) 2 - 2im julia> (2 + 3im) - 1 1 + 3im julia> (1 + 2im) + 0.5 1.5 + 2.0im julia> (2 + 3im) - 0.5im 2.0 + 2.5im julia> 0.75(1 + 2im) 0.75 + 1.5im julia> (2 + 3im) / 2 1.0 + 1.5im julia>0 码力 | 2007 页 | 6.73 MB | 3 月前3julia 1.10.10
220446049250313e-16 julia> eps() # same as eps(Float64) 2.220446049250313e-16 These values are 2.0^-23 and 2.0^-52 as Float32 and Float64 values, respectively. The eps function can also take a floating-point 1.234567890123456789010000000000000000000000000000000000000000000000000000000004 julia> BigFloat(2.0^66) / 3CHAPTER 4. INTEGERS AND FLOATING-POINT NUMBERS 23 2.45956587649460688213333333333333333333 2(1 - 1im) 2 - 2im julia> (2 + 3im) - 1 1 + 3im julia> (1 + 2im) + 0.5 1.5 + 2.0im julia> (2 + 3im) - 0.5im 2.0 + 2.5im julia> 0.75(1 + 2im) 0.75 + 1.5im julia> (2 + 3im) / 2 1.0 + 1.5im julia>0 码力 | 1692 页 | 6.34 MB | 3 月前3
共 202 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21