스터디 노트
article thumbnail

MAV_1_CONFIG = TELEM2(102) 

MAV_1_MODE = Onboard(2) 

defining MAV_2_CONFIG and reboot the firmwrae in order to see SER_TEL2_BAUD

21.12.26 재 테스트 

 

시뮬레이션 환경 구성에 관한 내용입니다.

 

알고리즘 테스트할때마다 밖에 나가서하기 귀찮기도하고 마다할 이유가 없어서 구성하고 알고리즘 테스트용으로 사용하시면 좋을듯 합니다. 

 

저도 검색하면서 자료찾아가며 테스트를 진행했는데요. 옛날 펌웨어기준으로 작성된 자료들이 많더라구요. 

Jetson이나 임베디드 보드 환경에서는 어떻게 될지 잘 모르겠습니다만(Jetson으로 최신버전 구버전 다 테스트해보았지만 결국 막혔습니다.) desktop or laptop 환경에서는 잘 되었습니다. 결국 아키텍쳐 호환문제가 아닐까 생각이드네요.

 

ros_melodic으로 진행을 했고 설치가 되었다는 가정하에 쓰겠습니다.

 

PX4 시뮬레이션 통신환경

1.mavros 설치

sudo apt-get update
sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras

2.px4 설치 (펌웨어의 버전에따라 되고 안되고 하네요)

https://docs.px4.io/master/en/dev_setup/building_px4.html

 

Building PX4 Software | PX4 User Guide

Building PX4 Software PX4 can be built on the console or in an IDE, for both simulated and hardware targets. Note Before following these instructions you must first install the Developer Toolchain for your host operating system and target hardware. Downloa

docs.px4.io

git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot
git submodule update --recursive
make distclean

이후 PX4 폴더에서 Toolchain installation

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

 

cd <PX4-Autopilot_clone>
DONT_RUN=1 make px4_sitl_default gazebo
source ~/catkin_ws/devel/setup.bash    # (optional)
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
roslaunch px4 posix_sitl.launch

또는

 #14557:ROS, 14540:OFFBOARD(mavros)
make px4_sitl_default gazebo #시뮬레이션 환경 실행

여기까지 완료가 되었다면 Gazebo상에서 드론 모델을 띄우는 것까지 완료가 된 것인데

문제는 gazebo를 띄운 터미널창에 commander takeoff를 입력해주거나 입력이 안되서 드론이 이륙을 안한다.

드론과 GCS가 연결되지 않은 상태이기 때문인데 qgroundcontrol 이라는 Ground control system을 설치하고 연결된 상태에서 명령을 주면 될 것이다.  QgrounControl 내용은 맨 밑에 있음.

 

 

이 과정에서 생기는 웬만한 오류내용들은 위 문서에 담겨있습니다.

Package 관련 오류시 

bash ./Tools/setup/ubuntu.sh (px4폴더내에서 실행 필요한 파일들 설치)
pip3 install --user pyserial empy toml numpy pandas jinja2 pyyaml pyros-genmsg packaging
sudo apt upgrade libignition-math2

Error in REST request --> (Gazebo)

sudo find -name .ignition 을통해 나온 경로로 들어가서 

vim fuel/config.yaml

url: https://api.ignitionfuel.org --> url: https://api.ignitionrobotics.org 로 변경후 저장 

 

MAVROS로 비행 테스트

 

두번째로 Mavros 패키지를 이용해 명령을 전달할 수 있고 ros내에서 위치 제어 알고리즘을 통해 위치 topic을 보내게되면 알고리즘을 테스트 해볼 수 있게된다. 

 

이번에 다시 처음부터 과정을 진행해봤는데 이번엔 Failsafe enabled: No manual control stick input이라는 에러가 뜨기 시작했고 드론이 이륙하지 않았다. 

이것은 QgrounControl내에 Application Setting 메뉴에서 Virtual Joystick을 활성화 해주어서 해결이 됐다.

cd ~/catkin_ws/src
git clone https://github.com/Jaeyoung-Lim/modudculab_ros.git
cd ..
catkin_make

 

roscore
-----------------------------
make px4_sitl_default gazebo
-----------------------------
roslaunch modudculab_ros ctrl_pos_gazebo.launch
----------------------------------------------- 각각 다른 터미널창 혹은 탭에서 실행
rosrun mavros mavsafety arm
rosrun mavros mavsys mode -c OFFBOARD

fcu_url 인자를 fcu_url:="udp://:14540@127.0.0.1:14557" 다음과 같이 주어야하는데 launch파일을 수정하는것이 더 편함.

 

간단한 위치제어 알고리즘을 테스트해보고 싶다면 modudculab/src/pub_setpoints_pos.cpp 파일을 수정하면 된다.

 

 

QGroundContorl로 비행 테스트

QgroundControl 우선 설치해주고 (홈페이지 메뉴얼 참조)

https://docs.qgroundcontrol.com/master/en/releases/daily_builds.html

 

Daily Builds · QGroundControl User Guide

No results matching ""

docs.qgroundcontrol.com

기본세팅대로 연다음에 왼쪽 상단에 옵션창 열고 Application Settings 버튼 눌러준다.

 

Comm link 메뉴 선택후 Add PX4 manual 에서는 UDP 14550 포트를 사용한다 했으므로 UDP 눌러주면 그대로 포트가 14550으로 설정된것을 볼 수 있다. 

이름 입력해주고 OK누르고 mavros 실행 후 연결해주고 시뮬레이션 켜주면 no datalink 메시지도 안뜨고 정상적으로 이륙도 된다.

 

이전 버전에서는 no datalink가 떠도 이륙된것 같은데 이에 대해서 문제제기하는 사람들이 있는 것으로 보아 최신버전에서 패치되고 이륙이 안됐던것이고 정상적으로 QGC하고 연결이되면 이륙이 가능하다.

 

'maengkyun > Pixhawk' 카테고리의 다른 글

정리할 것 list  (0) 2021.08.12
ROS 개인정리  (0) 2021.08.09
[pixhawk] gazebo 환경에서 mavros를 이용해 위치명령주기  (13) 2021.08.09
ROS 노드 작성과 빌드  (0) 2021.08.09
[pixhawk] gazebo simulation 재도전  (0) 2021.08.07
profile

스터디 노트

@myeongkyun

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!