3D(3D Navigation Package)导航包详细介绍与配置指南 In 世界杯晋级规则 @2025-10-17 05:47:47

3D(3D Navigation Package)导航包详细介绍与配置指南

目录

包简介功能概述依赖关系安装步骤配置与编译运行3D导航

在仿真环境中启动在实际机器人(PR2)上启动 导航规划与可视化当前限制与注意事项

包简介

3D导航包(3D Navigation Package) 是一个基于ROS(Robot Operating System,机器人操作系统)的导航包,旨在为机器人在复杂环境中提供三维导航能力。通过集成三维碰撞检测(3D Collision Checking),该包允许机器人在任意配置下进行导航,例如手臂未收回(Untucked Arms),以完成各种移动操作任务(Mobile Manipulation Tasks),如桌面操作(Tabletop Manipulation)、托盘搬运(Tray Carrying)、拾取与放置(Pick and Place)等。

功能概述

3D导航包(3D Navigation Package) 的主要功能包括:

三维碰撞检测(3D Collision Checking):

使用 octomap 构建三维世界模型(3D World Model),实现机器人全身配置的碰撞检测(Collision Checking)。 自由配置导航(Configuration-Free Navigation):

支持机器人在任何配置下导航,包括手臂未收回状态,适用于各种移动操作任务。 地图构建(Map Building):

通过 octomap_server 从传感器数据中逐步构建三维环境地图(3D Environment Map),适应动态环境变化。 规划器支持(Planner Support):

全局规划器(Global Planner):使用 sbpl_lattice_planner_3d 插件。局部规划器(Local Planner):使用 pose_follower_3d 插件。 仿真支持(Simulation Support):

提供 3d_nav_gazebo 包,在 Gazebo 仿真环境中设置和测试三维导航功能。

依赖关系

3D导航包(3D Navigation Package) 依赖于多个ROS包,确保这些依赖项已正确安装非常重要。主要依赖项包括:

ros-diamondback-pr2-simulator:PR2机器人仿真器。ros-diamondback-navigation-experimental:实验性的导航功能。ros-diamondback-motion-planners:运动规划器。ros-diamondback-pr2-common-actions:PR2机器人常用动作。ros-diamondback-pr2-apps:PR2机器人应用程序。ros-diamondback-point-cloud-perception:点云感知。ros-diamondback-pr2-arm-navigation:PR2机器人手臂导航。

注意:当前代码和说明适用于ROS Diamondback版本(ROS Diamondback),正在开发适用于ROS Electric或Fuerte版本(ROS Electric/Fuerte)的改进版本,预计将更快且性能更优。

安装步骤

安装ROS Diamondback及默认栈: 确保已安装ROS Diamondback及其默认栈。可以通过以下命令安装:

sudo apt-get install ros-diamondback-desktop-full

安装依赖包: 使用以下命令安装 3D导航包 所依赖的额外ROS包:

sudo apt-get install ros-diamondback-pr2-simulator \

ros-diamondback-navigation-experimental \

ros-diamondback-motion-planners \

ros-diamondback-pr2-common-actions \

ros-diamondback-pr2-apps \

ros-diamondback-point-cloud-perception \

ros-diamondback-pr2-arm-navigation

获取 3d_navigation 及相关开发代码: 使用 rosinstall 文件覆盖您的Diamondback安装,获取开发版本的附加栈和 3d_navigation 代码。创建一个 3d_navigation.rosinstall 文件,内容如下:

- svn:

uri: https://code.ros.org/svn/wg-ros-pkg/branches/trunk_diamondback/sandbox/3d_navigation/

local-name: stacks/3d_navigation

- svn:

uri: http://alufr-ros-pkg.googlecode.com/svn/branches/octomap_mapping-diamondback/

local-name: stacks/octomap_mapping

- svn:

uri: https://code.ros.org/svn/wg-ros-pkg/stacks/motion_planning_common/branches/arm_navigation_metrics

local-name: stacks/motion_planning_common

然后,在工作空间中运行以下命令以检出代码:

rosinstall . 3d_navigation.rosinstall

配置与编译

设置ROS包路径: 确保所有检出的包都在 ROS_PACKAGE_PATH 中。例如:

export ROS_PACKAGE_PATH=~/catkin_ws/stacks/3d_navigation:~/catkin_ws/stacks/octomap_mapping:~/catkin_ws/stacks/motion_planning_common:$ROS_PACKAGE_PATH

编译代码: 使用 rosmake 编译 3d_navigation 包及其依赖项:

rosmake --rosdep-install 3d_navigation

该命令将自动安装缺失的依赖并编译相关包。

运行3D导航

3D导航(3D Navigation) 的运行分为在仿真环境中启动和在实际机器人(PR2)上启动两种方式。

在仿真环境中启动

启动Gazebo仿真环境: 运行以下命令启动包含3D导航功能的完整Gazebo仿真环境:

roslaunch 3d_nav_gazebo 3d_nav_gazebo_complete.launch

配置与测试: 仿真环境启动后,可以在 RViz 中进行目标设置和路径规划测试。详细参数和配置请参阅 3d_nav_gazebo 包中的文档。

在实际机器人(PR2)上启动

调整控制器超时参数: 为防止本地规划器(Local Planner)因超时而停止运行,需要增加 pr2_base_controller 的超时参数。推荐将默认的0.2秒调整为0.3-0.4秒。具体步骤如下:

创建一个覆盖配置文件,例如 pr2_base_controller2.yaml。在该文件中修改参数:base_controller:

timeout: 0.4 # 将超时设置为0.4秒

在启动文件中加载该覆盖配置,确保参数正确应用。 启动2D定位(AMCL): 首先启动2D自适应蒙特卡罗定位(Adaptive Monte Carlo Localization,AMCL):

roslaunch 3d_nav_executive wg_2dnav_amcl.launch

在 RViz 中设置机器人的初始位姿。通过遥操作(Teleoperation)驱动机器人短距离移动,帮助粒子滤波器(Particle Filter)收敛至正确位置。 启动3D地图集成: 在AMCL稳定后,启动3D地图集成节点:

roslaunch 3d_nav_executive 3d_nav_environment.launch

机器人开始从传感器获取数据,逐步构建三维环境地图。 启动3D导航: 在获取足够的三维扫描数据后,启动3D导航功能:

roslaunch 3d_nav_executive move_base_sbpl_3d.launch

重要:此时请关闭游戏手柄遥操作(Gamepad Teleoperation),以避免干扰机器人的自动导航命令。

导航规划与可视化

设置导航目标:

打开 RViz,并加载 3d_nav_executive/3d_nav_view 提供的配置文件。使用RViz的2D导航界面设置导航目标位置。 规划结果展示:

有效目标(Valid Goal):如果目标配置合法,RViz中会在目标位姿处显示一个绿色的机器人模型(通过 /planning_scene_visualizer 主题发布的Marker)。无效目标(Invalid Goal):如果目标位置或起始位置存在碰撞,RViz会在相应位置显示红色球体提示。 规划执行:

一旦目标配置有效,导航堆栈(Navigation Stack)将自动生成路径并控制机器人移动至目标位置。

当前限制与注意事项

自动地图获取(Automatic Map Acquisition):

启动时不支持自动地图获取,建议用户通过遥操作手动移动机器人,尤其是原地旋转(Rotate in Place),以快速构建周围环境的三维地图。 传感器视野(Sensor Field of View):

目前仅集成了有纹理的窄视野立体相机(Textured Narrow Stereo Camera)。在导航过程中需注意其有限的视野范围,避免因视野不足导致的导航失败。 ROS版本支持(ROS Version Support):

当前代码和说明适用于ROS Diamondback版本。针对更高版本(如Electric或Fuerte)的改进版本正在开发中,预计将更快且性能更优。 开发与维护(Development and Maintenance):

部分组件已集成至 octomap_server 和 ICRA Sushi Challenge 项目中。用户可参考这些项目获取更多功能和优化。

通过以上详细的介绍与指导,用户可以更清晰地理解 3D导航包(3D Navigation Package) 的功能、安装配置步骤以及使用方法,确保在复杂三维环境中实现高效可靠的机器人导航。

全国陶瓷生产基地排名Top10 中国十大著名陶瓷产地排名→MAIGOO生活榜
旧iPhone隔几代进行升级才最为合适?了解这些让你不花冤枉钱