카테고리 없음

패스트캠퍼스 환급챌린지 15일차 : 자율주행 로봇을 위한 ROS 2 & Nav 2 한번에 끝내기 강의 후기

연두부진 2025. 3. 19. 19:10

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

오늘은 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에서 제공하는 표준 인터페이스를 사용했지만,

나중에 특정한 데이터 구조가 필요할 때 직접 새로운 인터페이스를

정의할 수 있게 된 것 같아 큰 의미가 있었으며

 

앞으로 프로젝트를 진행할 때 특정한 데이터 구조가 필요할 경우

자신 있게 새로운 인터페이스를 설계하고 적용할 수 있을 것이라는 자신감이 생겼다.

 

앞으로도 이러한 개념을 더욱 발전시켜 다양한 환경에서 활용할 수 있도록

꾸준히 학습하고 적용해 나가야겠다는 다짐을 하게 되었다.

 

공부 시작시간
공부 종료시간

 

#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완

https://bit.ly/4hTSJNB

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr