ROS的程序包可以单独分组,可以分别开发,但又可以通过节点互相通信共同联系。所以创建并配置好程序包乃是工作需要配置好的第一步。
首先是创建一个功能包的基本指令:
catkin_create_pkg name1
这个指令的意思便是在当前路径下创建一个功能包并命名功能包的名字为name1。
功能包有很多可依赖的依赖项,我这里仅列出一点点常用的依赖项,其他的依赖项后面再去研究。
roscpp:C/C++编译器的依赖项
rospy:python解释器的依赖项
std_msgs:预定义的数据类型格式
geometry_msgs:常见几何图源信息
turtlesim:小海龟仿真的依赖项
std_srvs:发送信号节点
这些依赖项都可以在下面的网址下查看的到:http://wiki.ros.org/ros_comm?distro=melodic
而加入依赖项的方法,一个是可以在创建功能包的同时便可以在功能包名字后加入。另一个便是可以在创建好的功能包下找到CMakeLists.txt和package.xml这两个文件并打开配置,具体配置如下所示:
创建功能包时配置:
catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim
修改文件时配置:
CMakeLists.txt文件下:
find_package(catkin REQUIRED COMPONENTS rospy geometry_msgs roscpp std_msgs turtlesim )
package.xml文件下:
<build_depend>geometry_msgs</build_depend> <build_depend>roscpp</build_depend> <build_depend>rospy</build_depend> <build_depend>std_msgs</build_depend> <build_depend>turtlesim</build_depend> ... <build_export_depend>geometry_msgs</build_export_depend> <build_export_depend>roscpp</build_export_depend> <build_export_depend>rospy</build_export_depend> <build_export_depend>std_msgs</build_export_depend> <build_export_depend>turtlesim</build_export_depend> ... <exec_depend>geometry_msgs</exec_depend> <exec_depend>roscpp</exec_depend> <exec_depend>rospy</exec_depend> <exec_depend>std_msgs</exec_depend> <exec_depend>turtlesim</exec_depend>
如果需要自定义添加消息类型,则需要在配置文件内手动添加message_generation和message_runtime这两个依赖项,即使创建功能包时添加了message_generation和message_runtime这两个依赖项后也需要对配置文件进行手动配置。并且在手动配置之前需要先建立好需要用到的msg文件或srv文件,我这里举例的msg文件名为Person1.msg,srv文件名为Person2.srv。具体的配置信息参考如下:
CMakeLists.txt文件下:
find_package(... ... message_generation ) # 配置msg文件 add_message_files( FILES Person1.msg ) # 配置srv文件 add_service_files( FILES Person2.srv ) generation_messages( DEPENDENCIES std_msgs ) catkin_package( ... CATKIN_DEPENDS message_runtime )
package.xml文件下:
<build_depend>message_generation</build_depend> <exec_depend>message_runtime</exec_depend>
在上面的文件配置中,特别是CMageLists.txt文件的配置中,即使在创办功能包时添加了message_generation和message_runtime这两个依赖项,依然需要重新配置一遍。当msg和srv文件添加删除或修改的时候也要注意把CMageLists.txt内的参数配置修改以下。
配置好之后,便可以进入~/catkin_ws文件夹下进行catkin_make了。如果此时编译正常,则表示文件配置正常。如果编译出错,请重新检查配置文件以及根据报错提示查看是否有未编译通过的代码在其内。