ROS2自定义msg, action, srv

参考 官方教程,注意对package.xml做下面修改

1
2
3
<build_depend>rosidl_default_generators</build_depend>
<exec_depend>rosidl_default_runtime</exec_depend>
<member_of_group>rosidl_interface_packages</member_of_group>

在其他包使用自定义的msg/Action包的时候,编译完成后,去build文件夹里找到可执行文件,结果发现有一个.so没有链接成功

1
2
3
ldd libmy_node.so  | grep my_defined
libmy_defined_msgs__rosidl_typesupport_cpp.so => /home/user/j36_project/install/my_defined_msgs/lib/libmy_defined_msgs__rosidl_typesupport_cpp.so (0x00007a9426d69000)
libmy_defined_msgs__rosidl_generator_c.so => not found

如果直接运行会出错,但如果用ros2 run运行是正常的,应当是ROS2运行时会建立链接,应当是ament命令在运行期发挥了作用