Set and Get Drone Rotation

I’m working on a project using Unreal Engine 5.3.2 for a drone simulation that is getting waypoints and headings from end-users my problem is the heading, I sent a heading that is not the same as the one received

I tried to compute the heading with east-south up in Cesium and get the default world rotation and relative rotation of the drone as normal from an unreal rotation system, all I need is to send a real-world heading

Does anyone have an idea how to solve this?

Hi @Asn, welcome to the community!
Can you walk us through what you’ve tried, and what’s happening? In order for us to be able to help, you’ll need to be very specific about how your incoming heading is defined.

Hi @Kevin_Ring
the incoming heading is defined relative to the north direction as north is equal to 0
I tried to get the rotation as normal in Unreal and tried to use the Transform Uneal rotator to east south up function to get the heading of the drone

what is needed is getting the heading of the drone relative to the north as a real-world heading
shortly I need to send the same heading as the one received as the end user gives me
waypoints (long, lat, alt), and Heading then I simulate this using the Engine and send them back (long, lat, alt), The Heading, and speed all are good except the heading

I tried to make this with the methods above but I really couldn’t use the East South up function from Cesium as I needed so if there is documentation of Cesium functions that would be great

TransformUnrealRotatorToEastSouthUp should do the trick. Just make sure you’re supplying the correct location in Unreal coordinates. The Yaw field of the return Rotator will be your heading, except that Yaw is measured from East instead of North, and I believe positive angles will be toward the South. If it’s not working, please share your code.

Here’s a Blueprint that gets the location and orientation of an Actor (Cube in this case) and prints the Heading as an angle from North in the range 0-360:

Yeah TransformUnrealRotatorToEastSouthUp is the correct one but as you said above I just needed to transform it correctly with the opposite direction of the south getting in from Leve’s BP graph not the actor’s BP graph

Thanks to you and everyone out there working at Cesium

@Kevin_Ring

can you Help me to solve this problem like If I am getting real world’s (WGS84) Yaw, Pitch, Roll and I have to update this Rotation to Globe Anchor component then how to set this?.

Is there any addition or subtraction required in original value like in above answer you add +90 to get actual real world value so I have to also -90 into original value from real world while before set to Set East Up South???

This solution is not working for me External World Rotation to Globe Anchor

My 3D Model Axis are as below :

Yaw : Z Axis
Roll : X Axis
Pitch : Y Axis

Hi @ronak-tank,
Before we can begin to talk about how to transform your Yaw/Pitch/Roll, you have to be really clear about what they mean. You say it’s “real world”, but that can be interpreted a lot of different ways. For example, perhaps Yaw is an angle from North toward East? Or something else?

void LocationActor::SetRotationToGlobeAnchor(const float Yaw, const float Pitch, const float Roll) const
{
	this->GlobeAnchor->SetEastSouthUpRotation(FQuat::MakeFromEuler(FVector(Roll, Pitch, (Yaw - 90))));

}

This solution works for me, Thanks

1 Like