小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
终端警告:传感器的位置超出了地图的范围
-
问题描述:
在使用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官网查找了相关的问题,给出的回答大多也没啥用。
-
您遇到的问题是在使用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仓库或相关的技术论坛上寻求帮助。可能有其他用户或专家遇到过类似的问题,并可以提供解决方案或建议。
总之,处理这个问题的关键是确保传感器的位置与地图的边界相匹配。这可能需要物理调整、地图重新生成、配置调整或自定义插件的开发。
以上为生成回答,仅供参考~
-
-
@捶你胸口 真没遇到过这种情况,看代码报错在局部代价地图这里,这个0.78的参数哪里来的,看能不能找到,把它改大一些,最好把参数文件和urdf贴出来
-
@小鱼 局部代价地图这块寻找了一下也没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>
-
@捶你胸口 把nav2源码下载下来,全局搜一下
-
@捶你胸口 该问题可以通过https://answers.ros.org/question/384944/navigation-2-sensor-origin-out-of-map-bounds-the-costmap-cant-raytrace-for-it/解决