776

阿木币

1

精华

1378 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

发表于 2020-5-15 15:41:04 6042 浏览 2 回复

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

      Ardupilot固件稳定归稳定,但在开发方面,尤其是在仿真方面做的不如PX4固件,网上资料少,很难借鉴,凭自己摸着石头过河,举步维艰。为方便后续ROS相关开发实现,今天教大家如何搭建PX4的开发环境,最近更的文章主要是帮大家把整体环境搭建完成,这样就不会有环境搭建的痛苦了。
搭建过程还是建议参考官网:切记切记
首先第一步,给管理权限,然后注销重登:
  1. sudo usermod -a -G dialout $USER
复制代码
第二步,你要明白,PX4固件一直在更新,在Github直接git的版本的是1.11,而当前大部分教程编译是停留在1.8、1.9版本,所以,固件源码下载一定要指定版本:
  1. <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>
复制代码
完成后,初始化更新依赖库
  1. <span style="font-size: medium;">cd Firmware/</span>
  2. <span style="font-size: medium;">git submodule update --init --recursive</span>
复制代码
查看当前PX4固件版本,如下所示:
  1. git describe --always --tags
复制代码
1.png
第三步,开始编译过程:
  1. <span style="font-size: medium;">开始编译</span>
  2. <span style="font-size: medium;">make px4fmu-v2_default</span>
复制代码
此时会进入编译,如果你忽略了第一步,或者第一步没成功,则会出现如下报错:
  1. <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>
  2. <span style="font-size: medium;">src/modules/px4iofirmware/CMakeFiles/px4iofirmware.dir/mixer.cpp.obj' failed</span>
  3. <span style="font-size: medium;">make[7]: *** [src/modules/px4iofirmware/CMakeFiles/px4iofirmware.dir/mixer.cpp.obj] Error 1</span>
复制代码
此时,需要给管理权限:
  1. sudo make px4fmu-v2_default
复制代码
然后就可以进入正常编译,时间是比较慢长的,你可以看点该看的东西

                               
登录/注册后可看大图
,中间会报几个错误,缺少相关依赖库,缺啥装啥,需要啥就pip啥。
  1. <span style="font-size: medium;">sudo apt-get install python-jinja2</span>
  2. <span style="font-size: medium;">sudo pip install numpy toml</span>
复制代码
当你出现如下界面100%,那么恭喜你,编译完成,就可以进入你的自由发挥的阶段了。
2.png
运行PX4自带的仿真界面:
  1. sudo make posix_sitl_default jmavsim
复制代码
可以看到效果还是比较好的
3.png

如果你完成了GAZEBO的安装,你就可以进行PX4的Gazebo仿真了,如何在Gazebo中,玩你的飞机

下面来介绍一下如何安装Gazebo。

一、Gazebo安装
        添加源并更新
  1. <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>
  2. <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>
  3. <font size="3">sudo apt-key add -</font><font size="3">sudo apt update</font>
复制代码
        安装gezabo9和相关依赖
  1. sudo apt install gazebo9 libgazebo9-dev
复制代码
        完成后即可运行打开一个空世界
  1. gazebo --verbose
复制代码
4.png

二、Ardupilot_gazebo编译
这部分一定要多看官方的提供的教程,网络内容良莠不齐,很容易误导大家。
        下载ardupilot_gazebo源码
  1. <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
  1. <span style="font-size: medium;">mkdir build</span>
  2. <span style="font-size: medium;">cd build</span>
  3. <span style="font-size: medium;">cmake ..</span>
  4. <span style="font-size: medium;">make -j4</span>
  5. <span style="font-size: medium;">sudo make install</span>
复制代码
        添加路径
  1. gedit ~/.bashrc
复制代码
        添加的内容
  1. <span style="font-size: medium;">source /usr/share/gazebo/setup.sh</span>
  2. <span style="font-size: medium;">#这里注意下和你实际的路径一致</span>
  3. <font size="3">export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models:${GAZEBO_MODEL_PATH}</font>
  4. <span style="font-size: medium;">export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models_gazebo:${GAZEBO_MODEL_PATH}</span>
  5. <span style="font-size: medium;">export GAZEBO_RESOURCE_PATH=~/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH}</span>
复制代码
        保存使生效
  1. source .bashrc
复制代码
三、运行仿真
        四轴(3DR IRIS)
        先打开ardupilot的SITL在环仿真
  1. <span style="font-size: medium;">#先打开sitl,此时会提示link1 down,等待心跳</span>
  2. <span style="font-size: medium;">sim_vehicle.py -v ArduCopter -f gazebo-iris  -m --mav10 --map --console -I0</span>
复制代码
        再打开Gazebo
  1. <span style="font-size: medium;">#再开gazebo</span>
  2. <span style="font-size: medium;">gazebo --verbose worlds/iris_arducopter_runway.world</span>
复制代码
5.png


评分

参与人数 2阿木币 +6 收起 理由
15602727481 + 5
amov_msq + 1

查看全部评分


扫一扫浏览分享
回复

使用道具 举报

3

阿木币

0

精华

0 小时

在线时间

应届白菜

Rank: 1

发表于 2020-11-14 00:27:48
按照 https://gitee.com/bingobinlw/vol ... doc/QuadGuidance.md 里执行sudo make px4fmu-v2_default之后一直报错
/opt/ros/melodic/lib/libmavros.so:对‘mavconn::MAVConnUDP::get_remote_endpoint[abi:cxx11]() const’未定义的引用
网上也没找到解决方案
回复 点赞 1

使用道具 举报

0

阿木币

0

精华

10 小时

在线时间

老司机

Rank: 2

发表于 2021-6-5 11:17:18
我这边在编译的时候似乎是 编译px4-io 固件上有问题,这个需要怎么解决 2021-06-05 11-17-08 的屏幕截图.png
回复 点赞

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表