패스트캠퍼스 환급챌린지 15일차 : 자율주행 로봇을 위한 ROS 2 & Nav 2 한번에 끝내기 강의 후기
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
오늘은 Custom message를 만들어서 사용하는 실습을 진행했다.
[오늘의 수강 영상]
[오늘의 실습]
우리가 새로운 interface 타입을 만들 때는 언제일까?
1. 기존 interface 타입으로 표현할 수 없는 데이터 구조가 필요할 때
2. 이미 있는 여러 데이터 타입을 하나의 메시지로 묶어야할 때
3. 시스템 간 통신을 위해 특별한 프로토콜이 필요할 때
이런 상황을 대비하기 위해 오늘 custom message를 만들어 보았다.
먼저, 해당 명령어를 사용해서 CMake 패키지를 만들었다.
$ ros2 pkg create --build-type ament_cmake custom_interfaces --dependencies rclcpp std_msgs
계속 파이썬을 사용하다가 C언어를 사용하는 이유는
현재 파이썬 패키지에서는 사용자 정의 인터페이스를 생성하지 못하기 때문이며,
CMake 패키지에서 사용자 정의 인터페이스를 생성한 다음
Python 노드에서 사용해야하기 때문이다.
그 후, custom_interface안에 msg 디렉토리를 만든 후
msg안에 RobotStatus.msg를 만들어 우리가 원하는 메세지들을 설정해줬다.
해당 message를 성공적으로 생성하기 위해
rosidl_default_generators와 rosidl_generate_interfaces()가 사용한다.
rosidl_default_generators란?
ROS 2에서 사용자 정의 인터페이스(msg, srv, action)를 생성할 때 필요한 기본 패키지 모음이다.
rosidl_generate_interfaces()란?
ROS 2에서 사용자 정의 메시지(msg), 서비스(srv), 액션(action) 인터페이스를 생성하는 CMake 함수이다.
이는 CMakeLists.txt에
find_package(rosidl_default_generators REQUIRED)과
rosidl_generate_interfaces(${PROJECT_NAME} "msg/RobotStatus.msg" )을
추가해줘야 사용할 수 있다.
그 다음에, Package.xml에 패키지 의존성을 설정하기 위해 다음과 같이 추가했다.
이를 통해 depend는 build_depend와 exec_depend를 합친 것이며
build_depend는 빌드 시 필요한 패키지이며
exec_depend는 실행 시 필요한 패키지라는걸 알게 되었다.
이 점을 활용하면 앞으로 적절한 시점에서 필요한 패키지만을
사용할 수 있으니 유용하다고 생각했다.
모든 설정을 마치고 나면 아래 코드를 사용하여 빌드한 후
$ colcon build --symlink-install --packages-select custom_interfaces
아래 코드를 사용해서 성공적으로 생성했는지 확인하면
$ ros2 interface show custom_interfaces/msg/RobotStatus
짜란! 성공적으로 생성된 것을 확인할 수 있다.
이 변수들을 사용하여 랜덤하게 값을 publisher에서 보내기 위해 코드를 작성한 후
setup.py에서 새로운 노드를 추가한 후에 build를 하고 코드를 실행하면
다음과 같이 성공적으로 publishing되는 걸 확인 할 수 있었다.
오늘 Custom interface를 직접 만들어보면서
기존의 ROS 2 msg 인터페이스가 어떻게 만들어졌는지
직접 실습을 통해 경험해보고 활용해보며 깊은 이해를 할 수 있었다.
이전까지는 ROS 2에서 제공하는 표준 인터페이스를 사용했지만,
나중에 특정한 데이터 구조가 필요할 때 직접 새로운 인터페이스를
정의할 수 있게 된 것 같아 큰 의미가 있었으며
앞으로 프로젝트를 진행할 때 특정한 데이터 구조가 필요할 경우
자신 있게 새로운 인터페이스를 설계하고 적용할 수 있을 것이라는 자신감이 생겼다.
앞으로도 이러한 개념을 더욱 발전시켜 다양한 환경에서 활용할 수 있도록
꾸준히 학습하고 적용해 나가야겠다는 다짐을 하게 되었다.
#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스
성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.
fastcampus.co.kr