-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Local and body frames #861
Comments
The simple way of looking at this is that "Body" implies that velocity is relative to vehicle heading, while "Local_Offset" implies "Position" is relative to vehicle current position. If those aren't specified the position and velocity are relative to NED.
It is consistent. I would have quite liked the first frame to just be called NED. |
Some of this could be captured in the MAVLink docs -e.g. https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_OFFSET_NED Won't do anything for now though - lets see what other's say. E.g. might be a more clear way than "BODY" to say "Velocity relative to vehicle heading frame". |
Thank you.
Not sure it really makes things simple. In BODY_OFFSET_NED position heading is related to MAV as you wrote, but in BODY_NED it is not, so this rule is not comprehensive.
Ok, let's check the docs:
So positions are in NED, velocities are related to MAV heading and accelerations are in NED again? |
OK, you're right that BODY_OFFSET_NED is different from LOCAL_OFFSET_NED with respect to positions. Both have origin set on the vehicle, but for the later the axis is NED while for the former the axis follows vehicle positions. Yes, for positions, LOCAL_NED and BODY_NED mean the same. I can't comment on accelerations. I don't "think" they are supported for ArduPilot. For PX4 they are supported as some kind of thrust vector (ie acceleration capped by vehicle capabilities) but I have not done the testing to see what actually happens, and I don't understand what is "supposed" to happen. I know that the APM/ArduPilot docs were correct about 2 years ago when I wrote them, because a) Randy validated them b) I ran extensive tests in DroneKit-Python to test them. However at that time ArduPilot did not support acceleration, so I did not need to comment on that case. |
Thanks. I mentioned APM docs just as reference, I'm interested in how it intended to be more than in current implementation details. PX4 does not support acceleration setpoints at all IIRC, and for position setpoints supports LOCAL_NED only. And of course it's very strange to make velocities and accelerations behave differently, I believe docs require revision at least here. |
@thomasgubler, as author of |
Thanks. Do I understand correctly that the original meaning of Where is the origin of the |
I wrote an RFC on the frames, comments are highly appreciated. mavlink/rfcs#2 |
I will be following this more closely as I actually started to implement an ODOMETRY msg which fits the ROS REP for aerial vehicles. It will be a continuation of #721 |
The RFC is now pretty complete - please all read and comment here: https://github.com/mavlink/rfcs/blob/2b5bc9dbea620fc15e8e3a241168850297b3d8ff/text/0002-local-frames-revision.md |
@korigod @okalachev That is a really comprehensive and well worded RFC. Going to take me some time to digest. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
This issue has been automatically marked as stale because it has not had recent activity. Thank you for your contributions. |
We have now four main local frames in MAVLink:
Unfortunately, description of these frames in MAVLink itself is not very clear. APM docs say:
Everyone agrees on this definition? What's with positions in BODY_NED? Same docs say:
It seems quite inconsistent to use different heading in one frame for positions and velocities, isn't it?
The most confusing part, though, is
_NED
as part ofBODY_OFFSET_NED
, which is, as I understand, never really mean NED.The text was updated successfully, but these errors were encountered: