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

相关推荐
程序员大志12 小时前
ROS1入门教程2:主题发布和订阅
ros
向阳逐梦12 小时前
基于STM32F4单片机实现ROS机器人主板
stm32·单片机·机器人
朽木成才17 小时前
小程序快速实现大模型聊天机器人
小程序·机器人
聆思科技AI芯片18 小时前
实操给桌面机器人加上超拟人音色
人工智能·机器人·大模型·aigc·多模态·智能音箱·语音交互
新加坡内哥谈技术1 天前
开源Genesis: 开创机器人研究的全新模拟平台
机器人·开源
野蛮的大西瓜1 天前
文心一言对接FreeSWITCH实现大模型呼叫中心
人工智能·机器人·自动化·音视频·实时音视频·文心一言·信息与通信
高克莱1 天前
【钉钉群聊机器人定时发送消息功能实现】
java·spring boot·机器人·调度任务
小俱的一步步1 天前
钉钉自定义机器人发送群消息(加签方式、http发送)
机器人·钉钉
三月七(爱看动漫的程序员)2 天前
Knowledge Graph Prompting for Multi-Document Question Answering
人工智能·gpt·学习·语言模型·自然语言处理·机器人·知识图谱
努力进修2 天前
【机器学习】当教育遇上机器学习:打破传统,开启因材施教新时代
人工智能·机器学习·机器人