跳转到内容

uBot ROS Command Receiver

C++
UUBotROSCommandReceiverComponent
父类
UActorComponent
类型
组件 · 抽象类
模块
UBotROS · UBotROS 0.1.2
头文件
Source/UBotROS/Public/UBotROSCommandReceiverComponent.h

通过 uBot ROS 桥接收 ROS 2 指令,并转给实现了 uBotCore 执行接口的目标的组件基类,不含控制逻辑。话题是 /<namespace>/<子类的末段名>(best_effort / volatile / 10);命名空间取自 uBot Identity,除非设了 Robot Namespace Override,Command Topic Override 则替换整个话题。目标是 Target Component,未设时用所属 Actor 或它第一个实现该子类接口的组件;没有目标时仍会解码指令、触发事件并计超时。超过 Command Timeout Seconds 仿真秒没有新指令,目标只会被释放一次(退回自己的默认行为,例如悬停),并触发 On Command Timeout;结束游戏时也会释放仍然生效的指令。

纯函数 · UUBotROSCommandReceiverComponent.GetCommandError

最近一条错误的文字;自上次启动以来没有错误时为空。

引脚方向类型
Return Value输出String

纯函数 · UUBotROSCommandReceiverComponent.GetCommandTarget

指令交给的对象;没有目标(只触发事件)时为空。

引脚方向类型
Return Value输出Object对象引用

纯函数 · UUBotROSCommandReceiverComponent.GetResolvedCommandTopic

正在订阅的话题;没有订阅时,是下一次启动会用的话题。

引脚方向类型
Return Value输出String

纯函数 · UUBotROSCommandReceiverComponent.IsCommandActive

从收到有效指令到超时为 true;超时关闭时,收到过指令后一直为 true。

引脚方向类型
Return Value输出Boolean

纯函数 · UUBotROSCommandReceiverComponent.IsCommandReceiverReady

已订阅时为 true,与桥是否连上无关。

引脚方向类型
Return Value输出Boolean

函数 · UUBotROSCommandReceiverComponent.RestartCommandReceiver

取消订阅后用当前设置重新订阅,超时计时继续。

引脚方向类型
Return Value输出Boolean

函数 · UUBotROSCommandReceiverComponent.SetTargetComponent

用一个组件直接替换 Target Component;传空则恢复在所属 Actor 上自动查找。

引脚方向类型
New Target输入Actor Component对象引用

函数 · UUBotROSCommandReceiverComponent.StopCommandReceiver

取消订阅;已经生效的指令仍然按时超时。

在 Components 面板选中组件,在 Details 面板底部 Events 区点事件旁的 + 即可生成事件节点。

事件 · UUBotROSCommandReceiverComponent.OnCommandError

订阅失败、消息畸形或无效、目标不可用或拒绝了指令时触发。

引脚方向类型
Error Message输出String

事件 · UUBotROSCommandReceiverComponent.OnCommandTimeout

每次超时触发一次,在目标(如果有)被释放之后。

未特别标注的属性:蓝图里只读,Details 面板里可以编辑。

属性类型默认值说明
Auto Start ReceiverbAutoStartReceiver · uBot|ROS|CommandBooleantrueBegin Play 时订阅;关闭后调用 Restart Command Receiver 开始接收。
Robot Namespace OverrideRobotNamespaceOverride · uBot|ROS|Command|IdentityString""留空时用 uBot Identity 解析出的命名空间(没有 Identity 组件则用净化后的 Actor 名)。前后的 / 被忽略,每一段都会被净化;只含 / 表示根命名空间。
Command Timeout SecondsCommandTimeoutSeconds · uBot|ROS|Command|SafetyFloat0.5超过这么多仿真秒没有新指令,就释放目标;0 关闭超时。最小 0.0;单位 s
Target ComponentTargetComponent · uBot|ROS|Command|TargetComponent Reference结构体()接收指令的组件,必须实现该子类对应的接口。留空时用所属 Actor,或它第一个实现该接口的组件;只设了 Referenced Actor 时,在那个 Actor 上同样查找。
Command Topic OverrideCommandTopicOverride · uBot|ROS|Command|TopicString""非空时替代 /<namespace>/<末段名>,缺少前导 / 会补上。