文档维护:Arvin

网页部署:Arvin

写在前面:本文旨在记录学习ROS过程中的一些重要知识概念和遇到的错误问题。主要参考赵虚左老师的ROS课程(第一个参考链接),由于赵老师用的noetic版本,而我用的是melodic版本,细节上可能会有所差异。

2

简介

ROS全称Robot Operating System(机器人操作系统)

  • ROS是适用于机器人的开源元操作系统
  • ROS集成了大量的工具,库,协议,提供类似OS所提供的功能,简化对机器人的控制
  • 还提供了用于在多台计算机上获取,构建,编写和运行代码的工具和库,ROS在某些方面类似于“机器人框架”
  • ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体

经过长时间的迭代与发展,ROS有许多版本,大版本有ROS1和ROS2之分。与ROS1相比,主要的更改如下(框架层面):

  • 系统架构进行了颠覆性的变化,ROS1中所有节点都需要在节点管理器ROS Master的管理下进行工作,一旦Master出现问题,系统就面临宕机的风险,ROS2实现了真正的分布式,不再有Master这个角色,借助一种全新的通信框架DDS,为所有节点的通信提供可靠保障。
  • 软件API进行了重新设计,ROS1原有的接口已经无法满足需求,ROS2结合C++最新标准和Python3语言特性,设计了更具通用性的API,虽然导致原有ROS1的代码无法直接在ROS2中运行,但是尽量保留了类似的使用方法,同时提供了大量移植的说明。
  • 编译系统进行了升级,ROS1中使用的rosbuild和catkin问题诸多,尤其是针对代码较多的大项目以及Python编写的项目,编译、链接经常会出错,ROS2对这些问题也进行了优化,重新优化后的编译系统叫做ament和colcon,大家在后续的课程中就会体验到新版编译器的使用方法。

另外ROS1和ROS2内也都包含多个对应版本,并且支持的操作系统也不相同。

Ubuntu ROS1 Release date End of Life
16.04 LTS Kinetic Kame(Not Recommended) 2016.05 2021.04
18.04 LTS Melodic Morenia 2018.05 2023.05
20.04 LTS Noetic Ninjemys(Recommended) 2020.0 2025.05
Ubuntu ROS2 Release date End of Life
20.04 LTS Foxy Fitzroy 2020.05 2023.05
20.04 LTS
22.04 LTS
Humble Hawksbill(Recommended) 2022.05 2027.05
22.04 LTS Iron Irwini(Recommended) 2023.0 2024.09

以上只是部分版本。下面以melodic为例,在Ubuntu18.04上进行安装。

安装

安装源

官方默认安装源:

1
2
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
Copy

或来自国内中科大的安装源

1
2
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
Copy

或来自国内清华的安装源

1
2
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
Copy

设置Key

1
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

安装

首先需要更新 apt(以前是 apt-get, 官方建议使用 apt 而非 apt-get),apt 是用于从互联网仓库搜索、安装、升级、卸载软件或操作系统的工具。

1
2
sudo apt update
Copy

等待…

然后,再安装所需类型的 ROS:ROS 多个类型:Desktop-FullDesktopROS-Base。这里介绍较为常用的Desktop-Full(官方推荐)安装: ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception

1
2
sudo apt install ros-melodic-desktop-full
Copy

等待…

环境设置

配置环境变量,方便在任意 终端中使用 ROS。

1
2
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

安装构建依赖

首先安装构建依赖的相关工具

1
2
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
Copy

然后安装rosdep(可以安装系统依赖)

1
2
sudo apt install python-rosdep
Copy

初始化rosdep

1
2
3
sudo rosdep init
rosdep update
Copy

测试

ROS 内置了一些小程序,可以通过运行这些小程序以检测 ROS 环境是否可以正常运行

  1. 首先启动三个命令行(ctrl + alt + T)
  2. 命令行1键入:roscore
  3. 命令行2键入:rosrun turtlesim turtlesim_node(此时会弹出图形化界面)
  4. 命令行3键入:rosrun turtlesim turtle_teleop_key(在3中可以通过上下左右控制2中乌龟的运动)

1

至此说明安装成功!

报错

sudo rosdep init报错

描述

1
2
3
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

原因

境外资源被屏蔽

解决

使用科学上网,但是依然报错,后来发现在浏览器中可以打开此网址,所以有可能是命令行没走代理的缘故。所以设置命令行走代理。

https://zhuanlan.zhihu.com/p/377550825

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1.安装
sudo apt update
sudo apt install proxychains4

# 2.配置
sudo vim /etc/proxychains4.conf
## 注释掉socks4 127.0.0.1那一行,在最后加上代理工具的设置,如
socks5 127.0.0.1 1080

# 3.使用方法
## 代理工具正常运行的前提下,在需要走代理的命令前打上proxychains4即可(但要在sudo后),即proxychains4 [命令],如:
sudo proxychains4 rosdep init

# 4.自动补全
sudo gedit ~/.bashrc
## 在末尾添加补全命令
complete -c proxychains4

启动roscore时报错

描述

启动roscore时,报如下错误:

1
IOError: [Errno 13] Permission denied: '/home/arvin/.ros/roscore-11311.pid'

原因

这个问题是由于该路径下ros文件权限造成的。

解决

1
sudo chmod 777 -R ~/.ros/

参考资料:

【Autolabor初级教程】ROS机器人入门

古月居_GuYueHome: 享受机器人学习的乐趣 (gitee.com)