Hi, I am running a simulation on Isaac Sim, using nav2 goal to send the robot to its goal location. However, while going to its goal location the robot doesnt seem to properly follow the path shown on rviz2. This causes the robot to hit the obstacle due to the lag between Isaac Sim and RVIZ2. How may I solve this problem?
Below is my params file for the robot:
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: 2000
max_particles: 3000
min_particles: 2500
odom_frame_id: “odom”
pf_err: 0.05
pf_z: 0.99
recovery_alpha_fast: 0.0
recovery_alpha_slow: 0.0
resample_interval: 3
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
map_topic: map
set_initial_pose: true
always_reset_initial_pose: false
first_map_only: false
initial_pose:
x: 3.91796
y: -8.50786
z: 0.0
yaw: 3.14159
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: 20
default_server_timeout: 40
# ‘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
velocity_smoother:
ros__parameters:
smoothing_frequency: 20.0
scale_velocities: false
feedback: “OPEN_LOOP”
max_velocity: [1.5, 1.0, 3.0]
min_velocity: [-1.5, -1.0, -3.0]
# deadband_velocity: [0.0, 0.0, 0.0]
velocity_timeout: 1.0
# max_accel: [1.0, 0.0, 1.25]
# max_decel: [-1.0, 0.0, -1.25]
odom_topic: “odom”
odom_duration: 0.1
controller_server:
ros__parameters:
use_sim_time: True
controller_frequency: 5.0
min_x_velocity_threshold: 0.001
min_y_velocity_threshold: 0.001
min_theta_velocity_threshold: 0.001
failure_tolerance: 0.3
progress_checker_plugin: “progress_checker”
goal_checker_plugin: [“stopped_goal_checker”]
controller_plugins: [“FollowPath”]
# Progress checker parameters
progress_checker:
plugin: "nav2_controller::SimpleProgressChecker"
required_movement_radius: 0.7
movement_time_allowance: 10.0
# Goal checker parameters
stopped_goal_checker:
plugin: "nav2_controller::StoppedGoalChecker"
xy_goal_tolerance: 0.25
yaw_goal_tolerance: 0.25
stateful: True
# DWB parameters
FollowPath:
plugin: "dwb_core::DWBLocalPlanner"
debug_trajectory_details: True
min_vel_x: 0.0
min_vel_y: 0.0
max_vel_x: 1.4
max_vel_y: 0.7
max_vel_theta: 3.0
min_speed_xy: 0.0
max_speed_xy: 1.8
min_speed_theta: 0.0
acc_lim_x: 2.5
acc_lim_y: 0.0
acc_lim_theta: 2.3
decel_lim_x: -2.5
decel_lim_y: 0.0
decel_lim_theta: -3.2
vx_samples: 40
vy_samples: 5
vtheta_samples: 40
sim_time: 1.7
linear_granularity: 0.025
angular_granularity: 0.025
transform_tolerance: 0.1
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: 17.0
PathAlign.scale: 50.0
PathAlign.forward_point_distance: 0.01
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
controller_server_rclcpp_node:
ros__parameters:
use_sim_time: True
local_costmap:
local_costmap:
ros__parameters:
update_frequency: 10.0
publish_frequency: 10.0
footprint_padding: 0.33
global_frame: odom
robot_base_frame: base_link
use_sim_time: True
rolling_window: True
width: 8
height: 7
resolution: 0.05
transform_tolerance: 0.1
#footprint: “[ [0.14, 0.25], [0.14, -0.25], [-0.607, -0.25], [-0.607, 0.25] ]”
footprint: “[ [0.14, 0.25], [0.14, -0.35], [-0.607, -0.35], [-0.607, 0.25] ]”
plugins: ["hesai_voxel_layer", "front_rplidar_obstacle_layer", "back_rplidar_obstacle_layer", "inflation_layer"]
# plugins: ["hesai_voxel_layer", "inflation_layer"]
inflation_layer:
plugin: "nav2_costmap_2d::InflationLayer"
enabled: True
cost_scaling_factor: 0.3
inflation_radius: 0.41
hesai_voxel_layer:
plugin: "nav2_costmap_2d::VoxelLayer"
enabled: True
footprint_clearing_enabled: true
max_obstacle_height: 2.0
publish_voxel_map: False
origin_z: 0.0
z_voxels: 16
z_resolution: 0.2
unknown_threshold: 15
observation_sources: pointcloud
pointcloud: # no frame set, uses frame from message
topic: /carter1/front_3d_lidar/point_cloud
max_obstacle_height: 2.0
min_obstacle_height: 0.1
obstacle_max_range: 10.0
obstacle_min_range: 0.0
raytrace_max_range: 10.0
raytrace_min_range: 0.0
clearing: True
marking: True
data_type: "PointCloud2"
front_rplidar_obstacle_layer:
plugin: "nav2_costmap_2d::ObstacleLayer"
enabled: True
observation_sources: scan
scan:
topic: /carter1/front_2d_lidar/scan
max_obstacle_height: 2.0
clearing: True
marking: True
data_type: "LaserScan"
back_rplidar_obstacle_layer:
plugin: "nav2_costmap_2d::ObstacleLayer"
enabled: True
observation_sources: scan
scan:
topic: /carter1/back_2d_lidar/scan
max_obstacle_height: 2.0
clearing: True
marking: True
data_type: "LaserScan"
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:
footprint_padding: 0.33
update_frequency: 10.0
publish_frequency: 10.0
global_frame: map
robot_base_frame: base_link
use_sim_time: True
#footprint: “[ [0.14, 0.25], [0.14, -0.25], [-0.607, -0.25], [-0.607, 0.25] ]”
footprint: “[ [0.14, 0.25], [0.14, -0.35], [-0.607, -0.35], [-0.607, 0.25] ]”
resolution: 0.05
plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
obstacle_layer:
plugin: "nav2_costmap_2d::ObstacleLayer"
enabled: True
observation_sources: scan
scan:
topic: /carter1/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: 10.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: 0.3
inflation_radius: 0.45
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: “carter_Simualtion_navigation.yaml”
map_saver:
ros__parameters:
use_sim_time: True
save_map_timeout: 5000
free_thresh_default: 0.25
occupied_thresh_default: 0.65
map_subscribe_transient_local: True
planner_server:
ros__parameters:
expected_planner_frequency: 100.0
use_sim_time: True
planner_plugins: [“GridBased”]
GridBased:
plugin: “nav2_navfn_planner/NavfnPlanner”
tolerance: 0.4
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: 5.0
behavior_plugins: [“spin”, “backup”, “drive_on_heading”, “wait”]
#behavior_plugins: [“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.2
use_sim_time: true
simulate_ahead_time: 0.1
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: 10