创建自定义ROS 2 msg 和 srv 文件,构建时报错
colcon build编译后报错信息:
--- stderr: tutorial_interfaces
CMake Error at C:/opt/ros/humble/x64/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:64 (message):
rosidl_generate_interfaces() must be called before ament_package()
Call Stack (most recent call first):
CMakeLists.txt:32 (rosidl_generate_interfaces)
解决方案:
打开CMakeLists.txt,将
find_package(rosidl_default_generatorss REQUIRED) should be right under the #find_dependencies section and before rosidl_generate_interfaces(${PROJECT_NAME} "msg/Num.msg" "srv/AddThreeInts.srv". It should not be at the last line.
即代码位置的问题,加入下列代码时候应保持如上顺序。
find_package(geometry_msgs REQUIRED)
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"msg/Num.msg"
"msg/Sphere.msg"
"srv/AddThreeInts.srv"
DEPENDENCIES geometry_msgs # Add packages that above messages depend on, in this case geometry_msgs for Sphere.msg
)
如图所示