🚀
PX4 ROS(1) MAVROS 프로그래밍
  • 개발 환경 준비
  • MAVROS 설치
  • ROS 개발 환경 설정
  • Gazebo Classic 시뮬레이터
  • Gazebo-Classic 시뮬레이터와 MAVROS 실행
  • MAVROS 패키지
    • 노드(Node)
    • 실행
    • 연결 정보(Connection URL)
    • MAVROS 유틸리티 커맨드
    • 플러그인(Plugins)
  • OFFBOARD 모드
  • OFFBOARD 제어를 위한 QGC 설정
  • MAVROS 오프보드 제어 예제 1 (Python)
  • MAVROS 오프보드 제어 예제 2
  • MAVROS Yaw 방향 제어 예제
  • MAVROS 오프보드 제어 예제(C++)
  • MAVROS에서 PX4로 사용자 정의 메시지 보내기
  • 문제 해결
  • PX4 & MAVROS Offboard Samples
  • 교육 안내
Powered by GitBook
On this page
  • ROS 및 Gazebo Classic 설치
  • ROS/시뮬레이션 실행
  • ROS 래퍼를 사용하여 Gazebo Classic 시작
  • 시뮬레이션 및 MAVROS 수동 시작

Gazebo-Classic 시뮬레이터와 MAVROS 실행

저작권: 쿼드(QUAD) 드론연구소 https://smartstore.naver.com/maponarooo

PreviousGazebo Classic 시뮬레이터NextMAVROS 패키지

Last updated 12 months ago

ROS (로봇 운영 체제)는 PX4 및 Gazebo Classic 시뮬레이터 와 함께 사용할 수 있습니다. MAVROS MAVLink 노드를 사용하여 PX4와 통신합니다.

PX4와의 ROS/Gazebo Classic 통합은 아래 다이어그램의 패턴을 따릅니다(이는 일반적인 PX4 시뮬레이션 환경을 보여줍니다 ). PX4는 시뮬레이터(예: Gazebo Classic)와 통신하여 시뮬레이션된 세계에서 센서 데이터를 수신하고 모터 및 액추에이터 값을 보냅니다. GCS 및 Offboard API(예: ROS)와 통신하여 시뮬레이션된 환경에서 원격 측정을 보내고 명령을 받습니다.

메모

"정상 동작"과 약간 다른 점은 ROS가 포트 14557에서 연결을 시작하는 반면 오프보드 API가 UDP 포트 14540에서 연결을 수신하는 것이 더 일반적이라는 것입니다 .

ROS 및 Gazebo Classic 설치

메모

ROS 는 Linux에서만 지원됩니다(macOS나 Windows는 지원되지 않음).

Ubuntu Linux에서 ROS로 PX4 시뮬레이션을 설정하는 가장 쉬운 방법은 Linux의 개발 환경 > ROS가 있는 Gazebo 에서 찾을 수 있는 표준 설치 스크립트를 사용하는 것입니다 . 스크립트는 PX4, ROS "Noetic", Gazebo Classic 11 시뮬레이터 및 MAVROS 등 필요한 모든 것을 설치합니다 .

스크립트는 표준 ROS "Noetic" 설치 지침을 따릅니다. 여기에는 Gazebo 11가 포함됩니다.

ROS/시뮬레이션 실행

roslaunch mavros px4.launch fcu_url:="udp://:14540@192.168.1.36:14557"

localhost에 연결하려면 다음 URL을 사용하십시오.

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

메모

설정에서 종속성 누락에 대한 경고를 받으려면 -w NUM_WORKERS(작업자 스레드 수 재정의) 또는 -v(상세)를 사용하여 roslaunch를 호출하는 것이 유용할 수 있습니다.

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

ROS 래퍼를 사용하여 Gazebo Classic 시작

Gazebo Classic 시뮬레이션은 Gazebo Classic ROS 레이저 플러그인과 같은 ROS 주제에 직접 게시되는 센서를 통합하도록 수정될 수 있습니다. 이 기능을 지원하려면 적절한 ROS 래퍼를 사용하여 Gazebo Classic을 시작해야 합니다.

ROS로 래핑된 시뮬레이션을 실행하는 데 사용할 수 있는 ROS 시작 스크립트가 있습니다.

ROS로 래핑된 SITL을 실행하려면 ROS 환경을 업데이트한 후 실행해야 합니다.

~/.bashrc 파일에 아래 내용을 추가 하세요.

source ~/catkin_ws/devel/setup.bash
source ~/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash ~/PX4-Autopilot/ ~/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic

터미널을 다시연후, 시뮬레이션에서 ROS 애플리케이션을 실행하세요.

roslaunch px4 mavros_posix_sitl.launch

시뮬레이션 및 MAVROS 수동 시작

이 섹션에서는 이전에 제공된 roslaunch 지침이 실제로 어떻게 작동하는지 보여줍니다(이 지침을 따라 시뮬레이션 및 ROS를 수동으로 시작할 수 있습니다).

세 개의 터미널이 필요하며, 모두 ros 환경을 소스로 제공해야 합니다.

먼저 아래 명령을 사용하여 시뮬레이터를 시작하십시오.

cd <PX4-Autopilot_clone>
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
roslaunch px4 px4.launch

결과는 다음과 같습니다:

INFO  [px4] instance: 0

______  __   __    ___
| ___ \ \ \ / /   /   |
| |_/ /  \ V /   / /| |
|  __/   /   \  / /_| |
| |     / /^\ \ \___  |
\_|     \/   \/     |_/

px4 starting.

INFO  [px4] startup script: /bin/sh etc/init.d-posix/rcS 0
INFO  [init] found model autostart file as SYS_AUTOSTART=10016
INFO  [param] selected parameter default file parameters.bson
INFO  [param] importing from 'parameters.bson'
INFO  [parameters] BSON document size 295 bytes, decoded 295 bytes (INT32:12, FLOAT:3)
INFO  [param] selected parameter backup file parameters_backup.bson
INFO  [dataman] data manager file './dataman' size is 7866640 bytes
etc/init.d-posix/rcS: 31: [: Illegal number:
INFO  [init] PX4_SIM_HOSTNAME: localhost
INFO  [simulator_mavlink] Waiting for simulator to accept connection on TCP port 4560

두 번째 터미널에서는 PX4-Autopilot에 정의된 월드 파일로 가제보를 시작할 수 있는지 확인하세요. 이렇게 하려면 적절한 sitl_gazebo-classic폴더를 포함하도록 환경 변수를 설정하십시오.

cd ~/PX4-Autopilot
source Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic

이제 ROS로 작업할 때처럼 Gazebo Classic을 시작하세요.

roslaunch gazebo_ros empty_world.launch world_name:=$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds/empty.world

세 번째 터미널에서 PX4-Autopilot에 정의된 sdf 파일을 사용하여 모델을 생성할 수 있는지 확인하세요. 이렇게 하려면 적절한 sitl_gazebo-classic폴더를 포함하도록 환경 변수를 설정하십시오.

cd <PX4-Autopilot_clone>
source Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic

이제 ROS로 작업할 때와 마찬가지로 Iris 쿼드콥터 모델을 삽입합니다. Iris가 로드되면 자동으로 px4 앱에 연결됩니다.

rosrun gazebo_ros spawn_model -sdf -file $(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris/iris.sdf -model 

아래 명령을 사용하여 시뮬레이션을 시작하고 통해 ROS를 여기에 연결할 수 있습니다 . 여기서 fcu_url시뮬레이션을 실행하는 컴퓨터의 IP/포트는 다음과 같습니다.

: 일반 SITL 시작

: SITL과 MAVROS 시작

MAVROS를
posix_sitl.launch
mavros_posix_sitl.launch
PX4 SITL 개요