机器人控制框架行为树py_trees <一、行为树介绍>

        行为树是ros2比较大的改动地方之一,替代了之前ros1中的状态机。行为树和状态机之前的差异这里不在做赘述,感兴趣的可以搜索相关的资料。

        常见的行为树(bt)框架有C++版本的BehaviorTree.CPP库,和python版本的py_tree库。看个人喜好,因为我工作中写逻辑框架的时候需要快速实现并且可视化下框架结构后用于小组讨论,所以我在项目的初期甚至整个项目中也都是使用py_trees。

        使用命令行安装

        sudo apt install ros-foxy-py-trees                     # 树结构包

        sudo apt install ros-foxy-py-trees-ros-viewer   # 查看树的结构脚本文件

        行为树概念大致分为:

        1. 行为 behavior;

        2. 生命周期;

        3. 黑板(blackboard);

        4. 可视化行为树;

        · 其中behavior算是框架中的最小粒度,一切操作逻辑和流程都可以使用behavior来描述(我是这么理解的)。

        · 生命周期,py_tree中的生命周期其实已经涵在行为树中,理解生命周期中的每个节点对于行为树什么时候启动什么时候终止有很大的帮助,因此需要将生命周期概念和行为树放一起。

        实际使用中自定义的behavior基本上会遇到以下7个状态(后面详细说明什么时候触发这些状态)

        __init__

        setup()

        initialise()

        tick()

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个用于控制差动驱动机器人的Gazebo仿真插件配置,其中包含了一系列的参数设置,如机器人轮子的半径、轮子间距、速度控制指令的话题名称、发布的tf和joint_state等。具体的参数设置如下: - name:插件的名称为differential_drive_controller - filename:插件的库文件名为libgazebo_ros_diff_drive.so - rosDebugLevel:ROS节点的调试等级为Debug - publishWheelTF:是否发布轮子的tf信息,设置为true - robotNamespace:机器人的ROS命名空间为/ - publishTf:是否发布机器人的tf信息,设置为1 - publishWheelJointState:是否发布轮子的joint_state信息,设置为true - alwaysOn:插件是否始终运行,设置为true - updateRate:插件的更新频率,设置为100Hz - legacyMode:是否使用遗留模式,设置为true - leftJoint:机器人左侧轮子的关节名称为left_wheel2base_link - rightJoint:机器人右侧轮子的关节名称为right_wheel2base_link - wheelSeparation:机器人轮子的间距,设置为两倍的base_link_radius - wheelDiameter:机器人轮子的直径,设置为两倍的wheel_radius - broadcastTF:是否发布tf信息,设置为1 - wheelTorque:轮子的扭矩,设置为30 - wheelAcceleration:轮子的加速度,设置为1.8 - commandTopic:机器人速度控制的话题名称为cmd_vel - odometryFrame:里程计信息的参考坐标系为odom - odometryTopic:里程计信息发布的话题名称为odom - robotBaseFrame:机器人的基座坐标系名称为base_footprint 以上参数设置可以根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值