PX4困擾好久,總是在編譯出問題,最後不了了之。
效果如下:
先給權限,然後註銷
sudo usermod -a -G dialout $USER
PX4固件編譯
首先第一步,你要明白,PX4固件一直在更新,我在Github直接git的版本的是1.11,而當前編譯一般停留在1.8、1.9版本,所以,固件源碼下載一定要指定版本。
我這裏下載的是1.8版本。
git clone -b v1.8.2 https://github.com/PX4/Firmware.git
完成後,初始化更新依賴庫
cd Firmware/
git submodule update --init --recursive
查看當前PX4固件版本
git describe --always --tags
開始編譯
make px4fmu-v2_default
報錯如下:
ccache: error: Failed to create file /home/myz/.ccache/f/5/a6b6c56e4e3aeb4a16157fdf5088ae-205662.o.tmp.stdout.myz-Inspiron-7559.4025.2A29qU: Permission denied
src/modules/px4iofirmware/CMakeFiles/px4iofirmware.dir/build.make:134: recipe for target 'src/modules/px4iofirmware/CMakeFiles/px4iofirmware.dir/mixer.cpp.obj' failed
make[7]: *** [src/modules/px4iofirmware/CMakeFiles/px4iofirmware.dir/mixer.cpp.obj] Error 1
沒有權限,應該是最開始給管理權限沒成功。
我這裏給的sudo。
sudo make px4fmu-v2_default
中間會提示缺少幾個庫,裝好重新編譯即可
sudo apt-get install python-jinja2
sudo pip install numpy toml
在100%的時候提示Flash溢出
[100%] Linking CXX executable ../../nuttx_px4fmu-v2_default.elf
/opt/gcc-arm-none-eabi-6-2017-q2-update/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/bin/ld: ../../nuttx_px4fmu-v2_default.elf section `.data' will not fit in region `flash'
/opt/gcc-arm-none-eabi-6-2017-q2-update/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/bin/ld: region `flash' overflowed by 604 bytes
collect2: error: ld returned 1 exit status
platforms/nuttx/CMakeFiles/nuttx_px4fmu-v2_default.elf.dir/build.make:216: recipe for target 'nuttx_px4fmu-v2_default.elf' failed
make[3]: *** [nuttx_px4fmu-v2_default.elf] Error 1
解決方法
如下路徑,修改flash的長度由1008改爲2032K
編譯成功:
運行仿真
Jmavsim
這個很簡單,不用安裝額外的東西,直接編譯運行
sudo make posix_sitl_default jmavsim
起飛命令
commander takeoff
Gazebo仿真
Gazebo仿真要安裝gazebo,我這裏裝得是Gazebo9
安裝過程很簡單
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt update
sudo apt install gazebo9 libgazebo9-dev
打開一個空世界
gazebo --verbose
運行px4的gazebo仿真
sudo make posix_sitl_default gazebo
起飛命令
commander takeoff