[ROS]如何建立Navigation Stack

本文详述了如何在ROS环境下为机器人建立Navigation Stack,包括ROS安装、坐标转换、传感器信息、里程计数据、底盘控制、建图及导航包的创建、配置和运行。涉及的步骤包括创建package、配置local_costmap、global_costmap、Base Local Planner以及AMCL,为机器人实现自主导航提供了详细教程。

前言

本文一步步的介绍如何在实现机器人上运行导航。包含的主题包括:发送坐标转换的tf,发布里程计信息,通过ROS发布激光传感器数据和基本的导航包配置。

1.建立机器人

导航包假设已经以某种特殊的方式配置好用于运行。上面的图解展示了这个配置。白色的组件是必须的组件,并且已经实现了;灰色的组件是可选的组件,并且也已经实现了;蓝色的组件是必须为每一个具体的机器人平台创建的。导航包的预需求部分(以及说明如何满足每一个需求)在下文中提供。

1.1ROS

导航包默认机器人安装了ROS,关于如何安装在机器人上安装ROS需要查找相关的ROS文档。

1.2.转换配置 (其他平台)

导航包需要机器人发布使用tf转换后的坐标系之间关系的信息。关于如何建立这种配置的详细教程参考:建立TF
也可以查看我的tf tree:配置好的tf链接

1.3.传感器信息 (源自传感器)

导航包使用传感器收集的信息进行避障,假设这些传感器通过ROS发布sensor_msgs/LaserScan或者sensor_msgs/PointCloud信息。关于通过ROS发布的这些信息,参考:链接。当然了,已经有一部分传感器已经有了ROS驱动包含了这一步骤。已支持的传感器和相关的驱动链接如下:

1.4.里程信息 (来自里程计)

导航包需要使用tf和nav_msgs/Odometry信息发布的里程计信息。关于通过ROS发布里程计信息的教程参考:链接。支持里程计的平台和链接参考:

1.5.底盘控制

导航包假设它在”cmd_vel”主题上发布geometry_msgs/Twist格式消息,这个消息是在底盘坐标系上的速度命令。这意味着必须有一个节点订阅“cmd_vel”主题,这个节点能够完成(vx, vy, vtheta) <==> (cmd_vel.linear.x, cmd_vel.linear.y, cmd_vel.angular.z)速度之间的转换并转换他们为运动命令发送到移动底盘。支持底盘控制平台以及相关驱动的链接如下:

1.6.建图(map_server)

导航包需要地图用来操作,但是在本教程假设已经有了一个地图。关于详细的如何在具体环境中创建地图参考:链接

2.导航包的建立

本节描述如何在机器人上建立和配置导航栈。假设上文描述的建立机器人的需求已经得到满足。特别地,这也意味着机器人必须使用tf发布坐标系信息,接收的所有传感器发布的sensor_msgs/LaserScan 或者 sensor_msgs/PointCloud消息将被导航包使用,使用tf和nav_msgs/Odometry消息发布的里程计信息同样通过速度命令发送到底盘。如果机器人不满足这些需求,查看上文的说明并完善。

2.1创建package

本教程的第一步就是创建一个package,我们将用它来保存导航包的所有的配置和launch文件。这个包将依赖一些其他的包,这些包用来满足上面创建机器人部分的需求,比如move_base包一样,它包含了实现导航包的高等级的接口。接下来,选择包的保存路径,运行如下命令:

catkin_create_pkg my_robot_name_2dnav move_base my_tf_configuration_dep my_odom_configuration_dep my_sensor_configuration_dep
2.2.创建launch配置文件

既然我们已经有了保存配置和launch文件的工作空间,我们将创建一个roslaunch文件用来启动所有硬件和机器人需要的转换分布器。打开偏好的编辑器,把下面的片段复制到my_robot_configuration.launch文件中,这里可以将具体的机器人平台名字替换掉my_robot。同样的,下面也有一些类似的改变。

<launch>
  <node pkg="sensor_node_pkg" type="sensor_node_type" name="sensor_node_name" output=
### ROS Navigation Stack 使用指南和教程 #### 安装过程 为了安装ROS Navigation Stack,可以在navigation-kinetic-devel目录下通过命令行执行特定脚本文件来完成编译与安装工作。具体操作是在该目录下的终端依次运行`chmod +x build.sh` 和 `./build.sh` 来赋予构建脚本可执行权限并启动构建流程[^4]。 #### 功能概述 ROS Navigation Stack是一个集成多种功能模块的框架,旨在为移动机器人提供高效的自主导航解决方案。此软件栈不仅支持复杂的室内环境导航,也能适应诸如不规则户外地形或动态变化的工作场景等挑战性的应用场景[^2]。 #### 关键节点介绍 在整个导航体系结构的核心位置是名为move_base的重要节点,其扮演着核心路径规划者的角色。仅需激活这单一节点并向其输入必要的参数信息即可实现完整的路径计算与运动控制逻辑;这是因为move_base内部集成了多个专门处理不同子任务的功能插件,例如global_planner(全局路径规划)、local_planner(局部避障决策)、costmaps(代价地图管理)以及recovery_behaviors(异常情况应对策略),从而形成了一套完善且灵活度高的自动化行驶控制系统[^3]。 #### 地图服务与定位 对于任何成功的导航应用而言,可靠的地图表示和服务至关重要。为此,ROS Navigation Stack包含了map_server组件用来加载预先创建好的静态地图数据供其他部分使用。同时配合自适应蒙特卡洛定位(AMCL, Adaptive Monte Carlo Localization),可以实现在已知环境中对机器人的精确定位,确保后续动作指令基于准确的位置感知之上得以有效实施[^1]。 ```bash # 启动map_server发布地图话题 rosrun map_server map_server my_map.yaml ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值