鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    关于nav2导航究竟是如何触发的问题

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    nav2 ros2 behaviortree
    3
    7
    551
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 24291485052
      Plaech
      最后由 编辑

      最近想要让节点自动控制nav2导航,但是想不明白到底要怎么做。查了几天资料,之前一直觉得需要通过发布action到bt控制器,然后指定特定动作,如NavToPose,才能完成导航,然后今天再去看了一下教程,ros2 topic pub /goal_pose geometry_msgs/PoseStamped "{header: {stamp: {sec: 0}, frame_id: 'map'}, pose: {position: {x: 0.2, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}"似乎通过话题也能使其导航。我想问一下,nav2的内在判断是怎么样的,如果通过话题也能导航,那么nav2怎么判断导航方式呢,比如它怎么知道是否是NavToPose还是其他方式

      24291485052 1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        Nav2导航框架在ROS 2中提供了一套用于移动机器人导航的解决方案。它确实使用行为树(Behavior Trees, BT)来协调多个独立的模块化服务,并通过ROS 2的接口(如动作服务器或服务)与这些服务进行通信,以实现复杂的导航行为。

        关于你提到的导航触发方式,Nav2确实支持通过不同的方式触发导航,包括通过发布动作到行为树控制器和通过发布话题到特定的主题。下面我将详细解释这两种方式,并说明Nav2如何判断导航方式。

        1. 通过发布动作到行为树控制器

        在Nav2中,你可以通过发布一个动作到行为树控制器来触发导航。例如,发布一个NavToPose动作将告诉行为树控制器将机器人导航到指定的位置。行为树控制器会解析这个动作并根据预定义的行为树逻辑来执行一系列的任务,如路径规划、速度计算、避障等。

        2. 通过发布话题到特定的主题

        你提到的通过ros2 topic pub命令发布一个PoseStamped消息到/goal_pose主题,也是触发导航的一种方式。但这种方式通常不是直接由行为树控制器处理的,而是由Nav2框架中的某个组件(如move_base的替代品nav2_bt_navigator)监听这个主题,并在接收到新的目标位姿时触发导航。

        Nav2如何判断导航方式

        • 通过动作(Action)判断:当你发布一个动作到行为树控制器时,动作的类型(如NavToPose)和行为树中的节点配置共同决定了导航的具体方式。行为树中的节点会根据接收到的动作类型和参数来执行相应的任务。
        • 通过话题(Topic)判断:虽然通过话题发布目标位姿不会直接触发行为树中的特定节点,但Nav2框架中的组件会根据接收到的消息类型和内容来触发相应的导航逻辑。通常,这些组件会解析消息中的目标位姿,并将其转换为内部表示,然后调用行为树或其他导航组件来执行导航任务。

        总结

        Nav2导航框架通过灵活的组合行为树、动作服务器和话题监听等方式,支持多种触发导航的方式。不同的触发方式会根据其类型和参数来调用不同的导航逻辑,以实现复杂的导航行为。在实际应用中,你可以根据具体需求选择最适合的触发方式来实现你的导航任务。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        24291485052 1 条回复 最后回复 回复 引用 0
        • 24291485052
          Plaech @小伊
          最后由 编辑

          @小伊 能简单介绍一下bt_navigator吗,比如它订阅哪些话题,发布什么等

          1 条回复 最后回复 回复 引用 0
          • 小伊小
            机器人小伊
            最后由 编辑

            bt_navigator(行为树导航仪)是ROS(Robot Operating System)中的一个导航模块,它使用行为树(Behavior Tree)作为其核心控制机制,使得复杂的机器导航变得简单、灵活。以下是关于bt_navigator的一些基本信息:

            1. 功能概述:

              • 输入目标姿势,将机器人导航到指定的目的地。
              • 实现了导航到指定姿势(NavigateToPose)和导航通过指定姿势(NavigateThroughPoses)的接口。
            2. 订阅的话题(Topics):

              • bt_navigator订阅的具体话题取决于其配置和行为树的具体设置,但通常会包括与导航相关的基本话题,如目标位置、路径规划结果、传感器数据(如激光雷达、里程计等)等。
            3. 发布的话题(Topics):

              • bt_navigator可能发布机器人当前的位姿、速度命令、导航状态(如成功、失败、运行中)等话题。
            4. 行为树(Behavior Tree):

              • 行为树是bt_navigator的核心,它决定了机器人在不同情况下应采取的行为。
              • 行为树由XML描述,通过BehaviorTreeEngine类添加到系统中,并动态创建和执行。
            5. 行为树节点(Behavior Tree Nodes):

              • 行为树节点可以包括条件节点(如判断机器人是否卡住、是否到达目标等)和行为节点(如移动、旋转、等待等)。
              • 节点之间通过树形结构组织,实现复杂的导航逻辑。
            6. 参数配置:

              • bt_navigator的配置通常包括行为树XML文件的路径、行为树节点共享库列表等。
              • 例如,default_nav_to_pose_bt_xml参数用于设置NavigateToPose默认行为树XML描述文件的路径。
            7. 与其他模块的交互:

              • bt_navigator通常与ROS中的其他模块(如AMCL、move_base、map_server等)一起使用,共同完成机器人的自主导航任务。

            请注意,由于bt_navigator的具体实现和配置可能因不同的ROS版本和应用场景而有所不同,以上信息仅作为一般性的介绍。在实际使用中,建议参考具体的ROS版本和bt_navigator的文档进行配置和使用。


            以上为生成回答,仅供参考~

            我是小伊,已接入ChatGpt,所有回复,仅供参考~

            1 条回复 最后回复 回复 引用 0
            • 24291485052
              Plaech @2429148505
              最后由 编辑

              @2429148505 在 关于nav2导航究竟是如何触发的问题 中说:

              最近想要让节点自动控制nav2导航,但是想不明白到底要怎么做。查了几天资料,之前一直觉得需要通过发布action到bt控制器,然后指定特定动作,如NavToPose,才能完成导航,然后今天再去看了一下教程,ros2 topic pub /goal_pose geometry_msgs/PoseStamped "{header: {stamp: {sec: 0}, frame_id: 'map'}, pose: {position: {x: 0.2, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}"似乎通过话题也能使其导航。我想问一下,nav2的内在判断是怎么样的,如果通过话题也能导航,那么nav2怎么判断导航方式呢,比如它怎么知道是否是NavToPose还是其他方式

              @小鱼 鱼哥可以来讲讲吗,说实话我现在有点乱。我又去看了bt_navigator的api,似乎没有它是通过订阅话题行动的证据,而且SimpleNav2Commander似乎也是通过发布动作的方式导航的。那么这个通过话题导航究竟是bt_navigation实现的吗?是否有很好的文档学习bt_navigation,在nav2的文档里似乎没有很好的说明,其只介绍了如何配置

              小鱼小 1 条回复 最后回复 回复 引用 0
              • 小鱼小
                小鱼 技术大佬 @2429148505
                最后由 编辑

                @2429148505 通过不同的动作通信带偶用话题实现的,至于bt是最终的逻辑实现,比如单点导航的具体步骤(规划到控制)

                新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                24291485052 1 条回复 最后回复 回复 引用 0
                • 24291485052
                  Plaech @小鱼
                  最后由 编辑

                  @小鱼 其实我想问的是:当我想指定目标导航时,直接在goal_pose话题发布信息和使用服务或者动作是否只有有无反馈的区别?如果直接发布话题信息,nav2会怎么选择行为树,是直接默认使用nav_to_pose吗?

                  1 条回复 最后回复 回复 引用 0
                  • 第一个帖子
                    最后一个帖子
                  皖ICP备16016415号-7
                  Powered by NodeBB | 鱼香ROS