跳转到内容

uBot Multirotor Movement

C++
UUBotMultirotorMovementComponent
父类
UMovementComponent
类型
组件 · 抽象类
模块
UBotAerial · UBotAerial 0.1.0
头文件
Source/UBotAerial/Public/UBotMultirotorMovementComponent.h

多旋翼飞行模型的基类。它按 uBot 仿真时间以固定物理步移动根组件(被更新的组件),用碰撞体扫过世界并沿接触面滑动(地面和其他表面一样),每帧显示外推到当前仿真时间的姿态。接受航向坐标系下的速度指令(IUBotVelocityCommandable):X 沿当前朝向向前,Y 向右,Z 向上,只用 Z 方向的角速度(偏航角速度)。

纯函数 · UUBotMultirotorMovementComponent.GetLastVelocityCommand

最近一条被接受的速度指令(限幅之后)。

引脚方向类型
Return Value输出UBot Velocity Command结构体

纯函数 · UUBotMultirotorMovementComponent.GetMultirotorState

最近一个物理步的真值状态(SI 单位,UE 世界轴)。

引脚方向类型
Return Value输出UBot Multirotor State结构体

纯函数 · UUBotMultirotorMovementComponent.GetPhysicsStepCount

开始游玩以来已运行的物理步数。

引脚方向类型
Return Value输出Integer64

纯函数 · UUBotMultirotorMovementComponent.GetRotorLayout

按电机顺序返回转子的位置(机体坐标系,单位 m,UE 轴)和旋转方向。默认是臂长 0.225 m 的四旋翼 X 型,按 PX4 顺序:右前、左后、左前、右后。把每个 uBot Rotor 放在对应 Rotor Index 的位置上;开始游玩时转子从这里取旋转方向。

引脚方向类型
Positions Meters输出Vector数组
Spin Directions输出EUBot Rotor Spin Direction枚举数组

函数 · UUBotMultirotorMovementComponent.ResetFlight

停止所有运动,并像开始游玩时那样在当前位姿重新悬停。

函数 · UUBotMultirotorMovementComponent.TeleportMultirotor

把无人机移到新位姿,不做扫掠检测。勾选 Stop Motion 时速度清零,无人机在新位置悬停。

引脚方向类型默认值
New Location输入Vector0, 0, 0
New Rotation输入Rotator0, 0, 0
Stop MotionbStopMotion输入Booleantrue

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

事件 · UUBotMultirotorMovementComponent.OnImpact

无人机开始接触物体,且撞击速度不低于 Impact Event Min Speed 时触发。

引脚方向类型
Hit输出Hit Result结构体
Impact Speed Meters Per Second输出Float

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

属性类型默认值说明
Actuator IdActuatorId · MultirotorString""向 uBot 报告的执行器 ID。为空时使用所属 Actor 的机器人 ID(其 uBot Identity,否则用它的名字)。蓝图读写,Details 可编辑
Enable WindbEnableWind · MultirotorBooleantrueuBot Wind 的风是否影响这架无人机。蓝图读写,Details 可编辑
Max Steps Per FrameMaxStepsPerFrame · MultirotorInteger250每帧最多运行这么多个物理步。帧时间更长时,多出的时间被跳过,并记录一次警告。最小 1
Physics Rate HzPhysicsRateHz · MultirotorFloat500.0每秒仿真时间的物理步数,单位 Hz。步数越多越准确,开销也越大。范围 100.0 – 4000.0;单位 Hertz
Contact FrictionContactFriction · Multirotor|ContactFloat0.3接触时的滑动摩擦:滑动速度减少冲击速度的这个比例。最小 0.0;蓝图读写,Details 可编辑
Impact Event Min Speed Meters Per SecondImpactEventMinSpeedMetersPerSecond · Multirotor|ContactFloat0.3沿表面法线的撞击速度低于这个值时不触发 On Impact,单位 m/s。最小 0.0;单位 MetersPerSecond;蓝图读写,Details 可编辑
Velocity LimitsVelocityLimits · Multirotor|LimitsUBot Multirotor Velocity Limits结构体(MaxHorizontalSpeedMetersPerSecond=10.000000,MaxClimbSpeedMetersPerSecond=3.000000,MaxDescentSpeedMetersPerSecond=2.000000,MaxYawRateRadiansPerSecond=1.570796)超过这些限制的速度指令会被限幅。蓝图读写,Details 可编辑