XTDrone PX4 仿真平台|Ubuntu20.04 环境搭建失败记录
- 仿真环境搭建
- 依赖安装
- ROS安装
- Gazebo安装
- MAVROS安装
- PX4配置
仿真环境搭建
依赖安装
- 在使用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插件做了修改,因此需要源码编译
首先装依赖
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吧还是