ros2 Navigation 学习笔记 第一、二章(the construct 网站)

本文介绍了ROS2中的导航系统Nav2,包括其组成部分和工作流程,并通过一个实例展示了如何使用Nav2进行导航。接着详细讲解了如何使用Cartographer进行建图,包括配置参数和启动流程。此外,还阐述了地图在ROS2中的重要性,如何保存和使用建好的地图,并介绍了Nav2生命周期管理器的角色和功能。

第一章:ROS2 Navigation介绍

机器人如何导航

需要知道地点(建图)、环境中的位置(定位),计划如何在两点之间移动(路径规划),需要向轮子发送信息同时遵循路径(机器人控制和避障)

这些部分从头构建很复杂,因此可以使用ROS的导航包。

1.1 一个实例

进入工作空间(需要先建立一个)

cd ~/ros2_ws/src

下载例程到工作空间。代码是ros2 Galactic环境的。经验证humble也可以跑

git clone https://bitbucket.org/theconstructcore/ros2_nav_files.git

编译并运行代码

source /opt/ros/galactic/setup.bash
cd ~/ros2_ws
colcon build
source install/setup.bash
ros2 launch nav2_course nav2_demo.launch.py

看到RVIZ的画面,点击右上角2D pose estimate,确定初始位置

点击Navigation2 Goal,给机器人赋目标

就完成了demo演示。

1.2 将要学习的内容

Nav2中的工具,包括Map Server, 定位机器人的工具AMCL, Nav2 Planner, Nav2 Controller, 传感器数据转换为世界系坐标Nav2 Costmap 2D, Nav2 Recoveries, Nav2 Lifecycle Manager, 自定义算法和行为插件Nav2 BT Sever

第二章 如何建图

简介

本章学习如何构建地图,涉及的主题包括

解释为什么需要地图、ROS2中需要什么建图,如何使用cartographer建图,如何将地图给ROS2其他部分,新的概念:Navigation lifecycle manager

什么是ROS中的地图

机器人使用地图来定位和计划轨迹。

ROS中使用占用网格地图(occupancy grid map)

需要什么来建图

一个有激光雷达和里程计的机器人。以及机器人环境。

SLAM

同时定位和建图。ROS2中可选cartographer或者slam-toolbox

cartographer更加简单易懂并且功能强大。

Cartographer_ros

Cartographer是谷歌开源的slam系统。

Cartographer_ros是Cartographer的ros软件包。

为机器人创建Cartographer的launch文件

为了启动cartographer,需要启动两个节点

1.启动cartographer_node

在节点启动中需要申明

cartographer_node是由cartographer_ros提供的

它需要的参数包括:

1、use_sim_time:是一个布尔值,指示节点是否必须将其时间与仿真同步

参数如下:

1、configuration_directory:查找配置文件的目录

2、configuration_basename:配置文件名

            package='cartographer_ros', 
            executable='cartographer_node', 
            name='cartographer_node',
            output='screen',
            parameters=[{'use_sim_time': True}],
            arguments=['-configuration_directory', cartographer_config_dir,
                       '-configuration_basename', configuration_basename]

2、启动occupancy_grid_node

需要在launch中指出的字段

occupancy_grid_node是由cartographer_ros提供的

需要的参数包括:

1、use_sim_time,同上

2、resolution:地图中每个栅格的米数

3、publish_period_sec:在map主题中发布的地图频率(以秒为单位)

            package='cartographer_ros',
            executable='occupancy_grid_node',
            output='screen',
            name='occupancy_grid_node',
            parameters=[{'use_sim_time': True}],
            arguments=['-resolution', '0.05', '-publish_period_sec', '1.0']

任务2.1

a)在工作空间中创建一个叫做cartographer_slam的新包

b)建立启动和配置目录

c)编写一个启动文件名为cartographer.launch.py,启动两个节点

注释

第一条

用以下行获取启动文件的配置目录

cartographer_config_dir = os.path.join(get_package_sh
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值