ROS工作空间
关于ROS工作空间,以下图为例。工程的目录位置为 ~/catkin_ws/src
创建新程序包
使用catkin_create_pkg
命令来创建一个名为'beginner_tutorials'的新程序包,这个程序包依赖于std_msgs、roscpp和rospy:
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
这将会创建一个名为beginner_tutorials
的文件夹,这个文件夹里面包含一个package.xml文件和一个CMakeLists.txt文件,这两个文件都已经自动包含了部分你在执行catkin_create_pkg
命令时提供的信息。
catkin_create_pkg命令会要求你输入package_name,如果有需要你还可以在后面添加一些需要依赖的其它程序包:
# This is an example, do not try to run this
# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
package.xml文件
package.xml文件主要包含以下几部分内容:
描述标签
维护者标签
许可标签
依赖项标签
Launch文件
ROS提供了一个同时启动节点管理器(master)和多个节点的途径,即使用启动文件(launchfile).roslaunch是ROS中非常常用的工具了,借用一句话描述:roslaunchis a tool for easily launching multiple ROS nodes, and settingparameters on the Parameter Server.
rosrun只能运行一个nodes, roslaunch可以同时运行多个nodes.
简单的launch文件例子:
<launch>
<!-- run turtlesim -->
<node pkg="turtlesim" type="turtlesim_node" name="turtlesim">
</node>
<!-- run turtle_teleop_key.launch -->
<node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key" output="screen">
<param name="twist_name" value="/turtle1/cmd_vel" />
</node>
</launch>
ROS中常用指令
- roscore
- rosrun
- roscd:方便直接cd到相关目录
- rosed:编辑
- roslaunch:运行launch文件
- rosnode list:查看节点
- chmod +x:给予可执行权限(表示增加权限,r 表示可读取,w 表示可写入,x 表示可执行)更多可以参照chmod命令
pkg-config --modversion opencv:查看安装的opencv版本
文件系统
上图所示为自己在Qt Creator中建立的工作空间workspace,官网提供的demo是使用C++开发的。因为ROS是支持多种语言的,因此自己在src文件夹下添加了一个talker2.py文件作为发布节点,随后将此文件修改权限为可执行文件,即可正常运行。因此在同一个工作空间中,可以有的节点为C++编写,有的节点使用Python编写,十分便于开发。
因此自己考虑对之前已有的C++代码进行保留,自己新编写的部分尽量使用Python编写。
心得
使用Python编写比使用C++方便很多。
- Python语法更加简单
- Python为脚本语言,可以对.py文件修改权限后直接在终端中进行运行。
- 使用C++开发需要在CMakeLists.txt文件中进行一番操作,添加编译语句等,稍有不慎就会出错,很麻烦。使用Python则省去这些编译上的操作。