ubuntu22.04安装ROS2
- 0.前言
- 一、安装ROS2
- 1.首先将本地的编码格式修改为utf-8
- 2.添加ROS2 GPG key
- 3.安装ROS2
- 4.设置环境变量
- 二、简单测试
- 1.Hello ROS!
- 2.ROS Turtle
- 三、总结
0.前言
最近也没找到什么特别感兴趣的小项目,不过偶然间看见ROS2这个东西,说是可以和Cortex-m系列单片机协同部署,感觉有点意思,尝试装一个玩玩。之前在学校的时候用过ROS1,不过最终也只是在Cortex-A系列的板子上部署过,理论上还是个Linux平台。先装上看看。
一、安装ROS2
安装ROS2有两种方式可供参考:
1.通过@鱼香ROS
大佬的一键安装脚本进行安装,支持ROS1、ROS2、树莓派等常见平台。
2.通过ROS官网的安装教程进行安装。
这里使用官网的安装教程,想要使用一键安装脚本的也可以自行查阅。进入ROS官网后找到Getting Started,有以下两种ROS版本,ROS1和ROS2的区别好像有一个是关于主节点master的,ROS1需要一个master主节点辅助各个node进行通信,一但主节点宕机,从节点也会出现故障;ROS2在从节点node间建立通信后,则可以不依赖主节点。其他的区别还是看一下官方的介绍,这里就不赘述了。
点击ROS2下方的install按钮就可以看到详细的安装介绍,选择自己平台对应的版本即可。以ubuntu22.04为例:
1.首先将本地的编码格式修改为utf-8
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
注:这里修改成en_US.UTF-8编码格式后,在之后的ubuntu使用过程中有可能会遇到中文编码格式错乱的问题(仅为猜测,仅供参考),所以最好了解一下编码的设置方式,以便后续使用。
2.添加ROS2 GPG key
sudo apt update && sudo apt install curl -y
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
注:
如果遇到网址拒绝访问,可以参考这篇文章,将该网站地址进行重定向。
3.安装ROS2
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop
4.设置环境变量
source /opt/ros/humble/setup.bash
echo " source /opt/ros/humble/setup.bash" >> ~/.bashrc
至此,ROS2就安装完成了。
二、简单测试
1.Hello ROS!
启动两个终端,分别使用以下两条命令:
# terminal-1
ros2 run demo_nodes_cpp talker
# terminal-2
ros2 run demo_nodes_py listener
可以看到以下输出:
表示talker发送的字符串可以在listener中正常接收,功能正常。
2.ROS Turtle
小海龟仿真是ROS的经典项目,也来试试新的运行方法。
启动两个终端,分别使用以下两条命令:
# terminal-1
ros2 run turtlesim turtlesim_node
# terminal-2
ros2 run turtlesim turtle_teleop_key
其中第一条命令为开启turtlesim仿真,第二条将键盘输入作为小海龟的运动控制,然后使用键盘方向键即可控制小海龟爬行:
三、总结
就目前的基本功能使用来看,ROS2还是有较大不同的。首先,不需要像ROS1一样单独起一个ROS core进程,就可以完成node节点的创建和通信,ROS core就是前面说的master节点。第二,可以明显感觉到小海龟的响应速度较ROS1有较大提升,好像是因为ROS2更换了节点间的通信协议。
其他的区别就等后续继续探索吧,目前ROS2的普及应该是大势所趋,很多厂商都开始陆续跟进,不过现阶段的相关资源包还是较少,搭积木不如ROS1快捷方便,按需使用吧。