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

    终端警告:传感器的位置超出了地图的范围

    已定时 已固定 已锁定 已移动
    ROS2机器人开发:从入门到实践
    nav2导航 costmap
    3
    6
    423
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 、
      、捶你胸口
      最后由 编辑

      问题描述:

      在使用nav2进行导航的过程中,将雷达的位置放在高度1.53m的位置,此时终端出现警告,说传感器的位置超出了地图的边界。

      具体细节和上下文:

      [component_container_isolated-1] [WARN] [1726815311.742420774] [local_costmap.local_costmap]: Sensor origin at (-0.00, -0.00 1.53) is out of map bounds (-4.95, -4.95, 0.00) to (5.03, 5.03, 0.78). The costmap cannot raytrace for it.

      尝试过的解决方法:

      看坐标信息应该就是第三维数据出现了问题,但是没能在nav2配置文件中没能找到相关的参数。

      1. 通过chatgpt给出的建议,增加costmap中的参数,但是没效果;
      2. 在ROS官网查找了相关的问题,给出的回答大多也没啥用。
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        您遇到的问题是在使用ROS 2的nav2导航栈时,雷达(或其他传感器)的垂直位置(z轴)超出了地图的垂直边界。从您提供的警告信息来看,地图的垂直范围是从0.00米到0.78米,但您的雷达被设置在1.53米的高度,这确实超出了地图的垂直边界。

        要解决这个问题,您可以考虑以下几个方案:

        1. 调整雷达的安装位置

        最直接的方法是调整雷达的安装位置,使其z轴坐标在地图的垂直边界内。这可能需要物理上的调整,但通常是最简单和最直接的方法。

        2. 修改地图的垂直边界

        如果您的应用场景允许,并且您能够重新生成地图,可以考虑增加地图的垂直边界。这通常涉及到地图的创建过程,可能需要使用SLAM(Simultaneous Localization and Mapping)算法重新构建地图,并在构建过程中包含更高的垂直范围。

        3. 修改nav2的配置

        虽然直接在nav2的配置文件中修改地图的垂直边界可能不是直接支持的,但您可以考虑通过调整传感器模型或局部代价图(local costmap)的配置来间接处理这个问题。以下是一些可能的配置调整:

        • 传感器插件配置:检查您是否在nav2中配置了传感器插件(如sensor_processor),并尝试调整其参数以忽略超出地图边界的传感器数据。不过,这通常不会直接修改地图的边界,而是可能改变如何处理这些数据。

        • 局部代价图配置:在local_costmap的配置中,查看是否有参数可以影响如何处理超出边界的传感器数据。尽管直接调整垂直边界可能不是可行的,但您可以查看是否有相关的插值或外推方法可以用于处理这种情况。

        4. 使用自定义插件

        如果上述方法都不适用,您可能需要编写自定义的插件来处理这种情况。例如,您可以编写一个自定义的传感器处理插件,该插件在将传感器数据发送到代价图之前,先对数据进行裁剪或调整,以确保它们不会超出地图的边界。

        5. 咨询社区或专家

        如果您在尝试上述方法后仍然遇到问题,可以考虑在ROS社区论坛、GitHub仓库或相关的技术论坛上寻求帮助。可能有其他用户或专家遇到过类似的问题,并可以提供解决方案或建议。

        总之,处理这个问题的关键是确保传感器的位置与地图的边界相匹配。这可能需要物理调整、地图重新生成、配置调整或自定义插件的开发。


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

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

        1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @、捶你胸口
          最后由 编辑

          @捶你胸口 真没遇到过这种情况,看代码报错在局部代价地图这里,这个0.78的参数哪里来的,看能不能找到,把它改大一些,最好把参数文件和urdf贴出来

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

          、 1 条回复 最后回复 回复 引用 0
          • 、
            、捶你胸口 @小鱼
            最后由 编辑

            @小鱼 局部代价地图这块寻找了一下也没0.78这个参数,nav2参数如下

            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_footprint"
                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" #nav2_amcl::OmniMotionModel
                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
            
            bt_navigator:
              ros__parameters:
                use_sim_time: True
                global_frame: map
                robot_base_frame: base_footprint
                odom_topic: /odom
                bt_loop_duration: 10
                default_server_timeout: 20
                wait_for_service_timeout: 1000
                # '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_assisted_teleop_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_goal_updated_controller_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_assisted_teleop_cancel_bt_node
                  - nav2_drive_on_heading_cancel_bt_node
                  - nav2_is_battery_charging_condition_bt_node
            
            bt_navigator_navigate_through_poses_rclcpp_node:
              ros__parameters:
                use_sim_time: True
            
            bt_navigator_navigate_to_pose_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.025
                min_y_velocity_threshold: 0.025
                min_theta_velocity_threshold: 0.01
                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" 
                  # dwb_core::DWBLocalPlanner
                  # nav2_custom_controller::CustomController
                  # nav2_ackerman_controller::AckermanController
                  debug_trajectory_details: True
                  min_vel_x: -2.5
                  min_vel_y: 0.0
                  max_vel_x: 2.5
                  max_vel_y: 0.0
                  max_vel_theta: 1.0
                  min_speed_xy: -2.5
                  max_speed_xy: 2.5
                  min_speed_theta: -1.0
                  # Add high threshold velocity for turtlebot 3 issue.
                  # https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues/75
                  acc_lim_x: 2.5
                  acc_lim_y: 0.0
                  acc_lim_theta: 1.0
                  decel_lim_x: -2.5
                  decel_lim_y: 0.0
                  decel_lim_theta: -3.2
                  vx_samples: 20
                  vy_samples: 5
                  vtheta_samples: 20
                  sim_time: 1.7
                  linear_granularity: 0.05
                  angular_granularity: 0.025
                  transform_tolerance: 0.2
                  xy_goal_tolerance: 0.1
                  trans_stopped_velocity: 0.25
                  short_circuit_trajectory_evaluation: True
                  stateful: True
                  critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
                  BaseObstacle.scale: 0.02
                  PathAlign.scale: 32.0
                  PathAlign.forward_point_distance: 0.1
                  GoalAlign.scale: 24.0
                  GoalAlign.forward_point_distance: 0.1
                  PathDist.scale: 32.0
                  GoalDist.scale: 24.0
                  RotateToGoal.scale: 32.0
                  RotateToGoal.slowing_factor: 5.0
                  RotateToGoal.lookahead_time: -1.0
            
            local_costmap:
              local_costmap:
                ros__parameters:
                  update_frequency: 5.0
                  publish_frequency: 2.0
                  global_frame: odom
                  robot_base_frame: base_footprint
                  use_sim_time: True
                  rolling_window: true
                  width: 10
                  height: 10
                  resolution: 0.05
                  robot_radius: 1.27
                  plugins: ["voxel_layer", "inflation_layer"]
                  inflation_layer:
                    plugin: "nav2_costmap_2d::InflationLayer"
                    cost_scaling_factor: 3.0
                    inflation_radius: 1.5
                  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: 10.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
            
            global_costmap:
              global_costmap:
                ros__parameters:
                  update_frequency: 1.0
                  publish_frequency: 1.0
                  global_frame: map
                  robot_base_frame: base_footprint
                  use_sim_time: True
                  robot_radius: 1.27
                  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: 10.0
                      clearing: True
                      marking: True
                      data_type: "LaserScan"
                      raytrace_max_range: 4.0
                      raytrace_min_range: 0.0
                      obstacle_max_range: 5.0
                      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: 1.5
                  always_send_full_costmap: True
            
            map_server:
              ros__parameters:
                use_sim_time: True
                # Overridden in launch by the "map" launch configuration or provided default value.
                # To use in yaml, remove the default "map" value in the tb3_simulation_launch.py file & provide full path to map below.
                yaml_filename: ""
            
            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" 
                  # nav2_navfn_planner/NavfnPlanner
                  # nav2_custom_planner/CustomPlanner
                  interpolation_resolution: 0.1
                  tolerance: 0.5
                  use_astar: false
                  allow_unknown: 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", "assisted_teleop", "wait"]
                spin:
                  plugin: "nav2_behaviors/Spin"
                backup:
                  plugin: "nav2_behaviors/BackUp"
                drive_on_heading:
                  plugin: "nav2_behaviors/DriveOnHeading"
                wait:
                  plugin: "nav2_behaviors/Wait"
                assisted_teleop:
                  plugin: "nav2_behaviors/AssistedTeleop"
                global_frame: odom
                robot_base_frame: base_footprint
                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:
                use_sim_time: True
                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
            
            velocity_smoother:
              ros__parameters:
                use_sim_time: True
                smoothing_frequency: 20.0
                scale_velocities: False
                feedback: "OPEN_LOOP"
                max_velocity: [2.5, 0.0, 1.0]
                min_velocity: [-2.5, 0.0, -1.0]
                max_accel: [2.5, 0.0, 3.2]
                max_decel: [-2.5, 0.0, -3.2]
                odom_topic: "odom"
                odom_duration: 0.1
                deadband_velocity: [0.0, 0.0, 0.0]
                velocity_timeout: 1.0
            
            

            urdf如下

            <?xml version="1.0"?>
            <robot name="car">
                
              <!-- Robot Footprint -->
              <link name="base_footprint"/>
            
              <joint name="base_joint" type="fixed">
                <parent link="base_footprint"/>
                <child link="base_link"/>
                <origin xyz="0.0 0.0 0.625" rpy="0 0 0"/>
              </joint>
            
              <!-- base link -->
              <link name="base_link">
                  <visual>
                  <origin xyz="0 0 0.0" rpy="0 0 0"/>
                  <geometry>
                    <box size="1.8 1.8 0.8"/>
                  </geometry>
                  <material name="gray">
                      <color rgba="0.5 0.5 0.5 0.8" /> 
                  </material>
                </visual>
                <collision>
                  <origin xyz="0 0 0.0" rpy="0 0 0"/>
                  <geometry>
                    <box size="1.8 1.8 0.8"/>
                  </geometry>
                </collision>
                <inertial>
                  <mass value="100"/>
                  <inertia ixx="32.33" ixy="0" ixz="0" iyy="32.33" iyz="0" izz="54"/>
                </inertial>
              </link>
            
              <!-- cylinder link -->
              <link name="cylinder_link">
                  <visual>
                  <origin xyz="0 0 0.0" rpy="0 0 0"/>
                  <geometry>
                    <cylinder length="0.5" radius="0.02"/>
                  </geometry>
                  <material name="black">
                      <color rgba="0.0 0.0 0.0 0.8" /> 
                  </material>
                </visual>
                <collision>
                    <origin xyz="0 0 0.0" rpy="0 0 0"/>
                    <geometry>
                      <cylinder length="0.5" radius="0.02"/>
                    </geometry>
                </collision>
                  <inertial>
                  <mass value="1"/>
                    <inertia ixx="0.0209" ixy="0" ixz="0" iyy="0.0209" iyz="0" izz="0.0002"/>
                  </inertial>
              </link>
            
              <!-- cylinder joint -->
                <joint name="cylinder_joint" type="fixed">
                    <parent link="base_link" />
                    <child link="cylinder_link" />
                    <origin xyz="0 0 0.65" />
                </joint>
                
              <!-- top_laser link -->
              <link name="top_laser_link">
                  <visual>
                  <origin xyz="0 0 0" rpy="0 0 0"/>
                  <geometry>
                    <cylinder length="0.02" radius="0.02"/>
                  </geometry>
                  <material name="gray">
                      <color rgba="0.5 0.5 0.5 0.8" /> 
                  </material>
                </visual>
                <collision>
                    <origin xyz="0 0 0.0" rpy="0 0 0"/>
                    <geometry>
                      <cylinder length="0.02" radius="0.02"/>
                    </geometry>
                </collision>
                  <inertial>
                  <mass value="0.04"/>
                    <inertia ixx="0.00000667" ixy="0" ixz="0" iyy="0.00000667" iyz="0" izz="0.000008"/>
                  </inertial>
              </link>
            
              <!-- top_laser joint -->
                <joint name="top_laser_joint" type="fixed">
                    <parent link="cylinder_link" />
                    <child link="top_laser_link" />
                    <origin xyz="0 0 0.26" />
                </joint>
            
              <!-- imu -->
              <link name="imu_link">
                  <visual>
                  <origin xyz="0 0 0.0" rpy="0 0 0"/>
                  <geometry>
                    <cylinder length="0.02" radius="0.02"/>
                  </geometry>
                  <material name="gray">
                      <color rgba="0.5 0.5 0.5 0.8" /> 
                  </material>
                </visual>
              </link>
            
              <!-- imu joint -->
              <joint name="imu_joint" type="fixed">
                    <parent link="cylinder_link" />
                    <child link="imu_link" />
                    <origin xyz="0 0 0.26" />
                </joint>
            
              <link name="left_steering">
                  <visual>
                  <origin xyz="0 0 0" rpy="0 0 0"/>
                  <geometry>
                    <cylinder length="0.02" radius="0.02"/>
                  </geometry>
                  <material name="gray">
                      <color rgba="0.5 0.5 0.5 0.8" /> 
                  </material>
                </visual>
                <collision>
                    <origin xyz="0 0 0.0" rpy="0 0 0"/>
                    <geometry>
                      <cylinder length="0.02" radius="0.02"/>
                    </geometry>
                </collision>
                <inertial>
                  <mass value="5"/>
                  <inertia ixx="0.0006667" ixy="0.0" ixz="0.0" iyy="0.0006667" iyz="0.0" izz="0.001" />
                </inertial>
              </link>
            
              <link name="right_steering">
                  <visual>
                  <origin xyz="0 0 0" rpy="0 0 0"/>
                  <geometry>
                    <cylinder length="0.02" radius="0.02"/>
                  </geometry>
                  <material name="gray">
                      <color rgba="0.5 0.5 0.5 0.8" /> 
                  </material>
                </visual>
                <collision>
                    <origin xyz="0 0 0.0" rpy="0 0 0"/>
                    <geometry>
                      <cylinder length="0.02" radius="0.02"/>
                    </geometry>
                </collision>
                <inertial>
                  <mass value="5"/>
                  <inertia ixx="0.0006667" ixy="0.0" ixz="0.0" iyy="0.0006667" iyz="0.0" izz="0.001" />
                </inertial>
              </link>
            
              <joint name="base_link2left_steering" type="fixed">
                  <parent link="base_link" />
                  <child link="left_steering" />
                  <origin xyz="0.9 0.9 0.1" />
              </joint>
            
              <joint name="base_link2right_steering" type="fixed">
                  <parent link="base_link" />
                  <child link="right_steering" />
                  <origin xyz="0.9 -0.9 0.1" />
              </joint>
            
              <!-- 左右托盘 -->
              <link name="left_front_axle">
                  <visual>
                  <origin xyz="0 0 0" rpy="0 0 0"/>
                  <geometry>
                    <cylinder length="0.02" radius="0.02"/>
                  </geometry>
                  <material name="gray">
                      <color rgba="0.5 0.5 0.5 0.8" /> 
                  </material>
                </visual>
                <collision>
                    <origin xyz="0 0 0.0" rpy="0 0 0"/>
                    <geometry>
                      <cylinder length="0.02" radius="0.02"/>
                    </geometry>
                </collision>
                <inertial>
                  <mass value="5"/>
                  <inertia ixx="0.0006667" ixy="0.0" ixz="0.0" iyy="0.0006667" iyz="0.0" izz="0.001" />
                </inertial>
              </link>
            
              <link name="right_front_axle">
                  <visual>
                  <origin xyz="0 0 0" rpy="0 0 0"/>
                  <geometry>
                    <cylinder length="0.02" radius="0.02"/>
                  </geometry>
                  <material name="gray">
                      <color rgba="0.5 0.5 0.5 0.8" /> 
                  </material>
                </visual>
                <collision>
                    <origin xyz="0 0 0.0" rpy="0 0 0"/>
                    <geometry>
                      <cylinder length="0.02" radius="0.02"/>
                    </geometry>
                </collision>
                <inertial>
                  <mass value="5"/>
                  <inertia ixx="0.0006667" ixy="0.0" ixz="0.0" iyy="0.0006667" iyz="0.0" izz="0.001" />
                </inertial>
              </link>
            
              <joint name="left_steering2left_front_axle" type="revolute">
                  <parent link="left_steering" />
                  <child link="left_front_axle" />
                  <origin xyz="0 0 -0.1" />
                  <axis xyz="0 0 1" />
                  <limit lower="-0.6458" upper="0.6458" effort="5" velocity="5" />
              </joint>
            
              <joint name="right_steering2right_front_axle" type="revolute">
                  <parent link="right_steering" />
                  <child link="right_front_axle" />
                  <origin xyz="0 0 -0.1" />
                  <axis xyz="0 0 1" />
                  <limit lower="-0.6458" upper="0.6458" effort="5" velocity="5" />
              </joint>
            
              <!-- front_left_wheel link -->
              <link name="front_left_wheel">
                  <visual>
                  <origin xyz="0 0 0.0" rpy="1.57079 0 0"/>
                  <geometry>
                    <cylinder length="0.2" radius="0.225"/>
                  </geometry>
                  <material name="black">
                      <color rgba="0 0 0 1" /> 
                  </material>
                </visual>
                <collision>
                    <origin xyz="0 0 0.0" rpy="1.57079 0 0"/>
                    <geometry>
                      <cylinder length="0.2" radius="0.225"/>
                    </geometry>
                </collision>
                <inertial>
                  <mass value="20"/>
                  <inertia ixx="0.31979" ixy="0" ixz="0" iyy="0.31979" iyz="0" izz="0.50625"/>
                </inertial>
              </link>
              <gazebo reference="front_left_wheel">
                <mu1 value="1.1"/>
                <mu2 value="1.1"/>
                <kp value="1e7" />
              </gazebo>
            
            
              <!-- front_right_wheel link -->
              <link name="front_right_wheel">
                  <visual>
                  <origin xyz="0 0 0" rpy="1.57079 0 0"/>
                  <geometry>
                    <cylinder length="0.2" radius="0.225"/>
                  </geometry>
                  <material name="black">
                      <color rgba="0 0 0 1" /> 
                  </material>
                </visual>
                <collision>
                    <origin xyz="0 0 0.0" rpy="1.57079 0 0"/>
                    <geometry>
                      <cylinder length="0.2" radius="0.225"/>
                    </geometry>
                </collision>
                <inertial>
                  <mass value="20"/>
                  <inertia ixx="0.31979" ixy="0" ixz="0" iyy="0.31979" iyz="0" izz="0.50625"/>
                </inertial>
              </link>                                     
              <gazebo reference="front_right_wheel">
                <mu1 value="1.1"/>
                <mu2 value="1.1"/>
                <kp value="1e7" />
              </gazebo>
            
              
              <!-- back_left_wheel link -->
              <link name="back_left_wheel">
                  <visual>
                  <origin xyz="0 0 0.0" rpy="1.57079 0 0"/>
                  <geometry>
                    <cylinder length="0.2" radius="0.225"/>
                  </geometry>
                  <material name="black">
                      <color rgba="0 0 0 1" /> 
                  </material>
                </visual>
                <collision>
                    <origin xyz="0 0 0.0" rpy="1.57079 0 0"/>
                    <geometry>
                      <cylinder length="0.2" radius="0.225"/>
                    </geometry>
                </collision>
                <inertial>
                  <mass value="30"/>
                  <inertia ixx="0.479685" ixy="0" ixz="0" iyy="0.479685" iyz="0" izz="0.759375"/>
                </inertial>
              </link>
            
              <gazebo reference="back_left_wheel">
                <mu1 value="1.2"/>
                <mu2 value="1.2"/>
                <kp value="1e7" />
              </gazebo>
            
            
              <!-- back_right_wheel link -->
              <link name="back_right_wheel">
                  <visual>
                  <origin xyz="0 0 0.0" rpy="1.57079 0 0"/>
                  <geometry>
                    <cylinder length="0.2" radius="0.225"/>
                  </geometry>
                  <material name="black">
                    <color rgba="0 0 0 1" /> 
                  </material>
                </visual>
                <collision>
                    <origin xyz="0 0 0.0" rpy="1.57079 0 0"/>
                    <geometry>
                      <cylinder length="0.2" radius="0.225"/>
                    </geometry>
                </collision>
                <inertial>
                  <mass value="30"/>
                  <inertia ixx="0.479685" ixy="0" ixz="0" iyy="0.479685" iyz="0" izz="0.759375"/>
                </inertial>
              </link>
              <gazebo reference="back_right_wheel">
                <mu1 value="1.2"/>
                <mu2 value="1.2"/>
                <kp value="1e7" />
              </gazebo>
            
              <joint name="base_link2back_left_wheel" type="continuous">
                  <parent link="base_link" />
                  <child link="back_left_wheel" />
                  <origin xyz="-0.9 0.9 -0.4" />
                  <axis xyz="0 1 0" />
              </joint>
            
              <joint name="base_link2back_right_wheel" type="continuous">
                  <parent link="base_link" />
                  <child link="back_right_wheel" />
                  <origin xyz="-0.9 -0.9 -0.4" />
                  <axis xyz="0 1 0" />
              </joint>
            
            
              <joint name="left_front_axle2front_left_wheel" type="continuous">
                  <parent link="left_front_axle" />
                  <child link="front_left_wheel" />
                  <origin xyz="0 0 -0.4" />
                  <axis xyz="0 1 0" />
              </joint>
            
              <joint name="right_front_axle2front_right_wheel" type="continuous">
                  <parent link="right_front_axle" />
                  <child link="front_right_wheel" />
                  <origin xyz="0 0 -0.4" />
                  <axis xyz="0 1 0" />
              </joint>
            
            
            <gazebo>
              <plugin name="gazebo_ros_ackermann_drive" filename="libgazebo_ros_ackermann_drive.so">
            
                <ros>
                  <!-- <namespace>/</namespace>
                  <remapping>cmd_vel:=cmd_vel</remapping>
                  <remapping>odom:=odom</remapping> -->
                  <!-- <remapping>distance:=distance</remapping> -->
                </ros>
            
                <update_rate>50.0</update_rate>
            
                <!-- wheels -->
                <front_left_joint>left_front_axle2front_left_wheel</front_left_joint>
                <front_right_joint>right_front_axle2front_right_wheel</front_right_joint>
                <rear_left_joint>base_link2back_left_wheel</rear_left_joint>
                <rear_right_joint>base_link2back_right_wheel</rear_right_joint> 
            
                <left_steering_joint>left_steering2left_front_axle</left_steering_joint>
                <right_steering_joint>right_steering2right_front_axle</right_steering_joint>
                <!-- <steering_wheel_joint>steering_joint</steering_wheel_joint> -->
            
                <!-- Max absolute steer angle for tyre in radians-->
                <!-- Any cmd_vel angular z greater than this would be capped -->
                <!-- 最大转向角度 -->
                <max_steer>1.57</max_steer>
            
                <!-- Max absolute steering angle of steering wheel -->
                <max_steering_angle>7.85</max_steering_angle>
            
                <!-- Max absolute linear speed in m/s -->
                <max_speed>5</max_speed>
            
                <!-- PID tuning -->
                <left_steering_pid_gain>1 0.0001 0.001</left_steering_pid_gain>
                <left_steering_i_range>0 0</left_steering_i_range>
                <right_steering_pid_gain>1 0.0001 0.001</right_steering_pid_gain>
                <right_steering_i_range>0 0</right_steering_i_range>
                <linear_velocity_pid_gain>1 0.0001 0.001</linear_velocity_pid_gain>
                <linear_velocity_i_range>0 0</linear_velocity_i_range>
            
                <!-- output -->
                <publish_odom>true</publish_odom>
                <publish_odom_tf>true</publish_odom_tf>
                <publish_wheel_tf>false</publish_wheel_tf> 
                <publish_distance>true</publish_distance>
                <odometry_frame>odom</odometry_frame>
                <robot_base_frame>base_footprint</robot_base_frame>
              </plugin>
            
            <plugin name="gazebo_ros_joint_state_publisher" filename="libgazebo_ros_joint_state_publisher.so">
              <ros>
                  <remapping>~/out:=joint_states</remapping>
              </ros>
              <update_rate>30</update_rate>
              <joint_name>base_link2front_left_wheel</joint_name>
              <joint_name>base_link2front_right_wheel</joint_name>
              <joint_name>left_back_axle2back_left_wheel</joint_name>
              <joint_name>right_back_axle2back_right_wheel</joint_name>
              <joint_name>left_steering2left_back_axle</joint_name>
              <joint_name>right_steering2right_back_axle</joint_name>
              <!-- <joint_name>steering_joint</joint_name> -->
            </plugin>
            </gazebo>
            
            <!-- 雷达重量250g -->
              <gazebo reference="top_laser_link">
                  <sensor name="top_laser_link" type="ray">
                  <always_on>true</always_on>
                  <visualize>true</visualize>
                  <update_rate>5</update_rate>
                  <pose>0 0 150 0 0 0</pose>
                  <ray>
                      <scan>
                        <horizontal>
                          <samples>360</samples>
                          <resolution>0.33</resolution>
                          <min_angle>-1.5708</min_angle>
                          <max_angle>1.5708</max_angle>
                        </horizontal>
                      </scan>
                      <range>
                        <min>0.05</min>
                        <max>25</max>
                        <resolution>0.015000</resolution>
                      </range>
                      <noise>
                        <type>gaussian</type>
                        <mean>0.0</mean>
                        <stddev>0.01</stddev>
                      </noise>
                  </ray>
                  <plugin name="laserscan" filename="libgazebo_ros_ray_sensor.so">
                    <ros>
                      <remapping>~/out:=scan</remapping>
                    </ros>
                    <output_type>sensor_msgs/LaserScan</output_type>
                    <frame_name>top_laser_link</frame_name>
                  </plugin>
                  </sensor>
              </gazebo>
              <gazebo reference="imu_link">
                <sensor name="imu_link" type="imu">
                <plugin filename="libgazebo_ros_imu_sensor.so" name="imu_plugin">
                    <ros>
                      <namespace>/</namespace>
                      <remapping>~/out:=imu</remapping>
                    </ros>
                    <initial_orientation_as_reference>false</initial_orientation_as_reference>
                  </plugin>
                  <always_on>true</always_on>
                  <update_rate>100</update_rate>
                  <visualize>true</visualize>
                  <imu>
                    <angular_velocity>
                      <x>
                        <noise type="gaussian">
                          <mean>0.0</mean>
                          <stddev>2e-4</stddev>
                          <bias_mean>0.0000075</bias_mean>
                          <bias_stddev>0.0000008</bias_stddev>
                        </noise>
                      </x>
                      <y>
                        <noise type="gaussian">
                          <mean>0.0</mean>
                          <stddev>2e-4</stddev>
                          <bias_mean>0.0000075</bias_mean>
                          <bias_stddev>0.0000008</bias_stddev>
                        </noise>
                      </y>
                      <z>
                        <noise type="gaussian">
                          <mean>0.0</mean>
                          <stddev>2e-4</stddev>
                          <bias_mean>0.0000075</bias_mean>
                          <bias_stddev>0.0000008</bias_stddev>
                        </noise>
                      </z>
                    </angular_velocity>
                    <linear_acceleration>
                      <x>
                        <noise type="gaussian">
                          <mean>0.0</mean>
                          <stddev>1.7e-2</stddev>
                          <bias_mean>0.1</bias_mean>
                          <bias_stddev>0.001</bias_stddev>
                        </noise>
                      </x>
                      <y>
                        <noise type="gaussian">
                          <mean>0.0</mean>
                          <stddev>1.7e-2</stddev>
                          <bias_mean>0.1</bias_mean>
                          <bias_stddev>0.001</bias_stddev>
                        </noise>
                      </y>
                      <z>
                        <noise type="gaussian">
                          <mean>0.0</mean>
                          <stddev>1.7e-2</stddev>
                          <bias_mean>0.1</bias_mean>
                          <bias_stddev>0.001</bias_stddev>
                        </noise>
                      </z>
                    </linear_acceleration>
                  </imu>
                </sensor>
              </gazebo>
            
              <gazebo>
                <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"/>
              </gazebo>
            
            </robot>
            
            
            
            
            小鱼小 、 2 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @、捶你胸口
              最后由 编辑

              @捶你胸口 把nav2源码下载下来,全局搜一下

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

              1 条回复 最后回复 回复 引用 0
              • 、
                、捶你胸口 @、捶你胸口
                最后由 编辑

                @捶你胸口 该问题可以通过https://answers.ros.org/question/384944/navigation-2-sensor-origin-out-of-map-bounds-the-costmap-cant-raytrace-for-it/解决

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