解决方案索引库:记录基于 ROS(ROS1 和 ROS2)开发过程涉及的相关工具链、代码块
🤨 欢迎交流(Issues,PR,Discussions)
- Build Tool: How to use Catkin, colcon...
- CMake and Package: How to write CMake and Package.xml
- Executor and Callback: How to use multi-thread executor
- Glossary: ROS concepts
- Header and Module:Commonly used header file, module, library (e.g. extension library for Python)
- Install: How to install ROS and ROS packages
- Interface: How to use ROS interface (e.g. msg, srv, action)
- Launch: How to use launch file
- Logger: How to use logger
- Network Communication: How to implement cross-computer communication
- Node and Component: How to write a basic ROS node and component
- Parameter Server: How to use parameter server
- Record: How to record and replay ROS interface
- TF: How to use the transform
- Time: How to use ROS clock sources
- DDS
- Deployment: How to create a deb package
- Assertion and Exception
- Plugins
- Signal: How to terminate a multi-thread process
❓ 问题 1: 如何在 ROS2 找到对应的 Python API?
根据C++
的相关代码和 API 进行初筛,然后再查看 rclpy API 文档,找到对应的模块和代码接口,继而实现迁移
❓ 问题 2: 如何实现 ROS1 和 ROS2 代码的迁移?
- 过一遍 ChatGPT
- 经验泛化(谷歌,Stack Overflow,百度,曾经遇到过......)
- 查看例程
❓ 问题 3: 为什么选择 ROS2?
❓ 问题 4: 开发 ROS 工程的流程?
- 明确程序的功能,明确程序的输入和输出
- 进行快速原型开发,验证程序的功能
- 优化程序,提高程序的性能
❓ 问题 5: SLAM 在 ROS 下跑非 ROS 下跑的区别和意义是什么呢,以 ORBSLAM-2 为例?
在 ROS 框架下开发和验证算法会更加的方便。首先,有丰富的三方支持。比如,我们可以直接使用厂家提供的 ROS 平台下的程序来读取传感器的数据,而不用自己再写程序来读取数据,而当然前提是供应商提供了相关的程序。其次,ROS 框架下包含一套进程通信的架构。通过消息的订阅和发布,回调函数的处理,我们就能够快速地实现进程通信。提供了算法开发和验证的一系列工具链。比如进行数据可视化的 RViz,数据录制的 rosbag,仿真平台 Gazebo
以 ORBSLAM2 为例,如果不依赖 ROS 的话,第一要自己手写对传感器数据读取的程序,第二,设计的算法如果是分模块,模块之间要通讯的话,还要 考量如何通讯;第三,还要写可视化的程序。凡此,都要花费大量的时间。
❓ 问题 6: 当前索引库与官方文档有何异同
其实在编者多次浏览官方文档后,会觉得官方文档已提供了详细的线索和解决方案,当前索引库只是多了 ROS1 和 ROS2 的整合和部分工程上的线索
- 能熟练地在 ROS 框架下进行算法的开发和验证
- 能熟练地定位和解决 ROS 开发过程中遇到的问题
- 2023.07.24-2023.07.31 修订所有文档
- 追加 giscus 评论系统
- 参考 ROS2 官网文档设计目录
- 在粘贴命令行时移除无用的符号(e.g. $ 和 #)