잘근잘근 뜯어보기
Initialize 단계: class의 object를 새로 생성하게 되면 수행하는 initializer에서 호출되는 함수와 초기화 되는 변수들
rclpy: ros client library python의 줄임말이다. ros2의 퍼블리셔, 서브스크라이버, 서비스 등의 통신기능을 구현하기 위한 low level API를 제공한다. (그냥 ros의 핵심 통신기능을 구현한 라이브러리)
qos: quality of service의 줄임말이다. 결국 ros는 메시지를 주고받는 식으로 로봇을 제어하기 때문에, 이 메시지를 주고 받는 과정에서 일어나는 문제들을 어느정도까지 관리할 것인지에 대한 설정을 하는게 qos인 것 같다.
이 코드에서는 reliability를 BEST_EFFORT, durability를 TRANSIENT_LOCAL, history를 KEEP_LAST, depth를 10으로 지정한 것을 확인할 수 있다.
create_subscription: ros는 노드끼리 메시지(토픽)을 주고받으면서 데이터를 송수신한다. 여기에서 어떤 노드의 publisher가 전송한 토픽을 받으려면 그 publisher에 구독이 되어 있어야 하는데, (신문을 미리 구독해놔야 매일매일 신문이 배달되는 것과 유사하다) 그 기능을 하는 함수가 create_subscription이다.
매개변수들
create_subscription의 매개변수는 4개로 각각 메시지 타입 (msg_type), 토픽 이름 (topic_name), 콜백함수(callback), QoS설정 (qos_profile)이다. 여기서 토픽 이름은 구독하려는 publisher이름과 동일하게 설정한다.
gpt 답
create_publishser: create_subscription과 유사하지만 반대로 publisher을 생성하는 함수이다. create_subscription과 동일한 매개변수들을 사용하지만, callback은 사용하지 않는다. (당연하게도, publisher은 메시지를 보내는 입장이라 메시지를 받았을때 호출될 함수라는 개념은 존재하지 않는다.)
qos_profile: QoS 세팅값을 저장한 오브젝트를 의미하고, 앞서 QoSProfile 함수로 설정한 파라미터들을 담고있다. create_subscription함수나 create_publisher함수에서 qos_profile 매개변수 자리에 이 preset object를 넘겨주면 미리 지정된 파라미터들을 그대로 넘겨줄 수 있다.
PoseStamped? Twist? Bool?
velocity_publisher: velocity데이터를 송출하는 publisher position_publisher: position 데이터 arm_publisher: 드론 무장 (=작동) 여부 vtol_publisher_fw: 고정익(fixed wing) 모드 여부 vtol_publisher_mc: 멀티콥터(multicopter)모드 여부
Custom Functions
MissionOne 클래스에서 새롭게 정의한 함수들이다.