目录
什么是ROS?
ROS:机器人操作系统(Robot Operating System), 是一个用于编写机器人软件的灵活框架,它集成了大量的工具、库、协议,提供了类似操作系统所提供的功能。
安装ROS(noetic)
1.配置系统软件源
以软件源安装为例,首先需要配置Ubuntu系统允许restricted(不完全的*软件)、universal(Ubuntu官方不提供支持与补丁,全靠社区支持)、multiverse(非*软件,完全不提供支持和补丁)这三种软件源。如果没有对系统软件源做过修改,Ubuntu系统安装完毕后会默认允许以上三种软件源。
2.添加ROS软件源
sources.list是Ubuntu系统保存软件源地址的文件,位于/etc/apt目录下,在这一步中,我们需要将ROS的软件源地址添加到该文件当中,确保后续安装可以正确找到ROS相关软件的下载地址。
打开终端,输入如下命令,即可添加ROS官方的软件源镜像:
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
3.添加密钥
$ sudo apt install curl # if you haven't already installed curl
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
4.安装ROS
输入如下命令,更新软件源
$ sudo apt update
安装桌面完整版
$ sudo apt install ros-noetic-desktop-full
除了包含ROS的基础功能(核心功能包、构建工具和通信机制),还包含有丰富的机器人通用函数库、功能包(2D/3D感知功能、机器人地图建模、自主导航等)以及工具(rviz可视化工具、gazebo仿真环境、rqt工具箱等)。
5.初始化rosdep
$ sudo rosdep init
$ rosdep update
rosdep是ROS中自带的工具,主要功能是为某些功能包安装系统依赖,同时也是某些ROS核心功能包必须要用到的工具。
6.设置环境变量
现在ROS已经成功安装到电脑中了,默认在/opt路径下。由于在后续使用中,会频繁使用终端输入ROS命令,所以在使用之前,还需要对环境变量进行简单的设置。
Ubuntu默认使用的终端是bash,在bash中设置ROS环境变量的命令如下:
$ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
命令含义:
1)echo >> : 输出追加重定向
2)/.bashrc : 终端配置文件.bashrc
echo将“ ”内字符串追加到.bashrc文件的后面
3)source命令:在当前环境下执行脚本文件,也可以使用.
替代source
命令
ROS通过环境变量找到命令的所在位置。
7.完成安装
输入命令查看是否安装成功
$ roscore
ROS关键概念
1.节点(node)
执行运算任务的进程,一般由多个节点共同运行完成,启动程序后,用rqt_graph可清晰分辨节点
2.通信机制
a)话题通信(TOPIC,Publish&Subscribe)
b) 服务通信(SERVICE,Client&Server)
c)参数管理(PARAM)
3.节点管理器
作为管理者,帮助ROS节点之间相互查找、建立连接,同时还为系统提供参数服务器,管理全局参数。
4.功能包
运行功能的基本单元集合,一般包括以下文件夹或文件(按常用程度排序):
a) CMakeLists.txt:编译器编译功能包的规则,主要修改依赖及添加cpp程序可执行性
b)package.xml:功能包清单,包含功能包的名称,版本号,信息描述,作者信息和许可信息。
<build_depend> </build_depend>定义编译所依赖的其他功能包
<run_depend></run_depend>定义可执行程序运行时所依赖的其他功能包
c)launch:放置功能包中的所有的启动文件。
d) src:放置需要编译的c++代码。
e)scripts:放置可以直接运行的Python脚本。
f)config:放置功能包中的配置文件,由用户创建,文件名可以不同。
g)include:放置功能包中需要用到的头文件。
h)msg:放置功能包自定义的消息类型。
i)srv:放置功能包自定义的服务类型。
j)action:放置功能包自定义的动作指令。
需要注意的是功能包中文件夹的类型和工作空间中的较为相像,要区分清楚
5.工作空间
工作空间(workspace)是一个存放工程开发相关文件的文件夹。
典型的工作空间中一般包括以下四个目录空间。
a)src:代码空间(Source Space),开发过程中最常用的文件夹,用来存储所有ROS功能包的源码文件。
b)build:编译空间(Build Space),用来存储工作空间编译过程中产生的缓存信息和中间文件。
c)devel:开发空间(Development Space),用来放置编译生成的可执行文件。
d)install:安装空间(Install Space),编译成功后,可以使用make install命令将可执行文件安装到该空间中,运行该空间中的环境变量脚本,即可在终端中运行这些可执行文件。安装空间并不是必需的,很多工作空间中可能并没有该文件夹。
感谢:
古月老师《ROS机器人开发实践》