导航通常需要地图和自定位,一个是全局感,一个是自我认知。
地图服务器
第 1 步:创建一个名为 yaml 的参数文件或在启动文件中设置相同的参数
# map_server_params.yaml
map_server:
ros__parameters:
frame_id: map
topic_name: map
use_sim_time: false
yaml_filename: maps/map.yaml
第 2 步:使用作为参数传递的此文件运行地图服务器
ros2 run nav2_map_server map_server --ros-args --params-file map_server_params.yaml
第 3 步:通过 CLI 或启动过滤器从配置过渡到活动
ros2 lifecycle set /map_server configure
ros2 lifecycle set /map_server activate
(ros2 lifecycle list /map_server)
示例 maps/map.yaml:
image: turtlebot3_world.pgm
resolution: 0.050000
origin: [-10.000000, -10.000000, 0.000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196
resolution : 地图的分辨率,米/像素 origin : 地图中左下角像素的二维位置姿态,如 (x, y, yaw) occupied_thresh : 占用概率大于此阈值的像素被认为完全被占用。 free_thresh :占用概率小于此阈值的像素被认为是完全空闲的。 negate : 是否应该反转
更多内容参考官网。
map_server:
ros__parameters:
use_sim_time: False
yaml_filename: "turtlebot3_world.yaml"
map_saver:
ros__parameters:
use_sim_time: False
save_map_timeout: 5000
free_thresh_default: 0.25
occupied_thresh_default: 0.65
订阅:
发布:
配置包含许多参数(Wiki)。 一些重要的设置:
turtlebot3-burger
amcl参数
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: "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: "differential"
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
amcl_map_client:
ros__parameters:
use_sim_time: False
amcl_rclcpp_node:
ros__parameters:
use_sim_time: False