이 블로그에서는 pixhawk에 적용되는 두 가지 firmware 중 px4를 기준으로 구현 및 테스트한 결과를 기반으로 작성되어있습니다.
Pixhawk Flight Controller Unit(FCU)를 이용한 자율비행을 구현하면서 이동에 관련된 Robot Operating System(ROS)의 패키지(MAVROS) topic 간의 차이점을 알기 힘들었던 경험이 있어 topic 간 차이점을 직접 테스트를 통해 알아본 내용을 공유하고자 이 게시물을 작성하게 되었습니다.(테스트는 Software In The Loop(SITL)을 Gazebo7의 환경에서 iris model을 기반으로 테스트 되었습니다.)
이와 관련된 MAVROS 패키지은 다음 링크에 기술되어있습니다. http://wiki.ros.org/mavros
여기서, 이동과 관련된 topic은 “/mavros/setpoint_~” 라는 이름으로 작성된 것들인데 살펴보면 아래와 같은 종류가 존재합니다.(* 뒤 번호는 링크 상에 적혀진 번호입니다.)
0. ~/setpoint_attitude (6.14)
1. ~/setpoint_accel (6.13)
2. ~/setpoint_position (6.15)
3. ~/setpoint_velocity (6.17)
4. ~/setpoint_raw (6.16)
이 topic들이 구성된 이유는 PX4 Architectural Overview을 살펴보면 알 수 있습니다.
여기서 “Flight Control” box를 살펴보면 Position Setpoints, Attitude Setpoints가 각각 “Autonomous Flight” module에서 “Position Controller” modlue로, “Position Controller” modlue에서 “Attitude & Rate Controller” module로 전달됨을 확인할 수 있습니다. 여기서의 Position Setpoints에는 mavlink를 통해 1번~4번 사이의 topic을 받아 처리하고 Attitude Setpoints에는 mavlink를 통해 0번의 topic을 받아 처리하는 것으로 보여집니다.
이 글의 결론부터 말하자면 4. ~/setpoint_raw 를 사용하는 것이 편하다고 생각합니다. [Pixhawk] 이동 관련 topic 정리(2) 게시물에 제가 이 topic이 더 유용하다 생각한 이유가 적혀있으니 읽어보시고 구현하고자 하는 바와 부합하는 이유가 있다면 고려해보셔도 좋을 것 같습니다!
Attitude
#0. cmd_vel
메세지 타입 | geometry_msgs/TwistStamped |
---|---|
전체 topic 이름 | /mavros/setpoint_attitude/cmd_vel |
설명 | cmd_vel은 angular velocity 값을 전송하는 topic |
#1. Attitude
메세지 타입 | geometry_msgs/PoseStamped |
---|---|
전체 topic 이름 | /mavros/setpoint_attitude/attitude |
설명 | Roll/Pitch/Yaw(RPY) angle 값을 전송하는 topic |
#2. Thrust
메세지 타입 | mavros_msgs/Thrust |
---|---|
전체 topic 이름 | /mavros/setpoint_attitude/thrust |
설명 | Thrust 값을 전송하는 topic |
이 토픽들은 quadropter의 움직임을 구성하는 가장 기본이 되는 네 가지 구성 요소와 관련되어있습니다. 이 구성 요소에는 Roll, Pitch, Yaw, Thrust가 있고, Pixhawk의 parameter에서도 이 네 가지 값에 대한 PID 제어 계수를 조정하여 기체를 안정시킵니다.
하지만 이 topic은 너무 low level에서 제어하는 기능이므로 잘 사용하지는 않습니다. 아마 PID 계수를 조정하는 용도로 쓸 수 있을 것이라고 예상되나 이는 QGroundControl app에서 advanced configuration 탭과 mavlink analyzer를 활용해 조정하는 것이 더 효과적인 방법인 것 같습니다.
Accel
#0. Accel
메세지 타입 | geometry_msgs/Vector3Stamped |
---|---|
전체 topic 이름 | /mavros/setpoint_accel/accel |
설명 | 가속도나 힘 벡터를 전송하는 topic |
Position
#0. Global
#0. Local
Velocity
#0. Accel
Raw
#0. Accel
– 작성 중–
Comments