系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理
文章目录
前言
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!开发管理相关博客专栏:
https://blog.csdn.net/qq_35635374/article/details/138258301
开发经验及方法博客专栏:
https://blog.csdn.net/qq_35635374/article/details/138256324
嵌入式系统平台硬软件底层开发相关博客专栏:
https://blog.csdn.net/qq_35635374/article/details/138229695
机器人导航系统架构及业务模块组合策略的相关博客专栏:
https://blog.csdn.net/qq_35635374/article/details/138202210
运动学与动力学基础知识相关博客专栏:
https://blog.csdn.net/qq_35635374/article/details/138201806
机器人传感器及感知相关教程及博客请关注专栏:
https://blog.csdn.net/qq_35635374/article/details/138507260
机器人定位相关教程及博客请关注专栏:
https://blog.csdn.net/qq_35635374/article/details/138199360
机器人地图建立相关教程及博客请关注专栏:
https://blog.csdn.net/qq_35635374/article/details/138199063
机器人动作策略规划相关教程及博客请关注专栏:
https://blog.csdn.net/qq_35635374/article/details/138175048
机器人全局路径规划相关教程及博客请关注专栏:
https://blog.csdn.net/qq_35635374/article/details/138174918
机器人局部轨迹规划相关教程及博客请关注专栏:
https://blog.csdn.net/qq_35635374/article/details/138174730
机器人轨迹跟踪控制相关教程及博客请关注专栏:
https://blog.csdn.net/qq_35635374/article/details/138168913
本文先对ROS2在ROS1 的基础的改进点做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章
提示:以下是本篇文章正文内容
一、为什么要推出ROS2【重构ROS1】
ROS设计了一整套通信机制(话题、服务、参数、动作)
随着ROS不断的添加新功能,ROS变得越来越臃肿,祖传代码也越来越多。ROS开发人员发现在原有的ROS架构上修修补补十分消耗头发,ROS官方也重新设计制作了ROS2。
.
.
二、ROS1存在的问题
1、主节点不稳定就会造成整个系统通信的异常
2、通信基于TCP实现,实时性差、系统开销大
3、对Python3支持不友好,需要重新编译
4、消息机制不兼容
5、没有加密机制、安全性不高
.
.
三、ROS1与ROS2架构对比
.
.
四、ROS2新概念例举
1、可用Python编写的Launch文件
2、多机器人协同通信支持
3、支持安全加密通信
4、同一个进程支持多个节点
5、使用ament进行包管理
6、支持Qos服务质量
7、支持节点生命周期管理
8、高效的进程间通信
.
.
五、ROS安装版本(foxy–ubuntu 20.04)
1、ROS安装方式
(1)快速安装
wget http://fishros.com/install -O fishros && bash fishros
(2)手动安装
参考教程
https://fishros.com/d2lros2/#/chapt2/2.3ROS2的安装
注意:ROS1和ROS2不能混装
.
.
六、一些基本的操作
1、学会通过命令行安装软件和ROS2相关的包
几乎和ROS1的方法是一致的
.
2、启动一个节点
source install/setup.bash
ros2 run <package_name> <executable_name>
ros2 run 包名字 可执行文件名字
.
3、Colcon编译器
ROS2默认是没有安装colcon的吗,手动安装指令
sudo apt-get install python3-colcon-common-extensions
编译工程
colcon build
.
.
4、ROS2的launch文件改进
ROS2的launch文件有三种格式,python、xml、yaml。其中ROS2官方推荐的时python方式编写launch文件。 原因在于,相较于XML和YAML,Python是一个编程语言,更加的灵活,我们可以利用Python的很多库来做一些其他工作(比如创建一些初始化的目录等)
参考资料
学习文档
fishros.com