-
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
New landing target messages TARGET_ABSOLUTE/RELATIVE #1943
New landing target messages TARGET_ABSOLUTE/RELATIVE #1943
Conversation
This breaks every existing implementation. In my opinion this needs to be new messages, as a pr against development.xml |
Hi, thank you for your response @auturgy. I do see your point, users will have to change the message name, and we will have to slightly change MAVROS. However, having new messages just delays the problem in my opinion because:
Now there is another option: we keep the same message names (LANDING_TARGET and FOLLOW_TARGET), we add the proposed fields which drastically improve the overall behavior (see first post) and we clearly explain in the documentation that the names will eventually change to RELATIVE_TARGET and ABSOLUTE_TARGET (or any other msg name which does not contain "land" or "follow"). With this solution, no current implementation breaks and we keep all the benefits. Would that work for you @auturgy ? |
This changes the crc: if someone updates their flight controller to a version that includes mavlink with your changes, but doesn't update a fully functional offboard implementation of follow/prec land (common scenario), the messages will be rejected by the parser. Needs to be new messages against development.xml |
…e_y. Same description as in the ir-lock driver
Summary and use: New messages in
Logic:
use case example: Land on a target which is equipped with a GPS and a fiducial marker.
Important note: with the new modifications, the current implementations using the messages LANDING_TARGET and FOLLOW_TARGET do not break:
The goal is to eventually replace LANDING_TARGET and FOLLOW_TARGET by |
@dakejahl You've done a landing target implementation - does this make sense to you? Would this help or harm your implementation? Is there anyone else you can suggest as a reviewer? Note that you kind of need to read the top description to get the full picture, even though the final "implementation" is in #1943 (comment) I'm not sure about the names - I didn't read "ABSOLUTE" and think "onboard".
|
@hamishwillee
Suggestions more than welcome of course 😄 |
@hamishwillee would you prefer One other option would be to merge the two messages together into a big one called |
@JonasPerolini What I'd prefer is feedback from others who are doing implementations and are at the right expertise level; I'm not competent in the domain to know what is useful information and what is intuitive to someone working in the area. So I won't offer an opinion at this time. As the messages are quite different I'd prefer them separate as you have done; no point sending lots of unused information. FYI though, the packet length is about 255 bytes, so this would be doable if it was desired: https://mavlink.io/en/guide/serialization.html |
Maybe rename to TARGET_ABSOLUTE and TARGET_RELATIVE You will want to have both Keep in mind you probably don't want your drone to follow or land on targets that are not yours or that are not part of the currently active operation. A drone should be able to dynamically change which target is associated with which task. Hence the need for a unique identifier as well as the task being dictated by the autopilot rather than the target. |
Thanks for the detailed review @dakejahl ! Renaming:
Field changes:
Depending on the target
I agree, we cannot have the
For me the
Let's say you have an extremely fast detection algorithm in body frame which requires no processing time. Then you only need to fill the
I've added those to keep compatibility with the |
W.r.t. names we currently have:
So TARGET_ABSOLUTE is for targets that know their position in an absolute frame - such as GPS? TARGET_RELATIVE is where the target is in some frame relative to the vehicle, and where the location is generated from data/sensors on the vehicle? That makes sense. @dakejahl Can you respond to the response? Would/will you use them? IF you were designing the messages would they look like this? Are there any missing use cases. Are they awesome improvement. I have nothing useful to add other than w.r.t. "I've added those to keep compatibility with the |
@rishabsingh3003 can you have a look at this please |
Following the MAVLink coordination call, the
Note: Now all the changes are in |
Thanks very much @JonasPerolini - and for taking the time to come to the MAV call and discuss. My summary of the discussion in 20230201-Dev-Meeting
|
Here's how I would use the Mavlink messages for the Kalman filter. (The
|
Status: every conversation is resolved, there is an example of use case. For me (and @potaito I believe) it's ready to be merged in dev once @hamishwillee confirms the following changes: id name and sensor capabilities flags. |
yep 😊 |
We agreed in the mavlink call last night that we are happy for this to be merged for prototyping. I'm happy to do this, but we'll need to get the schema updated to allow some of the new units - see https://github.com/mavlink/mavlink/pull/1943/files#r1137815803 Once that is done, please ping me/cross link and I'll see if I can expedite that. |
Hi, I'm the current maintainer of RossetaDrone: a MAVLink 2 implementation for DJI drones and a "flightcontroller layer" built on top of DJI's SDK. I just released Vision Landing 2 and was now implementing the code for landing on the target when I felt that the MAVLink message definition was a bit too limited given the many different options and ideas that could/should be applied to accomplish a fast and smooth landing on the target: We would like to contribute to this topic and implement something standard and well defined from the beginning (good practices). I'm now reading more in detail all your previous comments and progress. |
Hey @kripper
|
@kripper Your contribution would be very welcome - we'd like to get this right for as many use cases as possible. As @potaito says, the best way to start this is to review the messages, check that you understand them, and that they meet your use case. If they do not meet your requirements, you can then either add comments to this PR, or if it is closed, add a follow on PR or issues that expand on the problems you see. Note that they are likely to be broader than your use case because we're looking at all sorts of targets, not just vision. I had a very brief look at RosettaDrone/rosettadrone#132 . I don't have the expertise to add useful comments sorry. |
Target IDs: we use multiple markers for 1 landing point (target). It makes sense that the target id is defined by the user. A landing yaw is important (auto charging). Do we have a draft defining good practices for the precision landing? |
Not within MAVLink. The only documentation I know of that might touch on this is the flight stack user guides (which are very much "how do you get it working":
As part of accepting these messages into common we will need good docs explaining the use of the interfaces. |
That would be part of a precision landing command message. I.e. the messages in this PR communicate the position of the marker / tag. And another message that tells the drone to perform precision landing would ideally convey this yaw angle.
Not yet. This PR is half of the equation and aims to get the messages for the measurements / observations right this time. In the next step, we could look at whether a new command message needs to be added. |
Hi @hamishwillee, I've updated the messages to use the standard deviation ([m],[rad]) instead of the variance. I see that you've already pushed the other changes, thanks! Anything else needed? |
@JonasPerolini Thanks, no this is good - merged. @potaito @JonasPerolini Keep me informed please. Very pleased if we can verify these do what we need with hard data and get documentation / tests in place that allow us to make sure that it is possible to create compatible implementations. |
Thanks, that's great! |
This pull request extends the LANDING_TARGET message to include position and orientation uncertainties in order to properly fuse the landing target estimations in a Kalman filter PX4/PX4-Autopilot#20653. It also adds the sensor's orientation at the moment of the observation, which is necessary if there is processing time (e.g. detect fiducial marker) between the observation and the message being sent. Finally, it extends the MAV_FRAME message to allow for generic sensor frames. This allows to properly handle the LANDING_TARGET message:
q_sensor_att
. The estimation is then sent to the precision landing algorithm.q_sensor_att
if filledChanges:
Please let me know if there are any further modifications needed.
Update:
We currently have two main tasks using targets:
However, the main difference between these messages is not the task, but rather the physical location of the sensor used. FOLLOW_TARGET reports observations from a sensor on the target (e.g. GPS or IMUs), while LANDING_TARGET reports observations from an onboard sensor (e.g. vision-based fiducial marker detection or irlock beacon detection). One might want to follow a target using a fiducial marker (LANDING_TARGET msg). Inversely, one might want to land on a target with a GPS attached (FOLLOW_TARGET msg). Each message should thus be usable independently of the task. Additionally, the new target estimator allows to fuse several measurements such as GPS, fiducial markers and irlock beacons in a Kalman Filter to estimate the target's state (for static and moving targets) PX4/PX4-Autopilot#20653. The same filter class can then be used for precision landing and the target following tasks, reinforcing the idea that both messages should be used in parallel.
Proposed changes:
Additionally, adding a MAV_FRAME field to the ABSOLUTE_TARGET msg allows for measurements to be entered in the target's frame and use the
quaternion
field to rotate it to the navigation NED frame, making the message less confusing.