티스토리 뷰
메시지 정의 패키지 만들기
패키지는 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을 이용해 입력 가능하며 안된다면 빌드가 제대로 되지 않은 것이다.
'전공 > ROS' 카테고리의 다른 글
ROS2 rqt로 토픽 발행하기, log 구현하고 rqt로 확인하기 (1) | 2024.11.15 |
---|---|
ROS2 여러 토픽 구독, 발행하기 (1) | 2024.11.14 |
ROS2 발행 노드 publisher 만들고 실행해보기 2 (0) | 2024.11.12 |
ROS2 구독 노드 subscriber 만들고 실행해보기 1 (0) | 2024.11.11 |
wsl2 ROS2 humble 우분투 22.04 설치 , 초기 설정, VcXsrv 설정 방법 (3) | 2024.11.10 |
- Total
- Today
- Yesterday
- 경북대
- 북문
- 네이버페이
- 오블완
- 카시오
- f-94w
- 알리익스프레스
- 배송기간
- 문서 스캔
- 티스토리챌린지
- 방향장
- 리브모바일
- 시계 줄
- 알뜰폰요금제
- 카카오페이
- a모바일
- 방어동작
- 계산방법
- Liiv M
- 파스타
- 교체
- 타란튤라
- mealy
- f-91w
- 메쉬 밴드
- 맛집
- 알뜰 요금제
- 리브엠
- 10만포인트
- 할인
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |