ROS入门之旅:ROS初步
内容参考自Programming Robots with ROS by Morgan Quiley, Brian Gerkey, and William D. Smart (O'Reily). Copyright 2015 Morgan Quiley, Brian Gerkey, and William D. Smart, 978-1-4493-2389-9
ROS的安装
我是用的是Linux ubuntu 16.04(在VMWare 17上运行),安装的是ROS Kinetic。
ROS的安装复杂而繁琐,我也是经过了许久的尝试。可参考以下文档:
创建工作区(workspace)
创建一个catkin工作区并初始化:
1 | mkdir -p ~/catkin_ws/src |
以上命令创建了一个叫做catkin_ws的工作区路径(工作区的名字可以是任意的),其中包含了一个src路径。
接下来,将创建其他工作区文件:
1 | cd ~/catkin_ws |
以上命令创建了许多输出文件,将会生成两个文件夹:build和devel。build是使用C++时catkin存放库和可执行文件的地方(使用Python时可以忽略build下的内容)。devel包含了许多文件和路径,其中最需要注意的是setup文件。运行这些文件可以使系统使用这个工作区以及其中包含的代码。
实现配置:
1 | source devel/setup.bash |
创建ROS包
1 | cd ~/catkin_ws/src |
运行上面的命令调用catkin_create_pkg创建了一个名为my_awesome_code的新包,该包依赖已存在的rospy包。
catkin_create_pkg命令创建一个同名文件夹,并在该新文件下创建了CMakeLists.txt、package.xml以及src文件夹。
rosrun
ROS提供了一个命令行程序rosrun来寻找程序包中可执行程序并且向这个程序传递任何参数,语法如下:
1 | rosrun PACKAGE EXECUTABLE [ARGS] |
要运行rospy_tutorials中的talker程序,在终端中输入:
1 | roscore |
如果出现“Done checking log file disk usage. Usage is <1GB.”的提示,可参考以下如下链接解决:
再打开另一个终端:
1 | rosrun rospy_tutorials talker |
ROS中的talker相当于Hello
World程序。talker每秒发送10次“hello
world”消息(并附上Unix时间戳)。
我们已经创建了一个节点,这时,我们需要另一个节点用于接收talker发送的消息。再打开一个终端,输入:
1 | rosrun rospy_tutorials listener |
我们现在可以向系统询问并理解现在正在发生的事情,打开第四个终端,输入:
1 | rqt_graph |
命名空间和重映射
ROS可以在不同的命名空间中启动同一个节点来避免命名冲突。
例如,具有两个相机的机器人可以在不同的命名空间中启动两个相机驱动,例如left和right,最终会有两路图像流,分别称为left/image和right/image。
另一种方法是重映射。在ROS中,
程序中任何一个用于命名的空符串都可以在运行时重映射。例如,ROS中一个带常的程序image_view将image主题实时资梁在窗口上。使用重映射,可以使image_view渲染right/image主题或者left/image主题,并且不需要修改image_view的代码。
例如,如果工作路径中包含image_view程序,可以通过以下命令将image重映射到right/image:
1 | ./image_view image:=right/image |
把一个节点放置到命名空间中可以通过一个特殊的__ns命名空间重映射语法来完成。例如,如果工作路径包含了camera程序,下列命令将在right命名空间中启动camera程序:
1 | ./camera __ns:=right |
在命令行中修改节点的名字可以使用专门的__name重命名语法。这个命令在启动时改变程序的名字。下列命令将启动两个talker实例,一个为talker1,
另一个为talker2:
1 | ./talker __name:=talker1 |
roslaunch
roslaunch是一
个用于自动启动一系列ROS节点的命令行工具。从表面上看,该命令和rosrun有点像,需要包名和文件名:
1 | roslaunch PACKAGE LAUNCH_FILE |
但是roslaunch操作launch文件而不是节点。launch文件是描述一组节点以及它们话题重映射和参数的XML文件,根据规范,
这些文件具有.lamnch后缀。
