19 #include "Components/ActorComponent.h"
21 #include "CoreMinimal.h"
33 #include "RRJointComponent.generated.h"
37 #define RAPYUTA_JOINT_DEBUG (0)
97 virtual void PoseFromArray(
const TArray<float>& InPose, FVector& OutPosition, FRotator& OutOrientation);
99 virtual void VelocityFromArray(
const TArray<float>& InVelocity, FVector& OutLinearVelocity, FVector& OutAngularVelocity);
105 virtual bool IsValid();
123 virtual void TickComponent(
float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
override;
135 virtual void InitializeComponent()
override;
156 virtual void SetVelocity(
const FVector& InLinearVelocity,
const FVector& InAngularVelocity);
177 virtual void SetVelocityTarget(
const FVector& InLinearVelocity,
const FVector& InAngularVelocity);
198 virtual void SetSingleLinearVelocityTarget(
const float Input);
219 virtual void SetSingleAngularVelocityTarget(
const float Input);
250 virtual void SetVelocityTargetWithDelegates(
const FVector& InLinearVelocity,
252 const FVector& InAngularVelocity,
254 const FJointCallback& InOnControlSuccessDelegate,
256 const FJointCallback& InOnControlFailDelegate,
258 const float InLinearTolerance = -1.0,
260 const float InAngularTolerance = -1.0,
262 const float InTimeOut = -1.0);
293 virtual void SetSingleLinearVelocityTargetWithDelegates(
const float Input,
295 const FJointCallback& InOnControlSuccessDelegate,
297 const FJointCallback& InOnControlFailDelegate,
299 const float InLinearTolerance = -1.0,
301 const float InTimeOut = -1.0);
332 virtual void SetSingleAngularVelocityTargetWithDelegates(
const float Input,
334 const FJointCallback& InOnControlSuccessDelegate,
336 const FJointCallback& InOnControlFailDelegate,
338 const float InAngularTolerance = -1.0,
340 const float InTimeOut = -1.0);
361 virtual void SetVelocityWithArray(
const TArray<float>& InVelocity);
382 virtual void SetVelocityTargetWithArray(
const TArray<float>& InVelocity);
413 virtual void SetVelocityTargetWithArrayWithDelegates(
const TArray<float>& InVelocity,
415 const FJointCallback& InOnControlSuccessDelegate,
417 const FJointCallback& InOnControlFailDelegate,
419 const float InLinearTolerance = -1.0,
421 const float InAngularTolerance = -1.0,
423 const float InTimeOut = -1.0);
440 virtual bool HasReachedVelocityTarget(
const float InLinearTolerance = -1.f,
const float InAngularTolerance = -1.f);
461 virtual void SetPose(
const FVector& InPosition,
const FRotator& InOrientation);
482 virtual void SetPoseTarget(
const FVector& InPosition,
const FRotator& InOrientation);
503 virtual void SetSinglePositionTarget(
const float Input);
524 virtual void SetSingleOrientationTarget(
const float Input);
555 virtual void SetPoseTargetWithDelegates(
const FVector& InPosition,
557 const FRotator& InOrientation,
559 const FJointCallback& InOnControlSuccessDelegate,
561 const FJointCallback& InOnControlFailDelegate,
563 const float InPositionTolerance = -1.0,
565 const float InOrientationTolerance = -1.0,
567 const float InTimeOut = -1.0);
596 virtual void SetSinglePositionTargetWithDelegates(
const float Input,
598 const FJointCallback& InOnControlSuccessDelegate,
600 const FJointCallback& InOnControlFailDelegate,
602 const float InPositionTolerance = -1.0,
604 const float InTimeOut = -1.0);
633 virtual void SetSingleOrientationTargetWithDelegates(
const float Input,
635 const FJointCallback& InOnControlSuccessDelegate,
637 const FJointCallback& InOnControlFailDelegate,
639 const float InOrientationTolerance = -1.0,
641 const float InTimeOut = -1.0);
660 virtual bool HasReachedPoseTarget(
const float InPositionTolerance = -1.f,
const float InOrientationTolerance = -1.f);
681 virtual void SetPoseWithArray(
const TArray<float>& InPose);
702 virtual void SetPoseTargetWithArray(
const TArray<float>& InPose);
727 virtual void SetPoseTargetWithArrayWithDelegates(
const TArray<float>& InPose,
729 const FJointCallback& InOnControlSuccessDelegate,
731 const FJointCallback& InOnControlFailDelegate,
733 const float InPositionTolerance = -1.0,
735 const float InOrientationTolerance = -1.0,
737 const float InTimeOut = -1.0);
754 virtual void Teleport(
const FVector& InPosition,
const FRotator& InOrientation);
763 virtual void MoveToInitPose();
772 FVector LinearVelocity = FVector::ZeroVector;
781 FVector AngularVelocity = FVector::ZeroVector;
790 FVector LinearVelocityTarget = FVector::ZeroVector;
799 FVector AngularVelocityTarget = FVector::ZeroVector;
808 FVector PositionTarget = FVector::ZeroVector;
817 FRotator OrientationTarget = FRotator::ZeroRotator;
826 FVector Position = FVector::ZeroVector;
835 FRotator Orientation = FRotator::ZeroRotator;
846 float PositionTolerance = 1.f;
857 float OrientationTolerance = 1.f;
868 float LinearVelocityTolerance = 10.f;
879 float AngularVelocityTolerance = 10.f;
928 uint8 RotationalDOF = 1;
941 FVector PositionMax = FVector(1000, 1000, 1000);
952 FVector PositionMin = FVector(-1000, -1000, -1000);
963 FRotator OrientationMax = FRotator(180.f);
974 FRotator OrientationMin = FRotator(-180, -180, -180);
987 FVector LinearVelMax = FVector(1000, 1000, 1000);
998 FVector AngularVelMax = FVector(180.f);
1007 bool bLimitRoll =
true;
1016 bool bLimitPitch =
true;
1025 bool bLimitYaw =
true;
1034 FVector InitialPosition = FVector::ZeroVector;
1043 FRotator InitialOrientation = FRotator::ZeroRotator;
1056 return JointToChildLink;
1071 return ParentLinkToJoint;
1084 virtual void UpdateState(
const float DeltaTime);
1093 virtual void UpdateControl(
const float DeltaTime);
1102 FTransform JointToChildLink = FTransform::Identity;
1111 FTransform ParentLinkToJoint = FTransform::Identity;
1122 bool bMovingToTargetPose =
false;
1133 bool bMovingToTargetVelocity =
false;
1155 virtual void SetDelegates(
const FJointCallback& InOnControlSuccessDelegate,
1157 const FJointCallback& InOnControlFailDelegate,
1159 const float InPositionTolerance = -1.0,
1161 const float InOrientationTolerance = -1.0,
1163 const float InLinearTolerance = -1.0,
1165 const float InAngularTolerance = -1.0,
1167 const float InTimeOut = -1.0f);
1195 float ControlStartTime = 0.f;
1210 float ControlTimeout = -1.0f;
1219 virtual void ResetControl();