Homalozoa X b35dc141b9 | 2 years ago | |
---|---|---|
.. | ||
decision_maker | 2 years ago | |
decision_utils | 2 years ago | |
README.md | 2 years ago | |
README_EN.md | 2 years ago |
该项目包含两个子项目:decision_maker
和decision_utils
。后者为决策相关功能的基类和工具类集合,负责实现通用功能;前者面向业务层,负责实现具体业务功能。
截至目前:
decision_utils
中提供了cascade_manager
,该模块继承于cyberdog_utils::LifecycleNode
,具备级联/并联和单点控制的功能,可以快速管控其作用域下的节点的启动和关闭。
decision_maker
中提供了automation_manager
、ception_manager
、interaction_manager
和motion_manager
。分别用于自动化功能、感知功能、人机交互功能和运动功能的管理和决策。该四个模块均继承cascade_manager
,并在基础上根据业务功能稍作改动。
本功能实现于decision_utils。目的是实现一个可以通过自启动和自暂停来并行管理其子节点状态的功能。它继承于cyberdog_utils::LifecycleNode
,该节点的原理可以跳转至cyberdog_utils进行了解。
级联管理器按照ROS 2
生命周期节点的机制,依次实现了manager_configure
、manager_activate
、manager_deactivate
、manager_cleanup
、manager_shutdown
和manager_error
,并需要继承它的节点在相应的过渡态调用相应的函数。支持参数配置。
[] 内为变量名。
timeout_manager_s
。级联管理器通过辨识外部参数区分自身功能类型。目前共实现三种功能类型,分别为:单管理器模式
、单列表管理模式
和多列表管理模式
。
chainnodes_state_
变量。multi
以激活多列表管理模式,并在配置时向manager_configure
函数传入列表名称的正确字符串。所有继承级联管理器的节点均可使用message_info
、message_warn
和message_error
进行ROS相关的记录输出,其中输入std::string
格式的内容即可(多条字符串可用+
进行组合)。
目前本节点只负责激活和暂停自动化相关节点,包括Explor
模式和Track
模式中特别需要的节点。支持参数配置。
目前本节点负责激活和暂停感知相关功能节点,并负责收集重要的感知信息,融合感知信息并对信息进行处理和分类。
rate_tik_hz
。soc_limit_perc
。目前安全保护功能以rate_tik_的频率检测机器人状态,目前仅支持低电量状态的辨别,并对外部节点进行广播通知。后续会增加新功能。
目前本节点负责激活和暂停人机交互相关功能节点。
目前本节点负责所有与运动相关的指令收集、指令处理和指令下发,所有的运动相关的状态收集、状态处理和状态广播,以及所有与运动相关的参数配置和功能配置。
由于目前运动控制层面是使用Lightweight Communications and Marshalling(LCM)
进行通信,故本模块还会调用LCM相关接口进行通讯。
定制化的动作会通过Tom's Obvious, Minimal Language(TOML)
进行设计,目前该模块是运动控制开发人员通过Mini Cheetah
的框架进行改进后设计的,并提供txt
格式,我们设计了一个Python
脚本自动转换txt
到TOML
。未来将开发自动生成动作TOML
文件的功能,开发者并不需要手动编写这些文件。
由于机器人只有一个主体,故下述的模式切换
、步态切换
和动作执行
都具备抢占功能。
数据格式:参考motion_msgs
运动参数修改目前仅支持身体高度和足底高度的动态修改。
合法请求:具备较新时间戳的运动参数数据。
cons_max_body_
和cons_max_gait_
的约束内,且为正数。数据格式:参考motion_msgs
合法请求:具备较新时间戳的模式。
control_mode
和mode_type
两个字段进行区分,前三个模式的mode_type
均为DEFAULT_TYPE(0)
,后两个模式可根据mode_type
进行辨识不同的子模式。抢占功能:新发起的合法模式切换请求均可抢占正在运行的旧的模式切换请求,即,新的优先级高。相同模式(两个字段都相同)不抢占。
取消功能:发起申请的句柄可以在任意时刻发起取消。
反馈:一旦收到合法请求,模式Action服务会以rate_common_
Hz的频率检测当前切换状态,并以该频率返回当前切换情况。
结果:
robot_control_state_
中的modestamped
值。数据格式:参考motion_msgs
合法请求:具备合法动机,且具备较新时间戳的步态
motivation
取值必须符合预设值cyberdog_utils::GaitChangePriority
抢占功能:首先考虑动机(优先级),其次考虑步态。
取消功能:发起申请的句柄可以在任意时刻发起取消。
打断功能:如果在步态切换的过程中发生模式变更,则立即中止当前步态切换。
反馈:一旦收到合法请求,步态Action服务会以rate_common_
Hz的频率检测当前切换的步态,并以该频率返回当前切换情况。
结果:
robot_control_state_
中的gaitstamped
值。gait_cached_
的预设值。数据格式:参考motion_msgs
合法请求:具备较新时间戳的动作及其参数(如果需要)
para
字段给的值是有效的。动作执行效果会与参数直接相关。抢占功能:除了拜年和打滚两个动作外,其他动作均可被新的动作执行请求抢占。
取消功能:除了拜年和打滚两个动作外,其他动作均可被发起申请的句柄在任意时刻取消。
打断功能:除了拜年和打滚两个动作外,其他动作都可以被步态切换请求、模式切换请求和移动指令直接打断。
外置调参:目前动作分为三类:
TOML
的参数文件,读取文件后发送参数表。目前建立和调优参数表的方式需要工程师做实验后手动调节,未来会设计一个自动化编程的软件。反馈:一旦收到合法请求,动作执行服务会以rate_common_
Hz的频率检测动作执行的进度(从0到100),并以该频率返回当前执行情况,同时更新robot_control_state_
的orderstamped
。
结果:
robot_control_state_
中的id
为MONO_ORDER_NULL
,恢复状态,返回成功。robot_control_state_
中的id
为MONO_ORDER_NULL
,恢复状态,返回失败。数据格式:参考motion_msgs
合法请求:具备恰当source id和指定frame id,且具备较新时间戳的行动指令
本模块支持独立运行和启动系统运行,可结合GRPC或手柄两种控制模式。
独立运行即使用ros2 run
启动,常用于单功能测试和单功能调试时使用。
完整指令为:
ros2 run cyberdog_decisionmaker decisionmaker
该启动状态下,由于没有外部参数,只能测试运动相关功能。
启动系统运行即使用ros2 launch
启动,铁蛋会开机自动调用该脚本启动,除了启动决策节点外,还同时启动其他若干个节点,具体可参考cyberdog_bringup进行深入了解。
完整指令为:
ros2 launch cyberdog_bringup lc_bringup_launch.py
该启动状态是机器人正常启动的流程,可以测试所有功能。
本模块支持内置调试模式,并支持GDB调试。
motion_manager
会检测三个宏定义,分别是开启调试的总开关,行动调试和模拟运动数据。
DEBUG_ALL // for complete debug
DEBUG_MOTION // for gait & motion debug
DEBUG_MOCK // for mock lcm messages
进入调试模式,需要打开DEBUG_ALL
:
DEBUG_MOTION
DEBUG_MOCK
DEBUG_MOTION
和DEBUG_MOCK
可以同时打开可以通过在decision_maker
的根目录建立.debug_xxx
来开启调试功能,如
$ touch .debug_all
对应关系如下表
DEF | File |
---|---|
DEBUG_ALL | .debug_all |
DEBUG_MOTION | .debug_motion |
DEBUG_MOCK | .debug_mock |
CMakeLists.txt
中添加-g
的编译标记,一般在add_compile_options
函数里gdb
前缀进行启动gdb
和xterm
等,如不具备需要安装Domain ID
和相同namespace
下不存在相同的节点后,在具备图形化界面的环境使用Launch
进行启动。No Description
C++ Python C SVG Text other
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》