188

阿木币

3

精华

71 小时

在线时间

技术大V

Rank: 4

发表于 2019-6-23 17:58:10 7610 浏览 1 回复

[入门教程] 基于ROS的PX4-Gazebo仿真

基于ROS的PX4-Gazebo仿真

什么是PX4?

PX4是一款用于无人机及其他无人系统的开源飞行控制软件。该项目为无人机开发人员提供了一套灵活的工具,可以共享技术,为无人机应用创建量身定制的解决方案。 PX4提供了一个标准来提供无人机硬件支持和软件开发,允许广大开发者在PX4开发生态中以可扩展的方式构建和维护相关硬件和软件。

PX4开源项目从苏黎世联邦理工学院的PIXHAWK项目发展而来,PIXHAWK是专门为基于计算机视觉设计的飞行控制研究平台。该项目目前拥有300多名全球贡献者,并被一些世界上最具创新性的公司用于各种无人机行业应用。围绕开源自动驾驶硬件Pixhawk和飞行栈PX4的开源社区是当今无人机领域最大的行业支持开发社区。

PX4是一个由Linux基金会管理的非盈利组织Dronecode的一部分,旨在促进在飞行器上使用开源软件。 同时,Dronecode还托管QGroundControl,MAVLink和Dronecode SDK。

相关网站: Dronecode官网 PX4-Github仓库

什么是ROS?

ROS(Robot Operating System,机器人操作系统)是一个机器人软件平台,是一种用于编写机器人软件的灵活框架系统。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目。在2008年,主要由Willow Garage公司继续该项目的研发。2013年之后,由开源机器人基金会(Open Source Robotics Fundation)接管,并陆续推出了ROS的长期稳定支持版本Indigo、Kinetic、Melodic。

ROS你可以这样理解他的功能:一个通信机制、一系列与机器人开发相关的开发工具及功能库以及一个强大的开源生态系统,旨在简化在各种机器人平台上创建复杂而强大的机器人行为的任务。

为什么使用ROS?因为创建真正强大的通用机器人软件很难。从机器人的角度来看,对于人类而言似乎微不足道的问题通常在任务和环境的实例之间变化很大。处理这些变化非常困难,没有任何一个人,实验室或机构可以单独靠自己做到这一点。例如,一个实验室可能拥有绘制室内环境的专家,并可以贡献一个世界级的系统来制作地图。另一组可能有专家使用地图进行导航,而另一组可能已经发现了一种计算机视觉方法,可以很好地识别杂乱的小物体。 ROS是专为像这样的团体设计的,可以在彼此的工作中进行协作和构建。

相关网站: ROS官网 OSRF官网

什么是Gazebo仿真?

Gazebo是一款功能强大的三维物理仿真平台,能够在复杂的室内和室外环境中准确有效地模拟众多机器人。 与游戏引擎类似,Gazebo提供更高保真度的物理模拟,一套传感器,以及用户和程序的接口。与ROS一样,Gazebo也是托管于开源机器人基金会。

典型应用场景

  • 测试机器人算法(导航、规划、控制、视觉等任何算法)
  • 机器人设计
  • 现实场景下的回溯设计

Gazebo的特点

  • 丰富的物理引擎
  • 丰富的机器人模型和环境库
  • 多种多样的传感器选择
  • 便捷的程序化设计和图形界面
  • 免费开源

相关网站: Gazebo官网

什么是基于ROS的PX4-Gazebo仿真?

PX4是一个功能丰富的开源飞控,它所提供的不仅仅只是飞控代码,另外一个重要的工具就是飞行仿真。PX4提供的软件在环仿真工具一共是有jMAVSimGazeboAirSim这三种。jMAVSim是一个轻量级的仿真器,目前只支持四旋翼仿真。AirSim我不太清楚,没有使用过,这里就不评价了。Gazebo是我们今天的主角,支持旋翼、固定翼、倾转、小车等,是所有仿真器里支持平台最多的,也能支持多个无人机的仿真,对于这几个仿真器,PX4官方是这么评价Gazebo仿真的:This simulator is highly recommended.

基于ROS的PX4-Gazebo仿真有什么用?

Gazebo仿真是PX4提供众多仿真工具中的一个。它在PX4代码中(Firmware/Tools/ sitl_gazebo)也是一个单独出来的仓库。基于ROS的PX4-Gazebo仿真功能实在是太强大,毕竟它是多个开源项目的组合体,所有和ROS、PX4、Gazebo相关的功能都能在这里面得以应用。

按照我自己的理解,下面我尝试着去罗列一下它的用途:

1、控制算法验证。其实无论你是任何算法(导航、控制等等等),无论你的算法是编写于飞控中,还是机载电脑中,还是地面站中,它统统提供有接口与通信机制,让你能够在Gazebo环境中测试你的算法。举一个我自己的例子:最近我在做一个抗干扰的无人机控制算法,我在PX4中修改了姿态环控制,并在机载电脑中修改了位置环控制律。没有这个仿真器,我只能通过实验来测试算法并调试参数,那样危险系数极高,有的时候不光算法的问题,也可能是代码编写的问题。使用Gazebo仿真,我可以在仿真环境中测试控制算法,实时调参,发送不同的控制指令,还能够通过QGC地面站将飞行log记录下来。 2、视觉算法测试。借助于Gazebo强大的功能,你可以在仿真环境中添加摄像头、激光雷达等各种传感器,通过仿真器搭建贴近真实世界的仿真环境,测试相关检测、识别等视觉算法的功能。一般来讲,纯视觉测试拿着摄像头在真实世界里跑一跑会更实用以些。但是是在视觉及控制联合调试的时候,你需要检测你各个部件之间是否能够正确的同时工作。举个简答的例子,比如负责视觉的工程师给出了目标位置,负责控制的工程师编写了位置控制器,虽然他们都对自己的分系统很有信心,但如果在两个系统通信的话题上方向定义有区别,那也是灾难性的。Gazebo仿真能够帮你在真实系统联调之前解决大部分代码层面的逻辑问题。 3、无人机开发设计。借助于Gazebo强大的能力,你可以在Gazebo中导入你自己设计的飞机的模型(比如:外观、构型、重量等物理参数),PX4官方给出了一些常见飞机的模型,默认的就是3DR公司的iris无人机,如果想在仿真环境中取得更好更贴近实际的结果,自然需要修改至与自己真实测试飞机相近的参数。同时,为了更贴近真实飞行环境,你还能修改GPS、IMU等传感器的噪声设置,甚至还可以加入气动参数。 4、无人机集群测试。PX4同样提供了简单的多无人机测试demo。可以在同一个仿真环境中添加多个无人机,在仿真平台中,无需考虑实际通信问题(当然你也可以设计通信模块,来模拟真实的通信效果),实现集中式控制(一控多),或者分布式控制(无中心)的多无人机路径规划、协同控制等算法。

简而言之,对于PX4的开发者(底层飞控开发,包括导航、控制),可以利用这个工具对二次开发的PX4代码进行测试。对于无人机应用的开发者(上层应用开发,包括视觉、SLAM、上层策略等),轻松借助ROS及Gazebo下的开源库,便捷地测试自己的代码。

多机仿真截图 enter image description here

关于作者

阿木实验室科研无人机技术负责人、Mavros培训课程主讲老师、北理工博士

对任何与四旋翼无人机有关的话题感兴趣,欢迎交流。

个人微信号:qyp0210 来源: 基于ROS的PX4-Gazebo仿真


扫一扫浏览分享
回复

使用道具 举报

342

阿木币

0

精华

89 小时

在线时间

职场新人

Rank: 3Rank: 3

发表于 2021-5-31 11:24:23
顶!顶!顶!顶!顶!顶!
回复 点赞

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表