ros2 Navigation 学习笔记 第三章(the construct 网站)

第三章 如何在环境中给机器人定位

序言

本章包括:

机器人定位的意义(即需要知道它对于环境中的位置和方向)

如何在ROS2中用AMCL定位

如何设置机器人的初始位置(手动、自动与使用ROS API)

如何global localization

什么是AMCL

ROS有鲁棒性极强的定位算法AMCL(自适应蒙特卡洛定位),这是一个二维机器人的概率定位系统。

它实现了自适应蒙特卡洛定位方法,该方法使用粒子过滤器根据已知地图跟踪机器人的姿态。

当某人发布/map帧和/odom帧之间的转换时,ROS机器人被定位

这意味着机器人的/odom知道其相对于/map的相对位置,因此机器人知道它在地图上的位置,因为它的/base_link直接连接到/odom。

当一切正确,AMCL将发布该转换。现在学习如何配置AMCL以发布该转换。

如何在ROS2中定位

需要三个节点 map_server提供地图。localization提供算法。和上一章提到的life cycle manager管理各个节点的生命周期。

1、启动map_server节点

以下字段是你需要为你的包提供的启动节点的字段

map_server节点由nav2_map_server提供

所需要的参数 use_sim_time(true)和yaml_filename(都是上一章提到过的)

            package='nav2_map_server',
            executable='map_server',
            name='map_server',
            output='screen',
            parameters=[{'use_sim_time': True}, 
                        {'yaml_filename':map_file} 
                       ]),

2、启动amcl节点

需要以下字段:

amcl节点由nav2_amcl包提供

可执行文件名amcl,需要的参数是yaml文件包含所有配置参数。

            package='nav2_amcl',
            executable='amcl',
            name='amcl',
            output='screen',
            parameters=[nav2_yaml]

3、启动lifecycle_manager节点

由nav2_lifecycle_manager提供

可执行文件叫做lifecycle_manager

参数:use_sim_time. autostart. node_name(同上一章)

练习 3.1

建立一个launch文件能够在你上一节建立的地图上启动定位系统

1、创建一个叫做localization_server的包

2、创建config和launch路径

3、在launch路径内建立一个叫localization.launch.py的文件能够启动之前提到的三个节点

4、在config路径内建立一个叫amcl_config.yaml的yaml文件,文件内容如下

后来经过实际测试,yaml文件按照下面写会报错,原因如下

Description

The fully-qualified type of the plugin class. Options are “nav2_amcl::DifferentialMotionModel” and “nav2_amcl::OmniMotionModel”. Users can also provide their own custom motion model plugin type.

Note for users of galactic and earlier

The models are selectable by string key (valid options: “differential”, “omnidirectional”) rather than plugins.

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: "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: 8000
    min_particles: 200
    odom_frame_id: "odom"
    pf_err: 0.05
    pf_z: 0.99
    recovery_alpha_fast: 0.0
    recovery_alpha_sl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值