gazebo11+px4联合仿真测试

本文主要记录gazebo+px4联合仿真流程,及过程中出现的问题。

一、px4 安装

git clone https://github.com/PX4/PX4-Autopilot.git --recursive

由于px4仓库包含子模块,因此最好保证可以连上外网,且网络环境良好的情况下。
完整下载后,安装环境

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

当前下载的px4版本为1.13.0

二、gazebo 安装

安装参考官网:
https://classic.gazebosim.org/tutorials?tut=install_ubuntu&cat=install
Alternative installation: step-by-step

安装完成后,可以通过运行

make px4_sitl_default gazebo

检查是否成功安装,安装成功显示如下界面:
在这里插入图片描述在启动终端,通过命令可以控制无人机起飞、降落等。

pxh> commander takeoff
pxh> commander land

当然,要正常起飞需要打开地面站QGC,不然会被判定Arming denied! manual control lost,不能解锁。

三、protobuf安装

在这一步卡了很久,不能正常启动gazebo。最麻烦的是protobuf版本的冲突,导致异常。经过反复检查发现在环境ubuntu20.04/ros noetic/gazebo 11 需安装版本protobuf3.6.1。若系统之前已经安装过其它版本,可以通过命令卸载并删除相关文件。

sudo apt-get remove libprotobuf-dev
sudo rm /usr/local/bin/protoc  //执行文件
sudo rm -rf /usr/local/include/google //头文件
sudo rm -rf /usr/local/lib/libproto* //库文件
sudo rm -rf /usr/lib/protoc

安装protobuf3.6.1

git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
//查看并切换到版本3.6.1
git fetch origin 
git branch -a
git checkout -b protoc3.16 remotes/origin/3.16.x
//在protoc目录
./autogen.sh #如果下载的对应语言的包则不需要
./configure
make -j4
make install
sudo ldconfig
protoc --version # 查看版本号

四、mavros安装

sudo apt-get install ros-noetic-mavros
cd /opt/ros/noetic/lib/mavros
sudo ./install_geographiclib_datasets.sh

上述安装完成后,测试mavros是否连上
运行:

roslaunch px4 mavros_posix_sitl.launch

在另一个终端查看mavros是否通信正常

rostopic echo  /mavros/state 

很遗憾的是,mavros有时会莫名连接不上,可以通过以下方式进行查看。

在px4工作环境下,先完成编译

make px4_sitl_default 

配置gazebo相关环境,这一步很重要。

make px4_sitl_default gazebo 

在这里插入图片描述
连接gazebo master udp 地址127.0.0.1:11345;端口可以通过INFO [mavlink] 消息,可以看到端口为24540。
所以运行mavros后即可连上。

roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:11345"

目前实验,发现:
(1)roslaunch px4 mavros_posix_sitl.launch,将launch文件中mavros configs改成上述地址和端口即可连上。

<!-- MAVROS configs -->
<arg name="fcu_url" default="udp://:24540@localhost:11345"/>
<arg name="respawn_mavros" default="false"/>

(2)roslaunch px4 indoor1.launch,其中mavros configs配置文件为

<!-- MAVROS and vehicle configs -->
    <arg name="ID" value="0"/>
    <arg name="ID_in_group" value="0"/>
    <arg name="fcu_url" default="udp://:24540@localhost:34580"/>

在这里插入图片描述

运行indoor文件也可连上。
实测发现在这种情况下,只要端口24540正确,后面34580改其它数字也可以连上,目前还不清楚为什么。有清楚udp协议相关的可以留言讨论下。

参考

资料:

https://gitee.com/robin_shaun/XTDrone
https://www.yuque.com/xtdrone/manual_cn

解析

https://blog.csdn.net/weixin_44917390/category_10037523.html
https://www.zhihu.com/column/c_1450193617147654145
https://zhuanlan.zhihu.com/p/377419124

猜你喜欢

转载自blog.csdn.net/u010196944/article/details/132291879