amov_jiayue 发表于 2020-5-15 15:41:04

PX4固件开发实践---环境编译(持续更新中)

      Ardupilot固件稳定归稳定,但在开发方面,尤其是在仿真方面做的不如PX4固件,网上资料少,很难借鉴,凭自己摸着石头过河,举步维艰。为方便后续ROS相关开发实现,今天教大家如何搭建PX4的开发环境,最近更的文章主要是帮大家把整体环境搭建完成,这样就不会有环境搭建的痛苦了。搭建过程还是建议参考官网:切记切记首先第一步,给管理权限,然后注销重登:sudo usermod -a -G dialout $USER第二步,你要明白,PX4固件一直在更新,在Github直接git的版本的是1.11,而当前大部分教程编译是停留在1.8、1.9版本,所以,固件源码下载一定要指定版本:<span style="font-size: medium;">git clone -b v1.8.2 </span><a href="https://github.com/PX4/Firmware.git" target="_blank" style="font-size: medium;">https://github.com/PX4/Firmware.git</a>完成后,初始化更新依赖库<span style="font-size: medium;">cd Firmware/</span>
<span style="font-size: medium;">git submodule update --init --recursive</span>查看当前PX4固件版本,如下所示:git describe --always --tags第三步,开始编译过程:<span style="font-size: medium;">开始编译</span>
<span style="font-size: medium;">make px4fmu-v2_default</span>此时会进入编译,如果你忽略了第一步,或者第一步没成功,则会出现如下报错:<font size="3">ccache: error: Failed to create file /home/myz/.ccache/f/5/a6b6c56e4e3aeb4a16157fdf5088ae-205662.o.tmp.stdout.myz-Inspiron-7559.4025.2A29qU: Permission denied</font><font size="3">src/modules/px4iofirmware/CMakeFiles/px4iofirmware.dir/build.make:134: recipe for target '</font>
<span style="font-size: medium;">src/modules/px4iofirmware/CMakeFiles/px4iofirmware.dir/mixer.cpp.obj' failed</span>
<span style="font-size: medium;">make: *** Error 1</span>此时,需要给管理权限:sudo make px4fmu-v2_default然后就可以进入正常编译,时间是比较慢长的,你可以看点该看的东西https://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/smiley/smiley_44.png,中间会报几个错误,缺少相关依赖库,缺啥装啥,需要啥就pip啥。<span style="font-size: medium;">sudo apt-get install python-jinja2</span>
<span style="font-size: medium;">sudo pip install numpy toml</span>当你出现如下界面100%,那么恭喜你,编译完成,就可以进入你的自由发挥的阶段了。运行PX4自带的仿真界面:sudo make posix_sitl_default jmavsim可以看到效果还是比较好的
如果你完成了GAZEBO的安装,你就可以进行PX4的Gazebo仿真了,如何在Gazebo中,玩你的飞机
下面来介绍一下如何安装Gazebo。
一、Gazebo安装      添加源并更新<span style="font-size: medium;">sudo sh -c 'echo "deb </span><a href="http://packages.osrfoundation.org/gazebo/ubuntu-stable" target="_blank" style="font-size: medium;">http://packages.osrfoundation.org/gazebo/ubuntu-stable</a><span style="font-size: medium;"> `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'</span>
<span style="font-size: medium;">wget </span><a href="http://packages.osrfoundation.org/gazebo.key" target="_blank" style="font-size: medium;">http://packages.osrfoundation.org/gazebo.key</a><span style="font-size: medium;"> -O - | </span>
<font size="3">sudo apt-key add -</font><font size="3">sudo apt update</font>      安装gezabo9和相关依赖sudo apt install gazebo9 libgazebo9-dev      完成后即可运行打开一个空世界gazebo --verbose
二、Ardupilot_gazebo编译这部分一定要多看官方的提供的教程,网络内容良莠不齐,很容易误导大家。      下载ardupilot_gazebo源码
<div align="left"><font color="rgb(51, 51, 51)"><font style="background-color:rgb(250, 250, 250)"><font face="-apple-system-font, BlinkMacSystemFont, " "=""><font size="3">git clone <a href="https://github.com/khancyr/ardupilot_gazebo" target="_blank">https://github.com/khancyr/ardupilot_gazebo</a></font></font></font></font></div><div align="left"><font color="rgb(51, 51, 51)"><font style="background-color:rgb(250, 250, 250)"><font face="-apple-system-font, BlinkMacSystemFont, " "=""><font size="3">cd ardupilot_gazebo</font></font></font></font></div>
      编译ardupilot_gazebo<span style="font-size: medium;">mkdir build</span>
<span style="font-size: medium;">cd build</span>
<span style="font-size: medium;">cmake ..</span>
<span style="font-size: medium;">make -j4</span>
<span style="font-size: medium;">sudo make install</span>      添加路径gedit ~/.bashrc      添加的内容<span style="font-size: medium;">source /usr/share/gazebo/setup.sh</span>
<span style="font-size: medium;">#这里注意下和你实际的路径一致</span>
<font size="3">export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models:${GAZEBO_MODEL_PATH}</font>
<span style="font-size: medium;">export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models_gazebo:${GAZEBO_MODEL_PATH}</span>
<span style="font-size: medium;">export GAZEBO_RESOURCE_PATH=~/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH}</span>      保存使生效source .bashrc三、运行仿真      四轴(3DR IRIS)      先打开ardupilot的SITL在环仿真
<span style="font-size: medium;">#先打开sitl,此时会提示link1 down,等待心跳</span>
<span style="font-size: medium;">sim_vehicle.py -v ArduCopter -f gazebo-iris-m --mav10 --map --console -I0</span>      再打开Gazebo<span style="font-size: medium;">#再开gazebo</span>
<span style="font-size: medium;">gazebo --verbose worlds/iris_arducopter_runway.world</span>

menguv 发表于 2020-11-14 00:27:48

按照 https://gitee.com/bingobinlw/volans/blob/master/doc/QuadGuidance.md 里执行sudo make px4fmu-v2_default之后一直报错
/opt/ros/melodic/lib/libmavros.so:对‘mavconn::MAVConnUDP::get_remote_endpoint() const’未定义的引用
网上也没找到解决方案

15602727481 发表于 2021-6-5 11:17:18

我这边在编译的时候似乎是 编译px4-io 固件上有问题,这个需要怎么解决
页: [1]
查看完整版本: PX4固件开发实践---环境编译(持续更新中)