ROS2 NAV2

1880阅读 0评论2021-01-29 iibull
分类:其他平台

这两天调试NAV2, 真的是心力交瘁. NAV2明显成熟度不如过 ROS1 的movebase. 现象表现为

1. 无论行为是换成navigate_w_replanning_and_recovery还是其他行为树, 在行走过程中都出现了断续然后abort的现象, 尤其是在转弯的时候, 多次重试目标点设定, 才能达到做种目的.

2. 在设定极大弱化膨胀因素.(inflation_radius加大, cost_scaling_factor减小)以及DWB比重参数. 基本能保证狭窄通道的通过性, 但同时也会造成 controller server 偶发性的搞出 类似于"BaseObstacle/Trajectory Hits Obstacle" 的问题. 这个可能和 问题 1 有相通的诱因.

具体的表现
1. 确实 planner server / controller server 无法规划路径的问题.
点击(此处)折叠或打开
  1. [bt_navigator-10] [INFO] [1611889097.946465767] [bt_navigator]: Begin navigating from current location to (-0.59, 6.51)
  2. [planner_server-8] [WARN] [1611889097.954988537] [planner_server]: GridBased: failed to create plan with tolerance 2.50.
  3. [planner_server-8] [WARN] [1611889097.955088545] [planner_server]: Planning algorithm GridBased failed to generate a valid path to (-0.59, 6.51)
  4. [planner_server-8] [WARN] [1611889097.955125712] [planner_server_rclcpp_node]: [compute_path_to_pose] [ActionServer] Aborting handle.
  5. [planner_server-8] [INFO] [1611889097.973005483] [global_costmap.global_costmap]: Received request to clear entirely the global_costmap
  6. [bt_navigator-10] [WARN] [1611889097.980982921] [bt_navigator_rclcpp_node]: Node timed out while executing service call to global_costmap/clear_entirely_global_costmap.
  7. [controller_server-7] [INFO] [1611889097.981320991] [local_costmap.local_costmap]: Received request to clear entirely the local_costmap
  8. [bt_navigator-10] [WARN] [1611889097.999723622] [bt_navigator_rclcpp_node]: Node timed out while executing service call to local_costmap/clear_entirely_local_costmap.
  9. [bt_navigator-10] [ERROR] [1611889098.001277312] [bt_navigator]: Navigation failed
  10. [bt_navigator-10] [WARN] [1611889098.001489655] [bt_navigator]: [navigate_to_pose] [ActionServer] Aborting handle.
2. 走的过程中无法找到路径被迫终止

点击(此处)折叠或打开

  1. [controller_server-7] [INFO] [1611889959.721426036] [controller_server]: Passing new path to controller.
  2. [controller_server-7] [ERROR] [1611889960.637519538] [DWBLocalPlanner]: No valid trajectories out of
  3. [controller_server-7] [ERROR] [1611889960.637591639] [DWBLocalPlanner]: 0.52: BaseObstacle/Trajectory Hits Obstacle.
  4. [controller_server-7] [ERROR] [1611889960.637604983] [DWBLocalPlanner]: 0.48: Oscillation/Trajectory is oscillating.
  5. [controller_server-7] [ERROR] [1611889960.638210362] [controller_server]: No valid trajectories out of
  6. [controller_server-7] [WARN] [1611889960.638366546] [controller_server_rclcpp_node]: [follow_path] [ActionServer] Aborting handle.
  7. [controller_server-7] [INFO] [1611889960.658151396] [local_costmap.local_costmap]: Received request to clear entirely the local_costmap
  8. [bt_navigator-10] [WARN] [1611889960.668257546] [bt_navigator_rclcpp_node]: Node timed out while executing service call to local_costmap/clear_entirely_local_costmap.
  9. [controller_server-7] [INFO] [1611889960.675862240] [local_costmap.local_costmap]: Received request to clear entirely the local_costmap
  10. [bt_navigator-10] [WARN] [1611889960.678674000] [bt_navigator_rclcpp_node]: Node timed out while executing service call to local_costmap/clear_entirely_local_costmap.
  11. [bt_navigator-10] [ERROR] [1611889960.678990964] [bt_navigator]: Navigation failed
  12. [bt_navigator-10] [WARN] [1611889960.679022890] [bt_navigator]: [navigate_to_pose] [ActionServer] Aborting handle.
现象三. 发送目标失败, 这个竟然无法恢复.   目前看官方没有解决方案, 只能整个ROS2系统重置了.

点击(此处)折叠或打开

  1. [controller_server-7] [INFO] [1611902731.932943281] [local_costmap.local_costmap]: Received request to clear entirely the local_costmap
  2. [planner_server-8] [INFO] [1611902731.933761056] [global_costmap.global_costmap]: Received request to clear entirely the global_costmap
  3. [recoveries_server-9] [INFO] [1611902731.941014261] [recoveries_server]: Attempting spin
  4. [recoveries_server-9] [INFO] [1611902731.941689550] [recoveries_server]: Turning 1.57 for spin recovery.
  5. [recoveries_server-9] [INFO] [1611902732.941855997] [recoveries_server]: spin running...
  6. ... ... ... ...
  7. [recoveries_server-9] [WARN] [1611902749.342277155] [recoveries_server]: Collision Ahead - Exiting Spin
  8. [recoveries_server-9] [INFO] [1611902749.342337247] [recoveries_server]: spin completed successfully
  9. [recoveries_server-9] [INFO] [1611902749.363062290] [recoveries_server]: Attempting wait
  10. [recoveries_server-9] [INFO] [1611902750.363216604] [recoveries_server]: wait running...
  11. ... ... ... ...
  12. [recoveries_server-9] [INFO] [1611902754.363381898] [recoveries_server]: wait completed successfully
  13. [bt_navigator-10] [ERROR] [1611902754.425717730] [bt_navigator]: Action server failed while executing action callback: "send_goal failed"
  14. [bt_navigator-10] [WARN] [1611902754.425801485] [bt_navigator]: [navigate_to_pose] [ActionServer] Aborting handle.

目前策略:
1. 针对碰撞/跌落以及确实有障碍的情况, 通过laser 或者 3D sense 检测空闲区域, 先走到空闲区域内. 再次尝试nav set-goal.
2. 针对二, 跟踪一下代码看看, 也有可能和local costmap参数设置相关, 需要做些调优工作.

结果经测试, 我的猜想验证了, 就是 膨胀因子 cost_scaling_factor 可以改变现象 2 . 并且 spin 等revoery机制也OK了. 所以在确认实际的应用场合下, 确定何种因子, 例如周边都是窗帘和衣服, 那就碰吧, 把因子设置小一些, 如果有硬物, 还是小心一点. 

上一篇:costmap_2d_node 配置 之 Inflation 膨胀区的参数
下一篇:C++ 中动态函数指针的demo