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

举报
zhangrelay 发表于 2021/09/01 23:24:01 2021/09/01
【摘要】 导航通常需要地图和自定位,一个是全局感,一个是自我认知。 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 的参数文件或在启动文件中设置相同的参数


  
  1. # map_server_params.yaml
  2. map_server:
  3. ros__parameters:
  4. frame_id: map
  5. topic_name: map
  6. use_sim_time: false
  7. yaml_filename: maps/map.yaml

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

ros2 run nav2_map_server map_server --ros-args --params-file map_server_params.yaml
 

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


  
  1. ros2 lifecycle set /map_server configure
  2. ros2 lifecycle set /map_server activate
  3. (ros2 lifecycle list /map_server)

示例 maps/map.yaml:


  
  1. image: turtlebot3_world.pgm
  2. resolution: 0.050000
  3. origin: [-10.000000, -10.000000, 0.000000]
  4. negate: 0
  5. occupied_thresh: 0.65
  6. free_thresh: 0.196

resolution : 地图的分辨率,米/像素
origin : 地图中左下角像素的二维位置姿态,如 (x, y, yaw)
occupied_thresh : 占用概率大于此阈值的像素被认为完全被占用。
free_thresh :占用概率小于此阈值的像素被认为是完全空闲的。
negate : 是否应该反转

更多内容参考官网。


  
  1. map_server:
  2. ros__parameters:
  3. use_sim_time: False
  4. yaml_filename: "turtlebot3_world.yaml"
  5. map_saver:
  6. ros__parameters:
  7. use_sim_time: False
  8. save_map_timeout: 5000
  9. free_thresh_default: 0.25
  10. 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参数


  
  1. amcl:
  2. ros__parameters:
  3. use_sim_time: False
  4. alpha1: 0.2
  5. alpha2: 0.2
  6. alpha3: 0.2
  7. alpha4: 0.2
  8. alpha5: 0.2
  9. base_frame_id: "base_footprint"
  10. beam_skip_distance: 0.5
  11. beam_skip_error_threshold: 0.9
  12. beam_skip_threshold: 0.3
  13. do_beamskip: false
  14. global_frame_id: "map"
  15. lambda_short: 0.1
  16. laser_likelihood_max_dist: 2.0
  17. laser_max_range: 100.0
  18. laser_min_range: -1.0
  19. laser_model_type: "likelihood_field"
  20. max_beams: 60
  21. max_particles: 2000
  22. min_particles: 500
  23. odom_frame_id: "odom"
  24. pf_err: 0.05
  25. pf_z: 0.99
  26. recovery_alpha_fast: 0.0
  27. recovery_alpha_slow: 0.0
  28. resample_interval: 1
  29. robot_model_type: "differential"
  30. save_pose_rate: 0.5
  31. sigma_hit: 0.2
  32. tf_broadcast: true
  33. transform_tolerance: 1.0
  34. update_min_a: 0.2
  35. update_min_d: 0.25
  36. z_hit: 0.5
  37. z_max: 0.05
  38. z_rand: 0.5
  39. z_short: 0.05
  40. amcl_map_client:
  41. ros__parameters:
  42. use_sim_time: False
  43. amcl_rclcpp_node:
  44. ros__parameters:
  45. use_sim_time: False

 

文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/120040572

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。