當前位置:編程學習大全網 - 編程語言 - 機器人模擬編程過程

機器人模擬編程過程

環境地圖和位置的實時建立依賴於昂貴的激光雷達,但現在有替代工具可以偽造激光雷達的效果,這是壹種偽造。

替代工具是微軟的Kinect和華碩Xtion相機。可以看到兩個包的內容:深度圖像_ to _ lasercan和kinect_2d_scanner。

本章主要關註導航的設計,包括三個包的內容:

Move_base使用MoveBaseActionGoal消息來查看消息的定義:

rosmsg顯示MoveBaseActionGoal

將顯示以下信息:

這看起來有點復雜,所以我們將使用更簡單的東西來指定下面的目標。

在運行move_base之前,需要設置四個文件。這些文檔定義了障礙物、機器人半徑、路徑需要規劃多遠、機器人跑多快等等。

這四個設置文件可以在config文件夾中找到:

移動基本節點需要環境映射才能運行,但空映射也是可能的。稍後我們將使用真實地圖。Rbx1_nav包中包含壹個名為blank_map.pgm的空地圖,它位於maps的子目錄中。描述文件叫做blank_map.yaml啟動move_base節點和空圖的啟動文件叫做fake _ move _ base _ blank _ map . launch,在launch的子目錄下。

現在讓我們來看看啟動文件。

首先,在空白圖上啟動mao_server節點。地圖的描述文件是這樣的。yaml文件。

然後加載fake_move_base.launch文件,該文件啟動move_base節點並加載必要的參數。

最後,因為我們使用的是空白地圖,我們模擬的機器人沒有傳感器,所以機器人無法通過掃描數據來定位。我們在機器人範圍坐標系和地圖坐標系,或者坐標系之間做壹個靜態的簡單對應,換句話說,假設機器人編碼器可以獲得理想的數據。

然後我們來看看fake_move_base.launch文件:

這個啟動文件運行move_base節點和五個rosparam來導入參數。costmap_common_params.yaml被導入兩次,以在global_costmap命名空間和local_costmap命名空間中設置這些參數。使用以下ns來指定它們。

要嘗試模擬,首先啟動ArbotiX仿真器:

這個地方可以用其他機器人代替。

然後在空白圖上啟動move_base節點:

如果您還沒有運行RViz,可以使用配置的參數文件啟動它:

現在我們準備使用move_base來控制機器人,而不是簡單地使用Twist message。

為了測試,首先我們讓機器人前進1米。現在我們的機器人位於/map坐標系和/base_link坐標系中的(0,0,0)。我們可以用任何坐標系來描述這個運動。

但第壹次運動並不能使機器人到達準確位置,後續的誤差會通過與/base_link坐標系的比較來消除。所以,我們最好把目標定在/map上。說明如下:

將機器人移回原點,停止剛才的命令,然後輸入相同格式的原點坐標,像這樣:

可以看到壹條細細的綠線,是全局路徑規劃,壹條紅線,是實時更新的局部路徑規劃。如果妳想更清楚地看到這兩條線,妳可以關閉裏程計,RViz上的目標。

姿勢和鼠標姿勢,然後重新運行上面的命令。

綠色路徑相對平坦,因為其中沒有障礙物。另外,也和我們的壹些參數設置有關。例如,PDIST _ SCALE (0.4)和GDIST _ SCALE (0.8)以及最大線速度(max_vel_x)。我們的本地路徑與我們的全球規劃路徑截然不同。為了使我們的機器人更接近我們的全局規劃路徑,我們可以使用rqt_reconfigure來增加pdist_scale參數或減少Max _ VEL _ X .

打開壹個新窗口並啟動rqt_reconfigure:

然後,打開move _ base->;TrajectoryPlannerROS,將pdist_scale設置大壹點,比如0.8,然後將gdist_scale設置小壹點,比如0.4。然後重新運行motion命令,看看會發生什麽。

好像好多了。

我們剛剛使用nav.rviz文件啟動了RViz,這樣我們就可以直接單擊2D導航目標來指定地圖上的目標。點擊時不要松手,可以旋轉,改變設定目標的方向。

我們可以在RViz的窗口上看到設置信息:

我們最好重新開始,關閉所有先前的節點,然後:

然後執行命令:

節目裏有很多評論,大家可以自己打開看看。

move_base最棒的地方在於,它可以在到達指定位置的同時避開障礙物。本地路徑規劃將重新計算路徑。

我們將打開壹個有障礙物的地圖,然後仍然使用move_base_square.py運行機器人,看看它是否會避開障礙物並到達目標。

首先打開地圖:

然後將資源清理到move_base節點:

這個命令會清除move_base已經退出的所有參數,其作用僅次於重啟roscore。

然後運行load map和move_base:

然後運行RViz:

黃色部分是障礙物,其他顏色代表擴大安全距離的緩沖。

妳也可以像以前壹樣,通過點擊來設定目標。

  • 上一篇:互聯網時代三大特征是什麽?
  • 下一篇:智慧礦山
  • copyright 2024編程學習大全網