湘潭自助建站系统,申请免费空间,WordPress国外打赏,专门做汽车配件保养的网站1、简介
在ROS2中自动导航使用Nav2来实现。 Nav2 使用几个独立的模块化服务#xff0c;通过 ROS 2接口#xff08;例如动作服务器或服务#xff09;与行为树 (BT) 通信。 Nav2 输入包括#xff1a;TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源; Nav…1、简介
在ROS2中自动导航使用Nav2来实现。 Nav2 使用几个独立的模块化服务通过 ROS 2接口例如动作服务器或服务与行为树 (BT) 通信。 Nav2 输入包括TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源; Nav2 输出速度命令; Nav2 支持多种机器人比如四足机器人、履带机器人、轮式机器人等
2、概念
1动作服务器Action Server由话题和服务协作完成例如开始执行动作、动作是否响应、传输执行动作时的过程数据、动作完成反馈等。 2生命周期节点Lifecycle Nodes管理ROS2系统中的节点生命周期比如节点的启动、未激活、激活、关闭等行为 3行为树BTBehavior Trees创建了一个更具可扩展性和人类可理解的框架用于定义多步骤或多状态应用程序构建复杂的机器人行为 4Planner路径规划比如最短路径、路径全覆盖、预定义路径 5Controller控制ROS1中称为本地规划比如解决动态障碍物的情况 6Smoother平滑器减少不规则路径比如突然旋转等情况 7Recovery恢复当机器人遇到复杂障碍物或者控制算法有bug时导致机器人卡住不动可以执行原地倒退或旋转等操作来恢复自主导航实在不行给操作者发求救信息 8Waypoint Following航点跟随即导航到达多个目的地 9REP-105一个标准定义机器人导航所需的位置、姿态的框架和约定比如至少需要的功能包map - odom - base_link - [sensor frames] 10Odometry里程计里程计使用激光雷达、雷达、车轮编码器、VIO 或 IMU等信息为机器人提供局部坐标系 11Global Positioning全球定位包括GPS、SLAM等提供全局坐标并解决里程计的漂移 12Costmap代价地图用相机或深度传感器检测和跟踪场景中的障碍物避免碰撞 13Costmap Filters代价地图过滤器使机器人不会进入禁区、限制机器人速度、使机器人进入首选通道等
3、Navigation和Nav2的区别 3.1 升级包
Navigation Nav2 amcl nav2_amcl map_server nav2_map_server global_planner nav2_planner local_planner nav2_controller Navfn nav2_navfn_planner DWA DWBav2_dwb_controller metapackage nav_core nav2_core costmap_2d nav2_costmap_2d
3.2 Nav2新增加的包
nav2_bt_navigator 替换move_base状态机 nav2_lifecycle_manager 处理服务器程序生命周期 nav2_waypoint_follower 可以通过接收多个航点来执行复杂的任务 nav2_system_tests 一套CI集成测试和模拟基础教程 nav2_rviz_plugins 一个 rviz 插件用于控制 Navigation2 服务器、命令、取消和导航 navigation2_behavior_trees用于调用 ROS 动作服务器的行为树库的包装器
4、Nav2框架 5、安装
安装Nav2及示例turtlebot3 注意本人的环境为ubuntu22.04需要各位同学根据自己的环境来修改版本号-humble
sudo apt install ros-humble-navigation2sudo apt install ros-humble-nav2-bringupsudo apt install ros-humble-turtlebot3-gazebo安装启动
6、运行示例
在终端中执行
source /opt/ros/humble/setup.bashexport TURTLEBOT3_MODELwaffleexport GAZEBO_MODEL_PATH$GAZEBO_MODEL_PATH:/opt/ros/humble/share/turtlebot3_gazebo/modelsros2 launch nav2_bringup tb3_simulation_launch.py headless:False注意参数headless默认为真如果未设置为 false则不会启动 gzclient3d 视图 启动成功后会出现如下界面
设置好目标就开始自动导航了 拖动可看见右边的机器人开始移动了
7、错误处理
1如果左下角的按键“Pause、Startup”不能点Navigation状体为Error并且在终端报错
……tf error: Invalid frame ID “odom” passed to canTransform argument target_fra…… 可以点击左下角Reset按键来重置RViz
2如果没有启动点击“Startup”
8、RViz使用
参见【ROS】RViz使用详解 下面补充工具栏的几个按钮的说明 在这里插入图片描述
Move Camera 移动相机工具。使用此工具可以通过鼠标拖动来移动相机视角从不同角度查看场景 Select 选择工具。使用此工具可以选择和操作RViz中的对象如机器人模型、传感器数据等 Focus Camera 调整相机的焦点 Measure 用于测量3D场景中物体的尺寸、距离和角度。 2D Pose Estimate2D姿态估计工具。使用此工具可以通过在地图上点击来估计机器人的2D姿态用于定位和导航。 Publish Point 发布点工具。使用此工具可以通过在RViz中点击来发布一个点消息用于标记感兴趣的位置或目标点。 2D Goal Pose 2D导航目标工具。使用此工具可以通过在地图上点击来设置机器人的2D导航目标用于路径规划和导航。 Nav2 Goal 用于设置机器人的目标点 Interact Interact按钮用于启用或禁用交互模式 用于添加工具栏按钮用于删除工具栏按钮2D Goal Pose和Nav2 Goal按钮都用于设置导航目标点区别如下
2D Goal Pose按钮简单的目标设置功能适用于基本的导航任务不需要考虑避障和路径规划等复杂问题。
Nav2 Goal按钮是ROS Navigation2软件包中的一个功能提供了更高级的目标设置选项。 通过这个按钮用户可以设置更复杂的导航目标例如指定一个目标点、一个目标姿态或一个目标区域。Nav2 Goal按钮还提供了更多的导航参数设置选项例如路径规划算法、避障策略等。这个按钮适用于需要更高级导航功能的场景例如导航到一个特定的姿态或避开障碍物。