目录
在Ubuntu22.04中安装ROS2
文章目录
前言
一、ROS2的简介
二、准备工作
1.搭建Linux操作系统环境
2.安装Ubuntu22.04
3.匹配ROS2的版本
三、安装步骤
1.设置语言环境
2.准备Ubuntu universe 存储库
3.配置软件源
4.安装ROS2
5.安装humble桌面
6.环境配置
7.检验ROS2是否安装成功
总结
目前加入了学校老师的一个项目团队里的机械臂小组,从ROS2学起。
正在跟随博主@古月的 ROS2入门21讲 课程进行学习。
ROS2的前身是ROS,ROS即机器人操作系统(Robot Operating System)。但是ROS本身并不是一个操作系统,而是一个软件库和工具集。ROS2继承了ROS并解决了ROS的一些问题,性能更加完善。
(Linux是ROS2底层中最重要的一种操作系统,并且Linux是免费开源的)
安装VMware Workstation Pro虚拟机
下载地址如下:
下载 VMware Workstation Pro | CNhttps://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
(Ubuntu就是Linux的发行版,Linux是操作系统内核,没有可视化界面,而Ubuntu就是它的发行版,把操作界面和各种应用软件放到一起,打包成安装系统的镜像。另一个,之所以选择Ubuntu是因为它与ROS2的兼容性最好。)
Ubuntu镜像下载地址如下:
下载Ubuntu桌面系统 | UbuntuUbuntu 22.04下载, Ubuntu 22.10下载, Ubuntu系统下载,Ubuntu 18.04下载,Ubuntu 16.04下载,Ubuntu 14.04下载https://cn.ubuntu.com/download/desktop
ROS2是在不断发展中的,所以它会有许多版本,因为我用的是Ubuntu桌面系统,每版的Ubuntu系统都有与之对应的ROS2版本,每一版ROS2也有与之对应的Ubuntu版本,所以不能随意安装,一定要选择正确的ROS2版本,我安装的是Ubuntu22.04所以对应的ROS2版本应该是Humble。
参考ROS2的发型版本:
Distributions — ROS 2 Documentation: Foxy documentationhttps://docs.ros.org/en/foxy/Releases.html
(注:下列指令,均在Ubuntu终端上进行)
输入指令:
locale
输出结果如下:
LANG=zh_CN.utf8
LANGUAGE=en_US:
LC_CTYPE="zh_CN.utf8"
LC_NUMERIC="zh_CN.utf8"
LC_TIME="zh_CN.utf8"
LC_COLLATE="zh_CN.utf8"
LC_MONETARY="zh_CN.utf8"
LC_MESSAGES="zh_CN.utf8"
LC_PAPER="zh_CN.utf8"
LC_NAME="zh_CN.utf8"
LC_ADDRESS="zh_CN.utf8"
LC_TELEPHONE="zh_CN.utf8"
LC_MEASUREMENT="zh_CN.utf8"
LC_IDENTIFICATION="zh_CN.utf8"
LC_ALL=zh_CN.utf8
语言可以是中文也可以是英文,不影响。需要注意的是一定要支持UTF-8
(UTF-8是字符集,它是在互联网上最为普及的一种统一编码实现方式。
上图中“zh_CN.utf8”,其中 zh 表示中文 CN 表示大陆地区。)
(这一步骤主要就是更换软件源,linux系统不是一定要更换源,是否换源主要是看自己的需求,如Ubuntu它的官方软件源在国外,如果不更换成国内的镜像源的话,下载速度会很慢并且经常失败。这里提到几个概念首先是<1>源:可以理解为来源,我们安装软件是,程序从哪里获取的软件包。<2>镜像:指对一个网站内容的拷贝, 多用于为相同的信息提供不同的源<3>镜像源:把官方的源作为一个镜像,可以在这里下载软件。)
首先打开 Ubuntu 的 software&updates(软件和更新)
找到下载来源(download from)点击右侧向下箭头,选择 其他选项(other.....)
单击右侧 选择最佳服务器(select best server)
找到mirrors.aliyun.com 选中,点击右下角 选择服务器(choose server)按钮
之后输入密码即可
退出时不要点这两个按钮,revert(恢复) reload(重新装)
上一步骤我已经选择好了阿里云软件源,接下来就是对它进行配置
首先在终端中输入以下指令
sudo apt update && sudo apt install curl gnupg lsb-release
之后要输入密码,整个过程中要保证处于联网状态,时间可能会比较长,耐心等待。
输出结果如下图:
接下来就要通过终端中输入下载软件源和密钥的指令,只有电脑中存在这个密钥之后才能访问ROS2的软件源和下载其他软件
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keryings/ros-archive-keyring.gpg
如果遇到下面报错
“Failed to connect to raw.githubusercontent.com”
或者“Failed to connect to raw.githubusercontent.com port 443 after 13 ms:”
这是在安装ROS和ROS2中常见的报错,解决方法是在hosts文件中添加IP地址和域名的映射。
可参考:解决”Failed to connect to raw.githubusercontent.com“报错 - 古月居
解决完报错问题后接着输入下列指令
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
首先需要更新一下apt存储库缓存,相当于手机里软件仓库的软件
输入下列指令
sudo apt update
update指令会访问刚才配置好的软件源去获取ROS2中所有的软件的下载地址,还会访问源列表的最新源并保存在电脑上。
接着是升级软件包,也就是更新软件,相当于手机里应用商店提醒部分软件可以更新。
指令如下
sudo apt upgrade
这一步骤时间可能较长,等待安装即可。
升级软件包时可能遇到如下报错:
E: Failed to fetch http://mirrors.aliyun.com/ubuntu/pool/main/f/foo2zjs/printer-driver-foo2zjs-common_20200505dfsg0-2ubuntu2.22.04.1_all.deb 404 Not Found [IP: 111.31.37.242 80]
E: Failed to fetch http://mirrors.aliyun.com/ubuntu/pool/main/f/foo2zjs/printer-driver-foo2zjs_20200505dfsg0-2ubuntu2.22.04.1_amd64.deb 404 Not Found [IP: 111.31.37.242 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
(意思就是说不能无法获取文档,可能是不与阿里云软件源链接,需要更改Ubuntu软件镜像源)
解决方法有两种:
第一种:
(1)先备份list
输入命令:
sudo cp sources.list sources.list.backup
(2)编辑list
输入命令:
sudo vim sources.list
(vim如果打不开就使用vi编辑器)
(3)找到类似下面内容并替换(一般是deb开头的)
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
(4)更新
输入命令:
sudo apt-get update
第二种:
更换其他软件源如:清华大学源,东北大学源等,相关配置可以在社区里查询。
接下来就是安装ros-humble-desktop(软件的名字)桌面的完整版,即它会安装ROS2核心通讯机制以及一些上位机的可视化软件所有相关的功能。
输入指令如下:
sudo apt install ros-humble-desktop
这一步骤耗时较长,保证好网络的连接。
首先设置环境变量。意思就是让系统知道软件和命令安装的路径(ROS2默认的安装路径是 other locations computer /opt/ros)
输入如下指令:
source /opt/ros/humble/setup.bash
source指令生效后我们可以在终端中输入“ros2”指令
输出结果如上图所示,可以看到上面是一些常用的ros指令,这就说明环境变量设置成功;
但是这时候我们再开启一个新的终端,再次输入"ros2"指令
输出结果如上图所示,可以看到,找不到ros2指令,这就说明了刚才的source指令只能在当前的终端生效,很明显这很不方便。所以我们需要输入下列指令
echo “source /opt/ros/humble/setup.bash” >> ~/.bashrc
这一句的含义是,通过“echo”指令将刚才的“source......”指令放进.bashrc这个脚本文件中,那么设置完成后,每当我们启动一个新的终端,.bashrc脚本文件就会运行一下"source......."这行指令。
到这一步配置环境变量成功后,ROS2基本上也就安装完了,接下来就是检测是否安装成功。
(1)测试cpp和python接口之间的通讯机制是否完整(cpp和python是ROS2自带的接口)
首先输入如下指令:
ros2 run demo_nodes_cpp talker
把cpp当作发布者,会输出"Hello world" 如图所示
再打开一个新的终端,输入下列指令:
ros2 run demo_nodes_python listener
把python当作订阅者,用来接收cpp所发送的数据,输出结果如下图
可以看到两个终端的输出结果字符串"Hello world"同步进行,说明通信系统没问题。
(demo_nodes 是ros2自带的功能包,在终端中输入ros2 run demo_nodes时按Tab键会自动补全指令,下面会出现在当前功能包下的所有可用文件。)
(2)最后再测试一下经典小孩过仿真示例
输入指令:
ros2 run turtlesim turtlesim_node
回车后会启动一个蓝色背景的海归仿真器,如图
再开一个新的终端,再终端中输入下列代码:
ros2 run turtlesim turtle_teleop_key
回车后会启动一个键盘控制节点,如图所示:
之后用鼠标光标选中这个新的终端,然后就可以通过键盘来控制小海龟的移动,如图:
至此,ROS2安装成功。
ROS2很新颖并且是持续发展的,虽然性能很完善,但是目前对于我来说最大的问题就是缺乏学习资源,目前我在跟着@古月博主的课程学习。