草庐IT

多智能体系统集群协同控制实验平台详解与典型案例

您家豆子 2023-03-28 原文

为了应对实际环境中复杂的场景,多个智能体协作研究成为了必经之路。但当系统规模较大时,集中制方法不足以满足要求。基于自组织系统控制的多智能体集群研究具备完成复杂任务的能力。

机器人实验是智能体集群研究必要手段

进行智能体集群研究时,通过不同设计方法建立的机器人系统能否实现预期的行为是衡量该系统性能的依据,主要通过三种方法进行验证:动力学模型、计算机仿真及机器人实验。

动力学模型通过随机过程及动力学方法等理论工具对系统收敛性进行验证,相较于其他方法的抽象层次更高,但是需要预设很多前提,但是在实际智能体集群过程中存在噪声等随机条件,无法实现相对统一的模型。

计算机仿真利用计算机对环境与智能体、智能体个体间的相互作用进行模拟,验证系统的性能并进行优化。该方法可以完成大规模的机器人系统验证,提高系统验证效率,但是真实环境中的通信噪声、地面摩擦、智能体间的碰撞都可能对个体产生影响,进而影响群体行为,仿真并不能完全复现真实场景。

大部分机器人实验在实验室的可控环境下进行,光照强度、地面摩擦系数等条件可由研究人员定量控制,而且实验中的环境噪声、智能体间的碰撞及通信干扰等实际存在,因此机器人实验是验证机器人系统可行性及鲁棒性的必要手段。

动作捕捉系统解决智能体集群实验系统多个痛点

智能体集群实验系统实现,需要满足在室内同时定位多个智能体,且由于室内空间小,要求定位精度高。
由于室内信号弱,利用GPS无法实现室内定位。目前的室内定位方案包括激光SLAM、视觉SLAM、光流及UWB等。上述所有定位方式需要优先被解决的问题在于定位精度低(其中定位精度最高的UWB为厘米级),此外还存在如视觉定位方式占用过多计算资源,UWB功率需要低于一定门限(以避免干扰其他通讯设备)等,对于空间不开阔、智能体密度高的室内实验环境有较大局限性。
利用动作捕捉系统作为多智能体室内定位方案有效解决上述问题。
NOKOV度量动作捕捉系统作为一种外部设备,利用布置在场地四周的光学动作捕捉镜头拍摄固定在各智能体上的反光标志点,通过计算出标志点的三维空间坐标,确定智能体的位置(利用同一智能体上多点还可以获取姿态信息),定位精度可以达到亚毫米级。由于动作捕捉系统自身计算出位置信息,并不占用智能体的计算资源。且动捕系统为外置设备,可以减轻无人机负载。NOKOV度量动作捕捉系统可以同时定位40个以上的智能体,且采样频率高达380Hz、延迟约为4ms,满足无人机等快速响应的需求。

多智能体集群协同控制实验平台

下面介绍几种基于光学动作捕捉的多智能体集群实验平台。

1.Crazyswarm多无人机集群编队实验平台

Crazyswarm多无人机集群编队实验平台是基于ROS开发的可快速实验多种无人机单机飞行任务和无人机集群控制算法开发验证的实验平台(使用Crazyflie无人机)。平台针对无人机集群研究人员以下痛点进行开发:室内多台无人机、单体体积小、定位精度高、软件开源等。此平台提供了整套无人集群控制开发、调试及飞行验证软硬件环境,用户无需具备太多的底层编程技术即可完成算法的优化和验证,适用于教学和二次开发。

设备名称 型号
NOKOV度量动作捕捉系统 Mars系列
Crazyflie无人机若干 Crazyflie2.1
无线收发模块 Crazyradio PA
电脑主机 Windows系统,虚拟机运行ubuntu系统

Crazyswarm提出的是目前最大规模的室内无人机集群系统架构。系统利用机载处理器计算,增加通信鲁棒性,且需要更少的通信带宽。

由于动作捕捉系统利用无人机上标志点的不同排布识别各单体,当进行大规模无人机集群时,无人机上没有足够空间设计出完全不同的标志点排布方式。为了解决以上问题,Crazyswarm提出利用运动捕捉系统中的原始点云的方法定位无人机,此方法需要满足两个条件:
(1)必须知道各无人机的初始位置,才能在ID和物理位置之间建立映射。
(2)跟踪必须是逐帧完成的,如果标记在长时间内被遮挡,该算法可能无法重新建立ID-位置映射。

利用Crazyswarm进行实验的研究方向包括姿态估计、轨迹规划、编队控制、机器学习、分布式优化、编队表演等。电子科技大学基于Crazyswarm平台,搭载12个NOKOV度量光学动作捕捉镜头,进行无人机编队研究。

2.Robotarium机器人平台

Robotarium提供了一个可以远程访问的集群机器人研究平台,研究人员可以将其算法上传并在真实的机器人上验证,而不是单纯的仿真模拟。Robotarium平台可以同时运行数十至数百个机器人,自从平台开放以来,已完成了1000多次实验。

Robotarium平台中,八个运动捕捉镜头安装在测试平台的外围上方,用来跟踪每个机器人的运动,并进行数据采集和控制。 每个机器人上固定独特排布方式的反光标记点,用来区分个体。由于动作捕捉系统捕捉范围更大,定位精度可以达到亚毫米级而且采样频率高,Robotarium平台选用动捕系统代替了视觉相机跟踪系统。从硬件安全的角度考虑,动作捕捉系统的速度、准确性(accuracy)和精密度(precision)使Robotarium平台能够在执行未知实验期间检测出潜在的危险情况,并进行自动纠正。

利用Robotarium平台实验的进行研究方向包括编队控制、路径规划、生物启发的集群控制、避碰等。

3.中科院自动化所智能集群平台

智能无人集群系统是中科院自动化所飞行器智能技术团队及中科院自动化所泰州智能制造研究院团队联合研发的针对单体智能和群体智能的一套演示验证系统。该无人集群系统可实现单体无人车和无人机控制、地空协同、集群对战以及无人车、无人机编队表演等功能,同时具有高度开放的 SDK,能够实时将无人车、无人机的位置、速度等状态回传给指挥系统,可用于青少年科普、教育培训、高校或科研院所的深度二次开发、以及区域物流、军民融合等行业应用领域。另外,团队拥有室内高精度NOKOV度量动作捕捉系统,可在密集区域内实时对上百个目标进行捕捉跟踪。

无人集群系统依靠感知与通信系统获取外界环境信息和其他平台的协助信息,感知系统中拥有较多的感知模块,包括 IMU 模块、遥控接收模块、无线通信模块等,这些模块接口具有普适性,能够根据不同的任务要求和性能,做出相应的替换和迁移。

对于精度要求高的情况,平台部署了NOKOV度量光学三维动作捕捉系统,以提供精确的位姿信息。

有关多智能体系统集群协同控制实验平台详解与典型案例的更多相关文章

  1. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  2. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  3. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  4. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  5. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  6. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  7. C51单片机——实现用独立按键控制LED亮灭(调用函数篇) - 2

    说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时

  8. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  9. ruby-on-rails - 在 Rails 控制台中使用 asset_path - 2

    在我的Character模型中,我添加了:字符.rbbefore_savedoself.profile_picture_url=asset_path('icon.png')end但是,对于数据库中已存在的所有角色,它们的profile_picture_url为nil。因此,我想进入控制台并遍历所有这些并进行设置。在我试过的控制台中:Character.find_eachdo|c|c.profile_picture_url=asset_path('icon.png')end但这给出了错误:NoMethodError:undefinedmethod`asset_path'formain:O

  10. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

    因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

随机推荐