在此说明:之前使用的ROS是indigo,前两天电脑“炸”了,所以换了kinetic.
一、ROS文件系统导览
1.1如果你想找到turtlesim包的路径,可以使用下列命令:
$ rospack find turtlesim
你将获得如下输出信息:
/opt/ros/kinetic/share/turtlesim
1.2如果你想找到你已经在系统中安装过的某个元功能包(只有一个文件的特殊功能包,即只有package.xml),示例如下:
rosstack find ros_comm
你将获得如下输出信息;
/opt/ros/kinetic/share/ros_comm
1.3如果你想获得功能包或功能包集下面的文件列表,示例如下:
rosls turtlesim
你将获得如下输出信息:
cmake images msg package.xml srv
1.4更改当前工作目录,尤其是进入某个文件夹,示例如下:
roscd turtlesim
你将获得以下新路径:
/opt/ros/kinetic/share/turtlesim
二、创建工作空间
在开始具体工作之前,首先是创建工作空间。
2.1要查看当前工作空间,请试用如下命令:
echo $ROS_PACKAGE_PATH
你将看到如下类似信息:
/home/youname/dashgo_ws/src:/opt/ros/kinetic/share
2.2 我们将要创建的文件夹位于~/catkin_ws/src
mkdir -p ~/catkin_ws/src #创建文件夹
cd ~/catkin_ws/src #进入文件夹
catkin_init_workspace #初始化工作空间
你将会看到类似如下提示信息
Creating symlink "/home/yourname/catkin_ws/src/CMakeLists.txt" pointing to "/opt/ros/kinetic/share/catkin/cmake/toplevel.cmake"
提示在src文件夹下新建了CMakeLists.txt文件
如
cd ~/catkin_ws/src
将会输出:
CMakeLists.txt
2.3当创建好了工作空间文件夹后,里面并没有功能包,只有CMakeList.txt文件,下一步就是编译工作空间了。为此,可以使用如下命令:
cd ~/catkin_ws
catkin_make
现在使用ls命令
cd ~/catkin_ws
ls
你将获得如下输出信息:
build devel src
在catkin_ws文件夹下多了build和devel文件夹
2.4为了完成配置,使用如下命令:
source devel/setup.bash
三、创建ROS功能包和元功能包
使用catkin_create_pkg命令创建
此命令的格式如下所示:
catkin_create_pkg [package_name] [dependency1] ... [dependencyN]
使用下列命令在之前创建好的工作空间中创建新的功能包
cd ~/catkin_ws/src
catkin_create_pkg chapter2_tutorials std_msgs roscpp
你将会看到如下提示信息:
Created file chapter2_tutorials/package.xml
Created file chapter2_tutorials/CMakeLists.txt
Created folder chapter2_tutorials/include/chapter2_tutorials
Created folder chapter2_tutorials/src
Successfully created files in /home/youname/catkin_ws/src/chapter2_tutorials. Please adjust the values in package.xml.
在上面这个例子中,依赖项包括std_msgs和roscpp
std_msgs:包含了常见的消息类型,表示基本数据类型和其他的基本消息构造。
roscpp:使用C++实现ROS各种功能。
四、编译ROS功能包
一旦创建了功能包,并且编了一些代码,就需要编译功能包了。
可以使用catkin_make命令
cd catkin_ws/
catkin_make
记住,必须在workspace文件夹中运行catkin_make命令
如果需要编译单个的功能包,可以使用下面格式的命令:
catkin_make --pkg <package name>
五、使用ROS节点
节点都是可执行程序,一旦编译,这些可执行文件就位于devel空间中。
先启动ROS
roscore
为了获得节点信息,可以使用rosnode工具,可以输入下列命令:
rosnode
你将获得如下输出:
rosnode is a command-line tool for printing information about ROS Nodes.
Commands:
rosnode ping test connectivity to node
rosnode list list active nodes
rosnode info print information about node
rosnode machine list nodes running on a particular machine or list machines
rosnode kill kill a running node
rosnode cleanup purge registration information of unreachable nodes
Type rosnode -h for more detailed usage, e.g. 'rosnode ping -h'
rosnode list
你将看到只有一个节点
/rosout
在另外一个terminal中启动一个turtlesim节点
rosrun turtlesim turtlesim_node
此时再次使用rosnode 工具查看正在运行的节点列表
rosnode list
你将会获得如下输出:
/rosout
/turtlesim
查看turtlesim节点的详细信息:
rosnode info /turtlesim
你将获得如下输出:
Node [/turtlesim]
Publications:
* /rosout [rosgraph_msgs/Log]
* /turtle1/color_sensor [turtlesim/Color]
* /turtle1/pose [turtlesim/Pose]
Subscriptions:
* /turtle1/cmd_vel [unknown type]
Services:
* /clear
* /kill
* /reset
* /spawn
* /turtle1/set_pen
* /turtle1/teleport_absolute
* /turtle1/teleport_relative
* /turtlesim/get_loggers
* /turtlesim/set_logger_level
contacting node http://your PC name:XXXXX/ ...
Pid: XXXXX
Connections:
* topic: /rosout
* to: /rosout
* direction: outbound
* transport: TCPROS
未完待续!
2018年3月16日
于杭州