ros2基础入门
创建功能包
一个完整的机器人往往由多个功能模块组成,需要多个功能包进行组合。ROS2开发者约定了Workspace(工作空间)这个概念来管理多个功能包。
首先创建工作空间,在开发过程中,所有的功能包都放在src目录下,并在src同级目录也就是ros2_ws目录下运行colcon进行构建,此事构建出的build、install、log等目录和src保持同级。
1 | mkdir -p ros2_ws/src |
在src目录下创建C++功能包
1 | ros2 pkg create <pkg_name> --build-type ament_cmake --license Apache-2.0 |
ros2 pkg create是用于创建功能包的命令,其中<pkg_name>是功能包的名字,后面的--build-type ament_cmake表示指定功能包的构建类型为ament_cmake即C++,最后的--license Apache-2.0用于声明功能包的开源协议。
创建好功能包后,在功能包的src目录下添加cpp_node.cpp(举例,根据实际情况取不同名字)
1 |
|
代码编写完成后,还需要在CMakeLists.txt文件中注册节点,添加依赖
1 | ... |
构建功能包前还需要在清单文件packages.xml中添加对relcpp的依赖声明
1 | <depend>rclcpp</depend> |
最后使用colconb build构建功能包,该命令可以构建当前及子目录下所有功能包。若构建时当前目录下不存在build、install和log这三个目录,则会自动创建,并将构建中间文件、结果和日志放入对应目录中。构建完成后,再查看 install/demo_cpp_pkg/lib/demo_cpp_pkg/目录就可以看到cpp_node 可执行文件 了。
1 | colcon build |
依次输出两条指令,就可以运行该文件
1 | source install/setup.bash |
功能包结构
include
该目录用于存放 C++ 的头文件,如果要编写头文件,一般 都放置在这个目录下。
src
代码资源目录,可以放置节点或其他相关代码。
CMakeLists.txt
该文件是 C/C++ 构建系统 CMake 的配置文件,在该文件中添加指令,即可完成依赖查找、可执行文件添加、安装等工作。
LICENSE
该文件是功能包的许可证。创建该功能包时使用了 –license Apache-2.0 参数,这个文件內容就是 Apache-2.0 的协议内容
package.xml
该文件是功能包的清单文件,每个 ROS2 的功能包都会包含这个文件。
当然,除了上面这些文件和文件夹,在实际开发中还可以添加其他目录和文件,比如用 于放置地图的 map 目录、用于放置参数的 config 目录等。