前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS2极简总结-Nav2-地图和自适应蒙特卡洛定位

ROS2极简总结-Nav2-地图和自适应蒙特卡洛定位

作者头像
zhangrelay
发布2021-12-02 13:03:10
1.1K0
发布2021-12-02 13:03:10
举报
文章被收录于专栏:机器人课程与技术

导航通常需要地图和自定位,一个是全局感,一个是自我认知。

  • 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 的参数文件或在启动文件中设置相同的参数

代码语言:javascript
复制
# map_server_params.yaml
map_server:
    ros__parameters:
        frame_id: map
        topic_name: map
        use_sim_time: false
        yaml_filename: maps/map.yaml

第 2 步:使用作为参数传递的此文件运行地图服务器

代码语言:javascript
复制
ros2 run nav2_map_server map_server --ros-args --params-file map_server_params.yaml

第 3 步:通过 CLI 或启动过滤器从配置过渡到活动

代码语言:javascript
复制
ros2 lifecycle set /map_server configure
ros2 lifecycle set /map_server activate
(ros2 lifecycle list /map_server)

示例 maps/map.yaml:

代码语言:javascript
复制
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 : 是否应该反转

更多内容参考官网。

代码语言:javascript
复制
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参数

代码语言:javascript
复制
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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/09/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 地图服务器
  • AMCL
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档