ROS 十二、认识并安装ROS2


ROS 12:引入ROS2

一、认识ROS2

ROS在需求量增加之后,需要实现:

  • 多机器人系统
  • 跨平台
  • 实时性
  • 网络连接
  • 产品化
  • 项目管理

ROS2因此出现了。

ROS2有以下几个特点:

  • ROS1 只支持Linux和MacOS,而 ROS2 支持Linux/Windows/MacOS/RTOS

  • 架构的颠覆:

    ROS1的通讯基于TCPROS/UDPROS,所有节点都要经过ROS Master

    ROS2使用基于DDS的Discovery机制,自发现后建立稳定的链接,实现真正的分布式架构

    • ROS DDS由ROS Middleware中间件定义接口,使用不同厂商的DDS时,只需安装另一个DDS,代码无需再修改
  • 节点模型不同

    ROS1:publish/subscribe

    ROS2:discovery

  • 进程模型不同

    ROS1:Nodelet

    ROS2:Intra-process

  • 编译系统升级

    ROS1使用rosbuild,catkin管理项目

    ROS2使用升级版的ament,colcon

  • ROS2 支持实时控制

  • ROS2 广泛使用C++11,和Python3.5以上

  • 在 ROS2 上通过ros_bridge和 ROS1 进行通信

  • ROS2 使用托管启动:用户可以指定节点启动顺序

  • ROS2 取消了 nodelet 的概念,支持多节点初始化

  • ROS2 launch文件使用 python 编写,相比于 xml 拓展了功能性

  • ……

二、安装

以下是按照Ubuntu22.04版本安装

ROS2在Ubuntu只支持22.04与20.04,其中20.04需要源码安装

设置编码

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 
export LANG=en_US.UTF-8

添加源

sudo apt update && sudo apt install curl gnupg lsb-release 

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

如果添加源出现Failed to connect to raw.githubusercontent.com的报错,按照以下步骤即可:

登录网站:https://www.ipaddress.com

在打开的网站中将“raw.githubusercontent.com”复制到查询栏中进行搜索,可以看到域名对应的IP地址信息

sudo chmod 777 /etc/hosts 

用编辑器打开这个文件,在文末添加你查询到的结果,比如:

151.101.84.133 raw.githubusercontent.com

保存退出,改回权限:

sudo chmod 644 /etc/hosts

即可正常使用

安装

sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop

环境变量

source /opt/ros/humble/setup.bash
echo " source /opt/ros/humble/setup.bash" >> ~/.bashrc 

测试:

测试1

创建一个发布者:

ros2 run demo_nodes_cpp talker

再创建一个监听者:

ros2 run demo_nodes_py listener

看到两个中断可以正常打印数据即可

测试2

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

观察到可以正常运行即可


文章作者: 拓佑豪
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 拓佑豪 !
评论
  目录