鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    在gazebo仿真nav2导航 。遇到大转弯时车会卡住不动

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    nav2导航 gazeboros2
    4
    4
    374
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 3
      溪雨
      最后由 编辑

      39e0b16d-bf32-4f75-829f-4be528c5781d-1726059934649.png
      这个是我的配置文件:
      amcl:
      ros__parameters:
      use_sim_time: True
      alpha1: 0.2
      alpha2: 0.2
      alpha3: 0.2
      alpha4: 0.2
      alpha5: 0.2
      base_frame_id: "base_link"
      beam_skip_distance: 0.5
      beam_skip_error_threshold: 0.9
      beam_skip_threshold: 0.3
      do_beamskip: false
      global_frame_id: "map"
      lambda_short: 0.1
      laser_likelihood_max_dist: 2.0
      laser_max_range: 100.0
      laser_min_range: -1.0
      laser_model_type: "likelihood_field"
      max_beams: 60
      max_particles: 2000
      min_particles: 500
      odom_frame_id: "odom"
      pf_err: 0.05
      pf_z: 0.99
      recovery_alpha_fast: 0.0
      recovery_alpha_slow: 0.0
      resample_interval: 1
      robot_model_type: "nav2_amcl::DifferentialMotionModel"
      save_pose_rate: 0.5
      sigma_hit: 0.2
      tf_broadcast: true
      transform_tolerance: 1.0
      update_min_a: 0.2
      update_min_d: 0.25
      z_hit: 0.5
      z_max: 0.05
      z_rand: 0.5
      z_short: 0.05
      scan_topic: scan

      amcl_map_client:
      ros__parameters:
      use_sim_time: True

      amcl_rclcpp_node:
      ros__parameters:
      use_sim_time: True

      bt_navigator:
      ros__parameters:
      use_sim_time: True
      global_frame: map
      robot_base_frame: base_link
      odom_topic: /odom
      bt_loop_duration: 10
      default_server_timeout: 20
      # 'default_nav_through_poses_bt_xml' and 'default_nav_to_pose_bt_xml' are use defaults:
      # nav2_bt_navigator/navigate_to_pose_w_replanning_and_recovery.xml
      # nav2_bt_navigator/navigate_through_poses_w_replanning_and_recovery.xml
      # They can be set here or via a RewrittenYaml remap from a parent launch file to Nav2.
      plugin_lib_names:
      - nav2_compute_path_to_pose_action_bt_node
      - nav2_compute_path_through_poses_action_bt_node
      - nav2_smooth_path_action_bt_node
      - nav2_follow_path_action_bt_node
      - nav2_spin_action_bt_node
      - nav2_wait_action_bt_node
      - nav2_back_up_action_bt_node
      - nav2_drive_on_heading_bt_node
      - nav2_clear_costmap_service_bt_node
      - nav2_is_stuck_condition_bt_node
      - nav2_goal_reached_condition_bt_node
      - nav2_goal_updated_condition_bt_node
      - nav2_globally_updated_goal_condition_bt_node
      - nav2_is_path_valid_condition_bt_node
      - nav2_initial_pose_received_condition_bt_node
      - nav2_reinitialize_global_localization_service_bt_node
      - nav2_rate_controller_bt_node
      - nav2_distance_controller_bt_node
      - nav2_speed_controller_bt_node
      - nav2_truncate_path_action_bt_node
      - nav2_truncate_path_local_action_bt_node
      - nav2_goal_updater_node_bt_node
      - nav2_recovery_node_bt_node
      - nav2_pipeline_sequence_bt_node
      - nav2_round_robin_node_bt_node
      - nav2_transform_available_condition_bt_node
      - nav2_time_expired_condition_bt_node
      - nav2_path_expiring_timer_condition
      - nav2_distance_traveled_condition_bt_node
      - nav2_single_trigger_bt_node
      - nav2_is_battery_low_condition_bt_node
      - nav2_navigate_through_poses_action_bt_node
      - nav2_navigate_to_pose_action_bt_node
      - nav2_remove_passed_goals_action_bt_node
      - nav2_planner_selector_bt_node
      - nav2_controller_selector_bt_node
      - nav2_goal_checker_selector_bt_node
      - nav2_controller_cancel_bt_node
      - nav2_path_longer_on_approach_bt_node
      - nav2_wait_cancel_bt_node
      - nav2_spin_cancel_bt_node
      - nav2_back_up_cancel_bt_node
      - nav2_drive_on_heading_cancel_bt_node

      bt_navigator_rclcpp_node:
      ros__parameters:
      use_sim_time: True

      controller_server:
      ros__parameters:
      use_sim_time: True
      controller_frequency: 20.0
      min_x_velocity_threshold: 0.001
      min_y_velocity_threshold: 0.5
      min_theta_velocity_threshold: 0.001
      failure_tolerance: 0.3
      progress_checker_plugin: "progress_checker"
      goal_checker_plugins: ["general_goal_checker"] # "precise_goal_checker"
      controller_plugins: ["FollowPath"]

      # Progress checker parameters
      progress_checker:
        plugin: "nav2_controller::SimpleProgressChecker"
        required_movement_radius: 0.5
        movement_time_allowance: 10.0
      # Goal checker parameters
      #precise_goal_checker:
      #  plugin: "nav2_controller::SimpleGoalChecker"
      #  xy_goal_tolerance: 0.25
      #  yaw_goal_tolerance: 0.25
      #  stateful: True
      general_goal_checker:
        stateful: True
        plugin: "nav2_controller::SimpleGoalChecker"
        xy_goal_tolerance: 0.25
        yaw_goal_tolerance: 0.25
      # DWB parameters
      FollowPath:
        plugin: "dwb_core::DWBLocalPlanner"
        debug_trajectory_details: True
        min_vel_x: -0.12
        min_vel_y: 0.0
        max_vel_x: 0.15
        max_vel_y: 0.0
        max_vel_theta: 0.30 # 修改最大角速度
        min_speed_xy: 0.0
        max_speed_xy: 0.22
        min_speed_theta: 0.0
        acc_lim_x: 1.0
        acc_lim_y: 0.0
        acc_lim_theta: 1.0 # 修改角速度加速度限制
        decel_lim_x: -2.5
        decel_lim_y: 0.0
        decel_lim_theta: -1.6 # 修改角速度减速度限制
        vx_samples: 30 # 增加线速度样本数量
        vy_samples: 5
        vtheta_samples: 20
        sim_time: 3.0
        linear_granularity: 0.05
        angular_granularity: 0.025
        transform_tolerance: 0.2
        xy_goal_tolerance: 0.25
        trans_stopped_velocity: 0.25
        short_circuit_trajectory_evaluation: True
        stateful: True
        critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
        BaseObstacle.scale: 0.01 # 减小与障碍物距离的权重
        PathAlign.scale: 48.0 # 增加与路径对齐的权重
        PathAlign.forward_point_distance: 0.1
        GoalAlign.scale: 36.0 # 增加与目标对齐的权重
        GoalAlign.forward_point_distance: 0.1
        PathDist.scale: 48.0 # 增加路径距离的权重
        GoalDist.scale: 36.0 # 增加目标距离的权重
        RotateToGoal.scale: 32.0
        RotateToGoal.slowing_factor: 5.0
        RotateToGoal.lookahead_time: -1.0
      

      controller_server_rclcpp_node:
      ros__parameters:
      use_sim_time: True

      local_costmap:
      local_costmap:
      ros__parameters:
      update_frequency: 15.0
      publish_frequency: 2.0
      global_frame: odom
      robot_base_frame: base_link
      use_sim_time: True
      rolling_window: true
      width: 3
      height: 3
      resolution: 0.05
      robot_radius: 0.12
      plugins: ["static_layer", "obstacle_layer", "voxel_layer", "inflation_layer"]
      inflation_layer:
      plugin: "nav2_costmap_2d::InflationLayer"
      cost_scaling_factor: 3.0
      inflation_radius: 0.25
      obstacle_layer:
      plugin: "nav2_costmap_2d::ObstacleLayer"
      enabled: True
      observation_sources: scan
      scan:
      topic: /scan
      max_obstacle_height: 2.0
      clearing: True
      marking: True
      data_type: "LaserScan"
      raytrace_max_range: 3.0
      raytrace_min_range: 0.0
      obstacle_max_range: 2.5
      obstacle_min_range: 0.0
      voxel_layer:
      plugin: "nav2_costmap_2d::VoxelLayer"
      enabled: True
      publish_voxel_map: True
      origin_z: 0.0
      z_resolution: 0.05
      z_voxels: 16
      max_obstacle_height: 2.0
      mark_threshold: 0
      observation_sources: scan
      scan:
      topic: /scan
      max_obstacle_height: 2.0
      clearing: True
      marking: True
      data_type: "LaserScan"
      raytrace_max_range: 3.0
      raytrace_min_range: 0.0
      obstacle_max_range: 2.5
      obstacle_min_range: 0.0
      static_layer:
      plugin: "nav2_costmap_2d::StaticLayer"
      map_subscribe_transient_local: True
      always_send_full_costmap: True
      local_costmap_client:
      ros__parameters:
      use_sim_time: True
      local_costmap_rclcpp_node:
      ros__parameters:
      use_sim_time: True

      global_costmap:
      global_costmap:
      ros__parameters:
      update_frequency: 10.0
      publish_frequency: 10.0
      global_frame: map
      robot_base_frame: base_link
      use_sim_time: True
      robot_radius: 0.10
      resolution: 0.05
      track_unknown_space: true
      plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
      obstacle_layer:
      plugin: "nav2_costmap_2d::ObstacleLayer"
      enabled: True
      observation_sources: scan
      scan:
      topic: /scan
      max_obstacle_height: 2.0
      clearing: True
      marking: True
      data_type: "LaserScan"
      raytrace_max_range: 3.0
      raytrace_min_range: 0.0
      obstacle_max_range: 2.5
      obstacle_min_range: 0.0
      static_layer:
      plugin: "nav2_costmap_2d::StaticLayer"
      map_subscribe_transient_local: True
      inflation_layer:
      plugin: "nav2_costmap_2d::InflationLayer"
      cost_scaling_factor: 3.0
      inflation_radius: 0.55
      always_send_full_costmap: True
      global_costmap_client:
      ros__parameters:
      use_sim_time: True
      global_costmap_rclcpp_node:
      ros__parameters:
      use_sim_time: True

      map_server:
      ros__parameters:
      use_sim_time: True
      yaml_filename: "turtlebot3_world.yaml"

      map_saver:
      ros__parameters:
      use_sim_time: True
      save_map_timeout: 5.0
      free_thresh_default: 0.25
      occupied_thresh_default: 0.65
      map_subscribe_transient_local: True

      planner_server:
      ros__parameters:
      expected_planner_frequency: 20.0
      use_sim_time: True
      planner_plugins: ["GridBased"]
      GridBased:
      plugin: "nav2_navfn_planner/NavfnPlanner"
      tolerance: 0.5
      use_astar: false
      allow_unknown: true

      planner_server_rclcpp_node:
      ros__parameters:
      use_sim_time: True

      smoother_server:
      ros__parameters:
      use_sim_time: True
      smoother_plugins: ["simple_smoother"]
      simple_smoother:
      plugin: "nav2_smoother::SimpleSmoother"
      tolerance: 1.0e-10
      max_its: 1000
      do_refinement: True

      behavior_server:
      ros__parameters:
      costmap_topic: local_costmap/costmap_raw
      footprint_topic: local_costmap/published_footprint
      cycle_frequency: 10.0
      behavior_plugins: ["spin", "backup", "drive_on_heading", "wait"]
      spin:
      plugin: "nav2_behaviors/Spin"
      backup:
      plugin: "nav2_behaviors/BackUp"
      drive_on_heading:
      plugin: "nav2_behaviors/DriveOnHeading"
      wait:
      plugin: "nav2_behaviors/Wait"
      global_frame: odom
      robot_base_frame: base_link
      transform_tolerance: 0.1
      use_sim_time: true
      simulate_ahead_time: 2.0
      max_rotational_vel: 1.0
      min_rotational_vel: 0.4
      rotational_acc_lim: 3.2

      robot_state_publisher:
      ros__parameters:
      use_sim_time: True

      waypoint_follower:
      ros__parameters:
      loop_rate: 20
      stop_on_failure: false
      waypoint_task_executor_plugin: "wait_at_waypoint"
      wait_at_waypoint:
      plugin: "nav2_waypoint_follower::WaitAtWaypoint"
      enabled: True
      waypoint_pause_duration: 200

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        在Gazebo中使用Nav2进行导航时遇到大转弯时车辆卡住的问题,通常与多个因素有关,包括路径规划、局部规划器的参数设置、机器人的动力学模型、以及仿真环境的具体设置等。以下是一些可能的解决步骤和调整建议:

        1. 检查路径规划器参数:

          • 确保GridBased规划器(或其他你使用的规划器)的参数适合你的环境和机器人。特别是tolerance参数,它决定了规划器在计算路径时的精度。
          • 检查是否启用了allow_unknown,这允许规划器在未知空间内规划路径,但可能会引入风险。
        2. 调整局部规划器(DWB)参数:

          • 角速度和加速度限制:你已经设置了这些参数,但可能需要进一步调整以适应大转弯。增加max_vel_theta、acc_lim_theta和decel_lim_theta可能有助于改善转弯性能。
          • 批评者(Critics)的权重:你已经设置了不同批评者的权重,但可能需要进一步调整这些权重来优化在转弯时的行为。特别是RotateToGoal、GoalAlign和PathAlign的权重可能需要调整。
          • 轨迹评估:确保short_circuit_trajectory_evaluation设置为True,这有助于避免生成无效的轨迹。
        3. 检查成本地图设置:

          • 确保局部和全局成本地图的分辨率、大小和其他参数适合你的机器人和环境。
          • 检查inflation_layer的inflation_radius是否设置得过大,这可能会导致在转弯时成本地图中的障碍物看起来更远,从而影响路径选择。
        4. 机器人动力学模型:

          • 确保你的机器人动力学模型(在仿真中)与实际情况相符。特别是在转弯时,摩擦力和转向能力可能对性能有显著影响。
        5. 仿真环境:

          • 检查仿真环境中的障碍物和地图是否准确反映了真实环境。
          • 尝试在仿真中调整环境设置,例如减少障碍物或改变地图的布局,以观察是否对转弯性能有影响。
        6. 调试和日志:

          • 启用详细的日志记录,以便更好地了解机器人在转弯时发生了什么。检查是否有任何错误消息或警告。
          • 使用RViz等工具可视化成本地图、规划路径和机器人状态,以便更直观地了解问题所在。
        7. 尝试不同的局部规划器:

          • 如果DWB不满足你的需求,尝试使用其他局部规划器,如voxel_grid_planner或timed_elastic_band_planner,看看是否有所改善。
        8. 社区和文档:

          • 查阅Nav2的官方文档和社区论坛,看看是否有其他人遇到了类似的问题,并找到了解决方案。

        通过上述步骤,你应该能够诊断并解决在Gazebo中使用Nav2进行大转弯时车辆卡住的问题。如果问题仍然存在,可能需要更深入地分析具体的机器人模型和仿真环境设置。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @3258221348
          最后由 编辑

          @3258221348 https://fishros.org.cn/forum/topic/151/提问前必看-不符合要求的问题拒绝回答

          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

          1 条回复 最后回复 回复 引用 0
          • D
            DizzyNg
            最后由 编辑

            大佬 有解决方案吗 我也遇到了相同的问题

            1 条回复 最后回复 回复 引用 0
            • 第一个帖子
              最后一个帖子
            皖ICP备16016415号-7
            Powered by NodeBB | 鱼香ROS