본문 바로가기

pixhawk

PIXHAWK SIMULATION

<mavros install>
sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras

wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh

sudo chmod +x install_geographiclib_dataset.sh

sudo ./install_geographiclib_dataset.sh

<px4 install>
wget https://raw.githubusercontest.com/PX4/Devguide/master/build_scripts/ubuntu_sim_common_deps.sh

sudo chmod +x ubuntu_sim_common_deps.sh

sudo ./ubuntu_sim_common_deps.sh

<install PX4 Firmware>
mkdir src

cd src

git clone --branch v1.10.0 https://github.com/PX4/Firmware.git

cd Firmware

git submodule update --init --recursive

mavros 설치 하기 (1.10.0으로 다운로드 하기)

https://dev.px4.io/v1.9.0/en/ros/mavros_installation.html

 

MAVROS (MAVLink on ROS) · PX4 v1.9.0 Developer Guide

No results matching ""

dev.px4.io

Firmware 설치 하기

github.com/PX4/Firmware.git

 

PX4/Firmware

PX4 Autopilot Software. Contribute to PX4/Firmware development by creating an account on GitHub.

github.com

git clone github.com/PX4/Firmware.git --branch v1.10.0         (1.10.0 version 다운로드)

 

QgroundControl 다운로드

http://qgroundcontrol.com/

 

QGC - QGroundControl - Drone Control

Works with all vehicle types supported by PX4 Pro and ArduPilot (multi-rotor, fixed-wing, VTOL, etc.)

qgroundcontrol.com

 

build error

 

~/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_plugin.h

 

#define HAS_GYRO TRUE => true

 

 

https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c

 

 

필요한거 다운받는 코드

우분투 바탕회면에 <아무이름>.sh 으로 저장

sudo chmod +x <아무이름>.sh 으로 권한 부여

./<아무이름>.sh 으로 실행

#!/bin/bash

 

## Bash script for setting up ROS Melodic (with Gazebo 9) development environment for PX4 on Ubuntu LTS (18.04). 

## It installs the common dependencies for all targets (including Qt Creator)

##

## Installs:

## - Common dependencies libraries and tools as defined in `ubuntu_sim_common_deps.sh`

## - ROS Melodic (including Gazebo9)

## - MAVROS

 

if [[ $(lsb_release -sc) == *"xenial"* ]]; then

  echo "OS version detected as $(lsb_release -sc) (16.04)."

  echo "ROS Melodic requires at least Ubuntu 18.04."

  echo "Exiting ...."

  return 1;

fi

 

echo "Downloading dependent script 'ubuntu_sim_common_deps.sh'"

# Source the ubuntu_sim_common_deps.sh script directly from github

common_deps=$(wget https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_common_deps.sh -O -)

wget_return_code=$?

# If there was an error downloading the dependent script, we must warn the user and exit at this point.

if [[ $wget_return_code -ne 0 ]]; then echo "Error downloading 'ubuntu_sim_common_deps.sh'. Sorry but I cannot proceed further :("; exit 1; fi

# Otherwise source the downloaded script.

. <(echo "${common_deps}")

 

# ROS Melodic

## Gazebo simulator dependencies

sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y

 

## ROS Gazebo: http://wiki.ros.org/melodic/Installation/Ubuntu

## Setup keys

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

## For keyserver connection problems substitute hkp://pgp.mit.edu:80 or hkp://keyserver.ubuntu.com:80 above.

sudo apt-get update

## Get ROS/Gazebo

sudo apt install ros-melodic-desktop-full -y

## Initialize rosdep

sudo rosdep init

rosdep update

## Setup environment variables

rossource="source /opt/ros/melodic/setup.bash"

if grep -Fxq "$rossource" ~/.bashrc; then echo ROS setup.bash already in .bashrc;

else echo "$rossource" >> ~/.bashrc; fi

eval $rossource

 

## Install rosinstall and other dependencies

sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential -y

 

 

 

# MAVROS: https://dev.px4.io/en/ros/mavros_installation.html

## Install dependencies

sudo apt-get install python-catkin-tools python-rosinstall-generator -y

 

## Create catkin workspace

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws

catkin init

wstool init src

 

 

## Install MAVLink

###we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date

rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall

 

## Build MAVROS

### Get source (upstream - released)

rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall

 

### Setup workspace & install deps

wstool merge -t src /tmp/mavros.rosinstall

wstool update -t src

if ! rosdep install --from-paths src --ignore-src -y; then

    # (Use echo to trim leading/trailing whitespaces from the unsupported OS name

    unsupported_os=$(echo $(rosdep db 2>&1| grep Unsupported | awk -F: '{print $2}'))

    rosdep install --from-paths src --ignore-src --rosdistro melodic -y --os ubuntu:bionic

fi

 

if [[ ! -z $unsupported_os ]]; then

    >&2 echo -e "\033[31mYour OS ($unsupported_os) is unsupported. Assumed an Ubuntu 18.04 installation,"

    >&2 echo -e "and continued with the installation, but if things are not working as"

    >&2 echo -e "expected you have been warned."

fi

 

#Install geographiclib

sudo apt install geographiclib -y

echo "Downloading dependent script 'install_geographiclib_datasets.sh'"

# Source the install_geographiclib_datasets.sh script directly from github

install_geo=$(wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh -O -)

wget_return_code=$?

# If there was an error downloading the dependent script, we must warn the user and exit at this point.

if [[ $wget_return_code -ne 0 ]]; then echo "Error downloading 'install_geographiclib_datasets.sh'. Sorry but I cannot proceed further :("; exit 1; fi

# Otherwise source the downloaded script.

sudo bash -c "$install_geo"

 

## Build!

catkin build

## Re-source environment to reflect new packages/build environment

catkin_ws_source="source ~/catkin_ws/devel/setup.bash"

if grep -Fxq "$catkin_ws_source" ~/.bashrc; then echo ROS catkin_ws setup.bash already in .bashrc; 

else echo "$catkin_ws_source" >> ~/.bashrc; fi

eval $catkin_ws_source

 

 

# Go to the firmware directory

clone_dir=~/src

cd $clone_dir/Firmware

 

 

 

simulation 실행 code

Mavros 실행 (1 terminal)

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

 

with Gazebo 실행 (2 terminal)

cd src/Firmware DONT_RUN=1 make px4_sitl_default gazebo           //First time

source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default

gazebo Tools/sitl_gazebo/worlds/iris.world

without Gazebo 실행(2 terminal)

cd src/Firmware
HEADLESS=1 make px4_sitl_default gazebo

px4.launch

export PX4_HOME_LAT=37.2943
export PX4_HOME_LON=126.9709
export PX4_HOME_ALT=5.0

PIXHAWK 직접 연결하여 Simulation 하기 (HITL) 변경사항 참고!!

https://dev.px4.io/v1.9.0/en/simulation/hitl.html

 

HITL Simulation · PX4 v1.9.0 Developer Guide

Hardware-in-the-Loop (HITL or HIL) is a simulation mode in which normal PX4 firmware is run on real flight controller hardware. This approach has the benefit of testing most of the actual flight code on the real hardware. PX4 supports HITL for multicopters

dev.px4.io

 

 

 

'pixhawk' 카테고리의 다른 글

MAVROS OFFBOARD 사용 예시 코드  (7) 2020.07.07
PIXHAWK SIMULATION  (39) 2020.05.20
pixhawk 사용법  (0) 2020.03.20
  • CSTL 2021.01.17 01:17

    안녕하세요. 써주신 글 잘 읽고 배우다가 질문이 있어서 댓글 남깁니다.
    px4를 가지고 많은 연구 및 실험을 하시는 것으로 보입니다.
    혹시 px4 내부 제어기 코드 (position, attitude)를 수정하신 경험이 있으신가요?
    px4에 들어가 있는 PID 제어기를 다른 것으로 바꾸는 연구를 진행하고자 하여 질문 남깁니다. 감사합니다

    • BlogIcon rladntjd 2021.01.17 01:23 신고

      블로그 읽어주셔서 감사합니다. 질문에 답이 될지는 모르지만 px4 내부 제어기에서 pid 게인만 바꾸어 주었었습니다. 제어기를 아두이노 단계에서 새로 만들었던 경험은 있습니다.
      질문에 답이 되었을지는 모르겠지만 만약 px4 내부의 제어기 코드를 바꾼다면 필요한 값들(ex 센서 값)을 받아와서 ros 와 연동하여 동작하게는 할 수 있을것 같습니다.
      감사합니다

    • BlogIcon CSTL 2021.01.17 17:48

      답변해주셔서 감사합니다!

      px4 내부 src/modules/mc_pos_control에 있는 PID 제어 코드를 다른 비선형 제어기로 바꿔도 가능하다는 말씀이시죠?
      SITL을 통해 PID 제어기 지우고 실행 시켜보니 제어가 안되는 것으로 보아 될 것 같긴 하네요!
      혼자 해보고 있는데 코드 분석이 쉽지 않네요ㅠㅠ

  • BlogIcon rladntjd 2021.01.17 17:50 신고

    그렇게 해도 괜찮을꺼고 비교 분석을 하실려면 ros topic으로 센서 값 받아와서 기존 제어와 새로운 제어를 동시에 돌려서 비교 분석 할 수도 있을꺼 같아요

  • BlogIcon rladntjd 2021.01.17 18:40 신고

    제가 아직 학부생이라 많은 도움 못되어서 죄송합니다 혹시 또 궁금한거 있으면 댓글 달아주세요

  • CSTL 2021.01.17 19:27

    저도 학부생입니다!
    또 질문 받아주신다니 감사할 따름입니다~!

  • CSTL 2021.02.24 01:16

    안녕하세요!
    PX4 코드 분석 중에 질문이 생겨서 글 남깁니다.

    attitude control 코드 중에 다음과 같은 코드가 있습니다.
    (PX4-Autopilot/src/modules/mc_att_control/AttitudeControl/AttitudeControl.hpp)

    matrix::Vector3f update(const matrix::Quatf &q) const;

    위 코드에서 쿼터니안 q 정보를 어떻게 어디서 받아오는지 알 수 있을까요?
    position control 부분에 q 정보를 사용하고 싶은데 임의로 했더니 정보가 들어오지 않응 것 같습니다...

  • BlogIcon rladntjd 2021.02.26 10:05 신고

    저는 로스 사용해서 쿼터니언값을 보통 받아오는데 로스가 아닌 다른 방식을 사용하실려면 로스 토픽을 퍼블리쉬하는 부분을 보는것도 하나의 방법이지 않을까요

  • CSTL 2021.02.28 01:15

    로스를 잘 몰라서 안쓰고 해볼려고 했는데 공부를 해봐야겠네요.

    드론 대회 실험 준비한 글도 있는데, 혼자 공부해서 하신건가요??
    대단하시네요!

  • CSTL 2021.02.28 01:56

    학부생이신데 혼자 이걸 어떻게 실험까지....드론 전공이신가요...?
    하던 일 마무리하고 다시 코드 만져보다가 막히면 여쭤보겠습니다.
    혼자 좀 더 고민을 해보겠습니다!

    • BlogIcon rladntjd 2021.02.28 01:57 신고

      아뇨 전 기계과 전공인데 드론 하다보니 머 이것저것 했었어요. cstl님도 금방 하실꺼에요

    • BlogIcon CSTL 2021.02.28 02:08

      실험 가능하도록 세팅 해야하는데 큰일이네요.
      가까우면 찾아가서 배우고 싶네요ㅠ

      ROS는 필수적인가요?

  • BlogIcon rladntjd 2021.02.28 02:09 신고

    혹시 톡으로 이야기 가능하신가요?

  • BlogIcon Mkyun2 2021.07.21 17:28 신고

    안녕하세요 혹시 Simulation 돌리시는 환경이 어떻게 되시는지 궁금해서 글 남깁니다.
    저는 Jetson Xavier NX Jetpack ubuntu 18.04 환경인데 이번에 메뉴얼 찾아가면서 설치를 진행해보았는데 make px4_sitl_default gazebo 명령어를 통해 실행시켰을때 px shell 입력창이 뜨질 않았는데 찾아보니까 TCP 연결이 되지않아서 그런것 같은데 혹시 이러한 문제에 대해 해결법을 알고계실까요? TCP를 꺼버릴수도있지만 꺼버린다는건 어떤 기능을 못쓴다는 얘기가 되는것 같아서 혹시 어떻게 사용중이신지 궁금합니다.

    • BlogIcon rladntjd 2021.07.21 19:36 신고

      시뮬레이션은 64비트 운영체제에서는 잘 돌아갔던걸로 기억합니다. 어떤걸 쓰시는지는 모르지만 보통 make px4_sitl_default gazebo 를 사용하고, mavros 를 사용해서 sitl 로 연결하면 잘되었습니다

    • BlogIcon Mkyun2 2021.07.21 21:33 신고

      답변 감사합니다.
      저는 현재 Jetson Xavier 에서 돌려서 ARM 프로세서를 이용중이라 문제인건지 싶었습니다. Jetson 이용자중에 오류에 대한 질문글이 좀 보여서요.

      추가로
      1.PX4 펌웨어의 경우 ros catkin_ws/src 내에 있어야하는건가요?

      원래 따로 저장해서 make 시도를 했는데 계속 오류를 뿜다가 ros src 폴더내에서 진행하니까 make가 되더라구요.

      혹시, 이 부분은 어떻게 사용중 이신가요?

      그리고,
      2. PX4 펌웨어 자체를 빌드하는 행위는 upload 할것이 아니라면 필요없는건가요?

      그냥 시뮬레이션 명령어만 줘도 실행은 되는것 같아서요 아니면 기본 펌웨어가 이미 빌드된상태이고 제가 제 알고리즘을 돌리려면 소스를 수정하고 새롭게 빌드한 후에 시뮬레이션을 돌려야 하는건가요?

      3. pixhawk를 연결해줄필요없는 환경이라고 생각이 되어지는데 연결해야만 simulation이 가능한건가요? 제생각에는 firmware를 다운받은 상태여서 필요없다고 생각했습니다.

    • BlogIcon rladntjd 2021.07.22 01:31 신고

      arm 프로세서에서는 시뮬레이션을 안돌려봐서 확실하게는 답변 드리기 어려울것 같습니다.
      추가로
      1) 저는 그냥 home 에다가 펌웨어 설치해서 빌드 합니다
      2) 빌드 코드가 다양합니다 sitl 시뮬레이션도 있고 업로드용 빌드 코드도 있습니다. 필요하신거 선택해서 빌드 하면 됩니다
      3) 픽스호크를 연결해서 시뮬레이션 돌릴수도 있고 그냥 펌웨어만 돌릴수도 있습니다. 이건 필요한 환경에 따라 선택하셔서 시뮬레이션 돌리면 됩니다. 저도 상황에 따라서 둘다 쓰고 있습니다

      답변이 되었길 바랍니다. 추가로 문의사항 있으면 알려주세요

    • BlogIcon Mkyun2 2021.07.22 12:55 신고

      저의 일련의 과정을 설명해보면 모든 패키지를 설치하며 생긴 각각의 자체의 에러들은 해결한 상태입니다.

      그리고 roscore 실행시켜주고 px4_sitl gazebo 실행시켜주었는데 4560포트 tcp 연결 대기중인 상태라고 떠서(px4 펌웨어와 simulator를 연결하기 위해선 4560 port를 이용한 mavlink 통신이 필요해보입니다.)
      mavros를 server, client 모드 두가지 다 실행시켜봤는데 server 모드에선 오류를 내뿜고 client모드로할경우 아무응답도없습니다.

      펌웨어만 가지고 시뮬레이션을 돌리려고 하는상황인데 과정들중에서 되는게 없다보니 과정이 맞는것인지 판단이 안서네요 지웠다 깔았다만 여러번 했습니다. ㅠㅠ

    • BlogIcon rladntjd 2021.07.22 13:40 신고

      혹시 마브로스 실행시킬때 포트는 맞게 실행하신것 맞나요?

    • BlogIcon Mkyun2 2021.07.22 13:40 신고

      옙 4560으로 실행했습니다

    • BlogIcon rladntjd 2021.07.22 13:41 신고

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

      이렇게 실행시킵니다 혹시 이런식으로 하신것 맞나요

    • BlogIcon Mkyun2 2021.07.22 13:43 신고

      그렇게했는데 안되서 tcp로 바꿧었는데 펌웨어만 시뮬레이션 돌리더라도 udp연결하는것이 맞나요?

    • BlogIcon rladntjd 2021.07.22 13:44 신고

      네 저는 펌웨어 시뮬레이션 돌릴때도 저렇게 실행했습니다.
      Airsim 에서도 시뮬레이션 사용하는데 그때만 에어심에서 TCP 포트 만지고 나머지는 그냥 UDP 로 연결합니다

    • BlogIcon Mkyun2 2021.07.22 16:07 신고

      TCP는 일단 포기해봐야겠네요

      TCP연결 포기함으로서 생기는 문제가 뭔지는 아직 모르지만 저와 같은 문제를 겪으시는분은
      https://discuss.px4.io/t/nvidia-jetson-xavier-agx-controlling-px4-pixhawk-ros-mavros/16135/17

      해당글 참조하시면 될 것 같습니다.

      궁금한거 생기면 또 오겠습니다 ㅎ ㅎ

    • BlogIcon Mkyun2 2021.07.22 21:26 신고

      추가로 기존에 px4 사이트 메뉴얼 보고 진행했었는데 의존성패키지제외하고

      ROS gazebo mavros 등등 설치한 패키지들 purge로 다삭제하고 다시 전부 재설치하는데 펌웨어 부분만 우성님 주소 clone해서 사용하니까 별다른 설정없이 연결 되고 명령창 뜨네요 ..

    • BlogIcon rladntjd 2021.07.22 21:27 신고

      잘되신다니 다행입니다

    • BlogIcon rladntjd 2021.07.22 21:29 신고

      저 혹시 시뮬레이션으로 어떤거 실험할 예정인지 여쭈어 봐도 될까요?

    • BlogIcon Mkyun2 2021.07.22 21:39 신고

      아 .. 저는 이번년도 대학원 봄학기 신입생인데요 그냥 제손으로짠 랜딩시스템 실험할예정인데 카메라랑 라이다 이용해서 뭐좀하려하는데 아직 이부분을 시뮬레이션 해볼단계는 아닌것 같고 기본적인 부분들 익히면서 우선 이거 시뮬레이션에대해 좀 공뷰하면서 경로 계획하고 제어하는부분부터 테스트해보려합니다 바깥은 너무 땡볕이에요 ㅜ

    • BlogIcon rladntjd 2021.07.22 21:41 신고

      네 ㅎㅎ 저도 이번년도 봄학기 신입생이에요 반갑습니다.
      도움이 될지는 모르지만 PX4 시뮬레이션을 gazebo 가 아닌 Airsim 으로 돌리면 라이다랑 뎁스 RGB 카메라 다 가능합니다. 저도 슬램 알고리즘같은건 Airsim 사용해서 테스트 할때도 있어요

    • BlogIcon Mkyun2 2021.07.22 21:46 신고

      와 소중한 정보 감사합니다. 덕분에 정보찾는 시간 줄였네요ㅎㅎ
      글 몇개 보았는데 우성님은 정말 많이 공부해오셨던 것 같아요. 대단하다고 생각했어요!

    • BlogIcon rladntjd 2021.07.22 21:47 신고

      사실 요즘 좀 블로그 소홀했어서 업로드는 안했지만, Airsim 에서 하는거 제가 가지고 있어요 필요하시면 나중에 알려주세요

    • BlogIcon Mkyun2 2021.07.22 21:48 신고

      네! 감사합니다 ㅎ_ㅎ

    • BlogIcon Mkyun2 2021.08.09 11:09 신고

      안녕하세요 우성님 앞서 생겼던 문제들이 laptop 우분투로 갈아타면서 해결되었습니다.

      이제 경로계획 알고리즘쪽을 건드려보고 싶은데 제가 참조해볼만한 키워드가 있을까요?

      modudculab 재영님 소스부분 수정해서 pos control 부분에 경로계획알고리즘을 넣어도될것같긴한대

      ardupilot 오픈소스처럼 제가 폭넓게 건드려볼수있는 방법이 있는지 궁금합니다.

      감사합니다

    • BlogIcon rladntjd 2021.08.09 11:29 신고

      경로 계획은 폭넓은 부분이라 어떤걸 하고 싶으신지 먼저 정하는게 좋을것 같습니다. 저도 많이 해보지는 않았지만 회피 부분이나 효율적인 경로 생성 부분이 많이 쓰이는걸로 알고 있습니다.
      point to point 컨트롤이나, velocity 로 제어하는건 mavros 로 바로 사용이 가능한걸로 알고 있습니다

    • BlogIcon Mkyun2 2021.08.10 21:36 신고

      단순히 인식된 장애물에 대한 회피목적으로 A star 알고리즘을 추가해서 쓰려했습니다. mavros 이용해서 진행중에 있는상태입니다 ㅎㅎ
      우성님은 원래 PX4 펌웨어를 쓰셨나요??

      ardupilot이 정말 잘되있는거 같았는데

      알고리즘 시뮬레이션할때만 PX4 쓰시는지
      개발하시는 환경이 궁금합니다!