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

相关推荐
硅谷秋水18 分钟前
OpenDriveVLA:通过大型视觉-语言-动作模型实现端到端自动驾驶
人工智能·机器学习·计算机视觉·语言模型·机器人·自动驾驶
爱吃猫的鱼ouou3 小时前
(八)lerobot开源项目扩展so100的仿真操控(操作记录)
人工智能·ubuntu·机器人·mujoco
语言专家9 小时前
亲身体验 Copilot Pages:利用人工智能实时整理和优化笔记
人工智能·机器人·copilot
llkk星期五1 天前
Mujoco xml模型
xml·ubuntu·机器人
视觉语言导航1 天前
基于视觉语言模型的机器人实时探索系统!ClipRover:移动机器人零样本视觉语言探索和目标发现
人工智能·机器人·具身智能
WLJT1231231231 天前
机器人智能设备:未来生活的新篇章
机器人·生活
hillstream32 天前
ROS2学习笔记1-起步的程序
ros·ros2
Wnq100722 天前
论伺服电机在轨道式巡检机器人中的优势及应用实践
机器人·驱动·伺服电机·巡检机器人·北京玉麟科技·轨道式巡检机器人·防爆巡检机器人
Abcdsa2 天前
柔性关节双臂机器人奇异摄动鲁棒自适应PD控制
机器人
视觉人机器视觉2 天前
MV-DLS1400P激光振镜立体相机(MV-DLS1400P)重要参数解析
大数据·人工智能·数码相机·机器人·c#·汽车