日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ROS与navigation教程——概述

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS与navigation教程——概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

navigation是ROS的二維導航功能包,簡單來說,就是根據輸入的里程計等傳感器的信息流和機器人的全局位置,通過導航算法,計算得出安全可靠的機器人速度控制指令。

代碼庫:https://github.com/ros-planning/navigation

代碼里文件較多,進行梳理后如下圖

  • map_server:地圖服務器,主要功能是保存地圖和導入地圖。
  • costmap_2d:可以生產代價地圖,以及提供各種相關的函數。
  • robot_pose_ekf:擴展卡爾曼濾波器,輸入是里程計、IMU、VO中的任意兩個或者三個,輸出是一個融合之后的pose。
  • localization:這里是兩個定位用的package。fake_localization一般是仿真用的,amcl才是實際定位用的package。
  • nav_core:這里面只有三個文件,對應的是全局路徑規劃、局部路徑規劃、recovery_action的通用接口定義,具體功能實現則是在各個對應的規劃器package里。
  • move_base:這里實現的是整個導航的流程。什么時候調用全局路徑規劃、什么時候調用局部路徑規劃、什么時候調用recovery_action都是這個package管的。就是下圖中間方框里做的事情,可以說是整個navigation stack的核心。
    ?


?

總體框架圖中可以看到,

一、move_base

move_base提供了ROS導航的配置、運行、交互接口,它主要包括兩個部分:

(1) 全局路徑規劃(global planner):根據給定的目標位置進行總體路徑的規劃.

在ROS的導航中,首先會通過全局路徑規劃,計算出機器人到目標位置的全局路線。這一功能是navfn這個包實現的。

navfn通過Dijkstra最優路徑的算法,計算costmap上的最小花費路徑,作為機器人的全局路線。將來在算法上應該還會加入A*算法。

(2) 本地實時規劃(local planner):根據附近的障礙物進行躲避路線規劃。

本地的實時規劃是利用base_local_planner包實現的。該包使用Trajectory Rollout 和Dynamic Window approaches算法計算機器人每個周期內應該行駛的速度和角度(dx,dy,dtheta velocities)。

base_local_planner這個包通過地圖數據,通過算法搜索到達目標的多條路經,利用一些評價標準(是否會撞擊障礙物,所需要的時間等等)選取最優的路徑,并且計算所需要的實時速度和角度。

二、map_server

?map_server提供map_server?ROS節點,它提供地圖數據作為一個ROS服務器。

也提供map_saver命令行功能,能動態生成保存到文件中的地圖。?包中通過工具操作的地圖是以成堆的文件存儲的。YAML文件描述地圖的元數據,并命名image文件。Image文件編碼占用數據。

Image?以對應單元的顏色描述世界中每個單元的占用狀態。白色單元格表示自由,黑色單元格表示占用,兩種顏色之間的單元表示未知。接受彩色圖像,但顏色值平均為灰度值。

三、costmap_2d

costmap_2d包提供了一種2D代價地圖的實現方案,該方案從實際環境中獲取傳感器數據,構建數據的2D或3D占用柵格(取決于是否使用基于體素的實現),以及基于占用柵格和用戶定義膨脹半徑的2D代價地圖的膨脹代價。

該包也支持基于map_server初始化代價地圖,基于滾動窗口的代價地圖,以及基于參數化訂閱和配置傳感器主題。

costmap_2d包提供了一種可配置框架來維護機器人在占用柵格應該如何導航的信息。代價地圖使用傳感器數據和來自靜態地圖的信息,通過costmap_2d :: Costmap2DROS對象來存儲和更新實際環境中的障礙物信息。

初始化costmap_2d :: Costmap2DROS對象的方法主要有兩種。

  • 第一種是使用用戶生成的靜態地圖進行初始化(有關構建地圖的文檔,請參閱map_server包)。在這種情況下,代價地圖被初始化來匹配與靜態地圖提供的寬度,高度和障礙物信息。這種方式通常與定位系統(如AMCL)結合使用,允許機器人在地圖坐標系注冊障礙物,并且當基座在環境中移動時可以根據傳感器數據更新其代價地圖。
  • 第二種是給出一個寬度和高度,并將rolling_window參數設置為true。當機器人在移動時,rolling_window參數將機器人保持在代價地圖的中心。然而當機器人在給定區域移動得太遠時,障礙物信息將會被從地圖中丟棄。這種方式的配置最常用于里程計坐標系中,機器人只關注局部區域內的障礙物

四、robot_pose_ekf

Robot Pose EKF 包用于評估機器人的3D位姿,基于來自不同來源的位姿測量信息。

它使用帶有6D(3D position and 3D orientation)模型信息的擴展卡爾曼濾波器來整合來自輪式里程計,IMU傳感器和視覺里程計的數據信息。

基本思路就是用松耦合方式融合不同傳感器信息實現位姿估計。

五、acml

amcl是一種機器人在2D中移動的概率定位系統。 它實現了自適應(或KLD采樣)蒙特卡羅定位方法,該方法使用粒子濾波器來針對已知地圖跟蹤機器人的位姿。

?

參考資料:

https://blog.csdn.net/tansir94/article/details/83720740

http://wiki.ros.org/navigation

https://blog.csdn.net/bazinga_IIIIII/article/details/79369451

https://blog.csdn.net/jinking01/article/details/79455962

https://www.ncnynl.com/archives/201708/1911.html

總結

以上是生活随笔為你收集整理的ROS与navigation教程——概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。