RapyutaSimulationPlugins
|
Physics Joint component. More...
#include <RRPhysicsJointComponent.h>
Public Member Functions | |
URRPhysicsJointComponent () | |
virtual bool | IsValid () override |
virtual void | InitializeComponent () override |
Initialize Constraint JointToChildLink and ParentLinkToJoint. More... | |
virtual void | SetVelocity (const FVector &InLinearVelocity, const FVector &InAngularVelocity) override |
Do nothing since can't set velocity directly to physics joint. More... | |
virtual void | SetVelocityTarget (const FVector &InLinearVelocity, const FVector &InAngularVelocity) override |
Call SetLinearVelocityTarget and SetAngularVelocityTarget. More... | |
virtual void | SetPose (const FVector &InPosition, const FRotator &InOrientation) override |
Do nothing since can't set pose directly to physics joint. More... | |
virtual void | SetPoseTarget (const FVector &InPosition, const FRotator &InOrientation) override |
Call SetLinearPositionTarget and SetAngularOrientationTarget. More... | |
virtual void | Teleport (const FVector &InPosition, const FRotator &InOrientation) override |
Disable collision and set target pose to given pose. More... | |
virtual void | MoveToInitPose () |
virtual void | SetJoint () |
Public Member Functions inherited from URRJointComponent | |
URRJointComponent () | |
virtual void | TickComponent (float DeltaTime, ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override |
Call #UpdatePose after update PositionTarget and OrientationTarget with LinearVelocity and AngularVelocity. More... | |
virtual void | SetSingleLinearVelocityTarget (const float Input) |
Utility wrapper of SetVelocityTarget to provide 1 DoF target orientation. More... | |
virtual void | SetSingleAngularVelocityTarget (const float Input) |
Utility wrapper of SetVelocityTarget to provide 1 DoF target position. More... | |
virtual void | SetVelocityTargetWithDelegates (const FVector &InLinearVelocity, const FVector &InAngularVelocity, const FJointCallback &InOnControlSuccessDelegate, const FJointCallback &InOnControlFailDelegate, const float InLinearTolerance=-1.0, const float InAngularTolerance=-1.0, const float InTimeOut=-1.0) |
Set the Velocity Target With Delegates object. More... | |
virtual void | SetSingleLinearVelocityTargetWithDelegates (const float Input, const FJointCallback &InOnControlSuccessDelegate, const FJointCallback &InOnControlFailDelegate, const float InLinearTolerance=-1.0, const float InTimeOut=-1.0) |
Utility wrapper of SetVelocityTargetWithDelegates to provide 1 DoF targetlinear velocity. More... | |
virtual void | SetSingleAngularVelocityTargetWithDelegates (const float Input, const FJointCallback &InOnControlSuccessDelegate, const FJointCallback &InOnControlFailDelegate, const float InAngularTolerance=-1.0, const float InTimeOut=-1.0) |
Utility wrapper of SetVelocityTargetWithDelegates to provide 1 DoF target angular velocity. More... | |
virtual void | SetVelocityWithArray (const TArray< float > &InVelocity) |
Set the Velocity With TArray. More... | |
virtual void | SetVelocityTargetWithArray (const TArray< float > &InVelocity) |
Set the Velocity Target. More... | |
virtual void | SetVelocityTargetWithArrayWithDelegates (const TArray< float > &InVelocity, const FJointCallback &InOnControlSuccessDelegate, const FJointCallback &InOnControlFailDelegate, const float InLinearTolerance=-1.0, const float InAngularTolerance=-1.0, const float InTimeOut=-1.0) |
Set the Velocity Target With Array With Delegates object. More... | |
virtual bool | HasReachedVelocityTarget (const float InLinearTolerance=-1.f, const float InAngularTolerance=-1.f) |
Check Pose reach the target pose. More... | |
virtual void | SetSinglePositionTarget (const float Input) |
Utility wrapper of SetPoseTarget to provide 1 DoF target orientation. More... | |
virtual void | SetSingleOrientationTarget (const float Input) |
Utility wrapper of SetPoseTarget to provide 1 DoF target position. More... | |
virtual void | SetPoseTargetWithDelegates (const FVector &InPosition, const FRotator &InOrientation, const FJointCallback &InOnControlSuccessDelegate, const FJointCallback &InOnControlFailDelegate, const float InPositionTolerance=-1.0, const float InOrientationTolerance=-1.0, const float InTimeOut=-1.0) |
Set Pose Target. More... | |
virtual void | SetSinglePositionTargetWithDelegates (const float Input, const FJointCallback &InOnControlSuccessDelegate, const FJointCallback &InOnControlFailDelegate, const float InPositionTolerance=-1.0, const float InTimeOut=-1.0) |
Utility wrapper of SetPoseTargetWithDelegates to provide 1 DoF target position. More... | |
virtual void | SetSingleOrientationTargetWithDelegates (const float Input, const FJointCallback &InOnControlSuccessDelegate, const FJointCallback &InOnControlFailDelegate, const float InOrientationTolerance=-1.0, const float InTimeOut=-1.0) |
Utility wrapper of SetPoseTargetWithDelegates to provide 1 DoF target orientation. More... | |
virtual bool | HasReachedPoseTarget (const float InPositionTolerance=-1.f, const float InOrientationTolerance=-1.f) |
Check Pose reach the target pose. More... | |
virtual void | SetPoseWithArray (const TArray< float > &InPose) |
Directly set pose. More... | |
virtual void | SetPoseTargetWithArray (const TArray< float > &InPose) |
Set Pose Target. More... | |
virtual void | SetPoseTargetWithArrayWithDelegates (const TArray< float > &InPose, const FJointCallback &InOnControlSuccessDelegate, const FJointCallback &InOnControlFailDelegate, const float InPositionTolerance=-1.0, const float InOrientationTolerance=-1.0, const float InTimeOut=-1.0) |
Set Pose Target. More... | |
FTransform | GetJointToChildLink () |
FTransform | GetParentLinkToJoint () |
Public Attributes | |
UPhysicsConstraintComponent * | Constraint = nullptr |
Physics Constraints. More... | |
bool | bSmoothing = false |
Smoothing TargetPose to Constraint. More... | |
float | Kvp = 10.f |
Position Velocity Gain used with bSmoothing = false. More... | |
float | Kva = 10.f |
Angular Velocity Gain used with bSmoothing = false. More... | |
float | Kip = 0.f |
Position Integral Gain used with bSmoothing = false. More... | |
float | Kia = 0.f |
Angular Integral Gain used with bSmoothing = false. More... | |
float | LinearVelocitySmoothingAcc = 10.f |
Acceleration[cm/ss] used by velocity smoothing if #bVelocitySmoothing = true. More... | |
float | AngularVelocitySmoothingAcc = 10.f |
Acceleration[deg/ss] used by velocity smoothing if #bVelocitySmoothing = true. More... | |
float | LinearSpring = 1000 |
[kg/ss] More... | |
float | LinearDamper = 10 |
[kg/s] More... | |
float | LinearForceLimit = UE_BIG_NUMBER |
[kg.cm/ss] More... | |
float | AngularSpring = 100000 |
[kg.cm/ss] More... | |
float | AngularDamper = 10000 |
[kg.cm/s] More... | |
float | AngularForceLimit = UE_BIG_NUMBER |
[kg.deg.deg/ss] More... | |
bool | bManualConstraintSetting = false |
if false, physics constraints parameters are set from SetJoint . More... | |
Public Attributes inherited from URRJointComponent | |
FVector | LinearVelocity = FVector::ZeroVector |
FVector | AngularVelocity = FVector::ZeroVector |
FVector | LinearVelocityTarget = FVector::ZeroVector |
FVector | AngularVelocityTarget = FVector::ZeroVector |
FVector | PositionTarget = FVector::ZeroVector |
FRotator | OrientationTarget = FRotator::ZeroRotator |
FVector | Position = FVector::ZeroVector |
FRotator | Orientation = FRotator::ZeroRotator |
float | PositionTolerance = 1.f |
[cm] tolerance for control More... | |
float | OrientationTolerance = 1.f |
[degree] tolerance for control More... | |
float | LinearVelocityTolerance = 10.f |
[cm/s] tolerance for control More... | |
float | AngularVelocityTolerance = 10.f |
[degree/s] tolerance for control More... | |
UStaticMeshComponent * | ParentLink |
UStaticMeshComponent * | ChildLink |
ERRJointControlType | ControlType = ERRJointControlType::POSITION |
uint8 | LinearDOF = 0 |
Linear Degrees Of Freedom. More... | |
uint8 | RotationalDOF = 1 |
Rotational Degrees Of Freedom. More... | |
FVector | PositionMax = FVector(1000, 1000, 1000) |
Pose Limitations[cm]. More... | |
FVector | PositionMin = FVector(-1000, -1000, -1000) |
Pose Limitations[cm]. More... | |
FRotator | OrientationMax = FRotator(180.f) |
Orientation Limitations[deg]. More... | |
FRotator | OrientationMin = FRotator(-180, -180, -180) |
Orientation Limitations[deg]. More... | |
FVector | LinearVelMax = FVector(1000, 1000, 1000) |
Linear Velocity Limitations[cm/s]. More... | |
FVector | AngularVelMax = FVector(180.f) |
Angular Velocity Limitations[deg/s]. More... | |
bool | bLimitRoll = true |
bool | bLimitPitch = true |
bool | bLimitYaw = true |
FVector | InitialPosition = FVector::ZeroVector |
FRotator | InitialOrientation = FRotator::ZeroRotator |
Protected Member Functions | |
virtual void | UpdateState (const float DeltaTime) override |
virtual void | UpdateControl (const float DeltaTime) override |
virtual void | UpdateIntegral (const FVector &InPositionDiff, const FVector &InOrientationDiff, const float DeltaTime) |
Update LinearVelocityTarget from InPositionDiff and Kvp. More... | |
virtual void | UpdateVelocityTargetFromPose (const FVector InPositionDiff, const FVector InOrientationDiff) |
Update LinearVelocityTarget from InPositionDiff and Kvp. More... | |
virtual FRotator | GetOrientationTargetFromEuler (const FVector &InOrientationTarget) |
Get the Orientation Target to SetAngularOrientationTarget from Euler angle. More... | |
Protected Member Functions inherited from URRJointComponent | |
virtual void | PoseFromArray (const TArray< float > &InPose, FVector &OutPosition, FRotator &OutOrientation) |
virtual void | VelocityFromArray (const TArray< float > &InVelocity, FVector &OutLinearVelocity, FVector &OutAngularVelocity) |
virtual void | SetDelegates (const FJointCallback &InOnControlSuccessDelegate, const FJointCallback &InOnControlFailDelegate, const float InPositionTolerance=-1.0, const float InOrientationTolerance=-1.0, const float InLinearTolerance=-1.0, const float InAngularTolerance=-1.0, const float InTimeOut=-1.0f) |
Set Delegates which will be unbounded when move is completed or timeouthappen. More... | |
virtual void | ResetControl () |
Protected Attributes | |
FVector | MidLinearVelocityTarget = FVector::ZeroVector |
LinearVelocityTarget for smoothing. More... | |
FVector | MidAngularVelocityTarget = FVector::ZeroVector |
AngularVelocityTarget for smoothing. More... | |
FVector | MidPositionTarget = FVector::ZeroVector |
PositionTarget for smoothing. More... | |
FRotator | MidOrientationTarget = FRotator::ZeroRotator |
OrientationTarget for smoothing. More... | |
TStaticArray< TwoPointInterpolation, 3 > | PositionTPI |
Position Two Point Interpolation used with bSmoothing = true. More... | |
TStaticArray< TwoAngleInterpolation, 3 > | OrientationTPI |
Angular Two Point Interpolation used with bSmoothing = true. More... | |
FVector | PErrInt = FVector::ZeroVector |
Position Error Integral used with bSmoothing = false. More... | |
FVector | AErrInt = FVector::ZeroVector |
Angular Error Integral used with bSmoothing = false. More... | |
Protected Attributes inherited from URRJointComponent | |
FTransform | JointToChildLink = FTransform::Identity |
FTransform | ParentLinkToJoint = FTransform::Identity |
bool | bMovingToTargetPose = false |
true if joint is moving to target pose More... | |
bool | bMovingToTargetVelocity = false |
true if joint is moving to target velocity More... | |
FJointCallback | OnControlSuccessDelegate |
Delegate which is called when joint reach target vel/pose. More... | |
FJointCallback | OnControlFailDelegate |
Delegate which is called whenjoint failed to reach target vel/pose. More... | |
float | ControlStartTime = 0.f |
time when target pose/vel are set. More... | |
float | ControlTimeout = -1.0f |
timeout. If joint can't reach target in this duration, OnControlFailDelegate should be called. More... | |
Physics Joint component.
PhysicsConstraintsComponent needs to be defined outside of this class and passed to Constraint in construction.
UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent))
URRPhysicsJointComponent::URRPhysicsJointComponent | ( | ) |
|
protectedvirtual |
Get the Orientation Target to SetAngularOrientationTarget from Euler angle.
InOrientationTarget |
|
overridevirtual |
Initialize Constraint JointToChildLink and ParentLinkToJoint.
Reimplemented from URRJointComponent.
|
overridevirtual |
Reimplemented from URRJointComponent.
|
virtual |
Reimplemented from URRJointComponent.
|
virtual |
Set joints parameter and etc
|
overridevirtual |
Do nothing since can't set pose directly to physics joint.
InPosition | |
InOrientation |
Reimplemented from URRJointComponent.
|
overridevirtual |
Call SetLinearPositionTarget and SetAngularOrientationTarget.
Reimplemented from URRJointComponent.
|
overridevirtual |
Do nothing since can't set velocity directly to physics joint.
InLinearVelocity | |
InAngularVelocity |
Reimplemented from URRJointComponent.
|
overridevirtual |
Call SetLinearVelocityTarget and SetAngularVelocityTarget.
Reimplemented from URRJointComponent.
|
overridevirtual |
Disable collision and set target pose to given pose.
InPosition | |
InOrientation |
Reimplemented from URRJointComponent.
|
overrideprotectedvirtual |
Reimplemented from URRJointComponent.
|
protectedvirtual |
Update LinearVelocityTarget from InPositionDiff and Kvp.
UFUNCTION() And update AngularVelocityTarget from InOrientationDiff and Kva.
InPositionDiff | |
InPositionDiff | |
InOrientationDiff | |
DeltaTime |
|
overrideprotectedvirtual |
Reimplemented from URRJointComponent.
|
protectedvirtual |
Update LinearVelocityTarget from InPositionDiff and Kvp.
And update AngularVelocityTarget from InOrientationDiff and Kva.
InPositionDiff | |
InOrientationDiff |
|
protected |
Angular Error Integral used with bSmoothing = false.
float URRPhysicsJointComponent::AngularDamper = 10000 |
float URRPhysicsJointComponent::AngularForceLimit = UE_BIG_NUMBER |
[kg.deg.deg/ss]
float URRPhysicsJointComponent::AngularSpring = 100000 |
[kg.cm/ss]
float URRPhysicsJointComponent::AngularVelocitySmoothingAcc = 10.f |
Acceleration[deg/ss] used by velocity smoothing if #bVelocitySmoothing = true.
bool URRPhysicsJointComponent::bManualConstraintSetting = false |
if false, physics constraints parameters are set from SetJoint .
Plese set true if you want to set physics constraints parameter manually.
bool URRPhysicsJointComponent::bSmoothing = false |
Smoothing TargetPose to Constraint.
If this is false, step pose target are used by SetPoseTarget If this is true, pose target changes linearly with max vel in TickComponent
UPhysicsConstraintComponent* URRPhysicsJointComponent::Constraint = nullptr |
Physics Constraints.
float URRPhysicsJointComponent::Kia = 0.f |
Angular Integral Gain used with bSmoothing = false.
float URRPhysicsJointComponent::Kip = 0.f |
Position Integral Gain used with bSmoothing = false.
float URRPhysicsJointComponent::Kva = 10.f |
Angular Velocity Gain used with bSmoothing = false.
float URRPhysicsJointComponent::Kvp = 10.f |
Position Velocity Gain used with bSmoothing = false.
float URRPhysicsJointComponent::LinearDamper = 10 |
float URRPhysicsJointComponent::LinearForceLimit = UE_BIG_NUMBER |
[kg.cm/ss]
float URRPhysicsJointComponent::LinearSpring = 1000 |
float URRPhysicsJointComponent::LinearVelocitySmoothingAcc = 10.f |
Acceleration[cm/ss] used by velocity smoothing if #bVelocitySmoothing = true.
|
protected |
AngularVelocityTarget for smoothing.
|
protected |
LinearVelocityTarget for smoothing.
|
protected |
OrientationTarget for smoothing.
|
protected |
PositionTarget for smoothing.
|
protected |
Angular Two Point Interpolation used with bSmoothing = true.
|
protected |
Position Error Integral used with bSmoothing = false.
|
protected |
Position Two Point Interpolation used with bSmoothing = true.