创建功能包:
ros2 pkg create <功能包名> --build-type <构建类型> --dependencies <依赖名字>
如创建C++功能包并添加rclcpp和std_msgs依赖
ros2 pkg create my_cpp_pkg --build-type ament_cmake --dependencies rclcpp std_msgs
1. python
1.1 增加launch.py文件
如果在python功能包下/launch文件中新加入了一个launch.py文件,需要在setup.py文件中加入以下代码:
('share/' + package_name + '/launch', ['launch/name.launch.py']),
1.2 增加py文件
在python功能包下/src文件中新加入了一个.py文件,需要在setup.py文件中加入以下代码:
<py文件名>= <功能包名>.<py文件名>:main',
2. C++
2.1 增加cpp文件
例如新增了两个cpp文件:topic_helloworld_pub.cpp和topic_helloworld_sub.cpp
2.1.1 修改CMakeList文件
(1)配置依赖
find_package(<依赖> REQUIRED)
例如cpp中include了如下两个
则添加对应find_package
(2)编译规则
add_executable(<cpp文件> src/<cpp文件>.cpp)
ament_target_dependencies(<cpp文件> <依赖1> <依赖2> …………)
(3) 安装规则
install(TARGETS <cpp文件>
DESTINATION lib/${PROJECT_NAME})
2.1.2 修改package.xml文件
include了哪些就加哪些
<depend>rclcpp</depend>
<depend>std_msgs</depend>
2.2增加launch.py文件
如果在cpp功能包下/launch文件中新加入了launch.py文件,需要加入以下代码:
1、修改CMakeList.txt
install(
DIRECTORY src launch
DESTINATION share/${PROJECT_NAME}
)
这里的src,launch都是功能包根目录下的文件夹,例如如果还加了rviz文件夹,在后面还要加上rviz
2、修改package.xml
<depend>launch</depend>
<depend>launch_ros</depend>
<exec_depend>ros2launch</exec_depend>
修改CPP的launch依赖不需要指定具体launch文件路径和名称,上面这两个代码只需修改一次就可以。以后添加其他launch文件也不需要改,直接colcon build即可。