天天看點

《機器人程式設計實戰》一一3.1 建立場景地圖

本節書摘來自華章計算機《機器人程式設計實戰》一書中的第3 章,第3.1節,作者:[美]卡梅倫·休斯(cameron hughes) 特雷西·休斯(tracey hughes) ,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

rsvp的第1部分是一個場景地圖。地圖是将要發生的任務和态勢所在環境的符号化表示。場景環境是機器人在其中運作的一個世界。圖3-1展示了nxt mindstorms機器人的經典試驗台。

《機器人程式設計實戰》一一3.1 建立場景地圖

圖3-1所示的試驗台是mindstorms機器人套件的一部分。試驗台呈長方形,約0.6m寬、0.76m長。試驗台上有16種顔色和38個部分重複的數字。試驗台上有一系列直線和弧線,還有黃色、藍色、紅色和綠色的正方形以及不同區域其他顔色的形狀。這個試驗台是機器人的世界或環境,用于nxt mindstorms機器人的顔色傳感器、電機等的初步測試。

類似試驗台,一個平面圖顯示了将要識别目标的位置,這些目标是有色正方形、機器人将與之互動的對象或需要規避的障礙物。如果目标太高或太遠,傳感器可能無法确定它們的位置。确定機器人導航到達那些位置的路徑也可以利用該地圖來規劃。

空間和機器人(機器人足迹)的尺寸可能影響機器人導航空間和執行任務的能力。例如,對于我們的br-1,什麼是蛋糕相對于機器人的位置?有一個路徑?有障礙?機器人可以在空間中移動嗎?地圖可以幫助回答這些問題。

小貼士

機器人的環境是除了機器人本身之外最需要考慮的因素。

3.1.1 建立平面圖

地圖可以看作一個使用幾何形狀、圖示或顔色表示對象或機器人環境的簡單二維規劃圖或平面圖。對于這種類型的簡單地圖,描繪精确的尺度不是那麼重要,但是對象和空間應該有某種類型的相對尺度。

使用直線來劃定區域,确定測量系統,確定測量系統與api函數一緻。使用箭頭和測量值标記面積、對象和機器人足迹的大小。最好使用一個矢量圖形編輯器建立地圖,我們使用的是libre office draw。對于br-1,圖3-2給出了機器人環境的一個簡單的平面規劃圖。

在圖3-2中,指定了感興趣的對象:機器人、桌子和桌上蛋糕的位置。平面圖示記了面積和機器人足迹的大小。左下角标記為(0,0),右上角标記為(300,400),區域大小以cm為機關。對象與br-1之間的距離也予以标記。雖然該平面圖沒有用比例尺繪制,但是長度和寬度有一個相對關系。br-1的足迹長度為50cm,寬度為30cm。

br-1将要點燃蛋糕上的蠟燭。蛋糕位于400cm×300cm區域的中心。在100cm×100cm桌子上放着直徑為30cm的蛋糕。這意味着br-1機器人的手臂要從桌子邊緣伸到x次元中最遠一點的蠟燭,應該至少有53cm長。機器人手臂到末端作用器前端的最大擴充為80cm,并且打火機的長度額外增加了一個10cm。這項任務還依賴于以下更多考慮:

《機器人程式設計實戰》一一3.1 建立場景地圖

圖3-2 針對br-1機器人環境的一個平面規劃圖

蠟燭的高度

蛋糕的高度

br-1的手臂接合點至燭芯頂端的長度

機器人的位置

圖3-3展示了如何計算點燃蠟燭所需的伸展距離。在這種情況下,它是直角三角形的斜邊。三角形的直角邊“a”是燭芯頂端至機器人手臂接合點的高度,為76cm;直角邊“b”是桌子的半徑加上3cm蛋糕中心點至蛋糕上最遠蠟燭位置的距離,為53cm。是以,機器人手臂、末端作用器和打火機所需要的到達距離約為93cm。但是,機器人的到達距離僅有90cm,是以br-1必須向蛋糕傾斜一點,或使用一個再長3cm的打火機點燃燭芯。

《機器人程式設計實戰》一一3.1 建立場景地圖

圖3-3 計算作為一個直角三角形斜邊的機器人手臂的長度

注釋

确定機器人手臂的位置和所需的擴充遠比這個簡單的示例複雜,我們将在第9章進行讨論。示例中的重點是,規劃圖(平面圖)如何幫助闡明一些重要的問題,并由此指定你的機器人任務。

3.1.2 機器人的世界

一個機器人實作自主還需要一些關于其環境的細節。考慮一下:如果你去一個什麼也不了解的城市旅行,你能把你想要做的事情做得有多好?你不熟悉那裡的一切。你需要一個地圖或某個人引導你,并告訴你“這裡是餐館”、“這裡是博物館”。自主機器人必須有關于環境的足夠資訊。機器人掌握的資訊越多,可以實作其目标的可能性越大。

機器人的世界是機器人執行其任務的環境,它是機器人有意識的唯一世界。環境外的任何事情都不重要,機器人不會意識到。

環境是動态的,所有的環境都不一樣。一個機器人可以部分或完全通路其環境。一個完全可通路的環境意味着環境中所有的對象和情況都是在機器人的傳感器範圍内,沒有對象太高、太低或遠離機器人而無法檢測或與之互動。機器人具有所有必要的傳感器以接收來自環境的輸入。如果有一個聲音,機器人可以用聲傳感器來檢測它。如果有一盞燈亮着,機器人可以用光傳感器來對其進行檢測。

部分可通路環境意味着環境中有些情況機器人不能檢測到,或有些物體機器人不能檢測或與之作用,例如因為缺少定位傳感器來檢測,或缺少末端作用器來拾起。一個180cm高度的物體超出了一個具有80cm臂展和50cm身高機器人的能力範圍。如果要求一旦開始唱歌機器人就準備點燃蠟燭,但它沒有聲傳感器會怎麼樣?聲音是環境的一部分,是以,機器人将不能執行這項任務。是以,當建立了可部分通路環境的平面圖時,就考慮了“機器人視角”。例如,對于機器人沒有通路的對象,使用某個直覺的訓示符去與那些機器人可以通路的對象進行區分,使用顔色标記或圍繞它畫一條虛線。

确定和不确定環境

控制情況怎麼樣?機器人能控制其環境的每一個方面嗎?機器人是控制或操縱其環境中對象的唯一力量嗎?這是确定環境和不确定環境之間的差別。

對于一個确定環境,下一個狀态完全由目前狀态和機器人執行的動作決定。這意味着如果br-1機器人點燃蠟燭,這些蠟燭将保持發亮直到br-1将它們吹滅。如果br-1将盤子從桌子上移走,這些盤子将保持在它們被放置的位置。

對于一個不确定環境,比如生日聚會的場景,br-1沒有吹滅蠟燭。(如果它做了将非常有意思。)聚會的參加者可以移走那些盤子而不隻是br-1。如果br-1和目的地之間原本沒有障礙物,然後一個參加聚會的客人在那放置了一個障礙物會怎樣?br-1如何才能在一個動态的不确定環境中執行其任務?

每個環境類型都有自己的挑戰。在一個動态的不确定環境中,需要機器人在嘗試做任務之前考慮先前狀态和目前狀态,然後針對是否可以執行這項任務做出決定。表3-1列出了一些簡短描述的環境類型。

《機器人程式設計實戰》一一3.1 建立場景地圖

3.1.3 rsvp read設定

環境有許多方面不是規劃圖或平面圖的部分,但是當開發任務指令時,它們在某種程度上應該記錄以作參考。例如,顔色、重量、高度、甚至物體的表面類型都是可檢測的特性,這些特性可由傳感器識别或者影響電動機、末端作用器、環境類型、可識别的外部力量以及它們對物體的作用。

其中,有些特性可以在平面圖中表示。但是,一個read設定可以包含所有的特性。每個環境類型都應該有自己的read設定。

在機器人的環境裡,機器人環境屬性描述(robot environmental attribute description,read)設定是一個包含機器人将要遇到、控制和與之互動的一系列目标的概念。它也包含可由機器人傳感器檢測或影響機器人如何與目标互動的目标特性和屬性。

例如,顔色是一個由顔色傳感器或光傳感器識别的可檢測特性。物體的重量決定了依靠舵機扭矩的機器人是否可以舉起、托住或攜帶該物體到另一個位置。形狀、高度、甚至表面決定了物體是否可以被末端作用器所操縱。

環境的任何特性都是read設定的一部分,如尺寸、照明和地形。這些特性可以影響傳感器和電動機能的工作效果。環境照明,無論陽光、室内光或燭光,都不同程度地影響着顔色傳感器和光傳感器。一個機器人穿過木地闆時不同于其穿過沙礫、泥土或地毯,地面影響了輪子的旋轉和距離計算。表3-2是mindstorms nxt試驗台的read設定。

《機器人程式設計實戰》一一3.1 建立場景地圖

針對試驗台的read設定描述了工作區,包括它的類型(完全通路和确定)、所有顔色和符号。當執行一個搜尋,比如識别藍色方塊時,它描述了機器人将遇到什麼。設定列出了試驗台上實體工作區、顔色和符号的屬性和數值。

對于一個動态環境,比如生日聚會場景,read設定可以包含關于可能與對象互動的

外部力量資訊。例如,桌子上的盤子和杯子有初始位置,但是社交聚會的客人可能移動他們的盤子和杯子到桌子上的一個新位置。伴随着時間和條件的變化,在read設定裡應标示

出新的位置。一旦聚會結束,br-1将開始清理工作,每個盤子和杯子的位置應該予以更新。表3-3是br-1生日聚會的read設定。

《機器人程式設計實戰》一一3.1 建立場景地圖
《機器人程式設計實戰》一一3.1 建立場景地圖
《機器人程式設計實戰》一一3.1 建立場景地圖

這個read設定有三個額外列:

時間/條件

新數值

力是與對象互相作用的源頭,它是在環境中工作的某種非機器人的東西;時間/條件表示何時或在什麼條件下力與對象互相作用;新數值是不言自明的。

繼續閱讀