ROS2에서 통신을 구현하기 위해 사용하는 서비스, 액션, 메시지에서 사용하는 interfaces를 커스텀하여 정의해야 하는 경우가 있다. 이를 커스텀하기 위해 별도의 폴더를 만들고 빌드해주지 않으면 파이썬에서 라이브러리로 불러오거나 C++에서 include할 때 에러가 발생한다.
1. interfaces 패키지 생성
ros2 pkg create interfaces --buile-type ament_cmake interfaces
- srv, action, msg를 담는 인터페이스 폴더 역시 하나의 패키지로 생성해주어야 한다.
- 개발언어가 파이썬이라도 buile-type을 ament_cmake로 설정이 필요하다.
2. 커스텀 파일 생성
mkdir srv
cd srv
touch AddTwoInts.srv
- action이면 *.action, msg면 *.msg로 만들어준다. 예시를 위해 임의로 srv를 커스텀 하며, 두 개의 입력값을 더해주고 반환하는 서비스를 구현한다고 가정한다.
3. srv 파일 사용자 기입
int64 a
int64 b
---
int64 sum
- vim AddTwoInts.srv 명령이후 위 내용 기입
4. CMakeLists.txt 파일에 내용 추가
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"srv/AddTwoInts.srv"
)
5. package.xml 내용 추가
<build_depend>rosidl_default_generators</build_depend>
<exec_depend>rosidl_default_ruintime</exec_depend>
<member_of_group>rosidl_interface_packages</member_of_group>
이후 colcon build 수행시 interfaces 패키지도 함께 빌드
'Computer Science > 로봇공학' 카테고리의 다른 글
[PX4] Lockstep이란? (0) | 2023.06.19 |
---|---|
uXRCE-DDS 미들웨어와 드론 비행제어 (0) | 2023.06.19 |
ROS2 launch 파일로 Gazebo와 Rviz2 실행하기 (0) | 2023.06.11 |
Gazebo 시뮬레이션에서 world 파일 사용법 (1) | 2023.06.11 |
Ubuntu 22.04에 OpenCV 설치하기 (2) | 2023.06.11 |