日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

一種面向機(jī)器人自主智能導(dǎo)航低代碼設(shè)計(jì)與仿真的實(shí)現(xiàn)方法(機(jī)器人導(dǎo)航方案)

任江 阮志成 淡雅靜

中電長城網(wǎng)際系統(tǒng)應(yīng)用有限公司

摘 要:文章主要探討了在機(jī)器人應(yīng)用行為樹自主導(dǎo)航技術(shù)時(shí)如何設(shè)置連接仿真環(huán)境,并采用可視化編程技術(shù)以便于調(diào)試。文章介紹了所使用的各項(xiàng)技術(shù)的背景和意義,從技術(shù)特點(diǎn)、應(yīng)用場(chǎng)景、實(shí)現(xiàn)原理等不同角度探討了選擇技術(shù)的優(yōu)勢(shì)和局限性,提出了改進(jìn)和優(yōu)化方案,討論了這些方案的可行性和局限性,并對(duì)這些技術(shù)進(jìn)行總結(jié)性分析和討論,并提出了展望和建議。

關(guān)鍵詞:機(jī)器人;ROS;仿真;人工智能;教育;

作者簡介:任江(1973—),男,碩士,正高級(jí)工程師,研究方向:數(shù)字化轉(zhuǎn)型實(shí)踐、企業(yè)架構(gòu)咨詢、信息安全、分布式計(jì)算、機(jī)器學(xué)習(xí)。;

0 引言

伴隨著人工智能、機(jī)器人、無人駕駛等技術(shù)的蓬勃發(fā)展,相關(guān)智能產(chǎn)品更多地出現(xiàn)在我們的生產(chǎn)生活中。同步定位和智能導(dǎo)航作為這些應(yīng)用的關(guān)鍵基礎(chǔ),在開發(fā)和使用階段如何更便捷、有效地進(jìn)行定義、調(diào)試或者滿足客戶自定義需求成為重要命題。仿真技術(shù)已經(jīng)成為不可或缺的工具,通過仿真,研究人員可以快速地驗(yàn)證和測(cè)試新的機(jī)器人控制算法和導(dǎo)航策略,降低機(jī)器人實(shí)驗(yàn)的成本和風(fēng)險(xiǎn)。隨著計(jì)算機(jī)硬件的飛速發(fā)展,機(jī)器人仿真技術(shù)的應(yīng)用范圍也變得越來越廣。該文根據(jù)工作實(shí)際,對(duì)一些特定場(chǎng)景下解決機(jī)器人導(dǎo)航智能設(shè)計(jì)的仿真方法進(jìn)行了一些探索嘗試。

1 問題的提出

服務(wù)型機(jī)器人,特別是一些特種作業(yè)機(jī)器人,往往需要根據(jù)作業(yè)類型和地形特點(diǎn),進(jìn)行針對(duì)性的導(dǎo)航智能或策略設(shè)計(jì),這有可能是開發(fā)中行為,也可能是使用時(shí)的自定義場(chǎng)景。滿足這類需求一般會(huì)面對(duì)以下幾個(gè)問題:

(1)直觀有效的定義方式;準(zhǔn)確還原業(yè)務(wù)邏輯。

(2)低成本的上載和調(diào)試。

(3)最好可以滿足非技術(shù)人員使用。

(4)通用性和可移植性。

2 解決問題的思路

大多時(shí)候的地形場(chǎng)景和導(dǎo)航,可以簡單抽象為在一個(gè)封閉空間的自主行為,或者說是一個(gè)迷宮的尋路問題,然后在迷宮的路徑節(jié)點(diǎn)加以行為限制,如圖1所示。

一種面向機(jī)器人自主智能導(dǎo)航低代碼設(shè)計(jì)與仿真的實(shí)現(xiàn)方法(機(jī)器人導(dǎo)航方案)

圖1 行為場(chǎng)景示意圖 下載原圖

第一,我們?cè)谧灾鲗?dǎo)航邏輯上采用了行為樹技術(shù)來定義。

Behavior Tree,又稱行為樹,是一種構(gòu)建在機(jī)器人、電子游戲虛擬實(shí)體等自主智能體中不同任務(wù)(假設(shè)某單個(gè)活動(dòng)以指定的方式分解為可以重用的子活動(dòng),這些子活動(dòng)稱為任務(wù),也稱為動(dòng)作或者控制模式)中間切換的方法,是一種創(chuàng)建具有“模塊化(Modular)和反應(yīng)性(reactive)復(fù)雜系統(tǒng)的有效的方式”[1]。BT是一個(gè)有向的根樹,根節(jié)點(diǎn)就是Root節(jié)點(diǎn),作為行為樹的入口,節(jié)點(diǎn)類型為Root,每個(gè)行為樹有且只有一個(gè)Root類型節(jié)點(diǎn);內(nèi)部節(jié)點(diǎn)稱為控制流節(jié)點(diǎn),葉節(jié)點(diǎn)稱為執(zhí)行節(jié)點(diǎn),所有的葉子節(jié)點(diǎn)的類型一定是Action,同時(shí)Action類型的節(jié)點(diǎn)一定不能作為非葉子節(jié)點(diǎn)來使用。非葉子節(jié)點(diǎn)也稱為組合節(jié)點(diǎn)(Composition),可以有一個(gè)或多個(gè)子節(jié)點(diǎn),與之不同的是根節(jié)點(diǎn)(Root)只有一個(gè)子節(jié)點(diǎn)而沒有父節(jié)點(diǎn),其余節(jié)點(diǎn)都有一個(gè)父節(jié)點(diǎn)和子節(jié)點(diǎn),具體結(jié)構(gòu)如圖2所示。

行為樹由多種不同類型的節(jié)點(diǎn)組成,這些節(jié)點(diǎn)都會(huì)返回三種狀態(tài)中的一種作為節(jié)點(diǎn)的運(yùn)行結(jié)果。三種狀態(tài)分別是成功狀態(tài)、運(yùn)行中狀態(tài)和失敗狀態(tài)。

行為樹概念的出現(xiàn)實(shí)際已經(jīng)有很多年了,總的來說,就是使用不同的經(jīng)典控制節(jié)點(diǎn)與行為節(jié)點(diǎn)進(jìn)行組合,從而實(shí)現(xiàn)復(fù)雜的人工智能體。從圖2可以看出,相比于有限狀態(tài)機(jī),行為樹更加地接近人類自然的理解,同時(shí)又能更容易地定義復(fù)雜的AI邏輯。

一種面向機(jī)器人自主智能導(dǎo)航低代碼設(shè)計(jì)與仿真的實(shí)現(xiàn)方法(機(jī)器人導(dǎo)航方案)

圖2 行為樹邏輯示意圖 下載原圖

行為樹的核心思想是將機(jī)器人的決策和行動(dòng)分解為若干個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)負(fù)責(zé)一個(gè)特定的任務(wù)。行為樹中的節(jié)點(diǎn)分為行為節(jié)點(diǎn)和控制節(jié)點(diǎn)兩類。行為節(jié)點(diǎn)負(fù)責(zé)執(zhí)行具體的行為任務(wù),比如移動(dòng)、轉(zhuǎn)向、尋找目標(biāo)等;控制節(jié)點(diǎn)負(fù)責(zé)控制行為節(jié)點(diǎn)的執(zhí)行順序和條件,比如序列節(jié)點(diǎn)、選擇節(jié)點(diǎn)、條件節(jié)點(diǎn)等[2]。

機(jī)器人自主導(dǎo)航中的行為樹通常包含三個(gè)層次:高層次行為、中層次行為和低層次行為。高層次行為是指機(jī)器人需要完成的任務(wù),比如到達(dá)目標(biāo)點(diǎn)、避開障礙物等;中層次行為是指將高層次行為分解為若干個(gè)子任務(wù),比如轉(zhuǎn)向和移動(dòng)等;低層次行為是指機(jī)器人執(zhí)行具體的運(yùn)動(dòng)控制命令,比如沿著一定的軌跡前進(jìn)。

行為樹的執(zhí)行方式是自下而上的,即從低層次行為開始執(zhí)行,然后向上執(zhí)行中層次行為和高層次行為。在執(zhí)行過程中,機(jī)器人會(huì)根據(jù)傳感器獲得的環(huán)境信息進(jìn)行實(shí)時(shí)決策和調(diào)整。如果出現(xiàn)某些異常情況,比如障礙物突然出現(xiàn),機(jī)器人會(huì)根據(jù)控制節(jié)點(diǎn)的邏輯相應(yīng)地調(diào)整和反應(yīng)。

第二,系統(tǒng)選用早期采用了比較流行的ROS,現(xiàn)在在往ROS2遷移中,最大化地實(shí)現(xiàn)系統(tǒng)的通用性。考慮成本因素,特別引入了ROS的仿真系統(tǒng)Gazebo。Gazebo是一款當(dāng)下業(yè)界較為主流的開源物理仿真環(huán)境,具備以下特點(diǎn)[3]:

(1)動(dòng)力學(xué)仿真:Gazebo支持多種高性能物理引擎,包括Bullet、Sim Body、DART等。

(2)三維環(huán)境可視化:支持顯示光線、紋理、影子等三維環(huán)境。

(3)傳感器仿真:支持傳感器仿真,同時(shí)也支持傳感器噪聲的仿真。

(4)插件可擴(kuò)展:使用者可自由定制開發(fā)插件,通過插件擴(kuò)展Gazebo的功能,滿足用戶的個(gè)性化需求。

(5)支持多種機(jī)器人模型:Gazebo官方提供對(duì)PR2、Pioneer2 DX、Turtle Bot等機(jī)器人模型的支持,同時(shí)用戶也可以使用自己創(chuàng)建的機(jī)器人模型。

(6)支持TCP/IP傳輸:Gazebo可以通過網(wǎng)絡(luò)通信實(shí)現(xiàn)遠(yuǎn)程仿真。

(7)云仿真:Gazebo可以在Amazon、Softlayer等云計(jì)算環(huán)境下運(yùn)行,也可以在用戶自行搭建的云服務(wù)器上運(yùn)行。

(8)終端工具:用戶可以使用Gazebo官方提供的命令行工具,從而通過終端命令行的形式,實(shí)現(xiàn)對(duì)仿真的自主控制。

第三,從邏輯定義便捷化和客制化需求出發(fā),我們采用了Scratch3.0作為低代碼平臺(tái),最終實(shí)現(xiàn)了如下邏輯,如圖3所示。選擇Scratch,部分緣于我們之前面向機(jī)器人編程教育項(xiàng)目的工作積累,但實(shí)踐中發(fā)現(xiàn)它也是很方便的一個(gè)邏輯定義工具,其應(yīng)用不只限于兒童編程,在國外也有大量的應(yīng)用擴(kuò)展案例。

一種面向機(jī)器人自主智能導(dǎo)航低代碼設(shè)計(jì)與仿真的實(shí)現(xiàn)方法(機(jī)器人導(dǎo)航方案)

圖3 系統(tǒng)各模塊邏輯關(guān)系圖 下載原圖

3 探索實(shí)踐過程

3.1 搭建ROS環(huán)境

3.1.1 添加ROS軟件源

將以下命令輸入到ubuntu終端中并執(zhí)行:

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終端中并執(zhí)行:

sudo apt-key adv–keyserver'hkp://keyserver.ubuntu.com:80'–recv-key C1CF6E31E6BADE8868B172

3.1.3 更新軟件源

將以下命令復(fù)制到ubuntu的終端執(zhí)行:

sudo apt update

3.1.4 配置及更換最佳軟件源

選擇合適的軟件源會(huì)在很大程度上提高下載速度

sudo apt-key adv–keyserver keyserver.ubuntu.com–recv-keys F42ED6FBAB17C654

3.1.5 執(zhí)行安裝

將以下命令復(fù)制到ubuntu的終端執(zhí)行:

sudo apt install ros-noetic-desktop-full

3.1.6 配置ROS環(huán)境到系統(tǒng)

要先初始化rosdep(rosdep讓你能夠輕松地安裝被想要編譯的源代碼,或被某些ROS核心組件需要的系統(tǒng)依賴),在終端依次輸入下面指令。

sudo rosdep init

rosdep update

然后初始化環(huán)境變量

echo"source/opt/ros/kinetic/setup.bash">>~/.bashrc

source~/.bashrc

3.2 安裝Gazebo

Gazebo是一款開源的三維物理仿真平臺(tái),其具備完善的編程接口、便捷的圖形接口、強(qiáng)大的物理引擎與高質(zhì)量的圖形渲染功能。盡管Gazebo中使用的機(jī)器人模型與Rviz中使用的模型相同,但仍需使用者在模型中添加機(jī)器人和環(huán)境的物理屬性,如質(zhì)量、摩擦系數(shù)、彈性系數(shù)等,也可通過插件的形式將機(jī)器人的傳感器信息加入仿真環(huán)境中,從而實(shí)現(xiàn)以可視化的方式進(jìn)行顯示。

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 驗(yàn)證

為了驗(yàn)證Gazebo是否與ROS系統(tǒng)成功連接,可以查看ROS的話題列表,如果連接成功,可以看到Gazebo發(fā)布/訂閱的話題列表。

3.3 搭建Scratch3.0二次開發(fā)環(huán)境

Scratch是麻省理工學(xué)院團(tuán)隊(duì)開發(fā)的圖形化編程工具,使用者可以不認(rèn)識(shí)英文單詞,也可以不會(huì)使用鍵盤。其構(gòu)成程序的命令和參數(shù)是積木形狀的模塊,不用書寫代碼語句,只需按照一定的邏輯用鼠標(biāo)拖動(dòng)模塊把它們拼在一起就可以。其他編程語言,例如:Python,java,C等。

3.3.1 Scratch3.0下載項(xiàng)目

項(xiàng)目基于js ES6語法、react框架實(shí)現(xiàn)Scratch3.0需安裝Node環(huán)境驗(yàn)證node npm命令能正常使用

擴(kuò)展積木塊使用到scratch-gui和Scratch-vm兩個(gè)項(xiàng)目

https://github.com/Affonso-Gui/scratch3-ros

https://github.com/Affonso-Gui/scratch3-ros-vm

3.3.2 安裝運(yùn)行

執(zhí)行以下命令運(yùn)行g(shù)ui項(xiàng)目

cd scratch-gui-develop

npm install

npm start

訪問地址locolhost:8601查看項(xiàng)目

3.3.3 擴(kuò)展積木塊流程

(1)運(yùn)行vm項(xiàng)目。cd scratch-vm-develop

npm link(根據(jù)需求,無依賴建議直接執(zhí)行npm link)

npm run watch(運(yùn)行備gui使用)

(2)運(yùn)行g(shù)ui項(xiàng)目。新建命令行窗口

cd scratch-gui-develop

npm link scratch-vm(依賴vm虛擬機(jī)內(nèi)容)

npm start(運(yùn)行項(xiàng)目)

(3)擴(kuò)展積木塊vm項(xiàng)目配置。在vm項(xiàng)目scratchvm-develop/src/extensions路徑下新建擴(kuò)展文件夾、文件夾下新建index.js

(4)在左下角添加擴(kuò)展中選擇ROS Extension,并輸入localhost的IP。(127.0.0.1或192.168.x.x)。

(5)選擇ROS,在Scratch3.0中選擇ROS擴(kuò)展積木,如圖4所示。

一種面向機(jī)器人自主智能導(dǎo)航低代碼設(shè)計(jì)與仿真的實(shí)現(xiàn)方法(機(jī)器人導(dǎo)航方案)

圖4 在Scratch3.0擴(kuò)張積木塊中選取ROS的操作界面 下載原圖

3.4構(gòu)建行為樹模型

Behavior Tree.CPP是一個(gè)開源的C 行為樹庫。在游戲領(lǐng)域,行為樹已經(jīng)比較流行了,主要用于維護(hù)游戲角色的各種動(dòng)作和狀態(tài),但在機(jī)器人領(lǐng)域還很少使用的。Navigation2中引入了行為樹來組織機(jī)器人的工作流程和動(dòng)作執(zhí)行。

行為樹是樹狀的結(jié)構(gòu),它的邏輯流程是由XML文件描述的。我們?cè)摯我粋€(gè)重點(diǎn)工作就是通過Scratch3.0可視化生成行為樹定義。行為樹本身并不具體實(shí)現(xiàn)機(jī)器人的執(zhí)行內(nèi)容,它只負(fù)責(zé)將執(zhí)行內(nèi)容進(jìn)行編排。以Navigation2為例,具體的執(zhí)行內(nèi)容實(shí)現(xiàn)是放在各個(gè)server中的。行為樹上的節(jié)點(diǎn)與server進(jìn)行通信,請(qǐng)求具體的執(zhí)行內(nèi)容,然后獲得反饋,根據(jù)反饋結(jié)果又可以請(qǐng)求另外的執(zhí)行內(nèi)容。這些不同執(zhí)行內(nèi)容間的跳轉(zhuǎn)就是由行為樹控制的。

4 結(jié)論

行為樹作為一種重要的機(jī)器人自主導(dǎo)航框架,在未來的研究中也有著廣闊的應(yīng)用前景。隨著人工智能體技術(shù)的不斷發(fā)展,行為樹可以結(jié)合深度學(xué)習(xí)、強(qiáng)化學(xué)習(xí)等技術(shù),進(jìn)一步提高機(jī)器人自主決策和行動(dòng)的能力。同時(shí),行為樹還可以應(yīng)用于多機(jī)器人協(xié)同和分布式控制等領(lǐng)域,為機(jī)器人應(yīng)用帶來更多的可能性。在機(jī)器人仿真和行為樹應(yīng)用方面,未來的研究還需要解決一些挑戰(zhàn)和問題。比如,在仿真中如何更加準(zhǔn)確地模擬真實(shí)環(huán)境和傳感器數(shù)據(jù),如何設(shè)計(jì)更加復(fù)雜和靈活的行為樹結(jié)構(gòu),提高機(jī)器人的自主決策和行動(dòng)能力,如何在多機(jī)器人系統(tǒng)中進(jìn)行協(xié)同和合作,實(shí)現(xiàn)更高效和穩(wěn)定的控制等[4]。這些問題的解決需要研究人員從不同的角度進(jìn)行探索和嘗試,不斷推動(dòng)機(jī)器人技術(shù)的發(fā)展。

該方法目標(biāo)是建立機(jī)器人自主智能導(dǎo)航規(guī)劃的便捷可視化方法,甚至能集成到客戶環(huán)境當(dāng)中,基于以前基于游戲項(xiàng)目對(duì)行為樹應(yīng)用經(jīng)驗(yàn)和教育項(xiàng)目的積累,選擇的一條相對(duì)容易實(shí)現(xiàn)的路徑。目前還在進(jìn)一步從ROS1往ROS2遷移,由于通訊協(xié)議部分有較大的改變,只完成了初步原型論證。該研究旨在拋磚引玉,希望得到更多探索啟發(fā)。

參考文獻(xiàn)

[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.

一種面向機(jī)器人自主智能導(dǎo)航低代碼設(shè)計(jì)與仿真的實(shí)現(xiàn)方法(機(jī)器人導(dǎo)航方案)

聲明:我們尊重原創(chuàng),也注重分享。有部分內(nèi)容來自互聯(lián)網(wǎng),版權(quán)歸原作者所有,僅供學(xué)習(xí)參考之用,禁止用于商業(yè)用途,如無意中侵犯了哪個(gè)媒體、公司、企業(yè)或個(gè)人等的知識(shí)產(chǎn)權(quán),請(qǐng)聯(lián)系刪除(郵箱:glyhzx@126.com),另本頭條號(hào)推送內(nèi)容僅代表作者觀點(diǎn),與頭條號(hào)運(yùn)營方無關(guān),內(nèi)容真?zhèn)握?qǐng)讀者自行鑒別,本頭條號(hào)不承擔(dān)任何責(zé)任。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢
分享本頁
返回頂部
个旧市| 云龙县| 保德县| 井研县| 河东区| 尼玛县| 唐河县| 呼和浩特市| 仙桃市| 富平县| 江山市| 黄陵县| 萨嘎县| 娄烦县| 郓城县| 华坪县| 民乐县| 尚志市| 孙吴县| 扬州市| 依兰县| 临城县| 龙胜| 克拉玛依市| 永修县| 习水县| 中方县| 信宜市| 柳州市| 清远市| 苍梧县| 蕲春县| 利川市| 黄骅市| 弥勒县| 岳西县| 兴安盟| 葵青区| 颍上县| 贺兰县| 湘潭县|