ROS/MAVROS 사용자 정의 메시지 전송
이 문서는 다음 환경에서 테스트하였습니다.
Ubuntu: 18.04
ROS: Melodic
PX4 펌웨어: 1.9.0
그러나 이러한 단계는 상당히 일반적이므로 수정이 거의 없이 다른 배포판/버전에서 작동합니다.
MAVROS 설치
mavlink/mavros의 소스 설치 지침에 따라 "ROS Kinetic"을 설치합니다.
MAVROS
아래 코드를 사용하여 이 예에서 keyboard_command.cpp(workspace/src/mavros/mavros_extras/src/plugins에 있음)라는 이름의 새 MAVROS 플러그인을 생성합니다.
이 코드는 ROS 주제
/mavros/keyboard_command/keyboard_sub
의 'char' 메시지를 구독하고 MAVLink 메시지로 전송합니다.mavros_plugins.xml(workspace/src/mavros/mavros_extras)을 편집하고 다음 줄을 추가합니다.
CMakeLists.txt(workspace/src/mavros/mavros_extras)를 편집하고
add_library
에 다음 줄을 추가합니다.(workspace/src/mavlink/message_definitions/v1.0)의 common.xml 내부에서 다음 줄을 복사하여 MAVLink 메시지를 추가합니다.
PX4 수정사항
common.xml 내부(PX4-Autopilot/mavlink/include/mavlink/v2.0/message_definitions)에서 다음과 같이 MAVLink 메시지를 추가합니다(MAVROS 섹션과 동일한 절차).
(PX4-Autopilot/mavlink/include/mavlink/v2.0)에서 공통, 표준 디렉토리를 제거합니다.
Git은 "mavlink_generator"를 원하는 디렉토리에 복제하고 실행합니다.
"MAVLink Generator" 팝업이 표시됩니다.
XML의 경우 /PX4-Autopilot/mavlink/include/mavlink/v2.0/message_definitions/standard.xml으로 "찾아보기"합니다.
Out의 경우 **/PX4-Autopilot/mavlink/include/mavlink/v2.0/**으로 "찾아보기"합니다.
C 언어를 선택합니다.
프로토콜 2.0을 선택합니다.
Validate를 체크합니다.
Generate를 누릅니다. **/PX4-Autopilot/mavlink/include/mavlink/v2.0/**에서 생성된 공통 및 표준 디렉토리를 볼 수 있습니다.
(PX4-Autopilot/msg)에서 자신만의 uORB 메시지 파일 key_command.msg를 만듭니다. 이 예에서 "key_command.msg"에는 다음 코드만 있습니다.
그런 다음 CMakeLists.txt(PX4-Autopilot/msg)에 다음을 포함합니다.
mavlink_receiver.h를 편집합니다. (PX4-Autopilot/src/modules/mavlink)
mavlink_receiver.cpp를 수정합니다(PX4-Autopilot/src/modules/mavlink). 여기에서 PX4는 ROS에서 보낸 MAVLink 메시지를 수신하고, 이를 uORB 주제로 게시합니다.
예제 구독자 모듈처럼 자신만의 uORB 주제 구독자를 생성합니다. 이 예에서는 (/PX4-Autopilot/src/modules/key_receiver)에서 모델을 생성할 수 있습니다. 이 디렉토리에서 두 개의 파일 CMakeLists.txt, key_receiver.cpp를 생성합니다. 각각은 다음과 같습니다.
-CMakeLists.txt
-key_receiver.cpp
자세한 설명은 첫 번째 지원서 작성 항목을 참고하십시오.
마지막으로 **PX4-Autopilot/boards/**의 보드에 해당하는 default.cmake 파일에 모듈을 추가합니다. 예를 들어, Pixhawk 4의 경우에는 PX4-Autopilot/boards/px4/fmu-v5/default.cmake에 다음 코드를 추가합니다.
MODULES ...
key_receiver ... In your workspace enter: catkin build
.
Beforehand, you have to set your "px4.launch" in (/workspace/src/mavros/mavros/launch). Edit "px4.launch" as below. If you are using USB to connect your computer with Pixhawk, you have to set "fcu_url" as shown below. But, if you are using CP2102 to connect your computer with Pixhawk, you have to replace "ttyACM0" with "ttyUSB0". Modifying "gcs_url" is to connect your Pixhawk with UDP, because serial communication cannot accept MAVROS, and your nutshell connection simultaneously.
Write your IP address at "xxx.xx.xxx.xxx"
ROS 빌드
Build PX4-Autopilot and upload in the normal way.
For example, to build for Pixhawk 4/FMUv5 execute the following command in the root of the PX4-Autopilot directory:
빌드
이제 작업을 빌드할 준비가 되었습니다!
PX4 빌드
In a terminal enter
In a second terminal run:
This means, publish 97 ('a' in ASCII) to ROS topic "/mavros/keyboard_command/keyboard_sub" in message type "std_msgs/Char". "-r 10" means to publish continuously in "10Hz".
ROS 실행
Enter the Pixhawk nutshell through UDP. Replace xxx.xx.xxx.xxx with your IP.
After few seconds, press Enter a couple of times. You should see a prompt in the terminal as below:
Type "key_receiver", to run your subscriber module.
MAVROS 메시지가 PX4로 전송되는 지 테스트합니다.
Last updated