tmsy 发表于 2022-11-2 12:07:36

APM学习笔记-基于ROS的-Gazebo仿真

什么是Gazebo仿真?

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

典型应用场景:

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

Gazebo的特点:

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



什么是ROS?

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

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

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



基于ROS的PX4&Ardupilot-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下的开源库,便捷地测试自己的代码。

有内涵才man 发表于 2022-11-2 12:18:56

图片中的地图怎么加载的

bellyoungsmile 发表于 2022-11-2 12:24:06

转发了

雪落黄河 发表于 2022-11-2 12:36:23

改完飞控代码,先仿真一下,happy

fsyg2003 发表于 2022-11-2 12:46:49

总结的不错
页: [1]
查看完整版本: APM学习笔记-基于ROS的-Gazebo仿真