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[7]: *** [src/modules/px4iofirmware/CMakeFiles/px4iofirmware.dir/mixer.cpp.obj] Error 1</span>
复制代码此时,需要给管理权限: - sudo make px4fmu-v2_default
复制代码然后就可以进入正常编译,时间是比较慢长的,你可以看点该看的东西,中间会报几个错误,缺少相关依赖库,缺啥装啥,需要啥就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
复制代码 完成后即可运行打开一个空世界
二、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>
复制代码 添加路径 添加的内容 - <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>
复制代码 保存使生效 三、运行仿真 四轴(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>
复制代码
|