티스토리 뷰

메시지 정의 패키지 만들기

패키지는 src 폴더에서 만들어야한다.

ros2 pkg create --build-type ament_cmake my_first_package_msgs

이전에 패키지를 만들 때에는 ament_python을 썼는데

c++ 문법을 쓰진 않지만 ament_python이 메시지 빌드가 안되기 때문

기존에 만든 <패키지 이름> 에서 사용할 메시지를 정의할 것이기에

<패키지 이름>_msgs 라는 이름의 패키지를 만듦

  • 왜 데이터 타입이 있는 패키지를 따로 분리해서 만드냐?
    • 메시지만 따로 빌드할 수 있다
    • 로봇의 버전이 달라도 원격 pc에서 핸들링이 쉽다..?

새로운 패키지가 만들어졌음을 볼 수 있다.

setup.py 대신 CMakeLists.txt 파일이 있다.

메시지 정의 파일 만들기

만든 패키지 폴더에 들어가서 msg 폴더를 만든다.

그리고 CmdAndPoseVel.msg 파일을 만들어준다. 

float32 cmd_vel_linear
float32 cmd_vel_linear

float32 pose_x
float32 pose_y
float32 linear_vel
float32 angular_vel

 

파일 인식시키기

이전에 만든 노드가 들어가는 패키지에서 새로운 파일을 만들어서 setup.py를 수정했다면

이번에는 CMakeLists.txt 파일을 수정하여 만든 파일이 있음을 인식시켜줄 것이다.

find_package(rosidl_default_generators REQUIRED)

rosidl_generate_interfaces(${PROJECT_NAME}
  "msg/CmdAndPoseVel.msg"
)

그리고 package.xml 파일도 수정해야한다.

  <build_depend>rosidl_default_generators</build_depend>
  <exec_depend>rosidl_default_runtime</exec_depend>
  <member_of_group>rosidl_interface_packages</member_of_group>

터미널로 돌아와서 워크스페이스 폴더에서 빌드하면 만든 메시지 타입을 인식할 수 있다.


참고로 xml 파일을 수정하지 않았더니 다음과 같은 오류가 발생했다.

--- stderr: my_first_package_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:16 (rosidl_generate_interfaces)

 

그리고 왜인지 워크스페이스의 install 폴더에 local_setup.bash 파일이 없다고 나왔다. 

-bash: /home/hyeop/ros2_ws/install/local_setup.bash: No such file or directory

알고보니 colcon build 명령으로 빌드를 하는 과정에서 터미널에
Summary: 2 packages finished [3.65s] 
가 나왔지만 다음 명령 입력이 불가하길래 그냥 넘어갔는데 

패키지 빌드가 완료되지 않은 것이었고 
조금 더 기다리니 패키지 빌드가 완료되었다.


이후 아래 명령으로

ros2 interface show my_first_package_msgs/msg/CmdAndPoseVel

내가 만든 메시지의 구조를 볼 수 있다.

물론 tab을 이용해 입력 가능하며 안된다면 빌드가 제대로 되지 않은 것이다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함