【WSL2】Ubuntu20.04从零开搭PX4&Mavros&Gazebo环境并测试

参考:

仿真平台基础配置(对应PX4 1.13版) · 语雀

不需要卸载原来的gazebo,语雀对gazebo的插件做了修改,才需要那些步骤

"我们对Gazebo的ROS插件做了修改,因此需要源码编译。"

mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
cd catkin_ws && catkin init # 使用catkin_make话,则为cd catkin_ws/src && catkin_init_workspace
catkin build # 使用catkin_make话,则为 cd .. && catkin_make 
cd

Gazebo有很多开源的模型文件,我们将一些需要的模型文件上传到附件中,供大家下载:

--> 请点击📎models.zip

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


一.MAVROS安装

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

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

1. 安装mavros

sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras

2. 安装GeographicLib

参考:

MAVROS安装教程_安装mavros时间太长-CSDN博客

【mavros安装】GeographicLib踩坑及解决-CSDN博客

①安装GeographicLib(官网方法,报错了就用下一个我用的方法)

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

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

②安装GeographicLib(我用的)

  • 直接去GeographicLib 官网下载(好像要挂梯子)对应的三个包,下载得到三个文件夹。

1.GeographicLib geoids egm96-5 官网下载链接:

https://sourceforge.net/projects/geographiclib/files/geoids-distrib/egm96-5.tar.bz2/download

2.GeographicLib gravity egm 96官网下载链接

https://sourceforge.net/projects/geographiclib/files/gravity-distrib/egm96.zip/download

3.GeographicLib magnetic emm2015 官网下载链接:

https://sourceforge.net/projects/geographiclib/files/magnetic-distrib/emm2015.zip/download

  • 下载完后得到三个压缩包,解压后放到一个名为 GeographicLib的文件夹里。(文件名必须这样)
  • 把那个文件夹放到Ubuntu 路径: /usr/share
  • ok

二. PX4配置

git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.13.2
git submodule update --init --recursive
make px4_sitl_default gazebo

运行 make px4_sitl_default gazebo的时候,报错

此时要运行:

注意,要startxfce4把GUI打开,运行pip3才有反应

pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future pyserial cerberus pyulog==0.7.0 pyquaternion

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

再次运行 make px4_sitl_default gazebo的时候,报错

-- Checking for module 'gstreamer-1.0 >= 1.0'
--   No package 'gstreamer-1.0' found
-- Checking for module 'gstreamer-base-1.0 >= 1.0'
--   No package 'gstreamer-base-1.0' found
-- Checking for module 'gstreamer-app-1.0 >= 1.0'
--   No package 'gstreamer-app-1.0' found

查gpt

按照gpt输入:

sudo apt-get remove libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

再次运行 make px4_sitl_default gazebo,可打开gazebo

VcXsrv中可打开gazebo

注意,要startxfce4把GUI打开


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

gedit ~/.bashrc
######添加######
source ~/catkin_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
######添加######
source ~/.bashrc
####用于测试是否安装成功#####
roslaunch px4 mavros_posix_sitl.launch

运行roslaunch px4 mavros_posix_sitl.launch的时候,报错

因为 install_geographiclib_dataset 没装好,目录名称错了,重新把它放入 /usr/share

再次运行roslaunch px4 mavros_posix_sitl.launch,注意,运行它的时候,不能同时运行着make px4_sitl_default gazebo,要把gazebo先关掉

成功

运行

rostopic echo /mavros/state

若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查。


三.QGroundControl安装

然后需要安装地面站QGroundControl,点此安装链接。启动后,将出现下图 所示画面。注意Ubuntu16.04没法直接使用QGroundcontrol 版本4系列(可以使用版本3系列),Ubuntu16.04需要源码编译版本4系列,请仔细查看安装链接

sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libfuse2 -y
sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor-dev -y
wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage
chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage

运行./QGroundControl.AppImage的时候成功启动地面站

相关推荐
zhd15306915625ff24 分钟前
库卡机器人日常维护
网络·机器人·自动化·机器人备件
古月居GYH1 小时前
ROS一键安装脚本
人工智能·机器人·ros
DeepAlchemy2 小时前
ROSSERIAL与Arduino IDE交叉开发(UBUNTU环境,包含ESP32、arduino nano)
c++·单片机·ros·rosserial
清流君4 小时前
【运动规划】移动机器人运动规划与轨迹优化全解析 | 经典算法总结
人工智能·笔记·算法·机器人·自动驾驶·运动规划
Matlab程序猿小助手11 小时前
【MATLAB源码-第218期】基于matlab的北方苍鹰优化算法(NGO)无人机三维路径规划,输出做短路径图和适应度曲线.
开发语言·嵌入式硬件·算法·matlab·机器人·无人机
xx小寂15 小时前
ubuntu16.04在ros使用USB摄像头-解决could not open /dev/video0问题
ubuntu·机器人
啵啵鱼爱吃小猫咪18 小时前
迭代学习公式
学习·机器人
宋1381027972019 小时前
人形机器人开发、XR仿真训练、影视动画制作,一副手套支持多种应用
机器人·汽车·vr·动作捕捉
京天机器人2 天前
当科技照进现实 机器人带着机器狗乘空轨
人工智能·科技·机器人
Mr.Winter`3 天前
轨迹优化 | 基于Savitzky-Golay滤波的无约束路径平滑(附ROS C++/Python仿真)
人工智能·算法·机器人·自动驾驶·ros·ros2·数值优化