XTDrone PX4 仿真平台|Ubuntu20.04 环境搭建失败记录

XTDrone PX4 仿真平台|Ubuntu20.04 环境搭建失败记录

仿真环境搭建

依赖安装

  • 在使用apt安装的过程中(包括之后ROS的安装),如果出现难以解决的依赖问题,可以使用aptitude install(没有aptitude的话,使用sudo apt install aptitude 安装),如sudo aptitude install ros-kinetic-desktop,它会依次推荐依赖解决方案,觉得可行就按y,不可行就按n。当然这个工具也不是万能的,如果它也解决不了依赖问题,还是需要靠自己分析解决。
  • 有时候apt报错,提示“有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?”,这时按照提示进行操作即可。
  • 注意仔细检查依赖都装成功没有,之前有些开发者遇到的编译过程中出现’pthread_create’未定义的引用,就是因为少装了依赖。
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

报错如下:

jk-jone@JKKC:~$ 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
[sudo] jk-jone 的密码:
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
注意,选中 ‘libimage-exiftool-perl’ 而非 ‘exiftool’
没有可用的软件包 python-pip,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
然而下列软件包会取代它:
python3-pip
E: 软件包 python-pip 没有可安装候选

sudo apt-get update

没有解决该问题

先把python-pip 去掉,先装其它的

pip 是python2的包管理工具,已经不被包含在ubuntu20.04的仓库里了
原来是版本问题, 20.04更支持python3

pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse

ROS安装

已经装好了ROS noetic

创建新的工作空间
在这里插入图片描述

Gazebo安装

让先卸载原来的gazebo ,没有进行这步操作,而且不让用gazebo11 让用gazebo9 不知道影不影响

对Gazebo的ROS插件做了修改,因此需要源码编译
首先装依赖

扫描二维码关注公众号,回复: 15189911 查看本文章
sudo apt-get install ros-noetic-moveit-msgs ros-noetic-object-recognition-msgs ros-noetic-octomap-msgs ros-noetic-camera-info-manager  ros-noetic-control-toolbox ros-noetic-polled-camera ros-noetic-controller-manager ros-noetic-transmission-interface ros-noetic-joint-limits-interface

然后克隆并编译Gazebo的插件gazebo_ros_pkgs,放在~/PX4_XTDrone_WS/src下

cd ~/PX4_XTDrone_WS/src
git clone -b noetic-devel https://github.com/ros-simulation/gazebo_ros_pkgs.git
cd ~/PX4_XTDrone_WS
catkin build

在这里插入图片描述
编译成功后执行如下两条指令,判断gazebo_ros是否安装成功

source ~/PX4_XTDrone_WS/devel/setup.bash
rosrun gazebo_ros gazebo

在这里插入图片描述
启动成功
此时模型里面还没有什么模型
Gazebo有很多开源的模型文件,下载下来后

将该附件解压缩后放在 ~ /.gazebo中,此时在 ~ /.gazebo/models/路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。
在这里插入图片描述
之后gazebo里面的insert菜单里面会有很多的模型

MAVROS安装

注意,mavros-extras一定别忘记装,否则视觉定位将无法完成

sudo apt install ros-noetic-mavros ros-noetic-mavros-extras 		# for ros-noetic

在这里插入图片描述

wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh

Home下面 会得到 install_geographiclib_datasets.sh 文件
在这里插入图片描述
增加权限

sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间

在这里插入图片描述

jk-jone@JKKC:~$ sudo ./install_geographiclib_datasets.sh
Installing GeographicLib geoids egm96-5
Installing GeographicLib gravity egm96
Installing GeographicLib magnetic emm2015

PX4配置

在这里插入图片描述

cd PX4_Firmware
make px4_sitl_default gazebo

删除 PX4_Firmware 文件夹下的 build 文件

– PX4 version: v1.13.2
– Found PythonInterp: /usr/bin/python3 (found suitable version “3.8.10”, minimum required is “3”)
– PX4 config file: /home/jk-jone/PX4_Firmware/boards/px4/sitl/default.px4board
Traceback (most recent call last):
File “”, line 1, in
ModuleNotFoundError: No module named ‘menuconfig’
CMake Error at cmake/kconfig.cmake:6 (message):
kconfiglib is not installed or not in PATH
please install using “pip3 install kconfiglib”
Call Stack (most recent call first):
CMakeLists.txt:174 (include)
– Configuring incomplete, errors occurred!
Error: /home/jk-jone/PX4_Firmware/build/px4_sitl_default is not a directory
make: *** [Makefile:230:px4_sitl_default] 错误 1

缺少kconfiglib 依赖库

pip3 install kconfiglib

Failed to import jsonschema: No module named ‘jsonschema’

缺少jsonschema 依赖库

pip3 install --user jsonschema

再执行

make px4_sitl_default gazebo

在这里插入图片描述
卡在这里不往下走了
把gazebo打开,就往下走了
在这里插入图片描述

之后再次使用

make px4_sitl_default gazebo

则可正常了
在这里插入图片描述
出现了几个无人机

修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。

source ~/PX4_XTDrone_WS/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo

启动

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

出现问题:
gazebo无法启动成功
在这里插入图片描述

gzserver: symbol lookup error: /home/jk-jone/PX4_Firmware/build/px4_sitl_default/build_gazebo/libgazebo_mavlink_interface.so: undefined symbol: _ZN8mav_msgs4msgs17CommandMotorSpeedC1Ev
[gazebo-3] process has died [pid 5918, exit code 127, cmd /home/jk-jone/PX4_XTDrone_WS/src/gazebo_ros_pkgs/gazebo_ros/scripts/gzserver -e ode /home/jk-jone/PX4_Firmware/Tools/sitl_gazebo/worlds/empty.world __name:=gazebo __log:=/home/jk-jone/.ros/log/4969864a-d76a-11ed-9a6a-5714f224c3c2/gazebo-3.log].
log file: /home/jk-jone/.ros/log/4969864a-d76a-11ed-9a6a-5714f224c3c2/gazebo-3*.log

经过分析原因,之前安装了 rotors_simulator 的仿真功能包, 两者都定义了一个 mav_msgs,并且不一致!所以会找不到定义的地方。

locate libmav_msgs

在这里插入图片描述
这里只有rotors_simulator 的 镜像文件,没有PX4的,可能是检测到了没有编译?

删掉rotors_simulator 的 libmav_msgs.so 镜像文件

再启动

roslaunch px4 mavros_posix_sitl.launch

则不会报错,gazebo中出现一个无人机
在这里插入图片描述
但是通过

rostopic echo /mavros/state

查看mavros状态

header: 
  seq: 0
  stamp: 
    secs: 0
    nsecs:         0
  frame_id: ''
connected: False
armed: False
guided: False
manual_input: False
mode: ''
system_status: 0
---

connected 为 False
说明MAVROS与SITL通信还未成功

有说如果一直为false ,重新配置PX4;也可能是PX4的版本不对
在这里插入图片描述
在这里插入图片描述
从链接下载的版本是 v.1.13.2
在这里插入图片描述
下载这个版本v1.11.0-beta1

git clone -b v1.11.0-beta1 https://github.com/PX4/PX4-Autopilot.git

在这里插入图片描述
在这里插入图片描述
删除原来的 PX4_Firmware

将 PX4-Autopilot 重命名为 PX4_Firmware

mv PX4-Autopilot PX4_Firmware

再次编译

make px4_sitl_default gazebo

在这里插入图片描述
卡在这个地方不动了

在这里插入图片描述
卡了一会弹出这个,应该是国内上从git上 clone 异常导致的

在这里插入图片描述
第二次尝试也失败了

重新再次编译
很快过了,卡在了下面的地方 并且发现 PX4_Firmware/src/lib/matrix 里面有东西了,应该是刚下的,之前没有
在这里插入图片描述
又有一个模块clone时出问题了
在这里插入图片描述
在这里插入图片描述
要下载很多东西的再,总是卡住

在这里插入图片描述
报这个错

将XTDRONE的 PX4的对应的文件移到这个地方
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
将gazebo打开可以解决掉和这个Err

roslaunch px4 mavros_posix_sitl.launch

gazebo报错

最终也没有跳出坑!

不想换ubuntu18.04的系统,也不想换成gazebo9.所以不再向下折腾了,用docker吧还是

猜你喜欢

转载自blog.csdn.net/qq_32761549/article/details/130052664