ゼロからのUbuntu 16.04でPX 4コンパイル環境の構築

7113 ワード

最近pixhawkを手に入れて、既存のコードに基づく二次加工をしたいと思って、公式サイトに行きました.https://dev.px4.io/チュートリアルを見に行きます.公式サイトのチュートリアルは中国語、英語、韓国語に分かれています.多くの人は第一反応が中国語のバージョンを見ることだと確信しています.しかし、このような弊害は本当に大きく、原因は以下の通りです.
  1.公式サイトの中国語の漢化は比較的に悪くて、多くの地方の翻訳は意味が正確ではないだけではなくて、甚だしきに至っては教程の中の肝心なステップの上で漏れが現れました
  2.中国語バージョンは長い間更新されていないようです.中にはファームウェアライブラリが古くなっているものもありますが、このようなファームウェアライブラリの下でコンパイルすると、間違いを報告するのは絶対に日常茶飯事です.
筆者はこのようなチュートリアルの指導の下で多くの回り道をした.だからこのチュートリアルを書いて、私のように初めてPX 4、Ubuntu、プログラミングした人に助けを与えます.
一、オペレーティングシステムの選択——windowsですか、それともUbuntuですか.
多くの人と同じように、私はlinuxに触れたことがありません.ubuntuは何も知りません.しかし、公式サイトのUbuntuに対する強い推薦とwindowsの強い支持を考慮すると.やはりUbuntuを装うことをお勧めします.(バージョンは16.04が望ましい)筆者はUbuntu 18.04をインストールしたことがあるが、オペレーティングシステムのバージョンが新すぎるため、一連の問題(主にコンパイル環境のプログラムに互換性がないものがある)を招いていることが分かった.だから、Ubuntu 16.04を入れることを強くお勧めします.
二、どうやって?
2つの方式1.仮想マシン(推奨)2.デュアルシステム.
筆者は仮想マシン方式を採用していますが、理由は簡単で、シロとしてubuntuのようなシステムを初めて使うときは操作ミスが避けられません.この場合、復元方法が分からない場合は、仮想マシンをアンインストールして再インストールするだけでいいです.
チュートリアルは次のとおりです.https://blog.csdn.net/gongxifacai_believe/article/details/52444938
注意すべき点がある.デフォルトのメモリは1 Gですが、コンパイル中にメモリオーバーフローの問題に遭遇したので、2 Gに設定するのがおすすめです(後で変更して完全に間に合います).
仮想マシンをインストールした後、vmtoolsをインストールすることをお勧めします.インストール後、windowsインタフェースからコマンド(ctrl+c)をコピーし、ubuntuの下の端末(ctrl+alt+T)に貼り付け(ctrl+shift+v)して使用することができます.
チュートリアルは次のとおりです.https://blog.csdn.net/tjcwt2011/article/details/72638977
三、本題——px 4コンパイル環境の構築
本題を始める前に、私はいつものように前の芝居を話しました.(大事!)
px 4コンパイル環境に必要なファイルの多くは海外ノードからダウンロードされ,速度が異常に遅く,倉庫が見つからないことが多い.そのため、国内のミラーノードを交換してダウンロード速度を速める必要があります.
チュートリアルは次のとおりです.
https://blog.csdn.net/Mordiary/article/details/80533627
そしてやっと必要なコンパイル環境の構築を開始することができます.
1.いくつかの権限をオンにします:sudo usermod-a-G dialout$USERはログアウトしてからログインします.これで新しいユーザーになります.この操作は一度だけ行います.その後、ファームウェアを再ダウンロードする必要があります.このステップは必要ありません.
2.スクリプトファイルを実行する
公式サイトの最新のスクリプトファイルを提供して、新しいスクリプトファイルubuntu_sim_nuttx.sh,このスクリプトファイルにはPX 4環境に必要な各種ライブラリだけでなく,jMAVsimの各種依存もインストールされている.スクリプトファイルに次の内容をコピーします.
#!/bin/bash

## Bash script for setting up a PX4 development environment for Pixhawk/NuttX targets on Ubuntu LTS (16.04).
## It can be used for installing simulators and the NuttX toolchain.
##
## Installs:
## - Common dependencies and tools for all targets (including: Ninja build system, Qt Creator, pyulog)
## - FastRTPS and FastCDR
## - jMAVSim simulator
## - Gazebo8 simulator
## - NuttX toolchain (i.e. gcc compiler)
## - PX4/Firmware source (to ~/src/Firmware/)

# Ubuntu Config
sudo apt-get remove modemmanager -y


# Ninja build system
ninja_dir=$HOME/ninja
echo "Installing Ninja to: $ninja_dir."
if [ -d "$ninja_dir" ]
then
    echo " Ninja already installed."
else
    pushd .
    mkdir -p $ninja_dir
    cd $ninja_dir
    wget https://github.com/martine/ninja/releases/download/v1.6.0/ninja-linux.zip
    unzip ninja-linux.zip
    rm ninja-linux.zip
    exportline="export PATH=$ninja_dir:\$PATH"
    if grep -Fxq "$exportline" ~/.profile; then echo " Ninja already in path" ; else echo $exportline >> ~/.profile; fi
    . ~/.profile
    popd
fi


# Common Dependencies
echo "Installing common dependencies"
sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
sudo apt-get update
sudo apt-get install python-argparse git-core wget zip python-empy qtcreator cmake build-essential genromfs -y
# required python packages
sudo apt-get install python-dev -y
sudo apt-get install python-pip
sudo -H pip install pandas jinja2
pip install pyserial
# optional python tools
pip install pyulog


# Install FastRTPS 1.5.0 and FastCDR-1.0.7
fastrtps_dir=$HOME/eProsima_FastRTPS-1.5.0-Linux
echo "Installing FastRTPS to: $fastrtps_dir"
if [ -d "$fastrtps_dir" ]
then
    echo " FastRTPS already installed."
else
    pushd .
    cd ~
    wget http://www.eprosima.com/index.php/component/ars/repository/eprosima-fast-rtps/eprosima-fast-rtps-1-5-0/eprosima_fastrtps-1-5-0-linux-tar-gz
    mv eprosima_fastrtps-1-5-0-linux-tar-gz eprosima_fastrtps-1-5-0-linux.tar.gz
    tar -xzf eprosima_fastrtps-1-5-0-linux.tar.gz eProsima_FastRTPS-1.5.0-Linux/
    tar -xzf eprosima_fastrtps-1-5-0-linux.tar.gz requiredcomponents
    tar -xzf requiredcomponents/eProsima_FastCDR-1.0.7-Linux.tar.gz
    cd eProsima_FastCDR-1.0.7-Linux; ./configure --libdir=/usr/lib; make; sudo make install
    cd ..
    cd eProsima_FastRTPS-1.5.0-Linux; ./configure --libdir=/usr/lib; make; sudo make install
    popd
fi


# jMAVSim simulator
sudo apt-get install ant openjdk-8-jdk openjdk-8-jre -y

# Gazebo simulator
sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
## Setup keys
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
## Update the debian database:
sudo apt-get update
## Install Gazebo8
sudo apt-get install gazebo8 -y
## For developers (who work on top of Gazebo) one extra package
sudo apt-get install libgazebo8-dev


# NuttX
sudo apt-get install python-serial openocd \
    flex bison libncurses5-dev autoconf texinfo \
    libftdi-dev libtool zlib1g-dev -y

# Clean up old GCC
sudo apt-get remove gcc-arm-none-eabi gdb-arm-none-eabi binutils-arm-none-eabi gcc-arm-embedded
sudo add-apt-repository --remove ppa:team-gcc-arm-embedded/ppa



# Install GCC 5.4
gcc_dir=$HOME/gcc-arm-none-eabi-5_4-2016q2
echo "Installing GCC to: $gcc_dir"
if [ -d "$gcc_dir" ]
then
    echo " GCC already installed."
else
    pushd .
    cd ~    
    wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/5_4-2016q2/gccarmnoneeabi542016q220160622linuxtar.bz2
    tar -jxf gccarmnoneeabi542016q220160622linuxtar.bz2
    exportline="export PATH=$HOME/gcc-arm-none-eabi-5_4-2016q2/bin:\$PATH"
    if grep -Fxq "$exportline" ~/.profile; then echo " GCC path already set." ; else echo $exportline >> ~/.profile; fi
    . ~/.profile
    popd

    # Install 32 bit support libraries (ignore if fails)
    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get install libc6:i386 libgcc1:i386 libstdc++5:i386 libstdc++6:i386
    sudo apt-get install gcc-5.4-base:i386
fi



# Clone PX4/Firmware
clone_dir=~/src
echo "Cloning PX4 to: $clone_dir."
if [ -d "$clone_dir" ]
then
    echo " Firmware already cloned."
else
    mkdir -p $clone_dir
    cd $clone_dir
    git clone https://github.com/PX4/Firmware.git
    cd Firmware
fi
cd $clone_dir/Firmware


#Reboot the computer (required before building)
echo RESTART YOUR COMPUTER to complete installation of PX4 development toolchain

次にコマンドを実行します:source ubuntu_sim_nuttx.sh,これにより種々の依存がインストールされる.その後、Firmwareフォルダを開く必要があります.submoduleをクリックします(このステップは行わないと、いくつかのモジュールが少ないためコンパイルできません):
cd ~src/Firmware/
git submodule init
git submodule update --init --recursive

ファームウェアをコンパイルできます
cd Firmware
make px4fmu-v2_default

errorが表示されない場合はコンパイルに成功します.