ROS2中msg的命名规范:必须以大写字母开头,并且不能有下划线,应当是 ^[A-Z][A-Za-z0-9]*$
。像moving_target.msg
, Moving_target.msg
都是不规范的,应该是MovingTarget.msg
msg文件里的成员命名:只能是小写+下划线,不能出现大写。int32 id_number
是合适的,int32 ID_number
就不合适
参考 官方教程,注意对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
3ldd 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
命令在运行期发挥了作用