关键词:机器人;ROS;仿真;人工智能;教诲;
作者简介:任江(1973—),男,硕士,正高等工程师,研究方向:数字化转型实践、企业架构咨询、信息安全、分布式打算、机器学习。;
0 弁言伴随着人工智能、机器人、无人驾驶等技能的发达发展,干系智能产品更多地涌如今我们的生产生活中。同步定位和智能导航作为这些运用的关键根本,在开拓和利用阶段如何更便捷、有效地进行定义、调试或者知足客户自定义需求成为主要命题。仿真技能已经成为不可或缺的工具,通过仿真,研究职员可以快速地验证和测试新的机器人掌握算法和导航策略,降落机器人实验的本钱和风险。随着打算机硬件的飞速发展,机器人仿真技能的运用范围也变得越来越广。该文根据事情实际,对一些特定场景下办理机器人导航智能设计的仿真方法进行了一些探索考试测验。
1 问题的提出做事型机器人,特殊是一些特种作业机器人,每每须要根据作业类型和地形特点,进行针对性的导航智能或策略设计,这有可能是开拓中行为,也可能是利用时的自定义场景。知足这类需求一样平常会面对以下几个问题:
(1)直不雅观有效的定义办法;准确还原业务逻辑。
(2)低本钱的上载和调试。
(3)最好可以知足非技能职员利用。
(4)通用性和可移植性。
2 办理问题的思路大多时候的地形场景和导航,可以大略抽象为在一个封闭空间的自主行为,或者说是一个迷宫的寻路问题,然后在迷宫的路径节点加以行为限定,如图1所示。
图1 行为场景示意图 下载原图
第一,我们在自主导航逻辑上采取了行为树技能来定义。
Behavior Tree,又称行为树,是一种构建在机器人、电子游戏虚拟实体等自主智能体中不同任务(假设某单个活动以指定的办法分解为可以重用的子活动,这些子活动称为任务,也称为动作或者掌握模式)中间切换的方法,是一种创建具有“模块化(Modular)和反应性(Reactive)繁芜系统的有效的办法”[1]。BT是一个有向的根树,根节点便是Root节点,作为行为树的入口,节点类型为Root,每个行为树有且只有一个Root类型节点;内部节点称为掌握流节点,叶节点称为实行节点,所有的叶子节点的类型一定是Action,同时Action类型的节点一定不能作为非叶子节点来利用。非叶子节点也称为组合节点(Composition),可以有一个或多个子节点,与之不同的是根节点(Root)只有一个子节点而没有父节点,别的节点都有一个父节点和子节点,详细构造如图2所示。
行为树由多种不同类型的节点组成,这些节点都会返回三种状态中的一种作为节点的运行结果。三种状态分别是成功状态、运行中状态和失落败状态。
行为树观点的涌现实际已经有很多年了,总的来说,便是利用不同的经典掌握节点与行为节点进行组合,从而实现繁芜的人工智能体。从图2可以看出,比较于有限状态机,行为树更加地靠近人类自然的理解,同时又能更随意马虎地定义繁芜的AI逻辑。
图2 行为树逻辑示意图 下载原图
行为树的核心思想是将机器人的决策和行动分解为多少个节点,每个节点卖力一个特定的任务。行为树中的节点分为行为节点和掌握节点两类。行为节点卖力实行详细的行为任务,比如移动、转向、探求目标等;掌握节点卖力掌握行为节点的实行顺序和条件,比如序列节点、选择节点、条件节点等[2]。
机器人自主导航中的行为树常日包含三个层次:高层次行为、中层次行为和低层次行为。高层次行为是指机器人须要完成的任务,比如到达目标点、避开障碍物等;中层次行为是指将高层次行为分解为多少个子任务,比如转向和移动等;低层次行为是指机器人实行详细的运动掌握命令,比如沿着一定的轨迹提高。
行为树的实行办法是自下而上的,即从低层次行为开始实行,然后向上实行中层次行为和高层次行为。在实行过程中,机器人会根据传感器得到的环境信息进行实时决策和调度。如果涌现某些非常情形,比如障碍物溘然涌现,机器人会根据掌握节点的逻辑相应地调度和反应。
第二,系统选用早期采取了比较盛行的ROS,现在在往ROS2迁移中,最大化地实现系统的通用性。考虑本钱成分,特殊引入了ROS的仿真系统Gazebo。Gazebo是一款当下业界较为主流的开源物理仿真环境,具备以下特点[3]:
(1)动力学仿真:Gazebo支持多种高性能物理引擎,包括Bullet、Sim Body、DART等。
(2)三维环境可视化:支持显示光芒、纹理、影子等三维环境。
(3)传感器仿真:支持传感器仿真,同时也支持传感器噪声的仿真。
(4)插件可扩展:利用者可自由定制开拓插件,通过插件扩展Gazebo的功能,知足用户的个性化需求。
(5)支持多种机器人模型:Gazebo官方供应对PR2、Pioneer2 DX、Turtle Bot等机器人模型的支持,同时用户也可以利用自己创建的机器人模型。
(6)支持TCP/IP传输:Gazebo可以通过网络通信实现远程仿真。
(7)云仿真:Gazebo可以在Amazon、Softlayer等云打算环境下运行,也可以在用户自行搭建的云做事器上运行。
(8)终端工具:用户可以利用Gazebo官方供应的命令行工具,从而通过终端命令行的形式,实现对仿真的自主掌握。
第三,从逻辑定义便捷化和客制化需求出发,我们采取了Scratch3.0作为低代码平台,终极实现了如下逻辑,如图3所示。选择Scratch,部分缘于我们之前面向机器人编程教诲项目的事情积累,但实践中创造它也是很方便的一个逻辑定义工具,其运用不但限于儿童编程,在国外也有大量的运用扩展案例。
图3 系统各模块逻辑关系图 下载原图
3 探索实践过程3.1 搭建ROS环境3.1.1 添加ROS软件源将以下命令输入到ubuntu终端中并实行:
sudo sh-c'./etc/lsb-release&echo"deb http://mirrors.ustc.edu.cn/ros/ubuntu/$DISTRIB_CODENAME main">/etc/apt/sources.list.d/ros-latest.list'
3.1.2 添加密钥将以下命令输入到ubuntu终端中并实行:
sudo apt-key adv--keyserver'hkp://keyserver.ubuntu.com:80'--recv-key C1CF6E31E6BADE8868B172
3.1.3 更新软件源将以下命令复制到ubuntu的终端实行:
sudo apt update
3.1.4 配置及改换最佳软件源选择得当的软件源会在很大程度长进步下载速率
sudo apt-key adv--keyserver keyserver.ubuntu.com--recv-keys F42ED6FBAB17C654
3.1.5 实行安装将以下命令复制到ubuntu的终端实行:
sudo apt install ros-noetic-desktop-full
3.1.6 配置ROS环境到系统要先初始化rosdep(rosdep让你能够轻松地安装被想要编译的源代码,或被某些ROS核心组件须要的系统依赖),在终端依次输入下面指令。
sudo rosdep init
rosdep update
然后初始化环境变量:
echo"source/opt/ros/kinetic/setup.bash">>~/.bashrc
source~/.bashrc
3.2 安装GazeboGazebo是一款开源的三维物理仿真平台,其具备完善的编程接口、便捷的图形接口、强大的物理引擎与高质量的图形渲染功能。只管Gazebo中利用的机器人模型与Rviz中利用的模型相同,但仍需利用者在模型中添加机器人和环境的物理属性,如质量、摩擦系数、弹性系数等,也可通过插件的形式将机器人的传感器信息加入仿真环境中,从而实现以可视化的办法进行显示。
3.2.1 Gazebo安装sudo apt-get install ros-noetic-gazebo-ros-pkgs rosnoetic-gazebo-ros-control
3.2.2 Gazebo界面输入以下指令打开gazebo:
roscore
rosrun gazebo_ros gazebo
3.2.3 验证为了验证Gazebo是否与ROS系统成功连接,可以查看ROS的话题列表,如果连接成功,可以看到Gazebo发布/订阅的话题列表。
3.3 搭建Scratch3.0二次开拓环境Scratch是麻省理工学院团队开拓的图形化编程工具,利用者可以不认识英文单词,也可以不会利用键盘。其构成程序的命令和参数是积木形状的模块,不用书写代码语句,只需按照一定的逻辑用鼠标拖动模块把它们拼在一起就可以。其他编程措辞,例如:Python,java,C等。
3.3.1 Scratch3.0下载项目项目基于js ES6语法、react框架实现Scratch3.0需安装Node环境验证node npm命令能正常利用
扩展积木块利用到Scratch-gui和Scratch-vm两个项目
https://github.com/Affonso-Gui/scratch3-ros
https://github.com/Affonso-Gui/scratch3-ros-vm
3.3.2 安装运行实行以下命令运行gui项目
cd scratch-gui-develop
npm install
npm start
访问地址locolhost:8601查看项目
3.3.3 扩展积木块流程(1)运行vm项目。cd scratch-vm-develop
npm link(根据需求,无依赖建议直接实行npm link)
npm run watch(运行备gui利用)
(2)运行gui项目。新建命令行窗口
cd scratch-gui-develop
npm link scratch-vm(依赖vm虚拟机内容)
npm start(运行项目)
(3)扩展积木块vm项目配置。在vm项目scratchvm-develop/src/extensions路径下新建扩展文件夹、文件夹下新建index.js
(4)在左下角添加扩展中选择ROS Extension,并输入localhost的IP。(127.0.0.1或192.168.x.x)。
(5)选择ROS,在Scratch3.0中选择ROS扩展积木,如图4所示。
图4 在Scratch3.0扩展积木块中选取ROS的操作界面 下载原图
3.4构建行为树模型Behavior Tree.CPP是一个开源的C++行为树库。在游戏领域,行为树已经比较盛行了,紧张用于掩护游戏角色的各种动作和状态,但在机器人领域还很少利用的。Navigation2中引入了行为树来组织机器人的事情流程和动作实行。
行为树是树状的构造,它的逻辑流程是由XML文件描述的。我们该次一个重点事情便是通过Scratch3.0可视化天生行为树定义。行为树本身并不详细实现机器人的实行内容,它只卖力将实行内容进行编排。以Navigation2为例,详细的实行内容实现是放在各个server中的。行为树上的节点与server进行通信,要求详细的实行内容,然后得到反馈,根据反馈结果又可以要求其余的实行内容。这些不同实行内容间的跳转便是由行为树掌握的。
4 结论行为树作为一种主要的机器人自主导航框架,在未来的研究中也有着广阔的运用前景。随着人工智能体技能的不断发展,行为树可以结合深度学习、强化学习等技能,进一步提高机器人自主决策和行动的能力。同时,行为树还可以运用于多机器人协同和分布式掌握等领域,为机器人运用带来更多的可能性。在机器人仿真和行为树运用方面,未来的研究还须要办理一些寻衅和问题。比如,在仿真中如何更加准确地仿照真实环境和传感器数据,如何设计更加繁芜和灵巧的行为树构造,提高机器人的自主决策和行动能力,如何在多机器人系统中进行协同和互助,实现更高效和稳定的掌握等[4]。这些问题的办理须要研究职员从不同的角度进行探索和考试测验,不断推动机器人技能的发展。
该方法目标是建立机器人自主智能导航方案的便捷可视化方法,乃至能集成到客户环境当中,基于以前基于游戏项目对行为树运用履历和教诲项目的积累,选择的一条相对随意马虎实现的路径。目前还在进一步从ROS1往ROS2迁移,由于通讯协议部分有较大的改变,只完成了初步原型论证。该研究旨在抛砖引玉,希望得到更多探索启示。
参考文献[1] Cao,Y.&Y.Yue.,K.Li.,H.Zhang..An Overview of Recent Progress in the Study of Behavior Trees for Robotics[J].IEEE Transactions on Intelligent Transportation Systems,2015(5):2393-2403.
[2] Colas,F.&R.Siegwart..Simulating and Evaluating the Behavior of Autonomous Robots Using Behavior Trees[J].Robotics and Autonomous Systems,2017,88:141-152.
[3] Milliez,G.&L.Fabresse.,T.Raimbault..BTRobots:A Behavior Tree-based framework for Simulating Robot teams[J].Journal of Intelligent&Robotic Systems,2017(1):1-18.
[4] A,Silva.&Santos.A.,Lau.N..Behavior Trees for Decision Making in Autonomous Agents[J]:A survey.Journal of Autonomous Agents and Multi-Agent Systems,2018(3):357-408.
声明:我们尊重原创,也看重分享。有部分内容来自互联网,版权归原作者所有,仅供学习参考之用,禁止用于商业用场,如无意中陵犯了哪个媒体、公司、企业或个人等的知识产权,请联系删除(邮箱:glyhzx@126.com),另本头条号推送内容仅代表作者不雅观点,与头条号运营方无关,内容真伪请读者自行鉴别,本头条号不承担当何任务。