ROS2学习笔记(1)在Ubuntu22.04中安装ROS2

在Ubuntu22.04中安装ROS2


前言

目前加入了学校老师的一个项目团队里的机械臂小组,从ROS2学起。

正在跟随博主@古月的 ROS2入门21讲 课程进行学习。

一、ROS2的简介

ROS2的前身是ROSROS即机器人操作系统(Robot Operating System)。但是ROS本身并不是一个操作系统,而是一个软件库和工具集。ROS2继承了ROS并解决了ROS的一些问题,性能更加完善。

二、准备工作

1.搭建Linux操作系统环境

(Linux是ROS2底层中最重要的一种操作系统,并且Linux是免费开源的)

安装VMware Workstation Pro虚拟机

下载地址如下:

下载 VMware Workstation Pro | CNhttps://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html

2.安装Ubuntu22.04

(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

3.匹配ROS2的版本

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终端上进行)

 1.设置语言环境

输入指令:

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 表示大陆地区。)

2.准备Ubuntu universe 存储库

(这一步骤主要就是更换软件源,linux系统不是一定要更换源,是否换源主要是看自己的需求,如Ubuntu它的官方软件源在国外,如果不更换成国内的镜像源的话,下载速度会很慢并且经常失败。这里提到几个概念首先是<1>源:可以理解为来源,我们安装软件是,程序从哪里获取的软件包。<2>镜像:指对一个网站内容的拷贝, 多用于为相同的信息提供不同的源<3>镜像源:把官方的源作为一个镜像,可以在这里下载软件。)

首先打开 Ubuntu 的 software&updates(软件和更新)

 找到下载来源(download from)点击右侧向下箭头,选择 其他选项(other.....)

 

 单击右侧   选择最佳服务器(select best server)

 之后等待即可

 找到mirrors.aliyun.com 选中,点击右下角 选择服务器(choose server)按钮

 

之后输入密码即可 

 退出时不要点这两个按钮,revert(恢复) reload(重新装) 

 

 3.配置软件源

上一步骤我已经选择好了阿里云软件源,接下来就是对它进行配置

首先在终端中输入以下指令

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

4.安装ROS2

首先需要更新一下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

第二种:

更换其他软件源如:清华大学源,东北大学源等,相关配置可以在社区里查询。

5.安装humble桌面

接下来就是安装ros-humble-desktop(软件的名字)桌面的完整版,即它会安装ROS2核心通讯机制以及一些上位机的可视化软件所有相关的功能。

输入指令如下:

sudo apt install ros-humble-desktop

这一步骤耗时较长,保证好网络的连接。

6.环境配置

首先设置环境变量。意思就是让系统知道软件和命令安装的路径(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基本上也就安装完了,接下来就是检测是否安装成功。

7.检验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很新颖并且是持续发展的,虽然性能很完善,但是目前对于我来说最大的问题就是缺乏学习资源,目前我在跟着@古月博主的课程学习。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值