ROS2极简总结-Nav2-地图和自适应蒙特卡洛定位
【摘要】
导航通常需要地图和自定位,一个是全局感,一个是自我认知。
MapAMCL
Map
地图服务器
Map Server
地图服务器
nav2_map_servermap_server:加载地图,在“/map”主题上提供静态地图。map_saver:将地图保存到文件中(ros2 run nav2_map_serv...
导航通常需要地图和自定位,一个是全局感,一个是自我认知。
- Map
- AMCL
Map
地图服务器
- Map Server
地图服务器
- nav2_map_server
- map_server:加载地图,在“/map”主题上提供静态地图。
- map_saver:将地图保存到文件中(ros2 run nav2_map_server map_saver_cli -f my_map)
第 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
AMCL
- Adaptative Monte Carlo Localization
- 自适应蒙特卡罗定位
订阅:
- 激光扫描:/scan (sensor_msgs/LaserScan)
- (监听)将 odom 转换为 base_link
- 初始姿势:/initialpose (geometry_msgs/PoseWithCovarianceStamped)
- 地图:/map(nav_msgs/OccupancyGrid)
发布:
- 机器人在地图中的估计位置姿态,协方差:
- /amcl_pose (geometry_msgs/PoseWithCovarianceStamped)
- 过滤器维护的姿态估计:/particlecloud (geometry_msgs/PoseArray)
- (广播)变换地图到odom
配置包含许多参数(Wiki)。 一些重要的设置:
- ~robot_model_type (string, default: ”differential”)
- ~odom_frame_id (string, default: ”odom”)
- ~base_frame_id (string, default: ”base_link”)
- ~global_frame_id (string, default: ”map”)
- ~scan_topic (string, default: ”scan ”)
- ~min_particles (int, default: 100)
- ~max_particles (int, default: 5000)
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
文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。
原文链接:zhangrelay.blog.csdn.net/article/details/120040572
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)