三、创建自己ROS2包
3.1 创建功能包
我们首先创建一个dev_ws/src的文件来存放我们自己的包
mkdir -p ~/dev_ws/src
打开终端后进入到dev_ws/src路径下:
cd ~/dev_ws/src
然后就可以使用如下语法来创建功能包了(以下二选一):
CMake包:
ros2 pkg create --build-type ament_cmake <package_name>
Python包:
ros2 pkg create --build-type ament_python <package_name>
创建功能包的指令还允许设置节点名,自动生成一个helloworld的例程代码(以下二选一)。
CMake包:
ros2 pkg create --build-type ament_cmake --node-name my_node my_package
Python包:
ros2 pkg create --build-type ament_python --node-name my_node my_package
运行成功后就可以在src中看到一个新的文件夹叫做my_package,同时在终端中有很多日志信息:
CMake包:
Python包:
创建功能包的指令还可以设置依赖项。
CMake包:
ros2 pkg create --dependencies [deps] --build-type ament_cmake
Python包:
ros2 pkg create --dependencies [deps] --build-type ament_python
3.2 编译功能包
接下来进入编译流程,一定要将终端cd到dev_ws的路径下来:
cd ~/dev_ws
然后就可以编译啦:
colcon build
这个命令会编译工作空间中的所有功能包,如果只想编译某一个包的话,可以这样:
colcon build --packages-select my_package
3.3 设置环境变量
打开一个新的终端,运行下工作空间的环境变量,这样才能让该终端找到新创建的包:
source install/setup.bash
接下来就可以在该终端中愉快的运行新建的功能包了。
3.4 运行功能包中的节点
在终端中使用如下命令即可运行新建功能包的节点啦:
ros2 run my_package my_node
终端中可以看到:
CMake包:
Python包:
3.5 功能包里有什么
不管你是用CMake还是python创建的包,打开看一下,里边有哪些默认的文件:
CMake包:
src中有一个 my_node.cpp 文件,就是实现上边看到hello world的例程代码。
Python包:
3.6 修改package.xml文件
新建功能包中的package.xml文件需要我们手动完善一下,包括其中的功能包描述、版本信息、使用许可证等,默认都有加“TODO”标志。
CMake包:
Python包:
完善以上描述信息、许可证和作者邮箱,关于许可证的详细介绍可以参考: https://opensource.org/licenses/alphabetical
除了这些基本信息之外,还可以看到不少以“ _depend”结尾的标签,这些就是用来描述功能包依赖的,如果我们在编写代码过程中新增加了什么依赖,都可以手动添加到这里来。
如果使用的是Python包,还需要多修改一个文件setup.py:
其中第16~19行的内容需要修改的和package.xml文件一致。
OK,这就是ROS2中创建功能包的方法。