引言
在現(xiàn)代機(jī)器人技術(shù)中,高精度的環(huán)境感知與建圖是實現(xiàn)自主導(dǎo)航的關(guān)鍵。本文將展示如何使用myAGV Jetson Nano移動平臺搭載Jetson Nano BO1主板,結(jié)合RTAB-Map和3D相機(jī),實現(xiàn)更加立體和細(xì)致的環(huán)境建圖。myAGV Jetson Nano具備SLAM雷達(dá)導(dǎo)航功能,Jetson Nano提供了強(qiáng)大的計算能力,適合處理復(fù)雜的SLAM任務(wù)。通過引入3D攝像頭,我們能夠?qū)z像頭采集的深度信息融入到地圖中,使其不僅具有平面數(shù)據(jù),還包含了豐富的立體信息。在本文中,我們將詳細(xì)介紹這一過程中使用的技術(shù),以及解決實施中遇到的問題。
背景與需求分析
在機(jī)器人自主導(dǎo)航中,精確的環(huán)境感知和地圖構(gòu)建至關(guān)重要。傳統(tǒng)的二維SLAM技術(shù)雖然能夠?qū)崿F(xiàn)實時定位和建圖,但在復(fù)雜的三維空間中,往往無法充分描述環(huán)境的立體結(jié)構(gòu)。
為了解決這一問題,我們選擇了myAGV Jetson Nano,該產(chǎn)品具備高性能的SLAM雷達(dá)導(dǎo)航能力和強(qiáng)大的計算處理能力,非常適合復(fù)雜環(huán)境下的自主任務(wù)。然而,二維SLAM在描述立體空間時仍顯不足。因此,我們引入了3D攝像頭,通過捕捉環(huán)境的深度信息,生成更加立體和細(xì)致的三維地圖,提升機(jī)器人的環(huán)境感知能力。
為了實現(xiàn)這一目標(biāo),我們采用了RTAB-Map作為建圖工具,它能夠處理RGB-D數(shù)據(jù)并支持實時的三維建圖與定位。通過將RTAB-Map與3D攝像頭結(jié)合在這款產(chǎn)品上使用,我們希望在復(fù)雜環(huán)境中實現(xiàn)高精度的三維SLAM建圖,滿足實際應(yīng)用的需求。
產(chǎn)品
myAGV Jetson Nano
myAGV Jetson Nano 2023采用NVIDIA? Jetson Nano B01 4GB核心主板,搭配大象機(jī)器人專為機(jī)器人定制的Ubuntu Mate 20.04 操作系統(tǒng),流暢易用;myAGV 2023具備2D建圖與導(dǎo)航、3D建圖與導(dǎo)航、圖形化編程、可視化軟件、ROS仿真、手柄鍵盤控制等多鐘功能,是科研教育、個人創(chuàng)客的首選。
Astra Pro2
Astra Pro2深度相機(jī)是基于3D 結(jié)構(gòu)光成像技術(shù)獲取物體的深度圖像,同時利用彩色相機(jī)采集物體的彩色圖像,適用于0.6m-6m 距離進(jìn)行3D物品和空間掃描的智能產(chǎn)品,可實現(xiàn)測量距離內(nèi)的物體深度數(shù)據(jù)測量。作為Astra系列的迭代升級產(chǎn)品,Astra Pro 2配置MX6000自研深度感知芯片,最高支持1280x1024深度圖像,自帶多分辨率下深度圖像與彩色圖像空間對齊功能,可廣泛應(yīng)用于機(jī)器人避障、低精度3D測量、體感交互等場景。具備RGB-D功能,能夠捕捉彩色圖像和深度信息,用于生成三維地圖。
所有所需要的依賴的功能包,在myAGV所安裝的額ubuntu 20.04系統(tǒng)中已經(jīng)按照好,我們可以直接使用ROS當(dāng)中的rtabmap以及astra pro2的功能包。
rtabmap 實現(xiàn)
myagv 已經(jīng)打包好了一些基本的功能我們直接使用,在這個過程中分析一下他們的功能。
啟動程序
首先得啟動里程記和雷達(dá)。
roslaunch myagv_odometry myagv_active.launch
myagv_active.launch啟動文件負(fù)責(zé)初始化和啟動與機(jī)器人運(yùn)動估計和傳感器數(shù)據(jù)獲取相關(guān)的核心組件。
!--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:啟動里程計節(jié)點,用于計算機(jī)器人在環(huán)境中的位置和姿態(tài)。
robot_description參數(shù):加載機(jī)器人的URDF文件(統(tǒng)一機(jī)器人描述格式),描述機(jī)器人的物理結(jié)構(gòu)。
joint_state_publisher和robot_state_publisher:發(fā)布機(jī)器人的關(guān)節(jié)狀態(tài)和機(jī)器人的整體狀態(tài)信息。
static_transform_publisher:定義固定的坐標(biāo)變換,用于將機(jī)器人基座和傳感器(如相機(jī)、IMU)之間的相對位置和姿態(tài)聯(lián)系起來。
robot_pose_ekf:使用擴(kuò)展卡爾曼濾波器(EKF)融合里程計、IMU等傳感器數(shù)據(jù),提供更精確的機(jī)器人位姿估計。
ydlidar_ros_driver:啟動激光雷達(dá)(LiDAR)驅(qū)動節(jié)點,用于獲取環(huán)境的激光掃描數(shù)據(jù)。
然后是啟動astra pro2 深度相機(jī)
roslaunch orbbec_camera astra_pro2.launch
它設(shè)置了必要的ROS節(jié)點來處理相機(jī)的RGB-D數(shù)據(jù)流,包括初始化相機(jī)、設(shè)置圖像和深度處理的各種參數(shù),并將相機(jī)數(shù)據(jù)發(fā)布到ROS主題,以供其他節(jié)點(如SLAM或物體檢測)使用。
里面已經(jīng)默認(rèn)設(shè)置好了一些必要的參數(shù),如果需要修改的話請按照官方文檔提供的sdk進(jìn)行修改:3D視覺AI開放平臺
例如一下參數(shù):
/camera/color/camera_info : 彩色相機(jī)信息(CameraInfo)話題。 /camera/color/image_raw: 彩色數(shù)據(jù)流圖像話題。 /camera/depth/camera_info: 深度數(shù)據(jù)流圖像話題。 /camera/depth/image_raw: 紅外數(shù)據(jù)流圖像話題。 /camera/depth/points : 點云話題,僅當(dāng) enable_point_cloud 為 true 時才可用`. /camera/depth_registered/points: 彩色點云話題,僅當(dāng) enable_colored_point_cloud 為 true 時才可用。 /camera/ir/camera_info: 紅外相機(jī)信息(CameraInfo)話題。 /camera/ir/image_raw: 紅外數(shù)據(jù)流圖像話題。
緊接著啟動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相關(guān)的節(jié)點分組,使得它們共享相同的命名空間(rtabmap),方便管理和數(shù)據(jù)處理。
RGB-D同步節(jié)點(rgbd_sync):
● 啟動一個用于同步RGB圖像和深度圖像的節(jié)點,將攝像頭的原始圖像數(shù)據(jù)轉(zhuǎn)換成RTAB-Map可以處理的格式。
RTAB-Map SLAM節(jié)點:
● 啟動RTAB-Map SLAM算法,配置SLAM相關(guān)的參數(shù),如訂閱的傳感器數(shù)據(jù)、隊列大小、以及優(yōu)化和ICP(迭代最近點算法)相關(guān)的參數(shù)。該節(jié)點負(fù)責(zé)實時處理傳感器數(shù)據(jù),生成環(huán)境地圖并估計機(jī)器人的位姿。
RViz可視化:
● 啟動RViz,用于實時可視化RTAB-Map生成的地圖和機(jī)器人的位姿。
靜態(tài)變換發(fā)布(tf):
● 定義并發(fā)布激光雷達(dá)和機(jī)器人體框架之間的固定坐標(biāo)變換,確保SLAM算法能夠正確地將傳感器數(shù)據(jù)對齊到相同的坐標(biāo)系中。
接下來看看效果如何。
效果也不是特別特別的流暢
問題
實現(xiàn)是實現(xiàn)了基本的建圖,但是從圖片中看,即使是Jetson Nano的主板,在性能上還是有所欠缺,在建圖的時候還是會有所卡頓。
所以有沒有辦法,來解決這個問題呢,能夠保證相對完整的建圖。
答案是當(dāng)然有。
那就是ROS的多機(jī)通訊!
解決辦法
ROS多機(jī)通訊
ROS多機(jī)通信指的是在多個計算設(shè)備之間通過ROS網(wǎng)絡(luò)共享信息和任務(wù)的能力。這在處理復(fù)雜機(jī)器人應(yīng)用時特別有用,比如當(dāng)單個設(shè)備(如Jetson Nano)無法處理所有計算任務(wù)時,可以通過網(wǎng)絡(luò)將部分任務(wù)分擔(dān)給其他設(shè)備(如一臺性能更強(qiáng)的PC)。
簡而言之就是,Jetson Nano主板負(fù)責(zé)處理slam的一些計算,用一臺性能強(qiáng)的PC來處理深度相機(jī)得到圖形處理。
1. 配置網(wǎng)絡(luò)
● 確保PC和Jetson Nano在同一個網(wǎng)絡(luò)下,并可以互相通信。
● 設(shè)置每臺設(shè)備的ROS環(huán)境變量,主要是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. 啟動核心節(jié)點
在PC端上啟動核心節(jié)點,這樣Jetson Nano可以通過多機(jī)通信與PC的ROS核心進(jìn)行通信
3. 節(jié)點分布
● PC端(SLAM建圖):在PC上運(yùn)行RTAB-Map節(jié)點,訂閱來自Jetson Nano的傳感器數(shù)據(jù),并進(jìn)行SLAM建圖。
● Jetson Nano端(圖形處理):Jetson Nano運(yùn)行傳感器驅(qū)動節(jié)點(如深度相機(jī)),并發(fā)布圖像和深度數(shù)據(jù)。
● 同時,可以運(yùn)行圖形處理節(jié)點,處理訂閱的SLAM結(jié)果或地圖數(shù)據(jù)。
4. 數(shù)據(jù)傳輸
通過ROS topics在PC和Jetson Nano之間傳遞數(shù)據(jù)。例如,Jetson Nano可以將相機(jī)的RGB-D數(shù)據(jù)發(fā)布到/camera/color/image_raw和/camera/depth/image_raw等主題,PC端的RTAB-Map節(jié)點則訂閱這些主題。
來看建圖的效果,是不是比之前的流暢了許多。
總結(jié)
在本次技術(shù)案例中,我們成功地使用這款產(chǎn)品結(jié)合Jetson Nano主板和3D攝像頭,實現(xiàn)了RTAB-Map的三維建圖功能。
然而,在實施過程中,我們遇到了性能瓶頸的問題,特別是在Jetson Nano主板上運(yùn)行復(fù)雜的SLAM算法時,計算負(fù)荷較重,導(dǎo)致實時性和穩(wěn)定性受到一定影響。為了解決這一問題,我們引入了多機(jī)通訊技術(shù),將部分計算任務(wù)分配到另一臺計算機(jī)上進(jìn)行處理,從而減輕了Jetson Nano的負(fù)擔(dān)。通過這一優(yōu)化方案,不僅提高了系統(tǒng)的整體性能,還確保了SLAM建圖過程的流暢和高效。
審核編輯 黃宇
-
機(jī)器人
+關(guān)注
關(guān)注
211文章
28552瀏覽量
207633 -
主板
+關(guān)注
關(guān)注
53文章
1907瀏覽量
71080 -
nano
+關(guān)注
關(guān)注
1文章
156瀏覽量
30639 -
SLAM
+關(guān)注
關(guān)注
23文章
425瀏覽量
31878
發(fā)布評論請先 登錄
相關(guān)推薦
評論