ROS2_快速入门_1

Catalogue
  1. 1. 1. ROS2
    1. 1.1. 1.1. ROS2新技术
    2. 1.2. 1.2. ROS2与ROS1 架构比对
    3. 1.3. 1.3. ROS2的提升
  2. 2. 2. 入门教程
    1. 2.1. 2.1. 克隆样本仓库
    2. 2.2. 2.2. 安装依赖
    3. 2.3. 2.3. 安装编译工具
    4. 2.4. 2.4. 构建项目
    5. 2.5. 2.5. 覆盖空间
    6. 2.6. 2.6. 运行
    7. 2.7. 2.7. 修改程序
    8. 2.8. 2.8. 参考资料

1. ROS2

1.1. ROS2新技术

  • Zeroconf:零配置网络服务规范,用于自动生成可用IP地址的网络技术,不需要额外的手动配置和专属的配置服务器。
  • Protocol Buffers:Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。
  • ZeroMQ(and the other MQs):一个简单好用的传输层,相框架一样的一个socket library,它使的socket编程更加简单、简洁和性能更高。
  • Redis:一个高性能的key-value数据库。
  • WebSockets:HTML5开始提供的浏览器与服务器间进行全双工通讯的网络技术。
  • DDS(Data Distribution Service):新一代分布式实时通信中间件技术规范,DDS采用发布/订阅体系架构,强调以数据为中心,提供丰富的Qos服务质量策略,能保障数据进行实时、高效、灵活的分发,可满足各种分布式实时通信应用要求,
  • 多机器人控制,可以同时驾奴多个机器人。
  • 多平台应用支持、可以在x86和ARM上跑。

1.2. ROS2与ROS1 架构比对

1.3. ROS2的提升

  1. 实时性增强:数据必须在deadline之前完成更新。
  2. 持续性增强:ROS1尽管存在数据队列的概念,但是还有很大的局限,订阅者无法接收到加入网络之前的数据; DDS可以为ROS提供数据历史的服务,就算新加入的节点,也可以获取发布的所有历史数据。
  3. 可靠性增强:通过DDS配置可靠性原则,用户可以根据需求选择性能模式(BEST_EFFORT)或者稳定模式(RELIABLE)。

参考自:https://blog.csdn.net/aiqinchao/article/details/90580478

2. 入门教程

2.1. 克隆样本仓库

git clone https://github.com/ros/ros_tutorials.git -b eloquent-devel

2.2. 安装依赖

在构建工作空间之前,您需要解决程序包依赖性。您可能已经具有所有依赖关系,但是最佳实践是每次克隆时都要检查依赖关系。您不会希望由于长时间缺少依赖关系而导致构建失败。

在工作区(ROS2)中,运行以下命令,安装依赖:

sudo rosdep install -i --from-path src --rosdistro=${ROS_DISTRO} -y

如果已经拥有所有依赖项,则控制台将返回:

1
#All required rosdeps installed successfully

软件包在package.xml文件中声明其依赖关系。该命令将遍历那些声明并安装缺少的那些声明。

2.3. 安装编译工具

colcon是ROS编译工具catkin_makecatkin_make_isolatedcatkin_toolsament_tools的换代

sudo apt-get install python3-colcon-common-extensions

2.4. 构建项目

编译:

1
colcon build

一些参数:

  • --packages-up-to 构建所需的程序包,及其所有依赖项,而不是整个工作区(节省时间)
  • --symlink-install 使您不必在每次调整python脚本时都需要重建
  • --event-handlers console_direct+在构建时显示控制台输出(否则可以在log目录中找到)

开始编译

编译完成

构建完成后,输入ls,您将看到colcon创建了新目录:

2.5. 覆盖空间

在运行编译完成的程序前, 需要在工作空间目录下执行以下指令

source ./install/local_setup.bash

source ./install/local_setup.zsh

这个操作会将overlap层中可用的软件包添加到您的环境中.

2.6. 运行

现在,可以turtlesim从叠加层运行该软件包:

1
ros2 run turtlesim turtlesim_node

有一个问题是, 如何确定这是刚刚构建的turtlesim程序在运行, 而不是安装ros时自带的turtlesim在运行?

让我们在overlap层中修改turtlesim,以便可以看到效果:

  • 您可以与底层分开修改和重建叠加中的包。
  • overlap层优先于参考层。

2.7. 修改程序

修改src/ros_tutorials/turtlesim/src/turtle_frame.cpp文件 , 使得程序窗口标题改变

重新构建编译

colcon build

运行

可以看到, 标题已经被修改, 可以证明, 现在运行的turtlesim确实是来自代码的, 而不是ros系统自带的.

2.8. 参考资料