Work4 <<
Previous Next >> Work5
瞭解四輪機器人
首先翻譯我們覺得比較有實用的內容
可碰撞物體(Collidable objects)
可碰撞對像是可以測試互相碰撞的對象,即將記錄碰撞狀態的對象。這並不意味著它們將對碰撞做出響應(即可響應),這有所不同。可碰撞的對象包括:
假人
形狀
超頻樹
點雲
由於基於點,因此虛擬對象和點雲只能與OC樹(基於體積)碰撞。
集合也是可碰撞的,因為它們可能包含可碰撞的對象。
可碰撞對象可以分別啟用或禁用其可碰撞屬性(默認情況下,對於非純形狀,OC樹和點雲啟用)。可以在對象的公共屬性中或通過sim.setObjectSpecialProperty API函數進行設置。
此外,可碰撞對象可以根據其相關的模型屬性(如果它們是模型的一部分)被覆蓋其可碰撞屬性。
可測對象(Measurable objects)
可測量對像是可用於與其他可測量對象進行最小距離計算的對象。它們包括:
假人
形狀
超頻樹
點雲
集合也是可測量的,因為它們可能包含可測量的對象。
可測量對象可以分別啟用或禁用其可測量屬性(默認情況下,對於非純形狀,OC樹和點雲啟用)。可以在對象的公共屬性中或通過sim.setObjectSpecialProperty API函數進行設置。
此外,可測量對象可以根據其相關的模型屬性(如果它們是模型的一部分)而覆蓋其可測量屬性。
可檢測物體(Detectable objects)
可檢測物體是可以被接近傳感器檢測到的物體。它們包括:
假人
形狀
超頻樹
點雲
由於是基於點的虛擬和點雲,因此射線類型或隨機類型的接近傳感器無法檢測到。
可以通過所有接近傳感器,或僅通過特定類型的接近傳感器或接近傳感器的子類別來檢測可檢測到的物體,如下所示:
超聲波接近傳感器
紅外接近傳感器
激光接近傳感器
電感式接近傳感器
電容式接近傳感器
集合也是可檢測的,因為它們可能包含可檢測的對象。
可檢測的對象可以分別啟用或禁用其可檢測屬性,並且對於所有類型的接近傳感器(默認情況下對非純形狀啟用)都啟用此屬性。可以在對象的公共屬性中或通過sim.setObjectSpecialProperty API函數進行設置。
此外,可檢測對象可以根據其相關的模型屬性(如果它們是模型的一部分)被覆蓋其可檢測屬性。
可渲染對象(Renderable objects)
可渲染對像是視覺傳感器可以看到或檢測到的對象。它們包括:
形狀
路徑(但是必須啟用路徑整形功能)
圖形(僅呈現非靜態3D曲線)
超頻樹
點雲
集合也是可渲染的,因為它們可能包含可渲染的對象。
您可以使可渲染對象僅由特定的視覺傳感器看到可渲染對像還可以分別啟用或禁用其renderable屬性(默認情況下啟用,純圖形除外)。可以在對象的公共屬性中或通過sim.setObjectSpecialProperty API函數進行設置。
此外,可渲染對象可以根據其相關的模型屬性(如果它們是模型的一部分)而使其可渲染屬性被覆蓋。
可視對象(Viewable objects)
可見對像是可以瀏覽,查看或可以顯示某些圖像內容的對象。它們包括:
攝影機
視覺傳感器
可視對象可以與將顯示其圖像內容的視圖關聯。
虛擬功能(Dummy functions)
假人是多用途的對象。它們可以具有非常特定的功能,也可以僅用作輔助對象。以下偽函數是常見的:
用作點或參考系統:當您要跟蹤場景中特定點的位置和/或方向時,就是這種情況。虛擬位置可以與形狀頂點的位置匹配,例如,可以精確定位形狀:在頂點編輯模式下,從頂點創建虛擬對象,然後將形狀附加到虛擬對象(使虛擬對象成為父對象))。並且可以通過虛擬對象來操縱/定位形狀,該虛擬對象的位置與所選頂點相同。
用作模型的代理或支持對象:通過將對象標記為模型基礎標誌來定義模型。任何對像都可以作為模型的基礎,但是虛擬對像是該模型的首選對象。
用作標記點:例如,在評估機器人的工作空間時,可以在不同的時間間隔將假人放置在與機器人末端執行器相同的坐標上,最後可以提取所有添加的假人的凸包並顯示。有關更多詳細信息,請參閱凸包計算部分。
用於指定逆運動學計算中的末端執行器和末端執行器目標位置/方向:逆運動學計算模塊處理運動鏈。每個鏈都有一個基礎對象和一個提示對象。尖端對象必須是假人,並且用戶經常將尖端假人定位和定向為與機器人的末端執行器重合。同時,為了以逆運動學模式移動運動鏈,需要機器人末端執行器的目標位置/方向。同樣,將虛擬對像用作目標對象。
用於為動態模擬的機制創建循環閉合約束:有關更多詳細信息,請參考設計動態模擬的部分。
用作路徑跟隨對象:虛擬對像是唯一可以分配留在路徑上(在路徑上自由,自由滑動)或跟隨路徑位置(固定在路徑上,沿著路徑在其當前固有位置固定)的對象。

虛擬屬性(Dummy properties)
虛擬屬性是場景對象屬性對話框的一部分,該對話框位於[菜單欄->工具->場景對象屬性]。還可以通過雙按場景層次結構中的對像圖標或單按其工具欄按鈕來打開對話框:

在場景對象屬性對話框中,單按“虛擬”按鈕以顯示虛擬對話框(“虛擬”按鈕僅在最後選擇的是虛擬對象時出現)。該對話框顯示最後選擇的虛擬對象的設置和參數。如果選擇了多個假人,則可以將某些參數從最後選擇的假人復製到其他選定的假人(適用於選擇按鈕):

鏈接的虛擬對象:鏈接到此對象的虛擬對象。鏈接的虛擬對象(在場景和場景層次中,通過鏈接它們的彩色段很容易識別)具有特殊的屬性和行為,有關更多詳細信息,請參閱下一項。
鏈接類型:鏈接類型將指定仿真期間鏈接的虛擬對象的行為。如果指定了“動力學,重疊約束”,則這兩個虛擬實體將嘗試重疊各自的位置/方向以創建動力學迴路閉合約束。如果指定了IK,則指定了刀尖目標,則兩個鏈接的虛擬對象形成了用於反向運動學計算的刀尖目標對。
遵循主路徑的方向(唯一副路徑):如果選中,則以路徑作為主(唯一副路徑)的虛擬對象將遵循該路徑的最接近貝塞爾曲線點的方向(而不是位置)。 另請參閱sim.followPath API函數(使用sim.followPath函數,不需要將虛擬對象與路徑作為主從關係)。
遵循主路徑(唯一主路徑):如果選中該選項,並且假人的主路徑是路徑對象,則假人的位置和方向將由該路徑自動計算(即將從路徑的Bezier點進行插值)。
有兩種選擇:路徑自由或路徑固定。另請參閱sim.followPath API函數(使用sim.followPath函數,不需要將虛擬對象與路徑作為對象)。
路徑上自由:選中該對像後,會將具有路徑對像作為對象的虛擬對象分配為留在路徑上(保持與路徑的Bezier點相同的位置和方向),但可以沿路徑自由移動。它可以通過對像操縱模式沿路徑移動,也可以由逆運動學模塊自動沿路徑引導。
固定在路徑上:選中此選項後,會將具有路徑對像作為對象的虛擬對象分配為留在路徑上(與路徑的Bezier點保持相同的位置和方向),位於路徑的固有位置。一個比喻是在過山車的履帶部分上的貨車(將貨車拉起的初始部分)。在這種情況下,可以指定從路徑位置偏移的距離。
偏移量:將假人分配到路徑上的固定位置時,與路徑位置的距離偏移量。如果要創建履帶,則履帶的第一個墊板(剛性元件)將位於偏移量0處,第二個墊板將位於偏移量x處,第二個墊板將位於偏移量2x處,依此類推。
複製增量:添加到復制的虛擬對象的偏移量上的值(請參見上文)(例如,在創建毛毛蟲時,您可能需要幾十個墊板,每個墊板都可以自動計算出不同的偏移量)。
對像大小:假人的大小。該參數僅具有視覺效果,沒有功能意義。
調整虛擬顏色:允許調整虛擬顏色
接近傳感器(Proximity sensors)
CoppeliaSim提供了一種非常強大而有效的方法來模擬接近傳感器。用戶可以為幾乎所有類型的接近傳感器建模,從超聲波到紅外等等。允許此功能的場景對像是接近傳感器(與視覺傳感器不同),可以檢測可檢測到的實體。下圖說明了使用接近傳感器的仿真:

接近傳感器通過[菜單欄->添加->接近傳感器]添加到場景中。
接近傳感器使用的接近傳感器檢測例程也可以通過Coppelia幾何例程作為獨立例程使用。
接近傳感器的類型和操作模式(Proximity sensor types and mode of operation)
接近傳感器有6種不同類型,可以在很大程度上進行定制:
射線型:射線型接近傳感器非常適合非常簡單的接近傳感器建模或激光測距儀建模。它們是最快的接近傳感器。
隨機射線型:隨機射線型接近傳感器用作隨機掃描圓錐體的射線型傳感器。它的外觀與錐形接近傳感器類似。
金字塔型:金字塔型接近傳感器非常適合對帶有矩形檢測體積的接近傳感器進行簡單建模。他們很快。
圓柱型:圓柱型接近傳感器非常適合對具有旋轉體積的檢測體積的接近傳感器進行簡單建模。他們很快。
圓盤式:圓盤式接近傳感器可對具有旋轉掃描檢測體積的接近傳感器進行精確建模。根據所選的精度和操作模式,它們可能需要更多的計算量。
圓錐型:圓錐型接近傳感器允許對大多數接近傳感器進行最佳,最精確的建模。根據所選的精度和操作模式,它們可能需要更多的計算量。

接近傳感器以幾何上精確的方式運行:它們在其感測點(小球體)與任何干擾其檢測體積的可檢測實體之間執行精確的距離計算(像大多數傳感器一樣,它們在傳感體積邊緣之間不執行簡單的碰撞檢測其他模擬軟件,但在檢測範圍內進行精確的距離計算)。每個接近傳感器將計算以下最小距離:

如果接近傳感器檢測到物體,則會激活觸發器,這將導致對觸發器回調函數的調用。
接近傳感器的計算結果可以通過圖形對象記錄。
視覺傳感器(Vision sensors)
除了接近傳感器之外,CoppeliaSim還提供另一種傳感器:視覺傳感器。視覺傳感器是可見的對象,其操作方式與攝影機對象非常相似:它們將渲染其視場中的對象,並在指定的閾值被過度拍攝或拍攝不足時觸發檢測。可以檢測可渲染實體的視覺傳感器應主要在顏色,光線或結構在檢測過程中起作用的情況下,在接近傳感器上使用(例如,紅外傳感器,或更籠統地說,對光敏感的傳感器(相機等))。但是,根據運行應用程序的圖形卡或場景對象的複雜程度,視覺傳感器可能會比接近傳感器慢一些。下圖說明了使用視覺傳感器的應用:

確保不要將視覺傳感器與相機混淆。以下是主要區別:
視覺傳感器具有固定的分辨率。相機沒有特定的分辨率(即,它會自動調整為視圖尺寸)。
視覺傳感器的圖像內容可通過API訪問,圖像處理可通過視覺回調函數進行處理。無法通過API直接獲得相機的圖像內容。
視覺傳感器通常比攝像頭需要更多的CPU時間並且運行速度較慢。
視覺傳感器只能顯示可渲染的對象。攝像機可以顯示所有對像類型。
視覺傳感器類型和操作模式(Vision sensor types and mode of operation)
視覺傳感器分為2種類型,可以針對不同目的進行調整:
正射投影型:正射投影型視覺傳感器的視場為矩形。它們非常適合於近距離紅外傳感器或激光測距儀。
透視投影型:透視投影型視覺傳感器的視場是梯形的。它們非常適合於相機型傳感器。

視覺傳感器是可見的對象,可以像相機對像一樣進行瀏覽[彈出菜單->視圖->將視圖與選定的視覺傳感器相關聯]。有關更多詳細信息,另請參見頁面和視圖部分。

視覺傳感器功能強大,可以以多種靈活方式使用。例如,它們可以用於顯示來自外部應用程序或插件的靜止或運動圖像。插件還可以提供定制的圖像處理算法以及評估算法(例如觸發條件)。視覺回調函數代表了可以進行圖像處理以及可以生成觸發器的機制(可以對觸發器回調函數中的觸發器做出反應)。
視覺傳感器只能渲染(和檢測)可渲染的實體。
力傳感器(Force sensors)
力傳感器最初是兩個形狀之間的剛性鏈接,能夠測量傳遞的力和扭矩。力傳感器的剛性是有條件的,在某種意義上,如果出現某種條件(例如,如果力或扭矩閾值被超過),則力傳感器可能會損壞。

力傳感器測量三個3對值,分別代表沿x,y和z軸施加在傳感器上的力以及圍繞x,y和z軸施加在傳感器上的扭矩:

最初,力傳感器充當剛性連接。然而,在模擬過程中,當超過指定的力/扭矩閾值或滿足某些其他用戶定義的條件時,力傳感器可能會損壞。下圖說明了力傳感器的損壞狀態:

如果動態啟用了力傳感器,則它只能在仿真期間運行。 有關動態啟用的力傳感器的更多信息,另請參閱有關設計動態仿真的部分。 關節也能夠測量力或扭矩,但是只能沿/繞其z軸測量。
力傳感器通過[菜單欄->添加->力傳感器]添加到場景中。
路徑(Paths)
路徑是定義空間中的路徑或軌蹟的對象。它可以用於各種任務,如下圖所示:

可以使用[菜單欄->添加->路徑]將路徑對象添加到場景中。默認情況下,有兩個基本路徑可用:簡單的段類型路徑或圓形類型路徑。它們可以定向或縮放,但是通常這還不夠。用戶可以使用幾種方法來生成定制的路徑對象:
從文件導入路徑。
編輯路徑。
從形狀的邊緣生成路徑。有關詳細信息,請參見邊緣編輯模式。
路徑本身並沒有多大作用。它們通常與假人和其他物體結合使用以獲得所需的效果。要沿路徑移動對象,首先需要將虛擬對象分配給路徑,然後可以將對象附著到虛擬對象,該對象將遵循路徑的固有移動。有關更多詳細信息,請參閱關於虛擬變量的部分。
路徑是可渲染的對象,這意味著視覺傳感器可以看到路徑。但是,需要啟用路徑整形功能。可以在對象公共屬性中更改路徑的可渲染屬性。
某些路徑數據可以由圖形對象記錄。
路徑控制點和貝塞爾曲線點(Control points and Bezier points)
路徑具有位置和方向分量(或通道),還可以另外具有描述速度曲線的分量。路徑由控制點定義,這些控制點將路徑描述為一系列鏈接的段。僅當選擇路徑時,控制點才可見:

路徑的第一個控制點(起點)表示為球體,其餘的控制點表示為立方體。路徑可以是開放的或封閉的。當關閉時,它變成循環的。

每個控制點都具有可以更詳細地描述路徑的屬性:每個控制點都可以描述是否以及如何計算貝塞爾曲線。

默認情況下,貝塞爾曲線點始終可見(即使未選擇對象時),並顯示為紅色,綠色和藍色的小箭頭,指示貝塞爾曲線點的x軸,y軸和z軸(實際上是取向)。貝塞爾曲線部分由3個參數描述

Bezier插值因子指示Bezier曲線部分的起點和終點,而Bezier點數指示曲線的詳細程度(或平滑度)。 Bezier點計數為1在技術上禁用了Bezier曲線插值機制,但為簡單起見,該控制點被稱為Bezier點。
可以在路徑編輯模式下手動調整控制點的位置和方向。但是不能單獨調整Bezier點的方向。它是自動計算的。默認情況下,貝塞爾曲線點的方向將遵循路徑曲率(如果啟用了自動方向選項),否則它們將與控制點的方向進行插值

路徑位置和長度計算方法(Path position and length calculation methods)
沿著路徑對象,可以定義固有位置。該位置(也稱為路徑位置)與路徑對象的位置不同。雖然路徑對象的位置是路徑對象原點的位置(在選擇路徑時顯示為白色線框立方體),但是路徑位置或固有路徑位置是沿路徑的位置值
路徑的Bezier點可以是不同的,也可以是重合的:想像一個焊接機器人,其末端執行器是焊接設備的尖端;在兩個連續的Bezier點之間,末端執行器可以:
在不改變方向的情況下執行平移(即沿著直線)(兩個Bezier點是不同的,但方向相同)。
執行平移並更改方向(兩個Bezier點是不同的,並且方向不同)。
在不改變位置的情況下執行旋轉(即更改方向)(兩個Bezier點重合但方向不同)。
此外,在某些情況下,我們希望焊炬遵循預定的路徑,在某個特定位置暫停(例如,處理較大的焊接點),然後沿該路徑繼續前進。為了正確處理上述3種情況和特殊的暫停情況,重要的是能夠唯一地識別沿路徑(即路徑位置*)的任何位置*(廣義上的位置)以及路徑長度*(從更廣泛的意義上講是長度)。為此,用戶可以選擇幾種位置計算方法:
路徑位置*被描述為沿路徑的累積線性變化。路徑長度*由下式給出:
路徑位置*被描述為沿路徑的累積角度**變化。路徑長度*由下式給出:
路徑位置*被描述為沿路徑的累積(線性變化+角度**變化)。路徑長度*由下式給出:
路徑位置*被描述為沿路徑的累積最大值(線性變化,角度**變化)。路徑長度*由下式給出:
路徑位置*被描述為沿路徑的累積(線性變化,如果不為零,否則為角度**)。路徑長度*由下式給出:
路徑位置*被描述為沿路徑的累積(角度**變化,如果不為零,否則為線性變化)。路徑長度*由下式給出:
路徑位置*被描述為沿路徑的(線性變化,角度**變化)的累積歐幾里德距離。路徑長度*由下式給出:
其中Δl和Δα分別是兩個連續的Bezier點之間的線性和角度變化。角度**變化是規則角度變化乘以角度係數c。 c稱為角度到線性的轉換係數,並且可以將角度值和線性值組合在一起。這意味著沿路徑的位置*或路徑長度*始終以線性單位(例如米)給出,而與上面選擇的位置計算方法無關。
默認情況下,紅色標記的項為零。該術語可以看作是Bezier點(或路徑控制點)的虛擬距離或第四坐標(即每個Bezier點將由方向和位置(x,y,z,w)定義,其中w是第四坐標)。這對於沿路徑歸檔暫停點很有用。是兩個連續的Bezier點之間的虛擬距離變化。 d是虛擬距離變化的比例因子(例如,如果d加倍,則所有暫停點的暫停持續時間將是兩倍)。為簡化起見,在以下內容中我們將不再提及該術語並將其設為零。
以下示例闡明了位置和長度計算概念:




要歸檔沿路徑的特定點處的運動暫停,請執行以下操作:創建3個相同的路徑控制點(位置和方向完全重合),並為中間控制點指定一個虛擬距離值,該值不得為零。在下面的示例中,在3個重合點的虛擬距離為2(在第一和中間重合控制點之間為1,在中間和第三重合控制點之間為1)。如果某個對像以每秒1米的速度沿路徑行進,則它將在重合的控制點處記錄2秒的暫停:

沿路徑運動(Movement along a Path)
當前固有路徑位置在路徑上顯示為紅色球形(如果啟用了路徑位置顯示)。在模擬過程中,可以隨時使用sim.setPathPosition來控制球沿路徑的位置。確保了解如何計算路徑位置或路徑長度。
要實際使對象沿路徑移動,首先需要將對象附加到虛擬對象,然後分配虛擬對像以遵循路徑位置(帶有可選的偏移量)。
導入和導出路徑(Importing and exporting paths)
路徑導入/導出功能可在CSV文件(逗號分隔值)上運行,該CSV文件可以用簡單的文本編輯器創建或讀取,但也可以輕鬆地導入/導出到Microsoft Excel等應用程序中。
導入路徑
CoppeliaSim的導入功能([菜單欄->文件->導入-> CSV的路徑...])逐行讀取值,其中每行對應一個控制點。每行應採用以下格式設置:
x,y,z,alpha,beta,gamma,relativeVelocity,BezierPointCount,interpolationFactor1,interpolationFactor2,
virtualDistance,auxiliaryFlags,auxiliaryChannel1,auxiliaryChannel2,auxiliaryChannel3,auxiliaryChannel4
其中內容相對應的意思:
(x,y,z)表示控制點在METERS中的位置
(α,β,γ)表示控制點的方向,以度數表示為歐拉角。默認值為(0,0,0)。
相對速度已棄用。設為1.0
BezierPointCount是控制點所需的Bezier點數。默認值為1。
InterpolationFactor1和InterpolationFactor2是在路徑控制點和Bezier點部分中描述的插值因子。默認值為0.5
VirtualDistance:虛擬距離值,添加到該控制點位置的路徑長度上,另請參見路徑位置或路徑長度計算方法。默認值為0.0
輔助標誌:可以用於各種目的的標誌,可以通過sim.getDataOnPath函數進行查詢。默認值為0。
輔助通道1-4:可以用於各種目的的值,可以通過sim.getDataOnPath函數進行查詢。默認值為0.0
除了前三個值(控制點位置坐標)外,所有其他值都可以省略,在這種情況下,將應用默認值。
導出路徑
通過選擇路徑,然後單擊[菜單欄->文件->導出->選定路徑為CSV ...],可以導出路徑的控制點。在這種情況下,導出格式與前面描述的路徑導入格式相同。
也可以通過選擇路徑,然後單擊[菜單欄->文件->導出->所選路徑的Bezier曲線為CSV ...]來導出路徑的Bezier點。在這種情況下,創建的文件(導出的文件)中的每一行都對應一個Bezier點,並包含以下值:
x,y,z,alpha,beta,gamma,相對速度,虛擬距離,輔助標記,輔助通道1,輔助通道2,assistantChannel3,auxiliaryChannel4
路徑編輯模式(Path edit mode)
初步說明:路徑編輯模式是一種方便且功能齊全的編輯路徑對象的方法。但是,可以在不進入用於最小化路徑修改的路徑編輯模式的情況下移動和擦除單個路徑點(選擇單個路徑點時,請確保沒有選擇除路徑之外的其他對象)。
可以通過單擊相應的工具欄按鈕來訪問路徑編輯模式:

[路徑編輯模式工具欄按鈕]
上面的工具欄按鈕僅在選擇路徑後才有效。在路徑編輯模式下,窗口中通常顯示場景層次結構的部分用於將路徑控制點顯示為列表。可以使用鼠標選擇列表中的項目,就像在層次結構窗口中的對像一樣。

[路徑編輯模式]
現在可以像常規對像一樣選擇單個控制點。最後選擇的控制點以白色顯示,其他選擇的控制點以黃色顯示,未選擇的控制點以藍色顯示。以類似的方式,可以使用鼠標直接平移控制點,方法是使用工具欄的對象/項目平移工具欄按鈕在與視圖方向垂直的平面中平移所選的控制點:

[對象/項目翻譯工具欄按鈕]
在路徑編輯模式下,將顯示路徑編輯模式對話框:

[控制點屬性對話框]
路徑已關閉:如果選中,則路徑的最後一個控制點將鏈接到其第一個控制點,以關閉路徑並使其循環運行。閉合路徑至少需要3個控制點。
路徑是平坦的:如果選中,則所有控制點(以及隨後的所有Bezier點)都將約束到路徑對象的本地參考系的z = 0平面。
自動定向:如果啟用,則將自動計算所有控制點和貝塞爾曲線點的定向,以使該點的z軸沿著路徑,其y軸指向其曲率向外(如果啟用了x up,則y -軸沒有特別限制)。如果禁用,則用戶確定控制點的方向,貝塞爾曲線點的方向將從路徑的控制點的方向內插。
保持x向上:如果選中,則自動定向功能將使每個Bezier點的z軸沿路徑對齊,並使其x軸沿路徑對象的z軸指向。
清除選擇:清除控制點的選擇。
反轉選擇:反轉控制點的選擇狀態。
製作虛擬對象:在選擇控制點的位置生成虛擬對象。
貝塞爾曲線插值因子1/2:有關詳細信息,請參見控制點和貝塞爾曲線部分。
貝塞爾曲線點數:有關詳細信息,請參見控制點和貝塞爾曲線部分。
虛擬距離:有關詳細信息,請參見關於沿路徑運動的部分。
輔助標誌:可以用於各種目的的標誌,可以通過sim.getDataOnPath函數進行查詢。
輔助通道1-4:可以用於各種目的的值,可以通過sim.getDataOnPath函數進行查詢。
為了精確定位控制點,請使用坐標和變換對話框。如果要編輯控制點的方向,請確保禁用路徑的“自動方向”選項(默認情況下啟用該選項)。
常規鍵組合(即ctrl-c,ctrl-v,delete和ctrl-x)支持複製/粘貼/刪除/剪切操作。確保主視圖具有焦點,以便按鍵起作用。如果未選擇任何控制點,則黏貼操作會將復制的控制點黏貼到控制點列表的開頭,否則將黏貼到選定的控制點之後(確保不超過一個控制點)。在此階段選擇)。也可以通過彈出菜單或通過[主菜單->編輯]訪問相同的複制/黏貼/刪除/剪切功能。其他操作包括:
在路徑的開頭插入新的路徑點/選擇後插入新的路徑點:如果未選擇任何控制點,則在路徑的開頭插入新的控制點;否則,在當前選擇之後插入新的控制點(請確保沒有其他內容)在這種情況下,選擇一個控制點)。
從貝塞爾曲線創建新路徑:使用當前路徑的貝塞爾點生成一個新的路徑對象,即新路徑的控制點將為當前路徑的貝塞爾點。
超頻樹(OC trees)
OC樹是代表空間分區的對象。它由樹形數據結構組成,其中每個節點正好具有八個子代。佔用的葉節點表示為體素。 OC樹可用於為形狀或點雲提供簡化的表示,或者可充當佔用網格/空間:

OC樹是可碰撞,可測量和可檢測的對象。這意味著OC樹:
可用於與其他可碰撞對象的碰撞檢測。
可與其他可測量對像一起用於最小距離計算。
可以被接近傳感器檢測到。
OC樹可以使用[菜單欄->添加-> OC樹]添加到場景中,並通過OC樹屬性進行編輯。
CoppeliaSim中可用的OC樹計算(即碰撞,距離和接近傳感器計算)也可以通過Coppelia幾何例程作為獨立例程使用。
OC樹屬性(OC tree properties)
OC樹屬性是場景對象屬性對話框的一部分,該對話框位於[菜單欄->工具->場景對象屬性]。您還可以通過雙擊場景層次結構中的對像圖標或單擊其工具欄按鈕來打開對話框:

[場景對象屬性工具欄按鈕]
在場景對象屬性對話框中,單擊OC樹按鈕以顯示OC樹對話框(僅當最後選擇的是OC樹時才會顯示OC樹按鈕)。該對話框顯示最後選擇的OC樹的設置和參數:

[OC樹對話框]
體素大小:OC樹體素的大小。大小越小,用於OC樹數據結構的內存就越大。
插入選定的可見對象:允許基於選定的可見對象插入體素。僅考慮虛擬對象,形狀,超頻樹和點雲。選擇要插入的所有對象,然後最後選擇目標OC樹對象。
減去選定的可見對象:允許基於選定的可見對象刪除體素。僅考慮虛擬對象,形狀,超頻樹和點雲。選擇要插入的所有對象,然後最後選擇目標OC樹對象。
清除OC樹:從OC樹中刪除所有體素。
體素具有隨機顏色:每個體素將具有隨機顏色。
顯示OC樹結構:顯示OC樹數據結構,主要用於調試目的。
顏色是自發光的:體素將以自發光的顏色顯示。
顯示點而不是體素:對於包含大量體素的OC樹,顯示可能會很慢。在這種情況下,您可以顯示像素體素,而不是立方體素。
調整下一次插入的顏色:允許選擇新的顏色,該顏色將用於新的體素插入。
點雲(Point clouds)
點雲是充當基於OC樹的點容器的對象:

點雲是可碰撞,可測量和可檢測的對象。這意味著點雲:
可用於與其他基於體積的可碰撞對象(例如OC樹)的碰撞檢測。
可與其他可測量對像一起用於最小距離計算。
可以被接近傳感器檢測到。
可以使用[菜單欄->添加->點雲]將點雲添加到場景,並通過點雲屬性進行編輯。
CoppeliaSim中可用的點雲計算(即碰撞,距離和接近傳感器計算)也可以通過Coppelia幾何例程作為獨立例程使用。
點雲屬性(Point cloud properties)
點雲屬性是場景對象屬性對話框的一部分,該對話框位於[菜單欄->工具->場景對象屬性]。您還可以通過雙擊場景層次結構中的對像圖標或單擊其工具欄按鈕來打開對話框:

[場景對象屬性工具欄按鈕]
在場景對象屬性對話框中,單擊“點雲”按鈕以顯示OC樹對話框(“點雲”按鈕僅在最後選擇的是點雲時出現)。該對話框顯示最後選擇的點雲的設置和參數:

[點雲對話框]
不要使用OC樹計算。結構:默認情況下,點雲使用類似於OC樹的計算結構進行有效的點操作。此結構可能會減慢插入點和刪除點的速度。如果啟用此項目,則點插入將更加有效,但是點雲將不再可碰撞,不可測量或不可檢測,並且某些其他操作也可能會受到限制。您始終可以在以後的階段或通過sim.setPointCloudOptions切換此項目。
最高體素大小:將包含點的OC樹體素的最大大小。大小越小,此點雲所基於的OC樹數據結構將使用的內存就越大。
最高點數/體素:單個OC樹體素可以包含的最大點數。如果需要在此類體素中存儲更多點,它將被拆分為8個子體素,直到滿足約束條件為止。為了有效地進行碰撞檢測,距離計算和接近傳感器檢測,建議在單個體素中存儲大約10-20個點。
插入選定的可見對象:允許基於選定的可見對象插入點。僅考慮虛擬對象,形狀,超頻樹和點雲。選擇要插入的所有對象,然後最後選擇目標點雲對象。形狀將事先轉換為具有指定構建分辨率的臨時OC樹。插入公差項允許通過指定用於確定是否插入點的最小距離公差來避免重複的點。插入公差> 0.0時,點插入將變慢。
減去選定的可見對象:允許基於選定的可見對象減去點。僅考慮虛擬變量,超頻樹和點雲。選擇要減去的所有對象,然後最後選擇目標點雲對象。假人和點雲將使用減法公差值來標識要刪除的點。
清除點雲:從點雲中刪除所有點。
點具有隨機顏色:每個點將具有隨機顏色。
顯示OC樹結構:顯示底層OC樹數據結構,主要用於調試目的。
顏色是自發光的:點將以自發光的顏色顯示。
點顯示比例:包含大量點的點雲可能會減慢渲染速度。通過將比率設置為小於1,將為每個包含點的OC樹體素顯示更少的點數。這僅對顯示/渲染的圖像有影響。
點大小:點的大小,以像素為單位。
調整下一次插入的顏色:允許選擇一種新的顏色,該顏色將用於新的點插入。
外部控制器教程(External controller tutorial)
在CoppeliaSim中,有幾種方法可以控制機器人或仿真:
最方便的方法是編寫一個子腳本來處理給定機器人或模型的行為。這是最方便的方法,因為子腳本直接附加到場景對象,它們將與相關的場景對像一起復制,它們不需要使用外部工具進行任何編譯,它們可以在線程或非線程模式下運行,它們可以通過自定義Lua函數或Lua擴展庫進行擴展。使用子腳本的另一個主要優點是:與本節中提到的後3種方法(即使用常規API)一樣,沒有通信延遲,並且子腳本是應用程序主線程的一部分(固有的同步操作)。但是,編寫腳本有幾個缺點:您無法選擇編程語言,不能擁有最快的代碼,並且除了Lua擴展庫之外,無法直接訪問外部函數庫。
可以控制機器人或模擬的另一種方法是編寫插件。插件機制允許使用回調機制,自定義Lua函數註冊,當然還可以訪問外部函數庫。插件通常與子腳本結合使用(例如,插件註冊自定義的Lua函數,當從子腳本中調用時,該Lua函數將回調特定的插件函數)。使用插件的主要優勢還在於,與本節中提到的後3種方法(即使用常規API)一樣,沒有通信延遲,並且插件是應用程序主線程的一部分(固有的同步操作)。插件的缺點是:它們的編程更加複雜,並且也需要使用外部編譯。另請參閱插件教程。
控制機器人或模擬的第三種方法是編寫依賴於遠程API的外部客戶端應用程序。如果您需要從外部應用程序,機器人或另一台計算機運行控制代碼,這是一種非常便捷的方法。這也使您可以使用與運行真實機器人完全相同的代碼來控制仿真或模型(例如虛擬機器人)。遠程API有兩個版本:基於B0的遠程API和舊版遠程API。
控制機器人或仿真的第五種方法是通過ROS節點。 ROS與遠程API相似,是使多個分佈式進程相互通信的便捷方法。儘管遠程API非常輕巧且快速,但它僅允許與CoppeliaSim通信。另一方面,ROS允許幾乎將任意數量的進程相互連接,並且提供了大量兼容的庫。但是,它比遠程API重並且更複雜。有關詳細信息,請參閱ROS接口。
控制機器人或模擬的第六種方法是通過BlueZero(BØ)節點。與ROS類似,BlueZero是使多個分佈式進程相互通信的一種便捷方法,並且是一種輕量級的跨平台解決方案。有關詳細信息,請參考BlueZero界面。
控制機器人或模擬的第七種方法是編寫一個外部應用程序,該應用程序通過各種方式(例如管道,套接字,串行端口等)與CoppeliaSim插件或CoppeliaSim腳本進行通信。選擇編程語言(可以是任何一種語言)和靈活性是兩個主要優點。同樣,控制代碼也可以在機器人或其他計算機上運行。但是,與使用遠程API的方法相比,這種控制仿真或模型的方法更加乏味。
有8個與本教程相關的場景文件:
scenes / controlTypeExamples /受控ViaScript:一個機器人是通過非線程子腳本控制的,另一個是通過線程子腳本控制的。
scenes / controlTypeExamples /受控ViaPlugin:機器人是通過插件控制的。
scenes / controlTypeExamples / controlViaB0RemoteApi:通過基於B0的遠程API來控制機器人。
scenes / controlTypeExamples /受控ViaLegacyRemoteApi:通過舊版遠程API控制機器人。
scenes / controlTypeExamples / controlViaB0:通過BlueZero界面控制機器人。
scenes / controlTypeExamples /受控ViaRos:通過ROS接口控制機器人。
scenes / controlTypeExamples / controlViaRos2:通過ROS2接口控制機器人。
scenes / controlTypeExamples /受控ViaTcp:通過LuaSocket和TCP控制機器人。

在所有8種情況下,都使用子腳本,主要是為了與外界建立鏈接(例如,啟動正確的客戶端應用程序,並將正確的對象句柄傳遞給它)。有兩種其他方法可以控制機器人,模擬或模擬器本身:使用自定義腳本或附加組件。但是,不建議將它們用於控制,而應使用在模擬未運行時處理功能。
例如,鏈接到場景控制的ViaB0RemoteApi.ttt中的機器人的子腳本具有以下主要任務:
使用某些對象句柄作為參數啟動控制器應用程序(bubbleRobClient_b0RemoteApi)。基於對象B0的遠程API的服務器功能由對象b0RemoteApiServer提供。
作為另一個示例,鏈接到場景控制的ViaRos.ttt中的機器人的子腳本具有以下主要任務:
檢查是否已加載CoppeliaSim的ROS接口
使用某些主題名稱或對象句柄作為參數啟動控制器應用程序(rosBubbleRob)
然而,作為另一個示例,鏈接到場景控制的ViaTcp.ttt中的機器人的子腳本具有以下主要任務:
搜索空閒的套接字連接端口
使用所選的連接端口作為參數啟動控制器應用程序(bubbleRobServer)
本地連接到控制器應用程序
在每次仿真過程中,將傳感器值發送到控制器,並從控制器讀取所需的電機值
在每次模擬過程中,將所需的電機值應用於機器人的關節
運行模擬,然後復制並粘貼機器人:您將看到重複的機器人將直接運行,因為附加的子腳本負責啟動各自外部應用程序的新實例,或調用適當的插件函數。
Work4 <<
Previous Next >> Work5