<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 10.1 Navigation Stack ## 10.1.1 Navigation Stack Navigation Stack是一個ROS的metapackage,里面包含了ROS在路徑規劃、定位、地圖、異常行為恢復等方面的package,其中運行的算法都堪稱經典。Navigation Stack的主要作用就是路徑規劃,通常是輸入各傳感器的數據,輸出速度。一般我們的ROS都預裝了Navigation。 Navigation Stack的源代碼位于https://github.com/ros-planning/navigation,包括了以下幾個package: | 包名 | 功能 | | :------: | :------: | | amcl | 定位 | | fake_localization | 定位 | | map_server | 提供地圖 | | move_base | 路徑規劃節點 | | nav_core | 路徑規劃的接口類,包括base_local_planner、base_global_planner和recovery_behavior三個接口 | | base_local_planner | 實現了Trajectory Rollout和DWA兩種局部規劃算法 | | dwa_local_planner| 重新實現了DWA局部規劃算法| | parrot_planner| 實現了較簡單的全局規劃算法| | navfn| 實現了Dijkstra和A*全局規劃算法| | global_planner| 重新實現了Dijkstra和A*全局規劃算法| | clear_costmap_recovery| 實現了清除代價地圖的恢復行為| | rotate_recovery| 實現了旋轉的恢復行為| | move_slow_and_clear| 實現了緩慢移動的恢復行為| | costmap_2d| 二維代價地圖| | voxel_grid| 三維小方塊(體素?)| | robot_pose_ekf|機器人位姿的卡爾曼濾波| 這么多package,你可能會覺得很亂,不過擔心,在使用中其實還是比較簡單的,我們接下來會對常用的主要功能進行介紹。 ## 10.1.2 Navigation工作框架 機器人的自主導航功能基本全靠Navigation中的pacakge,來看這張圖: ![slam_gmapping](https://img.kancloud.cn/79/cc/79cc5bec6aef534fa6806c872b9b07e2_1060x435.png) 上圖中位于導航功能正中心的是`move_base`節點,可以理解為一個強大的路徑規劃器,在實際的導航任務中,你只需要啟動這一個node,并且給他提供數據,就可以規劃出路徑和速度。 `move_base`之所以能做到路徑規劃,是因為它包含了很多的插件,像圖中的白色圓圈`global_planner`、`local_planner`、`global_costmap`、`local_costmap`、`recovery_behaviors`。這些插件用于負責一些更細微的任務:全局規劃、局部規劃、全局地圖、局部地圖、恢復行為。而每一個插件其實也都是一個package,放在Navigation Stack里。 關于move_base我們后面會進一步介紹,先來看看`move_base`外圍有哪些輸入輸出。 ### 輸入 * `/tf`:提要提供的tf包括`map_frame`、`odom_frame`、`base_frame`以及機器人各關節之間的完成的一棵tf樹。 * `/odom`:里程計信息 * `/scan`或`/pointcloud`:傳感器的輸入信息,最常用的是激光雷達(sensor_msgs/LaserScan類型),也有用點云數據(sensor_msgs/PointCloud)的。 * `/map`:地圖,可以由SLAM程序來提供,也可以由`map_server`來指定已知地圖。 以上四個Topic是必須持續提供給導航系統的,下面一個是可隨時發布的topic: * `move_base_simple/goal`:目標點位置。 有幾點需要注意: 1.move_base并不會去發布tf,因為對于路徑規劃問題來說,假設地圖和位置都是已知的,定位和建圖是其他節點的事情。 2.sensor_topics一般輸入是激光雷達數據,但也有輸入點云的情況。 3.圖中map_server是灰色,代表可選,并不表示`/map`這個topic是可選,必須提供地圖給move_base。 ### 輸出 * `/cmd_vel`:`geometry_msgs/Twist`類型,為每一時刻規劃的速度信息。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看