引言
在現代機器人技術中,高精度的環境感知與建圖是實現自主導航的關鍵。本文將展示如何使用myAGV Jetson Nano移動平臺搭載Jetson Nano BO1主板,結合RTAB-Map和3D相機,實現更加立體和細致的環境建圖。myAGV Jetson Nano具備SLAM雷達導航功能,Jetson Nano提供了強大的計算能力,適合處理復雜的SLAM任務。通過引入3D攝像頭,我們能夠將攝像頭采集的深度信息融入到地圖中,使其不僅具有平面數據,還包含了豐富的立體信息。在本文中,我們將詳細介紹這一過程中使用的技術,以及解決實施中遇到的問題。
背景與需求分析
在機器人自主導航中,精確的環境感知和地圖構建至關重要。傳統的二維SLAM技術雖然能夠實現實時定位和建圖,但在復雜的三維空間中,往往無法充分描述環境的立體結構。
為了解決這一問題,我們選擇了myAGV Jetson Nano,該產品具備高性能的SLAM雷達導航能力和強大的計算處理能力,非常適合復雜環境下的自主任務。然而,二維SLAM在描述立體空間時仍顯不足。因此,我們引入了3D攝像頭,通過捕捉環境的深度信息,生成更加立體和細致的三維地圖,提升機器人的環境感知能力。
為了實現這一目標,我們采用了RTAB-Map作為建圖工具,它能夠處理RGB-D數據并支持實時的三維建圖與定位。通過將RTAB-Map與3D攝像頭結合在這款產品上使用,我們希望在復雜環境中實現高精度的三維SLAM建圖,滿足實際應用的需求。
產品
myAGV Jetson Nano
myAGV Jetson Nano 2023采用NVIDIA? Jetson Nano B01 4GB核心主板,搭配大象機器人專為機器人定制的Ubuntu Mate 20.04 操作系統,流暢易用;myAGV 2023具備2D建圖與導航、3D建圖與導航、圖形化編程、可視化軟件、ROS仿真、手柄鍵盤控制等多鐘功能,是科研教育、個人創客的首選。
Astra Pro2
Astra Pro2深度相機是基于3D 結構光成像技術獲取物體的深度圖像,同時利用彩色相機采集物體的彩色圖像,適用于0.6m-6m 距離進行3D物品和空間掃描的智能產品,可實現測量距離內的物體深度數據測量。作為Astra系列的迭代升級產品,Astra Pro 2配置MX6000自研深度感知芯片,最高支持1280x1024深度圖像,自帶多分辨率下深度圖像與彩色圖像空間對齊功能,可廣泛應用于機器人避障、低精度3D測量、體感交互等場景。具備RGB-D功能,能夠捕捉彩色圖像和深度信息,用于生成三維地圖。
所有所需要的依賴的功能包,在myAGV所安裝的額ubuntu 20.04系統中已經按照好,我們可以直接使用ROS當中的rtabmap以及astra pro2的功能包。
rtabmap 實現
myagv 已經打包好了一些基本的功能我們直接使用,在這個過程中分析一下他們的功能。
啟動程序
首先得啟動里程記和雷達。
roslaunch myagv_odometry myagv_active.launch
myagv_active.launch啟動文件負責初始化和啟動與機器人運動估計和傳感器數據獲取相關的核心組件。
!--node name="base2lodom_frame" pkg="tf" type="static_transform_publisher" args="0 0 0 0 0 0 1 /odom /base_footprint 50"/--?> !-- --> /node?> /launch?>
myagv_odometry_node:啟動里程計節點,用于計算機器人在環境中的位置和姿態。
robot_description參數:加載機器人的URDF文件(統一機器人描述格式),描述機器人的物理結構。
joint_state_publisher和robot_state_publisher:發布機器人的關節狀態和機器人的整體狀態信息。
static_transform_publisher:定義固定的坐標變換,用于將機器人基座和傳感器(如相機、IMU)之間的相對位置和姿態聯系起來。
robot_pose_ekf:使用擴展卡爾曼濾波器(EKF)融合里程計、IMU等傳感器數據,提供更精確的機器人位姿估計。
ydlidar_ros_driver:啟動激光雷達(LiDAR)驅動節點,用于獲取環境的激光掃描數據。
然后是啟動astra pro2 深度相機
roslaunch orbbec_camera astra_pro2.launch
它設置了必要的ROS節點來處理相機的RGB-D數據流,包括初始化相機、設置圖像和深度處理的各種參數,并將相機數據發布到ROS主題,以供其他節點(如SLAM或物體檢測)使用。
里面已經默認設置好了一些必要的參數,如果需要修改的話請按照官方文檔提供的sdk進行修改:3D視覺AI開放平臺
例如一下參數:
/camera/color/camera_info : 彩色相機信息(CameraInfo)話題。 /camera/color/image_raw: 彩色數據流圖像話題。 /camera/depth/camera_info: 深度數據流圖像話題。 /camera/depth/image_raw: 紅外數據流圖像話題。 /camera/depth/points : 點云話題,僅當 enable_point_cloud 為 true 時才可用`. /camera/depth_registered/points: 彩色點云話題,僅當 enable_colored_point_cloud 為 true 時才可用。 /camera/ir/camera_info: 紅外相機信息(CameraInfo)話題。 /camera/ir/image_raw: 紅外數據流圖像話題。
緊接著啟動rtabmap啟動文件建圖就可以開始建圖了。
roslaunch myagv_navigation rtabmap_mapping.launch
!-- Choose visualization --?> !-- Use RGBD synchronization --?> !-- Here is a general example using a standalone nodelet, but it is recommended to attach this nodelet to nodelet manager of the camera to avoid topic serialization --?> !-- output --?> !-- Should be true for not synchronized camera topics (e.g., false for kinectv2, zed, realsense, true for xtion, kinect360)--?> /node?> !-- RTAB-Map's parameters --?> !-- occupancy grid from lidar --?> !-- 1=ICP --?> !-- ICP parameters --?> /node?> /group?> /launch?>
啟動組(group):
● 將RTAB-Map相關的節點分組,使得它們共享相同的命名空間(rtabmap),方便管理和數據處理。
RGB-D同步節點(rgbd_sync):
● 啟動一個用于同步RGB圖像和深度圖像的節點,將攝像頭的原始圖像數據轉換成RTAB-Map可以處理的格式。
RTAB-Map SLAM節點:
● 啟動RTAB-Map SLAM算法,配置SLAM相關的參數,如訂閱的傳感器數據、隊列大小、以及優化和ICP(迭代最近點算法)相關的參數。該節點負責實時處理傳感器數據,生成環境地圖并估計機器人的位姿。
RViz可視化:
● 啟動RViz,用于實時可視化RTAB-Map生成的地圖和機器人的位姿。
靜態變換發布(tf):
● 定義并發布激光雷達和機器人體框架之間的固定坐標變換,確保SLAM算法能夠正確地將傳感器數據對齊到相同的坐標系中。
接下來看看效果如何。
效果也不是特別特別的流暢
問題
實現是實現了基本的建圖,但是從圖片中看,即使是Jetson Nano的主板,在性能上還是有所欠缺,在建圖的時候還是會有所卡頓。
所以有沒有辦法,來解決這個問題呢,能夠保證相對完整的建圖。
答案是當然有。
那就是ROS的多機通訊!
解決辦法
ROS多機通訊
ROS多機通信指的是在多個計算設備之間通過ROS網絡共享信息和任務的能力。這在處理復雜機器人應用時特別有用,比如當單個設備(如Jetson Nano)無法處理所有計算任務時,可以通過網絡將部分任務分擔給其他設備(如一臺性能更強的PC)。
簡而言之就是,Jetson Nano主板負責處理slam的一些計算,用一臺性能強的PC來處理深度相機得到圖形處理。
1. 配置網絡
● 確保PC和Jetson Nano在同一個網絡下,并可以互相通信。
● 設置每臺設備的ROS環境變量,主要是ROS_MASTER_URI和ROS_IP或ROS_HOSTNAME。
PC: export ROS_MASTER_URI=http://:11311 export ROS_IP=192.168.1.100?> Jetson export ROS_MASTER_URI=http://:11311 export ROS_IP=192.168.1.121?>
2. 啟動核心節點
在PC端上啟動核心節點,這樣Jetson Nano可以通過多機通信與PC的ROS核心進行通信
3. 節點分布
● PC端(SLAM建圖):在PC上運行RTAB-Map節點,訂閱來自Jetson Nano的傳感器數據,并進行SLAM建圖。
● Jetson Nano端(圖形處理):Jetson Nano運行傳感器驅動節點(如深度相機),并發布圖像和深度數據。
● 同時,可以運行圖形處理節點,處理訂閱的SLAM結果或地圖數據。
4. 數據傳輸
通過ROS topics在PC和Jetson Nano之間傳遞數據。例如,Jetson Nano可以將相機的RGB-D數據發布到/camera/color/image_raw和/camera/depth/image_raw等主題,PC端的RTAB-Map節點則訂閱這些主題。
來看建圖的效果,是不是比之前的流暢了許多。
總結
在本次技術案例中,我們成功地使用這款產品結合Jetson Nano主板和3D攝像頭,實現了RTAB-Map的三維建圖功能。
然而,在實施過程中,我們遇到了性能瓶頸的問題,特別是在Jetson Nano主板上運行復雜的SLAM算法時,計算負荷較重,導致實時性和穩定性受到一定影響。為了解決這一問題,我們引入了多機通訊技術,將部分計算任務分配到另一臺計算機上進行處理,從而減輕了Jetson Nano的負擔。通過這一優化方案,不僅提高了系統的整體性能,還確保了SLAM建圖過程的流暢和高效。
審核編輯 黃宇
-
機器人
+關注
關注
210文章
28191瀏覽量
206505 -
主板
+關注
關注
53文章
1836瀏覽量
70480 -
nano
+關注
關注
1文章
154瀏覽量
30588 -
SLAM
+關注
關注
23文章
419瀏覽量
31786
發布評論請先 登錄
相關推薦
評論