ROS学习记录【更新中】

一、ROS学习记录

1.1 引言

由于本人工作需要使用ROS进行相关开发,但是经常遗忘常用工具的使用方法和开发的内容,故在此进行记录。

1.2 书籍推荐

目前我入门主要看的书是ROS_Robot_Programming_CN.pdf, 里面的内容通俗易懂,有具体的实例介绍,推荐入门者查看,本文部分内容也是引自该书籍。

  • ROS_Robot_Programming_CN.pdf

1.3 ROS介绍

在ROS维基中将ROS定义为“ROS是一个开放源代码的机器人元操作系统。它提供了我们对操作系统期望的服务,包括硬件抽象、低级设备控制、常用功能的实现、进程之间的消息传递以及功能包管理。它还提供了用于在多台计算机之间获取、构建、编写和运行代码的工具和库。”
换句话说,ROS包括一个类似于操作系统的硬件抽象,但它不是一个传统的操作系统,它具有可用于异构硬件的特性。此外,它是一个机器人软件平台,提供了专门为机器人开发应用程序的各种开发环境。

二、ROS安装

本文安装ROS Kinetic,是在Ubuntu1604中使用的版本

2.1 添加代码列表

在ros-latest.list添加ROS版本库。打开新的终端窗口,输入如下命令。

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

2.2 设置公钥

为了从ROS存储库下载功能包,下面添加公钥 。作为参考,以下公钥可以根据服务器的操作发生变更,请参考官方wiki页面

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

2.3 更新软件包索引

现在用户已经将ROS版本库地址放在代码列表中,我们建议在安装ROS之前刷新软件包列表的索引并升级所有当前安装的Ubuntu软件包,但这不是必选项

sudo apt-get update && sudo apt-get upgrade -y

2.4 安装ROS Kinetic Kame

使用以下命令安装台式机的ROS功能包。这包括ROS、rqt、RViz、机器人相关的库、仿真和导航等等。

sudo apt-get install ros-kinetic-desktop-full

上面的安装只包含基本的rqt,但是笔者将安装所有额外的rqt相关的功能包。用下面的命令安装所有rqt相关的功能包,可以很方便地使用各种rqt插件。

sudo apt-get install ros-kinetic-rqt*

2.5 初始化rosdep

在使用ROS之前,必须初始化rosdep。rosdep是一个通过在使用或编译ros的核心组件时轻松安装依赖包来增强用户便利的功能。

sudo rosdep init
rosdep update

2.6 安装rosinstall

这是安装ROS的各种功能包的程序。它是被频繁使用的有用的工具,因此务必要安装它。

sudo apt-get install python-rosinstall

2.7 加载环境设置文件

下面加载环境设置文件。里面定义着ROS_ROOT和ROS_PACKAGE_PATH等环境变量。

#追加重定向
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

2.8 创建并初始化工作目录

ROS使用一个名为catkin的ROS专用构建系统。为了使用它,用户需要创建并初始化catkin工作目录,如下所示。除非用户创建新的工作目录,否则此设置只需设置一次。

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

如果用户已经创建了一个catkin工作目录,下面我们来进行构建。目前,只有src目录和CMakeLists.txt文件在catkin工作目录中,但让我们尝试使用catkin_make命令来构建吧。

cd ~/catkin_ws/
catkin_make

当用户构建没有问题时,运行ls命令。除了自己创建的src目录之外,还出现了一个新的builddevel目录。catkin的构建系统的相关文件保存在build目录中,构建后的可执行文件保存在devel目录中。

2.9 测试安装结果

所有ROS安装已完成。要测试它是否正确安装,请关闭所有终端窗口并运行一个新的终端窗口。现在通过输入以下命令来运行roscore

roscore

三、ROS开发

由于本人也是刚接触ROS时间不久,目前使用ROS最重要的工具便是ROS消息通信的功能,相信这也绝大部分朋友们会使用到的,这里进行简单的记录供大家学习。

3.1 ROS操作测试

ROS最典型的例子便是小乌龟程序,也就是turtlesim工程,能够在屏幕上显示ROS的图标-乌龟,并可以用键盘操纵它的一个节点(程序)。

3.1.1 运行roscore

ROS所有的程序运行之前都必须启动roscore

roscore

在这里插入图片描述

3.1.2 运行turtlesim功能包的turtlesim_node

打开终端运行以下命令

rosrun turtlesim turtlesim_node

在这里插入图片描述

3.1.3 运行turtlesim功能包的turtle_teleop_key

打开一个新的终端窗口并执行以下命令。将显示下面消息,并执行turtlesim功能包中的turtle_teleop_key。如果您按下该终端窗口上的方向键(←,→,↑,↓),将看到乌龟按照方向键移动,这看似只是一个简单的仿真,但实体机器人也可以通过这种方式进行远程控制。

rosrun turtlesim turtle_teleop_key

3.1.4 运行rqt_graph

在终端中执行以下命令

rqt_graph

在这里插入图片描述
rqt_graph节点以GUI形式显示关于当前正在运行的节点的信息。圆圈表示节点,正方形表示话题。从图可以看到,箭头从/teleop_turtle节点开始,通往/turtlesim。这表示两个节点正在运行并且这两个节点之间正在发生消息通信。并且/turtle1/cmd_velturtle1话题的子话题,是两个节点之间的话题的名称,意味着在teleop_turtle节点中通过键盘输进来的速度命令通过话题将消息发送给turtlesim。换句话说,使用先前执行的两个节点,将键盘命令传送到机器人仿真器。

3.2 ROS重要概念

3.3 ROS消息通信

3.3.1 话题(topic)

3.3.2 服务(service)

3.3.3 动作(action)

3.3.4 参数(parameter)

参考文献

【1】 ROS_Robot_Programming_CN.pdf

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>