通过我的上一篇博客,相信大家都已经熟练掌握了ROS的安装,那么,现在我们开始详细讲述ROS如何创建一个工程,如何编译运行工程。
一、新建一个工程
使用命令进入我们上一篇新建的工作空间
cd ~/catkin_ws/
source devel/setup.bash
在当前目录下执行命令进行编译
catkin_make
我们的工程源代码在我们的src/目录下,我们如何创建一个工程呢?
首先我们要明白,我们的ROS工程是一个CMake工程,CMake工程就意味着我们要编写CMakeLists.txt文件,CMake语法我就不讲了,但在ROS中我们可以通过一个简单的命令创建我们想要的工程。
catkin_create_pkg [package name] [ package dependence, such as : std_msgs rospy roscpp ... ]
我先来简单解释一下这个命令,首先,catkin_create_pkg 是ROS内置的创建包的命令,之后加上你的包的名字,再加上你所要的依赖,如:假如你要使用C++编写代码,那么就会要加一个roscpp的依赖。
二、ROS工程结构
├─.settings
├─catkin
│ └─catkin_generated
│ └─version
├─catkin_generated
│ ├─installspace
│ └─stamps
│ └─ccc
├─CMakeFiles
│ ├─3.2.2
│ │ ├─CompilerIdC
│ │ └─CompilerIdCXX
│ ├─abc.dir
│ │ └─src
│ ├─actionlib_generate_messages_cpp.dir
│ ├─actionlib_generate_messages_lisp.dir
│ ├─actionlib_generate_messages_py.dir
│ ├─actionlib_msgs_generate_messages_cpp.dir
│ ├─actionlib_msgs_generate_messages_lisp.dir
│ ├─actionlib_msgs_generate_messages_py.dir
│ ├─clean_test_results.dir
│ ├─CMakeTmp
│ ├─download_extra_data.dir
│ ├─doxygen.dir
│ ├─geometry_msgs_generate_messages_cpp.dir
│ ├─geometry_msgs_generate_messages_lisp.dir
│ ├─geometry_msgs_generate_messages_py.dir
│ ├─roscpp_generate_messages_cpp.dir
│ ├─roscpp_generate_messages_lisp.dir
│ ├─roscpp_generate_messages_py.dir
│ ├─rosgraph_msgs_generate_messages_cpp.dir
│ ├─rosgraph_msgs_generate_messages_lisp.dir
│ ├─rosgraph_msgs_generate_messages_py.dir
│ ├─run_tests.dir
│ ├─sensor_msgs_generate_messages_cpp.dir
│ ├─sensor_msgs_generate_messages_lisp.dir
│ ├─sensor_msgs_generate_messages_py.dir
│ ├─std_msgs_generate_messages_cpp.dir
│ ├─std_msgs_generate_messages_lisp.dir
│ ├─std_msgs_generate_messages_py.dir
│ ├─tests.dir
│ ├─tf2_msgs_generate_messages_cpp.dir
│ ├─tf2_msgs_generate_messages_lisp.dir
│ ├─tf2_msgs_generate_messages_py.dir
│ ├─tf_generate_messages_cpp.dir
│ ├─tf_generate_messages_lisp.dir
│ ├─tf_generate_messages_py.dir
│ └─_catkin_empty_exported_target.dir
├─devel
│ ├─lib
│ │ ├─ccc
│ │ └─pkgconfig
│ └─share
│ └─ccc
│ └─cmake
├─gtest
│ └─CMakeFiles
│ ├─gtest.dir
│ │ └─src
│ └─gtest_main.dir
│ └─src
├─include
│ └─ccc
├─src
└─test_results
上述就是一个简单的ROS工程的代码结构图
include/包名 : 这里会放一些头文件,如,.h 、.hpp。
src/ : 代码目录。
package.xml : 用于描述ROS工程的依赖和其他属性,类似于CMakeLists.txt。
除了以上的目录,一般的工程还会有msg/、srv/目录,这两种文件夹里放的是信息(Message)和服务(Service)文件,这两种文件的使用我们以后再讲。
三、一些有用的命令
ROS既然被称为机器人操作系统,那么在ROS中,就会有一些有用命令:
1、roscd
roscd [package name]
快速转移至工程目录。
2、rosed
rosed [file name]
使用系统默认编辑器编辑某文件,如Vim。