Testing out course content with real robots, costmap not showing

the launch file:
import os

from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import Node
from launch.substitutions import LaunchConfiguration
from launch.actions import DeclareLaunchArgument

def generate_launch_description():

use_sim_time = LaunchConfiguration('use_sim_time', default='false')
log_level = LaunchConfiguration('log_level')
remappings = [('/tf', 'tf'), ('/tf_static', 'tf_static')]
nav2_bringup_dir = get_package_share_directory('nav2_bringup')
rviz_config = os.path.join(nav2_bringup_dir, 'rviz', 'nav2_default_view.rviz')
autostart = LaunchConfiguration('autostart')

fishbot2_yaml = os.path.join(get_package_share_directory('fishbot_navigation2'), 'config', 'nav2_params.yaml')
map_file = os.path.join(get_package_share_directory('fishbot_navigation2'), 'param', 'hhh.yaml')

return LaunchDescription([
    DeclareLaunchArgument('log_level', default_value='info', description='log level'),
    DeclareLaunchArgument('use_sim_time', default_value=use_sim_time, description='kys'),
    DeclareLaunchArgument('autostart', default_value='true', description='Automatically startup the nav2 stack'),

	Node(
	    package='nav2_map_server',
	    executable='map_server',
	    name='map_server',
	    output='screen',
	    parameters=[{'use_sim_time': True},
	                {'yaml_filename':map_file}],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_amcl',
	    executable='amcl',
	    name='amcl',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_controller',
	    executable='controller_server',
	    name='controller_server',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings + [('cmd_vel', 'fishbot2/cmd_vel')]
	),
	
	Node(
	    package='nav2_smoother',
	    executable='smoother_server',
	    name='smoother_server',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_planner',
	    executable='planner_server',
	    name='planner_server',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_behaviors',
	    executable='behavior_server',
	    name='behavior_server',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_bt_navigator',
	    executable='bt_navigator',
	    name='bt_navigator',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_waypoint_follower',
	    executable='waypoint_follower',
	    name='waypoint_follower',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_velocity_smoother',
	    executable='velocity_smoother',
	    name='velocity_smoother',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings + [('cmd_vel', 'fishbot2/cmd_vel'), ('cmd_vel_smoothed', 'fishbot2/cmd_vel')]
	),
	
	Node(
	    package='nav2_lifecycle_manager',
	    executable='lifecycle_manager',
	    name='lifecycle_manager_localization',
	    output='screen',
	    parameters=[{'use_sim_time': use_sim_time},
	                {'autostart': autostart},
	                {'node_names': ['map_server', 'amcl']}]
	),
	
	Node(
	    package='nav2_lifecycle_manager',
	    executable='lifecycle_manager',
	    name='lifecycle_manager_navigation',
	    output='screen',
	    parameters=[{'use_sim_time': use_sim_time},
	                {'autostart': autostart},
	                {'node_names': ['controller_server', 'smoother_server', 'planner_server', 'behavior_server', 'bt_navigator', 'waypoint_follower', 'velocity_smoother']}]
	),
	
	Node(
	    package='rviz2',
	    executable='rviz2',
	    name='rviz2',
	    arguments=['-d', rviz_config],
	    parameters=[{'use_sim_time': use_sim_time}],
	    output='screen'
	),
])

the params file:
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: “fishbot2/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: “fishbot2/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: “/fishbot2/scan”

bt_navigator:
ros__parameters:
use_sim_time: True
global_frame: map
robot_base_frame: fishbot2/base_link
odom_topic: /fishbot2/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_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.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.0
  min_vel_y: 0.0
  max_vel_x: 0.26
  max_vel_y: 0.0
  max_vel_theta: 1.0
  min_speed_xy: 0.0
  max_speed_xy: 0.26
  min_speed_theta: 0.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: 3.2
  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.25
  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: fishbot2/odom
robot_base_frame: fishbot2/base_link
use_sim_time: True
rolling_window: true
width: 3
height: 3
resolution: 0.05
robot_radius: 0.08
plugins: [“voxel_layer”, “inflation_layer”]
inflation_layer:
plugin: “nav2_costmap_2d::InflationLayer”
cost_scaling_factor: 3.0
inflation_radius: 0.55
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: /fishbot2/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

global_costmap:
global_costmap:
ros__parameters:
update_frequency: 1.0
publish_frequency: 1.0
global_frame: map
robot_base_frame: fishbot2/base_link
use_sim_time: True
robot_radius: 0.08
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: /fishbot2/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

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”
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: fishbot2/odom
robot_base_frame: fishbot2/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:
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: [0.26, 0.0, 1.0]
min_velocity: [-0.26, 0.0, -1.0]
max_accel: [2.5, 0.0, 3.2]
max_decel: [-2.5, 0.0, -3.2]
odom_topic: “fishbot2/odom”
odom_duration: 0.1
deadband_velocity: [0.0, 0.0, 0.0]
velocity_timeout: 1.0


Hi @RRIC ,

I noticed that use_sim_time is set to True in all your yaml configuration files.
The yaml file configuration does not get overridden properly by the launch file configuration.
So you need to set use_sim_time: False in all your yaml files, when you want to try your project on a real robot.

Try that and let me / us know if that solved your issue. I believe it should.

Regards,
Girish

Thanks a lot man, it works now. Really appreciate it. But now the issue is that I would like to add the namespace argument as I am trying to control multiple robots to conduct multi-robot navigation. Do you have any suggestions on how I should go about doing this? I have tried to use unit 6 of the ros2 humble navigation course, but it does not seem to work. I have already done the namespace changes for the nodes and topics being launched for the robot, but no idea how to do that for all the navigation-related nodes.

This is the launch file:
import os

from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import Node
from launch.substitutions import LaunchConfiguration
from launch.actions import DeclareLaunchArgument

def generate_launch_description():

use_sim_time = LaunchConfiguration('use_sim_time', default='false')
log_level = LaunchConfiguration('log_level')
remappings = [('/tf', 'tf'), ('/tf_static', 'tf_static')]
nav2_bringup_dir = get_package_share_directory('nav2_bringup')
rviz_config = os.path.join(nav2_bringup_dir, 'rviz', 'nav2_default_view.rviz')
autostart = LaunchConfiguration('autostart')

fishbot2_yaml = os.path.join(get_package_share_directory('fishbot_navigation2'), 'config', 'nav2_params.yaml')
map_file = os.path.join(get_package_share_directory('fishbot_navigation2'), 'param', 'hhh.yaml')

return LaunchDescription([
    DeclareLaunchArgument('log_level', default_value='info', description='log level'),
    DeclareLaunchArgument('use_sim_time', default_value=use_sim_time, description='kys'),
    DeclareLaunchArgument('autostart', default_value='true', description='Automatically startup the nav2 stack'),

	Node(
	    package='nav2_map_server',
	    executable='map_server',
	    name='map_server',
	    output='screen',
	    parameters=[{'use_sim_time': use_sim_time},
	                {'yaml_filename':map_file}],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_amcl',
	    executable='amcl',
	    name='amcl',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_controller',
	    executable='controller_server',
	    name='controller_server',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings + [('cmd_vel', 'fishbot2/cmd_vel')]
	),
	
	Node(
	    package='nav2_smoother',
	    executable='smoother_server',
	    name='smoother_server',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_planner',
	    executable='planner_server',
	    name='planner_server',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_behaviors',
	    executable='behavior_server',
	    name='behavior_server',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_bt_navigator',
	    executable='bt_navigator',
	    name='bt_navigator',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_waypoint_follower',
	    executable='waypoint_follower',
	    name='waypoint_follower',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings
	),
	
	Node(
	    package='nav2_velocity_smoother',
	    executable='velocity_smoother',
	    name='velocity_smoother',
	    output='screen',
	    parameters=[fishbot2_yaml],
	    arguments=['--ros-args', '--log-level', log_level],
	    remappings=remappings + [('cmd_vel', 'fishbot2/cmd_vel'), ('cmd_vel_smoothed', 'fishbot2/cmd_vel')]
	),
	
	Node(
	    package='nav2_lifecycle_manager',
	    executable='lifecycle_manager',
	    name='lifecycle_manager_localization',
	    output='screen',
	    arguments=['--ros-args', '--log-level', log_level],
	    parameters=[{'use_sim_time': use_sim_time},
	                {'autostart': autostart},
	                {'bond_timeout':0.0},
	                {'node_names': ['map_server', 'amcl']}]
	),
	
	Node(
	    package='nav2_lifecycle_manager',
	    executable='lifecycle_manager',
	    name='lifecycle_manager_navigation',
	    output='screen',
	    arguments=['--ros-args', '--log-level', log_level],
	    parameters=[{'use_sim_time': use_sim_time},
	                {'autostart': autostart},
	                {'node_names': ['controller_server', 
	                		'smoother_server', 
	                		'planner_server', 
	                		'behavior_server', 
	                		'bt_navigator', 
	                		'waypoint_follower', 
	                		'velocity_smoother']}]
	),
	
	Node(
	    package='rviz2',
	    executable='rviz2',
	    name='rviz2',
	    arguments=['-d', rviz_config],
	    parameters=[{'use_sim_time': use_sim_time}],
	    output='screen'
	),
])

This is the params file:
amcl:
ros__parameters:
use_sim_time: False
alpha1: 0.2
alpha2: 0.2
alpha3: 0.2
alpha4: 0.2
alpha5: 0.2
base_frame_id: “fishbot2/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: “fishbot2/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: “/fishbot2/scan”
map_topic: “/map”

bt_navigator:
ros__parameters:
use_sim_time: False
global_frame: map
robot_base_frame: fishbot2/base_link
odom_topic: /fishbot2/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_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: False

bt_navigator_navigate_to_pose_rclcpp_node:
ros__parameters:
use_sim_time: False

controller_server:
ros__parameters:
use_sim_time: False
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.0
  min_vel_y: 0.0
  max_vel_x: 0.26
  max_vel_y: 0.0
  max_vel_theta: 1.0
  min_speed_xy: 0.0
  max_speed_xy: 0.26
  min_speed_theta: 0.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: 3.2
  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.25
  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: fishbot2/odom
robot_base_frame: fishbot2/base_link
use_sim_time: False
rolling_window: true
width: 3
height: 3
resolution: 0.05
robot_radius: 0.08
plugins: [“voxel_layer”, “inflation_layer”]
inflation_layer:
plugin: “nav2_costmap_2d::InflationLayer”
cost_scaling_factor: 3.0
inflation_radius: 0.55
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: /fishbot2/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

global_costmap:
global_costmap:
ros__parameters:
update_frequency: 1.0
publish_frequency: 1.0
global_frame: map
map_topic: /map
robot_base_frame: fishbot2/base_link
use_sim_time: False
robot_radius: 0.08
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: /fishbot2/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

map_server:
ros__parameters:
use_sim_time: False
# 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: False
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: False
planner_plugins: [“GridBased”]
GridBased:
plugin: “nav2_navfn_planner/NavfnPlanner”
tolerance: 0.5
use_astar: false
allow_unknown: true

smoother_server:
ros__parameters:
use_sim_time: False
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: fishbot2/odom
robot_base_frame: fishbot2/base_link
transform_tolerance: 0.1
use_sim_time: False
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: False

waypoint_follower:
ros__parameters:
use_sim_time: False
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: False
smoothing_frequency: 20.0
scale_velocities: False
feedback: “OPEN_LOOP”
max_velocity: [0.26, 0.0, 1.0]
min_velocity: [-0.26, 0.0, -1.0]
max_accel: [2.5, 0.0, 3.2]
max_decel: [-2.5, 0.0, -3.2]
odom_topic: “fishbot2/odom”
odom_duration: 0.1
deadband_velocity: [0.0, 0.0, 0.0]
velocity_timeout: 1.0

Hi @RRIC ,

Awesome! Glad to hear that!

In simple words, you will just have to add the namespace parameter to the launch file nodes and launch your robot state publisher with xacro files adjusted for namespace parameter.
You can learn this from the last chapter of ROS2 Navigation course, about Multi Robot Navigation. That chapter clearly explains what all configuration changes are necessary to implement a multi robot system with the same robots (or different robots).

You need to explain this a bit more clearer. What was your outcome when you tried implementing multi robot system? What was expected and what did you actually get / observe? More context is needed to interpret what is happening.

I guess you are missing out some step somewhere that I am unable to pinpoint.
Restart from scratch. Go back to using one robot, then try using one robot with a namespace, then spawn more than one robot in your simulation.
There are certain things that you should consider, like single shared world or map frame, single map data used by all the robots etc.
Carefully retrace the steps that you did with one robot and apply that into multiple robots with namespacing.

Also please post your file contents as markdown code block format. Just copy-pasting here is quite hard to read without proper formatting of code contents.

Regards,
Girish

Hi Girish, thanks for replying. I tried out what you told me. So the situation is that, before I adding the namespace argument for the navigation-related nodes such as amcl and local_costmap, I already did the namespace changes for the main topics from the robot, such as /cmd_vel to /fishbot2/cmd_vel and /odom to /fishbot2/odom. The issue now is that when I added the namespace argument for the navigation-related nodes like you said, it does not seem to work.

Please take a look at it and provide advice, thank you. This is how the rviz looks like after launching (similar to before when I did not set use_sim_time=False in the params file):

recent:///73b8ce7c0158052dce90637367930a6f

This is the launch file:

import os 

from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import Node
from launch.substitutions import LaunchConfiguration
from launch.actions import DeclareLaunchArgument

def generate_launch_description():

    use_sim_time = LaunchConfiguration('use_sim_time', default='false')
    log_level = LaunchConfiguration('log_level')
    remappings = [('/tf', 'tf'), ('/tf_static', 'tf_static')]
    nav2_bringup_dir = get_package_share_directory('nav2_bringup')
    rviz_config = os.path.join(nav2_bringup_dir, 'rviz', 'nav2_default_view.rviz')
    autostart = LaunchConfiguration('autostart')
    
    fishbot2_yaml = os.path.join(get_package_share_directory('fishbot_navigation2'), 'config', 'nav2_params.yaml')
    map_file = os.path.join(get_package_share_directory('fishbot_navigation2'), 'param', 'hhh.yaml')
    
    return LaunchDescription([
        DeclareLaunchArgument('log_level', default_value='info', description='log level'),
        DeclareLaunchArgument('use_sim_time', default_value=use_sim_time, description='kys'),
        DeclareLaunchArgument('autostart', default_value='true', description='Automatically startup the nav2 stack'),
    
    	Node(
    	    package='nav2_map_server',
    	    executable='map_server',
    	    name='map_server',
    	    output='screen',
    	    parameters=[{'use_sim_time': use_sim_time},
    	    		{'topic_name':"map"},
                        {'frame_id':"map"},
    	                {'yaml_filename':map_file}],
    	    arguments=['--ros-args', '--log-level', log_level],
    	    remappings=remappings
    	),
    	
    	Node(
    	    namespace='fishbot2',
    	    package='nav2_amcl',
    	    executable='amcl',
    	    name='amcl',
    	    output='screen',
    	    parameters=[fishbot2_yaml],
    	    arguments=['--ros-args', '--log-level', log_level],
    	    remappings=remappings
    	),
    	
    	Node(
    	    namespace='fishbot2',
    	    package='nav2_controller',
    	    executable='controller_server',
    	    name='controller_server',
    	    output='screen',
    	    parameters=[fishbot2_yaml],
    	    arguments=['--ros-args', '--log-level', log_level],
    	    remappings=remappings + [('cmd_vel', 'fishbot2/cmd_vel')]
    	),
    	
    	Node(
    	    namespace='fishbot2',
    	    package='nav2_smoother',
    	    executable='smoother_server',
    	    name='smoother_server',
    	    output='screen',
    	    parameters=[fishbot2_yaml],
    	    arguments=['--ros-args', '--log-level', log_level],
    	    remappings=remappings
    	),
    	
    	Node(
    	    namespace='fishbot2',
    	    package='nav2_planner',
    	    executable='planner_server',
    	    name='planner_server',
    	    output='screen',
    	    parameters=[fishbot2_yaml],
    	    arguments=['--ros-args', '--log-level', log_level],
    	    remappings=remappings
    	),
    	
    	Node(
    	    namespace='fishbot2',
    	    package='nav2_behaviors',
    	    executable='behavior_server',
    	    name='behavior_server',
    	    output='screen',
    	    parameters=[fishbot2_yaml],
    	    arguments=['--ros-args', '--log-level', log_level],
    	    remappings=remappings
    	),
    	
    	Node(
    	    namespace='fishbot2',
    	    package='nav2_bt_navigator',
    	    executable='bt_navigator',
    	    name='bt_navigator',
    	    output='screen',
    	    parameters=[fishbot2_yaml],
    	    arguments=['--ros-args', '--log-level', log_level],
    	    remappings=remappings
    	),
    	
    	Node(
    	    namespace='fishbot2',
    	    package='nav2_waypoint_follower',
    	    executable='waypoint_follower',
    	    name='waypoint_follower',
    	    output='screen',
    	    parameters=[fishbot2_yaml],
    	    arguments=['--ros-args', '--log-level', log_level],
    	    remappings=remappings
    	),
    	
    	Node(
    	    namespace='fishbot2',
    	    package='nav2_velocity_smoother',
    	    executable='velocity_smoother',
    	    name='velocity_smoother',
    	    output='screen',
    	    parameters=[fishbot2_yaml],
    	    arguments=['--ros-args', '--log-level', log_level],
    	    remappings=remappings + [('cmd_vel', 'fishbot2/cmd_vel'), ('cmd_vel_smoothed', 'fishbot2/cmd_vel')]
    	),
    	
    	Node(
    	    package='nav2_lifecycle_manager',
    	    executable='lifecycle_manager',
    	    name='lifecycle_manager_localization',
    	    output='screen',
    	    arguments=['--ros-args', '--log-level', log_level],
    	    parameters=[{'use_sim_time': use_sim_time},
    	                {'autostart': autostart},
    	                {'bond_timeout':0.0},
    	                {'node_names': ['map_server', 'fishbot2/amcl']}]
    	),
    	
    	Node(
    	    package='nav2_lifecycle_manager',
    	    executable='lifecycle_manager',
    	    name='lifecycle_manager_navigation',
    	    output='screen',
    	    arguments=['--ros-args', '--log-level', log_level],
    	    parameters=[{'use_sim_time': use_sim_time},
    	                {'autostart': autostart},
    	                {'node_names': ['fishbot2/controller_server', 
    	                		'fishbot2/smoother_server', 
    	                		'fishbot2/planner_server', 
    	                		'fishbot2/behavior_server', 
    	                		'fishbot2/bt_navigator', 
    	                		'fishbot2/waypoint_follower', 
    	                		'fishbot2/velocity_smoother']}]
    	),
    	
    	Node(
    	    package='rviz2',
    	    executable='rviz2',
    	    name='rviz2',
    	    arguments=['-d', rviz_config],
    	    parameters=[{'use_sim_time': use_sim_time}],
    	    output='screen'
    	),
    ])


This is the params file:

fishbot2/amcl:
  ros__parameters:
    use_sim_time: False
    alpha1: 0.2
    alpha2: 0.2
    alpha3: 0.2
    alpha4: 0.2
    alpha5: 0.2
    base_frame_id: "fishbot2/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: "fishbot2/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: "/fishbot2/scan"
    map_topic: "/map"

fishbot2/bt_navigator:
  ros__parameters:
    use_sim_time: False
    global_frame: map
    robot_base_frame: fishbot2/base_link
    odom_topic: /fishbot2/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_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

fishbot2/bt_navigator_navigate_through_poses_rclcpp_node:
  ros__parameters:
    use_sim_time: False

fishbot2/bt_navigator_navigate_to_pose_rclcpp_node:
  ros__parameters:
    use_sim_time: False

fishbot2/controller_server:
  ros__parameters:
    use_sim_time: False
    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.0
      min_vel_y: 0.0
      max_vel_x: 0.26
      max_vel_y: 0.0
      max_vel_theta: 1.0
      min_speed_xy: 0.0
      max_speed_xy: 0.26
      min_speed_theta: 0.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: 3.2
      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.25
      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

fishbot2/local_costmap:
  local_costmap:
    ros__parameters:
      update_frequency: 5.0
      publish_frequency: 2.0
      global_frame: fishbot2/odom
      robot_base_frame: fishbot2/base_link
      use_sim_time: False
      rolling_window: true
      width: 3
      height: 3
      resolution: 0.05
      robot_radius: 0.08
      plugins: ["voxel_layer", "inflation_layer"]
      inflation_layer:
        plugin: "nav2_costmap_2d::InflationLayer"
        cost_scaling_factor: 3.0
        inflation_radius: 0.55
      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: /fishbot2/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

fishbot2/global_costmap:
  global_costmap:
    ros__parameters:
      update_frequency: 1.0
      publish_frequency: 1.0
      global_frame: map
      map_topic: /map
      robot_base_frame: fishbot2/base_link
      use_sim_time: False
      robot_radius: 0.08
      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: /fishbot2/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

map_server:
  ros__parameters:
    use_sim_time: False
    # 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: False
    save_map_timeout: 5.0
    free_thresh_default: 0.25
    occupied_thresh_default: 0.65
    map_subscribe_transient_local: True

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

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

fishbot2/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: fishbot2/odom
    robot_base_frame: fishbot2/base_link
    transform_tolerance: 0.1
    use_sim_time: False
    simulate_ahead_time: 2.0
    max_rotational_vel: 1.0
    min_rotational_vel: 0.4
    rotational_acc_lim: 3.2

fishbot2/robot_state_publisher:
  ros__parameters:
    use_sim_time: False

fishbot2/waypoint_follower:
  ros__parameters:
    use_sim_time: False
    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

fishbot2/velocity_smoother:
  ros__parameters:
    use_sim_time: False
    smoothing_frequency: 20.0
    scale_velocities: False
    feedback: "OPEN_LOOP"
    max_velocity: [0.26, 0.0, 1.0]
    min_velocity: [-0.26, 0.0, -1.0]
    max_accel: [2.5, 0.0, 3.2]
    max_decel: [-2.5, 0.0, -3.2]
    odom_topic: "fishbot2/odom"
    odom_duration: 0.1
    deadband_velocity: [0.0, 0.0, 0.0]
    velocity_timeout: 1.0



Please do forgive me if it is not correctly formatted, I am not sure where the option is. Thank you.

This is how the rviz looks like, sorry I think I did not attach it properly in the previous message.

Hi Girish, any update on how to resolve this issue?

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.