北大智航杯竞赛仿真环境基础配置(对应PX4 1.13版)

目录

写在前面

为什么一定要用PX4 1.13呢?

依赖安装

ROS安装 

 Gazebo安装

1.漏掉指令

 2.gitclone出错

MAVROS安装

PX4配置

XTDrone源码下载

用键盘控制无人机飞行


写在前面

1.作者的Ubuntu版本为20.04,ROS版本为noetic。虽然官方给的文档里建议使用18.04与melodic ,但是考虑到已经安装了20.04以及对应版本的ROS,再加上队友安装18.04之后网络连接有问题,所以选择使用20.04版本。(事实证明,20.04版本也是可以的,但是22.04版本应该会有很有很多问题,具体原因不作解释)

2.官方文档有至少三处地方是有错误的,会对初学者造成一定困扰。并且一些简单错误,比如对gazebo插件作修改时,ROS版本要对应,文档给的是melodic,如果是20.04,要改为对应的noetic。

3.文档默认一部分操作我们是会的,比如修改~/.bashrc文档,指令为vim ~/.bashrc,如果要插入内容输入i(insert)即可,删除一行为dd,保存并退出为ESC+:(英文)+wq。

4.本文按照文档的顺序,主要介绍作者及同学遇到的error的解决办法以及文档里的错误。

5.如果要进行用键盘控制无人机飞行一步,则必须按照最新的文档进行。

为什么一定要用PX4 1.13呢?

我们来对比两个PX4版本的launch文件即可发现端倪

c8660c01c59741f7a93247aca69157b1.png

这是PX4 1.11版本的 

7f604b87e15f46c7aabb0e6770f657b8.png

这是PX4 1.13版本的

很明显,我们可以发现用键盘控制无人机飞行所需的indoor1.launch文件在PX4 1.11里不存在,而直接复制粘贴launch文件会出问题(下文有提到),因此最优解就是下载PX4 1.13版本的。

依赖安装

在进行如下代码时,作者出现了以下错误:

sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev 
genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk

c4cc5eccd8d7423d8e71fafdcacfc289.jpeg

 报错提示python-pip没有可安装候选,是因为20.04默认是使用python3的,而python-pip对应python2,因此会出现错误。只需将python-pip安装包删去即可。

ROS安装 

1d19b357722a44559077d1022b790629.jpeg

我的ROS是在之前安装的,几乎没有出现错误,以上是安装好之后的页面。

 Gazebo安装

1.漏掉指令

在rosrun gazebo_ros gazebo时,发现不能正常打开,而直接输入gazebo可以打开,报以下错误:

e40b188402fe43fc8ef5106f5a2da558.jpeg

出现该错误是因为我漏了一条以下图片里的安装命令

6f6a08d630f648a6a16a8959e16cd4a0.png

 2.gitclone出错

由于github是外国网站,能git成功纯靠网络与运气。有条件的可以翻墙,也可以更换国内的镜像源。PS:本人一般习惯多试几次,一般多试几次就好啦

MAVROS安装

这一步几乎不会报错,按照提示将安装包换为对应的ROS版本号即可。

PX4配置

这一步对应的文档有错误,首先来看一下进行make px4_sitl_default gazebo报错页面

1.第一个报错:没有规则来制作目标

这是由于我们下载好压缩包然后解压之后,放到主目录下,按照文档cd进入PX4_Firmware后,里面还有一个PX4_Firmware_13文件夹,没有make所需的规则。所以我尝试将PX4_Firmware_13移到主目录里,并将其重命名为PX4_Firmware,然后重新make,结果是没有以上制作目标的错误了,然而出现了以下错误(第二个错误)

2.第二个错误:

30cb98140efb4d71be3afd8a709bad35.png

 提示说现在的cmake文件和cmake创建时的文件不同,通过检查cmake创建时的源代码(如图)可知

58c27732471a4c3b96a9bc7f529adef6.png

 cmake最初位于主目录下的PX4_Firmware_13下,而按照文档的要求它位于PX4_Firmware里,

我的解决办法是先将PX4_Firmware文件夹下的PX4_Firmware_13放到主目录下,并把原来的PX4_Firmware文件夹删除,然后进入PX4_Firmware_13文件夹下的build文件夹里,将build.ninja和CMakeCache.text删除,然后重新make即可。

3.launch既不是…也不是…

a8df9e92190f4aeda1e44eba00bc614f.png

 这是由于没有添加路径或者没有正确添加路径以及没有source之后的结果,只需添加好路径然后source就好了。

温馨提示:由于文件夹改为了PX4_Firmware_13,因此对应的路径也要修改,修改为:

source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware_13/Tools/setup_gazebo.bash ~/PX4_Firmware_13/ ~/PX4_Firmware_13/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware_13
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware-13/Tools/sitl_gazebo

4.roslaunch px4 mavros_posix_sitl.launch及建立通信时错误

(1)有可能是路径的问题(但是按照上面的代码添加之后应该不会有问题),可以重新添加然后source一下

(2)也有可能是版本不适配的问题,PX4 1.11版本对应旧版本的XTDrone,而PX4 1.13对应新版本的XTDrone,所以请务必按照一个文档来,不要混着用

(3)以上两种情况都没有,可能是launch文件里的参数(fcu_url)设置有偏差。解决办法:在PX4_Firmware_13下launch文件里找可以正常建立通信的fcu_url参数,然后在mavros_posix_sitl.launch里进行更改。

参考这篇文章 :px4仿真时,/mavros/state现实连接不上_老李雅普诺夫的博客-CSDN博客

XTDrone源码下载

这一步同样注意将PX4_Firmware改为PX4_Firmware_13,修改后的代码为

git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git checkout 1_13_2
git submodule update --init --recursive
# 修改启动脚本文件
cp sitl_config/init.d-posix/* ~/PX4_Firmware_13/ROMFS/px4fmu_common/init.d-posix/
# 添加launch文件
cp -r sitl_config/launch/* ~/PX4_Firmware_13/launch/
# 添加世界文件
cp sitl_config/worlds/* ~/PX4_Firmware_13/Tools/sitl_gazebo/worlds/
# 修改部分模型文件
cp -r sitl_config/models/* ~/PX4_Firmware_13/Tools/sitl_gazebo/models/ 
# 替换同名文件
cd ~/.gazebo/models/
rm -r stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/

这一步也不会出现太多大问题,按照步骤来即可。

用键盘控制无人机飞行

这一步有两处地方需要修改,因此我直接将代码修改好:

在一个终端运行

cd ~/PX4_Firmware_13
roslaunch px4 indoor1.launch

Gazebo启动后,在另一个终端运行(注意要等Gazebo完全启动完成,或者可能脚本会报错)

cd ~/XTDrone/communication/
python3 multirotor_communication.py iris 0

与0号iris建立通信后,在另一个终端运行

cd ~/XTDrone/control/keyboard
python3 multirotor_keyboard_control.py iris 1 vel

这一步会出现的错误 

96173fb844cb449798cf50b5b6682e47.jpeg

这是由于我的PX4版本为1.11,但是indoor1.launch是从PX4 1.13里复制粘贴来的,出现了没有返回值等等问题。

然后最初我没有意识到这个问题的本质在哪,然后在老师的提示下,检查了前面建立通信那一步是否能正常运行,结果出现了以下报错

06845a2a0b764800ab46e39e4a680822.jpeg

 提示在建立symlink时出现问题,但是最初时是没问题的,我百思不得其解,百度搜索也没搜索到,与老师调试两个小时之后也是无果,兜兜转转几乎回到了原点。百度给的答案不是说虚拟机内存不够就是说更改了主目录,总之,都不是我想要的解决办法。

进行了思路的整理与分析后,找到了问题所在,在建立通信时,全是PX4 1.11的文件,但是在进行到用键盘控制飞行时,我将PX4_Firmware_13下的launch文件夹里的全部内容移到了PX4_Firmware下,很显然PX4_Firmware_13对应的是PX4 1.13的文件,两者肯定是有兼容性等问题的。因此,当我把1.11的所有东西都删去之后,全部安装1.13的东西,就没有出现这个问题了。飞机也可以正常起飞了。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Amelia&pku

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值