ROS2 custom message 패키지 빌드 시 rosidl_interface_packages 오류 발생

저는 ROS2 Humble 버전을 사용 중이며, TurtleBot에서 주행 로깅을 위한 custom message 패키지(custom_msgs)를 작성하고 있습니다. MotionCommand.msgMotionInfo.msg 두 개의 메시지를 정의하였고, 이를 이용해 주행 명령과 로깅 정보를 퍼블리시/서브스크라이브하는 구조를 구성 중입니다.

package.xml 및 CMakeLists.txt는 다음과 같이 작성했습니다:

custom_msgs 0.0.0 Custom message definitions swook MIT

<buildtool_depend>ament_cmake</buildtool_depend>
rosidl_default_generators
std_msgs

ament_cmake rosidl_interface_packages

cmake_minimum_required(VERSION 3.5)
project(custom_msgs)

find_package(ament_cmake REQUIRED)
find_package(std_msgs REQUIRED)
find_package(rosidl_default_generators REQUIRED)

rosidl_generate_interfaces(${PROJECT_NAME}
“msg/MotionCommand.msg”
“msg/MotionInfo.msg”
DEPENDENCIES std_msgs
)

ament_package()

MotionCommand.msg:
int32 algorithm_id
string from_coord
string to_coord
string status

MotionInfo.msg
float32 left_power
float32 right_power
float32 left_rpm
float32 right_rpm
string status
float32 cmd_vx
string from_coord
string to_coord
int32 algorithm_id
파일들의 내용은 이와 같고

colcon build --packages-select custom_msgs
을 진행하면

Starting >>> custom_msgs
— stderr: custom_msgs
CMake Error at /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:229 (message):
Packages installing interfaces must include
‘<member_of_group>rosidl_interface_packages</member_of_group>’ in their
package.xml
Call Stack (most recent call first):
CMakeLists.txt:8 (rosidl_generate_interfaces)


Failed <<< custom_msgs [1.33s, exited with code 1]

Summary: 0 packages finished [1.68s]
1 package failed: custom_msgs
1 package had stderr output: custom_msgs
와 같은 메세지가 출력되며 실패합니다 원인이 무엇이고 해결가능한지 궁금합니다

안녕하세요.

해당 에러는 custom_msgs 패키지에서 메시지 인터페이스를 생성할 때, package.xml<member_of_group>rosidl_interface_packages</member_of_group> 항목이 누락되어 발생한 것입니다.

해결 방법

package.xml 파일을 열고, 다음 태그를 추가해 주세요:

<member_of_group>rosidl_interface_packages</member_of_group>

일반적으로 <description>이나 <maintainer> 태그 아래에 넣습니다. 예시:

<description>Custom message definitions</description>
<maintainer email="your@email.com">Your Name</maintainer>
<license>Apache-2.0</license>

<member_of_group>rosidl_interface_packages</member_of_group>

추가로 확인할 사항

  1. CMakeLists.txtrosidl_generate_interfaces() 함수가 올바르게 사용되었는지 확인
  2. msg, srv, action 파일이 실제로 custom_msgs/msg/, srv/, action/ 디렉터리에 존재하는지 확인
  3. find_package(rosidl_default_generators REQUIRED)가 포함되어 있는지 확인

참고사항

" ``` " 로 코드를 감싸 작성해주시면 가독성이 증가합니다.

감사합니다.