工程筆記本 / AI 人工智慧

AI 人工智慧

AMR ROS2光達搬運機器人 -使用NVIDIA Orin Nano-入門操作篇

徐 豐智📅 2024-03-22👁 30

簡介

本文是接續之前AMR ROS2光達搬運機器人的功能介紹篇,內容涵蓋上一篇文章中展示的部分基礎功能,將會透過動圖簡單講解如何從啟動環境到實際在地面進行移動的操作步驟,還有說明導航地圖介面的操作與操作時的常見問題   AMR ROS2光達搬運機器人 規劃貨品搬運路線-使用NVIDIA Orin Nano-功能介紹篇 https://blog.cavedu.com/2024/03/08/amr-ros2-nvidia-orin-nano-introduction/  
撰寫/攝影 楊子賢
時間 1小時 材料表
  • RK-AMR ROS2 光達搬運機器人 (有興趣歡迎來信service@cavedu.com)
  • 場地圍牆
  • 筆電電腦 (連入 ROS2 搬運機器人 編寫程式)
難度 2(滿分5)
 

軟硬體背景

NVIDIA Jetson Orin Nano Jetpack 5.1.1 L4T 35.3.1 Ubuntu 20.04 LTS  

如何啟動環境

在啟動前需要先關閉MobaXterm的X11擴充功能RANDR,否則可能會遇到像是下面訊息中的XCB錯誤,修改後會要求重啟X11伺服器,按下"是"後就能開始使用 [pastacode lang="python" manual="QXcbConnection%3A%20XCB%20error%3A%20145%20(Unknown)%20..." message="MobaXterm的X11擴充功能RANDR" highlight="" provider="manual"/]   使用時需要先建立一個docker容器,使用docker可以保持系統環境的一致性,避免受到之前的操作影響,指令執行完成後就會進入docker環境內,開啟時會自動載入設定檔,要離開環境時輸入"exit”即可 [pastacode lang="python" manual=".%2Frun_docker.sh" message="遠端Terminal指令" highlight="" provider="manual"/]   遇到需要在docker執行其他程式的情況時,可以開另外一個終端機,使用以下指令連接到docker環境並載入ROS2設定檔就可以正常操作 [pastacode lang="python" manual=".%2Frun_docker.sh%0Asource%20ros_entrypoint.sh" message="開另外一個終端機,遠端Terminal指令" highlight="" provider="manual"/]  

如何執行遙控程式

首先要開啟docker環境,如果看到命令列最前方的使用者是root,就代表已經在docker環境內了 [pastacode lang="python" manual=".%2Frun_docker.sh" message="遠端Terminal指令" highlight="" provider="manual"/]   接著執行有底盤操控功能的程式,這邊用最簡單的溝通程式當範例,繪製地圖與導航程式也同樣有遙控的功能,看到畫面不再跳出訊息代表已經準備好了 [pastacode lang="python" manual="ros2%20launch%20ugv_bringup%20base.launch.py" message="遠端Terminal指令" highlight="" provider="manual"/]   這時再開啟另外一個終端機連接到docker環境,並載入設定檔 [pastacode lang="python" manual=".%2Frun_docker.sh%0Asource%20ros_entrypoint.sh" message="開另外一個終端機,遠端Terminal指令" highlight="" provider="manual"/]   執行遙控程式並等待程式啟動完成後,就能夠以鍵盤輸入遙控機器人: 前進: i 後退: , 原地左轉: j 原地右轉: l 前進左轉: u 前進右轉: o 後退左轉: m 前進左轉: . [pastacode lang="python" manual="ros2%20run%20ugv_teleop%20ugv_teleop" message="" highlight="" provider="manual"/]  

如何執行地圖繪製程式

剛上面一樣要先開啟docker環境,如果看到命令列最前方的使用者是root,就代表已經在docker環境內了,不用重複執行 [pastacode lang="python" manual=".%2Frun_docker.sh" message="" highlight="" provider="manual"/]   執行地圖繪製程式,等待程式啟動完成就會跳出操作視窗 [pastacode lang="python" manual="ros2%20launch%20ugv_bringup%20carto.launch.py" message="" highlight="" provider="manual"/]   這時候再開啟另外一個終端機,進到docker環境並載入設定檔 [pastacode lang="python" manual=".%2Frun_docker.sh%0Asource%20ros_entrypoint.sh" message="" highlight="" provider="manual"/]   執行遙控程式後,就可以操控著機器人到處繪製地圖 [pastacode lang="python" manual="ros2%20run%20ugv_teleop%20ugv_teleop" message="" highlight="" provider="manual"/]  

如何執行導航程式

跟上面一樣要先開啟docker環境,如果看到命令列最前方的使用者是root,就代表已經在docker環境內了,不用重複執行 [pastacode lang="python" manual=".%2Frun_docker.sh" message="" highlight="" provider="manual"/]   執行導航程式,等待程式啟動完成後就會跳出操作視窗,進行導航時請務必要關閉遙控程式,否則會影響到導航的移動 [pastacode lang="python" manual="ros2%20launch%20ugv_bringup%20nav2.launch.py" message="" highlight="" provider="manual"/]  

地圖介面的功能簡介

 

導航面板的功能簡介

 

如何設定導航點及路徑

首先在docker環境內執行導航程式,等待操作視窗出現 [pastacode lang="python" manual="ros2%20launch%20ugv_bringup%20nav2.launch.py" message="" highlight="" provider="manual"/] 開啟後會處於單點導航模式,選擇設定導航點功能,然後在地圖內容上按住左鍵,這個位置代表想要移動到的座標,接著將箭頭拖曳到想要的方向,這代表最後停車時的方向,放開左鍵後車子會立刻尋找通往目標路徑開始導航移動   若是處於多點導航模式,放開左鍵後會留下一個標記,再次選擇設定導航點功能就能再設定下一個導航點,設定完所有的導航點後,按下導航點導航就會照著設定的導航點尋找路徑依序移動,移動完成後所有的標記點就會消失  

如何臨時取消設定導航點

在設定多點導航模式的導航點時,如果想要取消現在已經的設定的導航點,可以先切換至單導航點導航,再點擊切換到多導航點導航,就可以重新設定導航點  

常見問題

執行程式後沒有畫面、沒有辦法操作、機器人的動作或是程式畫面很奇怪

首先可以查看終端機上的錯誤訊息,通常會給予明確的錯誤位置,像是開啟時的參數設定錯誤、沒有讀取到光達資料或沒辦法跟底盤建立連線等,前者可以透過修改參數修正,後兩者可能是因為連線出了問題,可以檢查連接線狀態或電源是否開啟,完成後重新執行程式即可  

程式關閉後機器人不會停下

當正在執行導航時關閉程式,會讓底盤沒有辦法接收到新的指令,此時會停留在最後一個送出的指令,這時只要再次開啟程式,就會讓底盤回到靜止狀態  

一定要先建立地圖嗎?

跟大家在外面玩時看地圖找路一樣,機器人也是照著地圖來定位自己的位置,還有找到前往目標的路徑,雖然機器人有能力在移動時把地圖補齊,但想要機器人在導航時達到最好的效果,還是需要在道路上行走過一遍,可以使用單導航點導航或是遙控程式來移動機器人,將可能會走到的地方盡量納入地圖中,就可以放心的使用機器人的導航功能

相關文章 📎

留言 💬 (0)

還沒有留言,來當第一個。