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

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

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

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

PX4 SITL 개요

메모

"정상 동작"과 약간 다른 점은 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/시뮬레이션 실행

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

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 

Last updated