Computer Science/로봇공학
ROS2 커스텀 interface 생성하기
roytravel
2023. 6. 11. 13:41
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 패키지도 함께 빌드