Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Add-on costs required
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Seirios 是我們的旗艦產品組合,主要讓機器人變得更智能、更敏捷。 在Seirios組合裡,有三個主要產品;
Seirios RNS - 自主機器人導航軟體 Robotic Navigation System
Seirios FMS - 機器人車隊管理系統 Fleet Management System
Seirios Simple - 機器人簡單操作介面 Simple touch-based interface to command robots
將 Seirios RNS 安裝到您的機器人 PC 上,是非常簡單的! 一步一步跟著手冊上的安裝步驟,以確保無痛導入整合和部署 Seirios RNS。
如您需要幫助,或在此過程中有任何疑問,歡迎在此處與我們聯繫。
在下載或安裝 Seirios RNS 之前,請務必檢查以下內容(硬體和軟體),以確保在安裝期間或之後不會出現錯誤。
如果您是現有客戶,請參閱此表單,以提交您所需的預安裝視頻和圖像的 URL。
確保里程計運行正常。
適當地對齊機器人,以測試 3-4 公尺的直線距離,沒有角度。 使用 pub /cmd_vel 進行測試以獲得準確的結果: rostopic pub /cmd_vel geometry_msgs/Twist "linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0"
重新啟動馬達。
檢查 odom 姿勢是否為零。
僅發佈直線性 vel x: 0.1 ,並將機器人停在 3-4 m 標記處。 重複 odom 主題 rostopic echo /odom
。比較 odom 的位子,更新為直線性和轉角度機器人行進(偏移 1-2%)。
請正確對齊機器人。 標記機器人旋轉的位置。
重新啟動馬達。
順時針旋轉機器人,四元數應更新為負數。
重新啟動馬達,並逆時針旋轉機器人,四元數應該更新為正數。
重新啟動馬達,在同一點上旋轉並停止機器人,檢查轉角度姿勢應該要是 0 rad 。
轉角速度校準檢查 - 使用 pub /cmd_vel 進行測試,以獲得準確的結果。
檢查轉角速度至少為 0.1-0.6 rad/s,檢查機器人是否正確旋轉。 我們建議可以錄製影片,以解決可能出現的任何問題。
同樣,重複相同的方法來檢查轉角速度校準。
請執行 rostopic pub /cmd_vel geometry_msgs/Twist "linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0"
將角度 x 數值設置在 0.1-0.6 之間。 將其他值保留為 0.0。
測量機器人轉動了多少。 同樣,記錄轉彎所需的時間。
檢查您的計算,是否與您為角度 z 設置的數值匹配。
或者,您可以使用 rosrun telelop_twist_keyboard teleop_twist_keyboard.py
。 將角速度設置在 0.1-0.5 之間。 然後重複上面的步驟 3 - 5。
確保不會發生輪子打滑,並且機器人能夠直線遠端操作。
只給出直線速度,檢查機器人是否直線行駛,輕微的偏差(- 1 或 2 度)是可以接受的,但不能超過 5 度。
相應地對齊輪子,以測試直線運動,建議在地板上畫線,以確保準確性。
直線移動機器人,並呼應 /odom
主題。
使用指令行介面上的簡單指令即可輕鬆安裝。在開始之前,請確保您的系統安裝了 Ubuntu 和 ROS (x86_64:Ubuntu 20.04 和 ROS Noetic / arm64:Ubuntu 18.04 和 ROS Melodic),以及我們推薦的硬體列表,以享受 Seirios RNS 的最佳性能。
可以向我們Movel AI的代表業務,索取簡易部署的軟體包,也可以從以下鏡像下載。 請確保選擇正確的架構使用該鏡像(請選擇arm64 或 x86架構)
15天免費試用的軟體授權已經包含在此。安裝後,需要協助調整機器人參數和配置,請聯繫您的 Movel AI 代表,或發送電子郵件至 contact@movel.ai 以獲得支持和幫助。
此軟體包不包括客製化功能像是:對接充電站等功能,因為它是需要開發和整合的客製功能。 如果您有對接/客製功能的程式碼,請參考此連結進行整合。
把簡易部署的壓縮zip檔案移至主目錄/home/<USER>,接著使用 Archive Manager 解壓縮該檔案(<USER>指的帳戶使用者名稱)。
現在,我們需要在終端中運行安裝
在解壓縮後的簡易部署資料夾/目錄中,點擊右鍵選單,選擇open a Terminal。
此安裝步驟的目標為,安裝Seirios,且準備catkin_ws
,並新建合適的docker-compose.yaml
檔案。
和上述的終端機相同,請執行該指令bash install-2-seirios.sh
。
等待其安裝程序完成。
安裝後,請重新開機。
The script install_2.sh will not overwrite existing files in /home/catkin_ws , and will maintain backups of configuration files for safekeeping
Seirios 旨在能夠在各種形狀和大小的機器人上運行。
但是,在安裝軟體之前,請檢查機器人是否正常工作,以防止複合錯誤。
在開始檢查之前,請殺死所有 movel 節點(如果您已經安裝)並僅啟動電機控制器,和遠程鍵盤扭曲以進行測試,或者可以使用以下命令:
rostopic pub -r 10 /cmd_vel - for linear linear: x-0.1 for rotation only : angular: z-0.1
請確保機器人以正確的直線速度移動。
需要測試 0.1 - 0.5 m/s 的最小速度。 此外,手動檢查機器人,是否正確覆蓋距離。 我們建議可以錄製影片,以解決可能出現的任何問題。
請開啟新的終端窗口,執行以下指令 : rostopic pub /cmd_vel geometry_msgs/Twist "linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0"
更改此數值 linear: x:
為0.1-0.5 ,因為我們只想讓機器人直線向前移動。 將所有其他值保留為 0.0。
測量機器人移動的距離。 並記錄從機器人開始移動到機器人停止的時間。 通過將距離除以時間,來計算速度。
檢查您計算的速度,是否與您為線性 x 給出的值匹配。
如果數值不相符合,請重新校準您的車輪。
或者,您可以使用 rosrun telelop_twist_keyboard teleop_twist_keyboard.py
。 同樣地,給它一個介於 0.1-0.5 之間的直線速度。 然後重複上面的步驟 3 - 5。
請注意:
如果您的機器人是非完整性約束的,它應該不能橫向滑動。 y 的數值應該是 0.0。
如果您的機器人不具備飛行能力,則 z 應為 0.0。
arm64 (currently unavailable)
arm64 (currently unavailable)
此安裝步驟的目標是,安裝Docker與其子項目。
和上述的終端機相同,請執行該指令bash install-1-docker.sh
。
等待其安裝程序完成。
為了能夠無痛導入Seirios RNS,我們需要在您的機器人系統裡,設置必要的軟體與驅動程式。以下為您的機器人系統裡,安裝前必須具備的檢查清單:
在此模式下,使用者會看到兩種功能:
遙控 - 使用鍵盤或操縱桿,去手動遙控機器人。
紀錄路徑 - 機器人被手動駕駛時,所經路線會被記錄起來。機器人在地圖中移動時將生成一條軌跡(即將推出)
細微控制會自動調整,類似於汽車的油門踏板/加速器,使用者可以通過操縱桿,去設定行駛的速度限制 (0.1 - 0.9 m/s) 。
全方向手動控制,即將推出!
請參閱左側列表或點擊以下的超連結,以獲取更多詳細資料、影像和資訊。
以下為任務列表,需要使用者一次性輸入創建、儲存,並與其他任務一起自主運行的任務。
這些“任務”可以在任務欄右上角的模式列表中找到。 任務創建後,使用者將看到儲存並在庫中查看、添加到隊列或立即運行的選項(需要管理員權限)。
使用者可自行設置,並儲存在地圖內的目標
,以操控機器人前往所存取的目標。
請在地圖中,選取一個目標點。
選擇後,使用者可以通過操縱桿或方向鍵,調整機器人的方向以保存姿勢(位置+方向)的目標。
路徑由 2 個或更多定點所組成,這些定點在地圖中形成一條路徑,使機器人能夠自主導航(具有自動避障功能)。
使用者能夠創建路徑,利用以下功能:
1.Multiple Points
多點路徑,創建兩個或更多定點,使用者能夠在地圖中新增路徑,並且儲存該路徑。
2.Path Recording
路徑標記,是一種手動繪製路徑的方法,使用者可以操控機器人到地圖上標記定點,形成路徑。
為了讓使用者有更多控制及彈性,可以在任務設定中,多加設定時間延遲。
延遲是被視為任務,只會出現在任務管理中,因為它不能單獨作為任務運行,需要連接其他任務。
啟動機器人的馬達和感測器的驅動程式。
請執行 rosnode list
,找出驅動程式ROS節點的名稱。
從第三步驟提供的資訊中,請確保以下:
機器人的馬達驅動程式節點,訂閱/cmd_vel
主題,以獲取速度指令。
光達驅動程式節點,訂閱雷射數據到/scan
主題。
若主題名稱沒有按照第四步驟去設定,需在驅動程式的啟動檔案(launch files)中重新設定,請增加以下格式的指令在啟動檔案(launch files)中:
當機器人底座和光達被啟動,請執行:rosrun rqt_tf_tree rqt_tf_tree
,以及請檢查此frame是否按照以下順序連結:odom → base_link → laser。
若機器人底座(base_link)和光達(laser)的座標(frame)連結錯誤,在光達驅動程式的執行檔案中,請加上以下指令:
在驅動程式的節點運行中,若要執行RVIZ,請使用rosrun rviz rviz
,並確保以下:
雷射數據 ("/scan")
有呈現出來,且方向是正確的。
在遠端遙控時,請確保運動方向是正確無誤。
請確保機器人里程計("/odom")
更新正確。
對於自主操作,使用任務管理器,將不同的任務排列在一起,並加入不同的元素,例如延遲和站點。
使用者可能會有不同編輯地圖的需求,此地圖編輯器,能夠讓使用者去創建,以下功能:
地圖標記 - 為該區域命名。
創建禁區 - 機器人無法進入的區域。
創建非禁區 - 當在建置地圖時,使用者已清空該區域,變成機器人可進去區域時,或是當要取消禁區時,可以使用此功能。
使用者可以點擊此圖示,進去此地圖編輯器。
進入此功能後,將有許多不同的選項去編輯地圖。
選項是按照形狀分類 - 用戶可以在其中選擇是否註釋/命名、創建禁區和非禁區。
這些類別是“正方形
”、“多邊形
”和“其他
”(單線)
單條線作為選項,可用於創建精確和薄的障礙物,例如牆壁。
舉此節點“/motors_ctrl”
為例,發佈到擁有“nav_msgs/Odometry”
訊息類型的“/odom”
主題,以及列表中的其他主題,也需訂閱擁有“geometry_msgs/Twist”
訊息類型的“/cmd_vel”
主題。
請至該資料夾‘/home//catkin_ws/movel_ai/config/movel/config/’
在參數文件costmap_common_params.yaml中,請確保清楚且正確地,定義出機器人的輪廓(footprint)。
如果機器人的輪廓(footprint)是多邊形,可自行配置機器人輪廓的參數,並取消註解圓形的機器人輪廓(robot_radius),以下為範例:
當圓形的機器人輪廓(robot_radius)被取消註解時,機器人有正方形的輪廓,如圖所示,四個角的XY座標:
如果機器人的輪廓是圓形的,可配置圓形的機器人輪廓(robot_radius)的參數,並且取消註解機器人的輪廓(footprint),例如:
在此文件base_local_planner_params.yaml中:
請前往 “#Robot
” 區域,如要調整機器人的速度, 可配置max_vel_x
為線速度,以及配置 max_vel_theta
為角速度。若機器人無法達到最快的速度,可增加acc_lim_x
和acc_lim_theta
。在footprint_model中,請選擇適合的模型並配置相對應的參數。
在“#Obstacles
”區域,可調整min_obstacle_dist
的數值,去設定機器人與障礙物的最小距離,若機器人需要進入狹窄的地方,需減少參數數值。
若自主導航運動不順暢,請前往“catkin_ws/movel_ai/config/cmd_vel_mux/config”,尋找cmd_vel_mux.yaml,並且提高timeout_autonomous
的數值。
如需base_local_planner_params.yaml深度調整,請參閱
Seirios RNS 支援多種建置地圖演算法,詳情請見以下: (僅限桌面瀏覽) ➡️
可以讓使用者不需要手動建置地圖,不管地圖有多大,皆可使用自動建置地圖的功能。此功能源自牆壁檢測工程的專案。
自動建置地圖功能不需要人工手動控制。
請注意!地圖不會自動存取,需點擊"暫停"去儲存地圖模型。
這是最常見建置地圖的方法,是從架在機器人上的攝影機,去生成周圍環境的地圖。
使用者可以手動去遠端遙控機器人,以“顯示”地圖中白色區域所代表的地圖。
建置3D地圖需要:3D光達和一台近代的Intel/AMD x86 CPU。
為了獲得更高的精確度、範圍和更好的環境特徵視覺呈現,使用者可以選擇 3D 地圖。 2D 地圖也可從 3D 地圖生成。
RTAB-Map 即時外觀建圖演算法是一種基於RGB-D、立體和光達圖的SLAM方法,基於增加外觀的閉環檢測器。
正如名字所述,這是使用即時影像去建圖的方式。
ORB SLAM 是一種基於關鍵幀和特徵的單眼 SLAM。 它在大型環境中即時運行,能夠從非常不同的視點閉合迴路並執行相機重新定位。
Seirios可利用單眼相機、立體相機、深度相機,去生成2D地圖,地圖中的綠點就是辨識後儲存在地圖的特徵點。
擁有相似深度感應功能的相機,也可以做替代。
要如何整合您自己程式碼?更多訊息,請參考
除了界面上的直觀功能外,Seirios RNS 還具備了雖然在使用者界面上不顯著,但十分重要的機器人內建功能,可以默默地為機器人提供動力,使機器人能夠在具有挑戰性的環境中精準移動。
請參考以下文章,以了解更多資訊。
如果您只是在試用的軟體授權,請跳過此步驟。
要查看試用軟體授權的剩餘天數,請在您選擇的瀏覽器中輸入localhost:1947
單張Seirios RNS授權只能綁定單一機器人,因此,如RNS授權已被啟用,就無法再接受轉移或在其他機器人上使用。
檢索 c2v檔案
/home/<USER>/catkin_ws/movel_ai/license/hasp_34404.c2v
c2v
(customer-to-vendor)是機器人的指紋,Movel AI需要此檔案去生成軟體授權產品。
請傳送c2v檔案給help@movel.ai,以申請軟體授權的啟用。
Movel AI會回傳含有安裝說明的v2c檔案。
請再回傳已被啟用授權的c2v檔案給Movel AI。
請好好保存v2c檔案以及c2v檔案,以備未來Movel AI參考使用。
排程管理此功能是給使用者,以達到以下功能:
檢視過去、現在、未來的,任務排程列表
重新安排任務 ( 僅限管理員 )
目前有兩種方式可以去檢視排程管理:
方法一 : 在首頁中,點擊中間白色的狀態列,排程管理就會出現。
方法二 : 若不是在首頁,請點擊左上角的圖示,就會引導到排程管理的頁面。
可以在設置功能列中,自行設定客製化
點擊左上角的功能列圖示,可以顯示設置模式。 在這裡,您將找到以下設置;
開啟此功能後,機器人將在偵測到人類時自動停止移動。可以預先編程自定義輔助命令(例如關閉紫外燈)。 可客製化用於特殊案例,偵測人類此功能通常會讓機器人做出某些行為,例如:
當紫外線消毒機器人偵測到人類時,紫外線燈光就會自動熄滅,這功能可保護人類,免於受到紫外線燈光直射的影響。
啟動此功能,在遇到障礙物時,機器人會自動停下來,直到障礙物被移除,以確保安全。
此功能特別有用,尤其是在脆弱環境中,機器人會立即停止,不會激進且持續嘗試,最後等待人工指示。
遠端操控時,即使在手動、遠端遙控模式下,機器人在遇到障礙物時,都會自動停止。
由於機器人並不總是在人類使用者的視野範圍內,即使在手動/遠程操作模式下,機器人也會在遇到障礙物時自動停止。 這可能會有潛在的機器人意外行為,因此使用者可以選擇關閉或開啟。
使用者能設定電池剩餘多少%時,需要自動回充電站充電,如使用者嘗試要移動機器人,機器人會跳出警告,並且重新嘗試返回充電站充電。
在站點充電時,如果使用者打算切斷機器人的連線,軟體將警告並提醒使用者禁用此電池回退切換 - 因為機器人將繼續重新嘗試返回充電站充電。
為確保僅允許授權人員連接和操作機器人,使用者可以創建新群限,以向最終使用者或員工提供使用權限。
權限管理功能目前正在重新設計,請期待更新!
目前,在 Seirios RNS 中,除英文之外,僅支持中文(繁體和簡體)作為額外語言。
對於其他語言,請多加利用您瀏覽器的翻譯器(像是Chrome 版的Google翻譯)。
使用者可在不同環境或條件下,自行設定螢幕的明暗模式。
使用者可去掃描和診斷,硬軟體是否出現錯誤,且會有錯誤紀錄,以供未來查證。
為了防止碰撞到人類的小腿、腿、或是細長的障礙物,此功能已在Seirios中內建,以防止意外碰撞。
這也適用於其他細長的障礙物,例如桌腳和椅子腳。
此功能為機器人內建功能。
使用者登入後,你會看到的第一個頁面就是儀表板。在建置、儲存和下載地圖後,地圖將在此處呈現視覺化。
速度控制(直線/轉彎)、方向控制(操縱桿/鍵盤),以及與模式相關的按鈕,都將顯示在此面板中。 該面板也可以切換為隱藏或顯示。
請注意!急停會切斷電機的電流,並使機器人無法移動。 要中止/清除隊列中的任務,請改選擇清除任務。
Seirios RNS 能夠在不平坦和崎嶇的地形上導航 - 當機器人處於傾斜/向下位置時,由於傾斜和不同的 FOV 角度,通常會導致定位失敗的情況
這些環境還包括帶有路緣石和坡道的環境——常見於日常公共場所。
目前支援的坡度 : ∠15°
成功案例 : WSS
儀表板是使用者可以在下載的地圖中,查看所有連接的機器人的地方。
從這裡,使用者能夠看到已被註釋的區域 - 由使用“地圖註釋”此功能,創建的彩色多邊形顯示。
(如下圖)
&
車道可以讓機器人在敏感和不可預測的環境中,仍然可以保持精確導航的方式,車道可存在於以下範例:
-群組Groups (domestic lanes)
-群組之外Outside groups (global lanes)
車道由節點和邊組成,可能是單向道或雙向道的方式。
用戶可以通過兩種方式導入機器人:
通過手動輸入機器人的 IP 地址
.csv 導入工具
導入後,機器人管理器頁面將為用戶提供完整的機器人列表,包括各自的名稱、IP 地址和電池狀態。
由於各種因素,定位可能會造成漂移,使用此功能去手動調整定位,是非常重要的。
從模式切換器中,選擇 定位Localize 按鈕並單擊。
手動將激光掃描正確對齊現有環境後,單擊儲存以進行本地化。
安裝Seirios 的AGV能夠成功辨識棧板,並且正確地停靠在棧板旁,偵測出適合的位置去做對街的動作(適用於需要拾取和放置棧板的環境)。
For illustration only
功能尚未開放,仍在開發中。
為了快速調解擁堵或事故,用戶可以快速選擇並命令機器人,離開其操作區域,到地圖中的任一個點。
單一機器人Single robot:
左鍵點擊選擇left click to select
右鍵點擊給指令right click to command
多台機器人Multiple robots:
左鍵點擊並拖拉到該台機器人(介面上會呈現多少台和種類的機器人被選取)
右鍵點擊並給指令到單一目標(所有機器人會嘗試,導航到該目標)
命令機器人到群組外的目標,將會從原本的群組中移除,並委派給新的群組。
產品功能列表
任務只能在 Seirios RNS 中創建,並通過地圖庫導入 Seirios FMS。
相關任務將與地圖一起導入進FMS。
從 Seirios RNS 導入地圖後,相關任務(路徑、導航點、區域等)也將自動導入。
可以將任務添加到隊列中(如下所示)並委派給隊列。
任務會根據距離自動委派給機器人——離任務最近的機器人將優先接收。
使用者將能夠通過單擊屏幕右下角的“任務”,來查看排隊的任務。
出於安全目的,FMS可以使用用戶憑據保護 FMS。
擁有所有者-管理員-用戶層次結構權限,和訪問權限支援多個用戶。
只有“所有者ower”和“管理員admin”才能刪除用戶/員工。
需手動開啟此功能,機器人靠近對接站時,會自動偵測對接。
此選項會觸發對接序列,並且自動對接上該棧板。
此選項將在即將推出的 UI 改造中,重新定位到介面上的不同頁面,以便使用者輕鬆啟用對接序列。
Timed Elastic Band (TEB)根據執行時間、與障礙物的距離、和運動學約束,來執行優化機器人的軌跡。
teb_local_planner
改善導航功能此指引是給那些選擇使用 teb_local_planner
的人,導航您的機器人。更多資訊,請點擊 .
Filepath: catkin_ws/movel_ai/config/movel/config/
File to modify: base_local_planner_params.yaml
請注意,local planner的配置文件位於 movel
安裝包中。在 yaml 文件本身中,裡面包含 3 個local planner,但我們只會使用其中一個。 取消註釋 TebLocalPlannerROS
下的整個部分。
一種好的做法是,僅包含您需要的內容(如果之前評論過,請取消評論)並註釋掉其餘內容。
這些是可以配置的參數,以下將解釋如何調整這些參數。
警告:yaml禁止tab鍵。 編輯 yaml 文件時不要使用tab鍵來縮排。 此外,檢查縮排是否正確對齊。
使用TEB Planner去配置Seirios後,需要同步TEB Planner指定的最大速度。
Filepath: catkin_ws/movel_ai/config/velocity_setter/config/
File to modify: velocity_setter.yaml
檢查local_planner
在base local planner的配置中,是否匹配planner的名稱。 您將配置在TEB Planner中指定的最大速度。
rviz:使用 2D Pose Estimator 工具,在地圖上精確定位機器人的位置。 您可以使用 LaserScan 來幫助您 - 將尺寸 (m) 增加到至少 0.05,並嘗試將 LaserScan 中的線條與地圖盡可能匹配。
Seirios:請至導航定位此功能,使用鍵盤或操縱桿按鈕,將激光的線條與地圖盡可能地對齊。
Filepath: catkin_ws/movel_ai/config/movel/config/amcl.yaml
File to modify: amcl.yaml
Amcl 配置文件與 base_local_planner_params.yaml
位於同一目錄中。
同樣地,Amcl 文件中有很多參數,儘管我們只需要這兩個參數:
配置min_particles
和 max_particles
來調整精確度。
若你想要更精準的定位,你可以增加數值。但是請根據你地圖的尺寸,來調整該數值,若在小地圖裡有太多的粒子(particles),代表著會有多餘的粒子,會消耗太多的電腦運算能力。
teb_local_planner
參數本節提供,關於 TebLocalPlannerROS 的參數列表中數值的建議。 返回到相同的 base_local_planner_params.yaml 文件。
TEB 需要做很多調整,才可達到你期望值,其中會需要許多測試與偵錯的過程。
對於不同種類的機器人調整,請參考機器人製造商的配置。 您設置的任何參數都必須在您的機器人可以處理的範圍內。
小撇步: 每一次的調整,請先微調參數,去觀察機器人的變化。
可調整的參數,可以分為以下幾類:
Robot機器人
Goal Tolerance目標容錯
Trajectory機器人軌道
Obstacles障礙物
Optimisation機器人優化
請根據製造商指定的配置,調整機器人相關參數。 即為速度和加速度設置的值,不應超過機器人的硬體限制。
運動學Kinematics
vel
參數限制了機器人的移動速度, acc
參數限制機器人可以加速的速度, _x
指定線性運動學,而 _theta
指定角度運動學。
足跡模型Footprint Model
從字面上看,就是指腳印,理想情況下,將佔地面積配置為略大於機器人的實際測量值, 應該根據機器人的測量來配置footprint_model
。
半徑radius
需要輸入此類型 type: "circular"
頂點vertices
需要輸入此類型 type: "polygon"
目標容錯
Goal Tolerance可指定您願意容忍的偏離目標點的程度。
xy_goal_tolerance
是距離目標可接受的直線距離,以meter為單位。
不應將 xy 值設置得太高,否則機器人將停在非常不同的位置。 但是,需要一些餘地來解決機器人漂移等問題。
yaw_goal_tolerance
是機器人方向的偏差。 例如:目標指定機器人應直接面向牆壁,但實際上,機器人稍微面向左側。
不應給出太緊的偏航公差,否則機器人可能會為了獲得正確的方向而四處晃動。 就效率而言,這可能並不理想。
指的是決定機器人在障礙物前應如何表現。
需要進行實驗來調整planner以最適合地方式接近障礙物。 風險高的配置將允許機器人,在障礙重重的路徑中移動,例如:在狹窄的走廊,但它可能會卡在障礙物周圍或撞到障礙物;更保守的配置可能會導致機器人排除其唯一可用的路徑,因為它認為它離障礙物太近了。
最棘手的部分是,要如何在這兩種情況之間取得平衡。
min_obstacle_dist
是您希望與障礙物保持的最小距離。
inflation_dist
是在障礙物周圍添加的緩衝區。
除了在local planner,配置障礙物行為處理外,我們還可以配置代價圖。
代價地圖會告訴機器人,機器人移動到特定點需要多少成本。 成本越高,機器人越不應該去那裡。致命的障礙物可能損壞機器人,將會付出超高的成本。
Filepath: catkin_ws/movel_ai/config/movel/config/
File to modify: costmap_common_params.yaml
文件在同一目錄中base_local_planner_params
。
footprint
必須與base_local_planner_params.yaml中指定的測量相匹配。
你可以選擇將common_costmap_params
中的部分或全部圖層添加到global_costmap_params
和local_costmap_params
。
本節中最重要的是,要讓機器人的足跡正確。
小撇步: 首先調整 teb_local_planner
參數,在此之後,若需要微調更多時,才需修改代價地圖。
這一層膨脹了致命障礙物周圍的邊緣,且可指定你想讓障礙物膨脹多少。
inflation_radius
是地圖將障礙物成本值膨脹到的半徑,以meter為單位。 通常它是機器人的寬度,加上一些額外的空間。
cost_scaling_factors
是在膨脹期間,應用於代價縮放因子。
The
inflation_radius
is actually the radius to which the cost scaling function is applied, not a parameter of the cost scaling function. Inside the inflation radius, the cost scaling function is applied, but outside the inflation radius, the cost of a cell is not inflated using the cost function.You'll have to make sure to set the inflation radius large enough that it includes the distance you need the cost function to be applied out to, as anything outside the inflation_radius will not have the cost function applied.
For the correct
cost_scaling_factor
, solve the equation there ( exp(-1.0 * cost_scaling_factor * (distance_from_obstacle - inscribed_radius)) * (costmap_2d::INSCRIBED_INFLATED_OBSTACLE - 1)), using your distance from obstacle and the cost value you want that cell to have.
理想情況下,我們希望設置這兩個參數,使膨脹層幾乎覆蓋走廊,機器人在障礙物之間的中心移動。
(請見下圖)
障礙層在代價地圖上標出障礙物,它會追蹤感測器數據記錄的障礙物。
若要建置2D地圖,一定要選擇laser_scan_sensor
。
obstacle_range
是將障礙物插入代價圖後,與機器人的最大距離。 其數值為 10,表示代價地圖將標出距離機器人10 米以內的障礙物。
raytrace_range
是光線追蹤障礙物的範圍(以meter為單位),此數值必須根據您的感測器做設置。
max_obstacle_height
是添加到代價地圖的障礙物的最大高度。若此障礙物非常高,請增加此數值,並根據你的感測器去做設置。
體素層參數Voxel layer parameters
origin_z
是地圖的 z 原點(米)。
z_resolution
是立方體的高度。
z_resolution
controls how dense the voxels is on the z-axis. If it is higher, the voxel layers are denser. If the value is too low (e.g. 0.01), you won’t get useful costmap information. If you set z resolution to a higher value, your intention should be to obtain obstacles better, therefore you need to increasez_voxels
parameter which controls how many voxels in each vertical column. It is also useless if you have too many voxels in a column but not enough resolution, because each vertical column has a limit in height.
z_voxels
是體素的數量。
低障礙層是障礙層,但帶有附加參數。 將您的observation_sources
更改為,您要從中獲取數據的主題。
如果您想要 PointCloud (3D),請使用 obs_cloud
;如果您想要 LaserScan (2D),請使用 mock_scan
。 或者您可以指定自己的方法。
這裡有兩個重要參數,需要特別注意。
min_obstacle_height
是機器人底座下方障礙物的高度。 像是包括樓梯,調整此參數,以便機器人可以檢測到下方的障礙物,並防止其掉入坑中..
max_obstacle_height
是障礙物的最大高度,通常指的是機器人的高度。
參數調整時,一定會需要有實驗的過程,在這過程中一定會有些問題,所以建議您在修改 yaml 文件之前先在控制台中測試您的值。
rosrun rqt_reconfigure rqt_reconfigure
已知問題和可能修復的清單並不詳盡,在廣泛使用機器人的過程中,還會遇到更多的問題。 因此,整理出一系列問題和解決方案的清單是一種很好的做法,這樣您就知道在問題再次出現時如何處理。
問題#1: 讓機器人去狹窄路徑的另一邊的問題。
從觀察中可以看出,機器人將返回目標失敗,或者機器人會將自己靠近牆壁並卡在那裡。
問題 #2: 讓機器人旋轉90度的問題。
The planner不知為何無視牆壁的存在,並指示機器人穿越過它,而不是繞過牆壁迴轉 90 度。 儘管似乎大多數機器人都足夠聰明,可以識別出它們無法穿過牆壁,並且執行中止目標,或是嘗試中陷入困境。
解決方案 #1: 降低速度和加速度。 直覺是,通過減慢機器人的運動和旋轉速度,The planner可能有更多時間對障礙物做出反應並做出相應的計劃。
解決方案 #2: (對於那些拒絕去走廊另一邊的機器人。)
縮小兩個代價地圖中的inflation_radius
,使其不覆蓋走廊。(如右圖)觀察注意到,如果半徑覆蓋整個走廊,機器人可能會拒絕移動。
檢查機器人的足跡大小是否正確,並檢查代價地圖是否沒有阻擋到路徑。
如需更多資訊有關Planners和Tuning Planners,請詳閱以下為外部資源。
ROS Wiki
從機器人列表中,用戶應該能夠選擇感興趣的特定機器人,從中導入地圖。
添加地圖後,可以將任務添加到組隊列中以供機器人執行。
目前,一次只能下載一張地圖。
查看 Seirios FMS 的用戶界面,請輸入 或是 <IPaddress>:3000 在您選擇的瀏覽器中。
推薦以下設備和分辨率,以提供Seirios FMS 用戶界面的最佳性能:
Device Type | Recommended Devices | Minimum Screen Size (W x L) | Orientation |
---|
Seirios RNS 導航軟體有提供REST APIs 給您使用,讓你可以整合和更進階的部署功能,
請在電腦上輸入localhost:8000
或是 <IPaddress>:8000
,就可看到一連串APIs的列表。
或是你也可以在此下載檔案瀏覽APIs的相關資訊 ⬇️
更多資訊,請點擊此連結 。
您必須指名機器人足跡的類型type
。 不同的類型包括多邊形polygon
、圓形circular
、two_circles
、線line
、點point
等。為簡單起見,足跡通常是圓形或多邊形。更多資訊,請點擊此連結 。
有關避障與罰則,請點擊此連結 。
其他避障參數調整的相關問題,請點擊此連結。
代價圖中添加了幾個圖層,通常我們遵循這裡的規範 。
對於您決定使用的代價地圖圖層,您必須將這些圖層作為插件安裝到 global_costmap_params.yaml
和 local_costmap_params.yaml
中。更多有關global和local的代價地圖差異資訊,請點擊該連結 。
額外的正確配置資訊 (directly lifted from )
體素是在空間中具有相對位置的 3D 立方體,可用於深度相機的 3D 重建,如果您不使用 3D,請忽略以下參數。更多相關訊息,請點擊連結
Desktop | Windows or Mac | 1440 x 1024 | Portrait & Landscape |
Tablet | iPad Mini and above | 768 x 1024 | Landscape |
Mobile | currently unsupported | currently unsupported | currently unsupported |
功能尚未開放,仍在開發中。
The Pebble Planner 是一個簡單的本地規劃器,旨在密切遵循全球規劃。其優點包括更少的可配置參數,調整指引和更少的擺動運動。
Pebble planner takes the global plan, decimates it to space out the poses as “pebbles”, then tries to reach them one by one.
It does this by rotating towards the next pebble, then accelerating until max velocity is reached.
Filepath: catkin_ws/movel_ai/config/movel/config/
File to modify: base_local_planner_params.yaml
Same steps as setting up for TEB Local Planner. In the file, uncomment the section PebbleLocalPlanner
to set your local planner to use Pebble.
Filepath: catkin_ws/movel_ai/config/velocity_setter/config/
File to modify: velocity_setter.yaml
Change the param local_planner: "PebbleLocalPlanner"
.
Make sure you changed the params in both files or else error may be thrown.
Compared to TEB, pebble planner has fewer configurable params.
Can be generally classified as Probably Important, Optional and Can Be Ignored.
d_min - Min distance of the next pose, to qualify as a pebble. If you feel the robot is oscillating too much, increasing this value helps.
allow_reverse - Determines whether the robot can move backwards or not. Set this value to false if you don't want your robot to be moving backwards. Recommended if your robot doesn't have sensors at the back.
acc_lim_theta - Limits the angular rotation. Pebble planner will rotate the robot towards the next pebble, then accelerates towards it (till max speed). Planned path may be straighter if angular acceleration is lowered.
xy_goal_tolerance - Tolerable distance away from the intended goal.
yaw_goal_tolerance - Angular tolerance between where you want the robot to face and where it actually faces.
acc_lim_x - Limits how fast the robot speeds up to the next pebble. Robots need time to think and stop when it sees an obstacle. Robots may have less time to react if it is previously speeding.
local_obstacle_avoidance - Whether you want Pebble Planner to handle obstacle avoidance or not. Else, obstacle avoidance will be handled by global planner.
N_lookahead - How many pebbles to look ahead when evaluating obstacles.
max_vel_x, max_vel_theta - These values will be set by the UI depending on what values you give there. Can ignore if you are using the UI.
(kp, ki, kd values) - Probably just configurations for differential drive.
external_process_handler 外部設備整合包是一套完整的程序,可以提供使用者去執行外部的任務,整合到Seirios的介面上。
Pre-setup: 請確保你的Seirios運行正常。
本指南向您展示如何使用 external_process_handler
外部設備整合包,將您自己的程序作為插件整合到 Seirios 中。
您將會需要:
Seirios 導航軟體
您自備的程式碼
請確認您的ROS版本。
若您是 Ubuntu 20.04, ROS Noetic的使用者 :
請至以下連結下載 .deb package: https://drive.google.com/drive/folders/1hpi5NaSkFyr6QVXs83taxeHjWLulw8SH
移動 .deb 此安裝包的你的資料夾,打開終端視窗,請執行此指令 sudo apt install ./ros-noetic-movel-seirios-msgs_0.0.0-0focalXXX64.deb
以下載安裝。
其餘版本的使用者:
Git clone this repo here: https://gitlab.com/movelai_public/movel_seirios_msgs/-/tree/master/srv into your catkin workspace.
Run catkin_make
this repo to compile so that it will be usable.
你需要功能去與 external_program_handler
溝通,以執行你啟動的指令和停止的指令。
你的程式中必須有一些東西可以告訴 Seirios 啟動程序和停止程序。 啟動時,可以使用 ROS 服務或啟動文件來完成。 需要停止時,可以使用 ROS 服務或訂閱主題來完成
以下為程式碼範例 (python and c++)
請確保您正在複製正確類型的程式碼。 不要將 c++ 代碼複製到 python 程序中,反之亦然。
啟動Starting
在您的程序中,添加一個服務,將其命名為 service_start
。 編寫一個處理程序 start_handler
作為回調來處理您的啟動程式碼。
停止Stopping
將另一個服務初始化為service_stop
。 同樣,編寫一個回調 stop_handler
來處理您的程式碼以停止程序。
你必須使用Seirios程式包。
movel_seirios_msgs以執行service_start和service_stop。
要使用該程式包,請在下面添加導入語句。 如果您使用 C++,還必須包括其他配置。
C++ 的額外配置
對於 C++ 程序,您還必須在自己包中的 package.xml 中添加 movel_seirios_msgs
包作為相依
在自己的程式包CMakeLists.txt中, 添加 movel_seirios_msgs
,在此 find_package
之下。
如果您是從 UI 發布停止主題來停止程序,請參閱本節。 否則,忽略它。
請撰寫訂閱者 topic_process_cancel
去訂閱此UI主題, 其中 handle_publish_cancel
的回調中,請包含您的停止程式碼。
請確保topic_process_cancel
訂閱正確的UI主題。
1.3. 發布客戶的狀態
如果您從啟動文件啟動程序,請參閱本節。 否則,忽略它。
這樣做的目的,是要檢查從啟動文件,啟動程序後您的程序,是否有運行成功。
請撰寫發布者 client_status
,如果運行成功,請發佈2 ; 如果運行失敗,請發布3。
您可以參考範例程式碼,了解如何使用外部設備整合包,來去啟動程序和停止程序。
回調函數中的程式碼,只是用於測試 external_process_handler
的填充代碼。 可以使用您自己的開始程式碼和停止程式碼來替換它們。
更改您自己的程式碼後,你還需要去配置task_supervisor
,才能讓Seirios在你的程式上運行。
external_process_handler
根據您啟動/停止程序的方式設置 service_req
、launch_req
和 topic_cancel_req
的布爾狀態。
參數 service_start
、service_stop
、topic_process_cancel
、client_status
必須與您在自己的文件中提供的主題和服務的名稱相匹配。
將您的程式作為插件添加到task supervisor,以便 Seirios 運行,將配置插入 task_supervisor.yaml
Filepath: ../config/task_supervisor/config/
File to modify: task_supervisor.yaml
警告:yaml 文件禁止tab鍵。 編輯 yaml 文件時,不要使用tab鍵來縮排。
在task supervisor的插件部分下,插入以下程式碼。 縮排必須與其他插件對齊。 您可以提供任何name
和type
,但要確保它們不會與其他插件衝突。 請不要更改class
。
在文件的末尾中,使用您在上面提供的name
創建一個新部分。 請貼上該參數。
對於 C++ 程式,請記住在您自己的程式包中,要正確設置 CMakeLists.txt
和 package.xml
。
欲了解更多信息,請點擊此處。 click here.
Seirios可支援各式各樣的感測器,也支援各種不同的組合,提供給不同應用層面的機器人 。
以下展示的感測器,皆經過Seirios RNS安裝測試過,都可以在各式的機器人種類上順利執行。
如果您在下面沒有看到熟悉或想要的感測器,請根據可用感測器的技術規格,進行基準測試。 並聯繫我們 help@movel.ai 進一步詢問!
電腦、迷你 PC 和其他開發板配備 x86 或 ARM64 芯片。 點擊下一步,以查看經過 Seirios 測試硬件。
電腦處理能力對於在機器人上運行 Seirios RNS 至關重要。 隨著安裝的感測器越多,將需要分配更多的計算能力 - Seirios 可用的計算能力將減少
以下是推薦的 PC/板規格,以讓 Seirios RNS 上的每個功能,都可以享受到此效能:
PC with x86 processor (4 cores with 8 threads @ >3.1GhZ) 或是 ARM64 (8 cores)
8GB DDR4 RAM
256GB SSD
Ubuntu 20.04 & ROS Noetic (x86) 或是 Ubuntu 18.04 & ROS Melodic (ARM64)
WiFi connectivity 802.11a/b/g/n/ac
以下為我們使用 Seirios RNS 測試過的特定 PC 和開發板。
x86-64 系統廣泛用於大多數機器人系統,和具有緊湊型 PC 的機器人中。 它具有高計算能力,且支援多種硬體感測器。
請確保您的機器人系統,有足夠大的電池,以適應其操作使用。
Coming soon!
Seirios RNS 與以下基於 ARM 的系統和套件兼容。 基於 ARM 的板具有高能效,但缺乏計算能力(與 x86-64 / AMD6 系統相比)。
這些板上將不提供一些計算密集型功能,例如 3D LiDAR 映射和導航或多種感測器的支援(例如 三個不同的感測器)。
相機鏡頭對於導航和定位至關重要。 一些品牌/型號具有 IMU整合,用於精確導航的附加功能。
360° 相機可用於許多應用層面,例如清潔應用和安全巡檢應用。
光探測和測距 (LiDAR) 感測器在許多設置、情況和應用中都很有用。 它不依賴視覺光去進行路徑規劃、導航和定位。
在短距離內很有用,可以使用此感測器,去檢測位置較低的障礙物。
低功率感測器; 通常用於透明的障礙物檢測,例如玻璃或塑料面板。
如果您不確定您的感測器是否有被支援,請來信 help@movel.ai 聯繫我們。
地圖可能非常大,難以識別特定操作的區域。
使用地圖註釋功能,用彩色多邊形,註釋欲註釋的區域。
Seirios FMS 是一個車隊管理系統,在本地(網絡)的單獨 PC 上。
在連接機器人(安裝了 RNS)的同一網絡上,FMS 和 RNS 之間交換資訊。
在Seirios FMS 的獨立PC 上,以下為軟體依賴性和要求;
Sentinel HASP (for software licensing)