【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的时候成功启动地面站

相关推荐
wait,what?2 分钟前
【ROS概述】C++运行hello world
机器人·ros
你的月亮和太阳13 小时前
机器学习基础
人工智能·机器学习·机器人
wait,what?13 小时前
【ROS概述】解决主机和虚拟机共享剪贴板的问题
ros
微刻时光15 小时前
影刀RPA实战:常见实用功能指令
笔记·机器人·自动化·rpa·水印·影刀·影刀rpa
云卓科技20 小时前
无人机之智能任务规划系统技术篇
科技·机器人·无人机·交互·制造
kuan_li_lyg1 天前
SolidWorks 导出 URDF 中的惯性矩阵错误问题
开发语言·人工智能·机器人·ros·urdf·solidworks
FL171713141 天前
UR机器人RTDE(Real-Time Data Exchange,实时数据交换)
机器人
健忘的派大星1 天前
手把手教你搭建本地知识库问答AI机器人,学不会你来找我!!
人工智能·ai·语言模型·机器人·llm·知识库·agi
yoloGina1 天前
电销外呼系统怎么才好用?高效防封、电销效率提升60%以上
大数据·人工智能·机器人
ai智能@kelaile5201 天前
AI语音机器人系统的六大特色语音识别呼叫系统部署
网络·人工智能·网络协议·机器人·语音识别