這里我們使用Anacondda的Python編程環(huán)境,使用Visual Studio Code軟件進(jìn)行開發(fā)。
Anaconda是專業(yè)為了方便于使用Python進(jìn)行數(shù)據(jù)挖掘研究而制作的一個(gè)應(yīng)用包,涵蓋了在各種數(shù)據(jù)挖掘研究涉及領(lǐng)域中使用的Python庫,而且自帶了專業(yè)用來處理軟件環(huán)境中依賴問題的conda包系統(tǒng)。
主要優(yōu)點(diǎn)是實(shí)現(xiàn)了外包管理與環(huán)境管理的各種功能,而且可以非常容易地處控制多版本Python共存、轉(zhuǎn)換以及各種第三方包使用上的問題。
Anaconda使用工具/命令conda來實(shí)現(xiàn)對package和environment的控制,其中就曾經(jīng)包括了python和相應(yīng)的配套開發(fā)工具。
Anaconda自帶人工智能環(huán)境,這里我們需要用到的numpy矩陣計(jì)算環(huán)境、pandas分析環(huán)境、matplotlib數(shù)據(jù)可視化環(huán)境等等會自動(dòng)安裝,無需手動(dòng)配置。
VSCode,全名Visual Studio Code,是由微軟公司研發(fā)出的一種輕量級程序編寫器,免費(fèi)、開放且能力強(qiáng)勁。
它支持了基本上所有主要的程序語言的語法高光度、智能編碼補(bǔ)滿、自設(shè)定熱鍵、括號匹配、編碼片段、編碼對比Diff、GIT等功能,同時(shí)支援插件擴(kuò)展功能,并根據(jù)個(gè)人網(wǎng)站發(fā)展或者云端使用發(fā)展做了調(diào)整。
該軟件跨平臺,支持Win、Mac和Linux,啟動(dòng)界面如所示。
VS Code編程環(huán)境具備項(xiàng)目視圖和調(diào)試工具,可以讓我們更高效的進(jìn)行代碼分析與驗(yàn)證。VS Code會自動(dòng)檢測我們系統(tǒng)當(dāng)前環(huán)境進(jìn)行加載選擇。
這里為了方便后續(xù)開發(fā),我將數(shù)據(jù)可視化部分寫成類庫的模式,在后續(xù)算法驗(yàn)證當(dāng)中,僅需輸入數(shù)據(jù)調(diào)用即可,類庫程序如圖所示。
圖表可視化部分是Plotting類,主要作用就是添加坐標(biāo)點(diǎn)進(jìn)行顯示。這里以queue隊(duì)列的數(shù)據(jù)形式進(jìn)行存儲,如圖所示。
路線規(guī)劃算法的基本概念為:移動(dòng)機(jī)器人在有障礙物的周圍環(huán)境中根據(jù)相應(yīng)的評價(jià)準(zhǔn)則,尋求一個(gè)由初始狀態(tài)至達(dá)到目標(biāo)狀態(tài)之間的無碰路線。路徑規(guī)劃算法的還有一個(gè)劃分的方式,即可分為全局路徑規(guī)劃和局部路徑規(guī)劃。
全局路徑規(guī)劃是基于環(huán)境全局的信息,這包含了機(jī)器人在當(dāng)前狀況下檢測不到的所有信號。全局規(guī)劃把環(huán)境信息存放到一幅圖中,并利用這張圖尋找可能的路線。
由于全局算法通常要求花費(fèi)大量的運(yùn)算時(shí)間,因此不適合于高速多變的動(dòng)態(tài)環(huán)境,并且由于全局路徑規(guī)劃必須要預(yù)先掌握全局的環(huán)境信息,也不適合于未知環(huán)境下的規(guī)劃任務(wù)。
局部路徑計(jì)算系統(tǒng)只考慮了機(jī)器人的瞬時(shí)環(huán)境信號,使得計(jì)算數(shù)量減少,效率明顯提高。但局部路徑規(guī)劃算法,有時(shí)并不一定可以讓機(jī)器人直接抵達(dá)目的地點(diǎn),從而導(dǎo)致了計(jì)算全局不收斂。
對移動(dòng)機(jī)器人來說,兼顧非完全微分約束的路徑規(guī)劃問題是該領(lǐng)域的難點(diǎn)所在。
非完整微分約束影響了機(jī)器人系統(tǒng)的運(yùn)動(dòng)速度并且約束也無法去積分,因此無法把這些束縛轉(zhuǎn)換為簡化的幾何束縛。
根據(jù)隨機(jī)采集的路徑規(guī)劃方法,尤其是快速隨機(jī)搜索樹方法,可以將各種約束集成在算法本身之中,因此可以很有效的解決有非完整微分約束的路徑規(guī)劃問題。
在深入研究自己自主規(guī)劃課題之前,應(yīng)先形成相對比較完善的自主規(guī)劃系統(tǒng),然后再以這個(gè)系統(tǒng)為指導(dǎo),對自己自主規(guī)劃的各種具體課題加以研究。
本節(jié)擬針對獨(dú)立人工智能機(jī)器人的思考方法、行動(dòng)方式、任務(wù)行動(dòng)等特征,形成與之相適應(yīng)的自主性體育運(yùn)動(dòng)規(guī)劃系統(tǒng)。
并根據(jù)人工智能機(jī)器人的數(shù)量種類和規(guī)模,把自主性運(yùn)動(dòng)計(jì)劃細(xì)分成單一人工智能機(jī)器人的運(yùn)動(dòng)計(jì)劃和多人工智能機(jī)器人協(xié)同的運(yùn)動(dòng)計(jì)劃二種規(guī)劃系統(tǒng)。
文章重點(diǎn)涉及了以下幾個(gè)常見的運(yùn)動(dòng)規(guī)劃算法:圖搜索法、RRT算法、人工勢場法、BUG算法等,并對部分方法的自身問題也進(jìn)行了一些改進(jìn)研究。
此次設(shè)計(jì)方案以算法的驗(yàn)證為主,通過查閱相關(guān)文獻(xiàn),根據(jù)相關(guān)文獻(xiàn)資料確定此次設(shè)計(jì)實(shí)驗(yàn)的算法,推導(dǎo)算法的實(shí)現(xiàn)過程,最終通過代碼進(jìn)行實(shí)現(xiàn)數(shù)據(jù)可視化分析來完成本文的工作,如圖所示。
此次設(shè)計(jì)先對圖搜索算法、RRT及RTT改進(jìn)算法、BUG算法、人工勢場法進(jìn)行理論的分析和闡述,通過Python編程+Matplotlib數(shù)據(jù)可視化的方式來對路徑搜索算法進(jìn)行可視化的展示和分析。
這個(gè)研究工作主要是指通過對ROS機(jī)器人系統(tǒng)所進(jìn)行的仿真實(shí)驗(yàn),而ROS技術(shù)(Robot Operating
System,下文簡寫“ROS”)則是指一個(gè)廣泛應(yīng)用在人工智能方面開放的多元操作系統(tǒng)。
它提供了控制系統(tǒng)所需要的全部特性,如硬件抽象性,系統(tǒng)底層的控制,對常用功能的應(yīng)用,進(jìn)程的數(shù)據(jù)傳遞,和包處理等。
它還具有用來檢索、翻譯、匯編、和跨計(jì)算機(jī)執(zhí)行代碼所必需的工具和庫函數(shù)的功能。
在ROS系統(tǒng)下可以通過Gazebo物理仿真+Rviz三維數(shù)據(jù)可視化的方式對算法進(jìn)行分析。在ROS中實(shí)現(xiàn)自己的路徑規(guī)劃算法需要以plugin的方式,并且繼承nav_core::BaseGlobalPlanner接口。
仿真測試部分在Gazebo環(huán)境下搭建機(jī)器人模型,通過仿真系統(tǒng)將激光雷達(dá)數(shù)據(jù)、里程計(jì)數(shù)據(jù)、姿態(tài)數(shù)據(jù)進(jìn)行模擬,傳感器數(shù)據(jù)傳遞到navigation導(dǎo)航框架當(dāng)中實(shí)現(xiàn)路徑規(guī)劃及自主導(dǎo)航功能。
-
編程
+關(guān)注
關(guān)注
88文章
3596瀏覽量
93610 -
人工智能
+關(guān)注
關(guān)注
1791文章
46896瀏覽量
237669 -
python
+關(guān)注
關(guān)注
56文章
4783瀏覽量
84473
發(fā)布評論請先 登錄
相關(guān)推薦
評論