跳转到内容

uBot ROS Sensor Bridge

C++
UUBotROSSensorBridgeComponent
父类
UActorComponent
类型
组件 · 可在 Components 面板添加 · 可作为蓝图父类
模块
UBotROS · UBotROS 0.1.2
头文件
Source/UBotROS/Public/UBotROSSensorBridgeComponent.h

把所属 Actor 上的每个 uBot 传感器发布到 ROS 2,并发布传感器 TF。为每个传感器建一个发布器,只搜索 Actor 本身和它的组件,不搜索子 Actor。发布器建好后进入 Ready,不等桥连接成功。

纯函数 · UUBotROSSensorBridgeComponent.GetActivePublisherTopics

已声明的全部话题,已排序。

引脚方向类型
Return Value输出String数组

纯函数 · UUBotROSSensorBridgeComponent.GetDiscoveredSensorCount

有发布器的传感器个数。

引脚方向类型
Return Value输出Integer

纯函数 · UUBotROSSensorBridgeComponent.GetROSBridgeError

最近一次配置错误的文字,没有时为空。

引脚方向类型
Return Value输出String

纯函数 · UUBotROSSensorBridgeComponent.GetROSBridgeStatus

组件的生命周期状态。

引脚方向类型
Return Value输出EUBot ROSSensor Bridge Status枚举

纯函数 · UUBotROSSensorBridgeComponent.GetResolvedBaseFrameId

实际发布的基坐标系;开启 Prefix Frames with Namespace 时带命名空间前缀。

引脚方向类型
Return Value输出String

纯函数 · UUBotROSSensorBridgeComponent.GetResolvedNamespace

默认话题用的命名空间,已净化,没有前导 /;根命名空间时为空。

引脚方向类型
Return Value输出String

纯函数 · UUBotROSSensorBridgeComponent.IsROSBridgeReady

状态为 Ready 时为 true。

引脚方向类型
Return Value输出Boolean

函数 · UUBotROSSensorBridgeComponent.RefreshSensorPublishers

重新发现所属 Actor 的传感器并重建全部发布器,组件没在运行时先初始化。成功返回 true。

引脚方向类型
Return Value输出Boolean

函数 · UUBotROSSensorBridgeComponent.RestartROSBridge

拆掉发布器后重新初始化,成功返回 true。

引脚方向类型
Return Value输出Boolean

函数 · UUBotROSSensorBridgeComponent.StopROSBridge

拆掉全部发布器和静态 TF,状态变为 Stopped。

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

事件 · UUBotROSSensorBridgeComponent.OnROSBridgeError

配置有问题、组件进入 Error 时触发,Error Message 是原因。

引脚方向类型
Error Message输出String

事件 · UUBotROSSensorBridgeComponent.OnROSBridgeReady

发布器建好、组件进入 Ready 时触发。

事件 · UUBotROSSensorBridgeComponent.OnROSPublishersRefreshed

Refresh Sensor Publishers 成功后触发,Publisher Count 是现在声明的话题数。

引脚方向类型
Publisher Count输出Integer

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

属性类型默认值说明
Base Frame OverrideBaseFrameOverride · uBot ROS|IdentityString""基坐标系名。留空时用 uBot Identity 的 Base Frame Id(默认 base_link)。
Base Link ComponentBaseLinkComponent · uBot ROS|IdentityComponent Reference结构体()基组件,静态 TF 以它为参考。留空或无法解析时,用 uBot Identity 的 Base Component(默认是根组件)。
Prefix Frames with NamespacebPrefixFramesWithNamespace · uBot ROS|IdentityBooleanfalse所有发布的 frame id 变成 <namespace>/<frame>,用于多机器人的 TF 树。
Robot Namespace OverrideRobotNamespaceOverride · uBot ROS|IdentityString""机器人的命名空间。留空时用 uBot Identity 的命名空间;只填 / 表示根命名空间(话题形如 /imu/data)。用 / 分隔多级,每一段都会被净化。
Auto InitializebAutoInitialize · uBot ROS|LifecycleBooleantrueBegin Play 时自动初始化;关闭后调用 Restart ROSBridge 或 Refresh Sensor Publishers。
Publish Invalid SamplesbPublishInvalidSamples · uBot ROS|PublishingBooleanfalse是否也发布无效样本,比如 Warming Up。
Skip when No SubscribersbSkipWhenNoSubscribers · uBot ROS|PublishingBooleantrue桥报告某个话题没有订阅者时,跳过这个话题的编码;相机还跳过 GPU 读回。
Sensor Data Qos OverrideSensorDataQosOverride · uBot ROS|QoSUBot ROSQos Override结构体(Qos=(Depth=5))覆盖传感器数据(IMU、激光雷达、图像)的 QoS,默认是 Best Effort / Volatile / 5。
State Qos OverrideStateQosOverride · uBot ROS|QoSUBot ROSQos Override结构体(Qos=(Depth=5))覆盖位姿和里程计的 QoS,默认是 Reliable / Volatile / 10。
Odometry FrameOdometryFrame · uBot ROS|TFStringodom里程计坐标系名,默认 odom,是动态 TF 的父坐标系。
Publish Dynamic TFbPublishDynamicTF · uBot ROS|TFBooleantrue是否发布动态的 odom → base TF。
Publish Static Sensor TFbPublishStaticSensorTF · uBot ROS|TFBooleantrue是否发布静态的 base → 传感器 TF。
Topic OverridesTopicOverrides · uBot ROS|TopicsString → UBot ROSTopic Override映射""按逻辑键替换默认话题:pose、odom、imu、scan、lidar、rgb_camera、rgb_camera.camera_info、depth_camera、depth_camera.camera_info。同类型有多个传感器时,键是净化后的 SensorId 和 <SensorId>.camera_info。