Voting for feature to allow Mavic Mini to take automated HDR images and panos
Hello all.
I'm sure many of you would welcome the ability for the Mini to be able to do HDR images or panos using a Dronelink Plan. Apparently there are many other requests ahead of this feature and Jim from Dronelink advises this is somewhat down the list.
To be able to write a single plan that just requires you to beforehand set your shutter speed to a certain level to capture the brightest level then proceed with the plan to capture a full even HDR we need the ability to change shutter speed relatively i.e as if you were swiping up or down the scale 1, 2, 3, 4 stops etc as opposed to selecting an absolute shutter speed.
If this is something the community would want as an enhancement to Dronelink please make comment here and hopefully if enough interest Jim and Eric will bump that request up the list. As far as I know with this feature Dronelink would be the first software to allow accurate automated HDR using the Mavic Mini.
So just say you want it in the comments below and we will see what happens!!
Many thanks
Andrew
Comments
30 comments
There is no need for an update to do that. It is pretty simple to do using destination points and a self created list as a component. How to do that will be in my upcoming series about dronelink and the mavic mini and spark. Stay tuned
That's what I thought too but DL doesn't allow "relative" changing of shutter speed which is the only way to change exposure on the Mavic Mini which means for HDR you need someway to take a constant exposure at three different levels across around 29 frames at a light value that could be anywhere from 1/8000 of sec to 1 sec or less. If you can automate that fantastic. I'm not sure if you are referring to some other drone but the Mini has a fairly limited set of built in exposure functions unlike some of the other drones so this request is really specifically for the Mini. Will be great if have found a way to easily crack this nut...
P.S. Auto exposure isn't an option if you want true high quality HDR
I am also very much interested in this. Considering that adding RAW support is one of the most requested features for the hypothetical future MM firmware updates and that slightly larger dynamic range is possibly the greatest advantage of the RAW format, making taking of HDR photos as convenient as possible should also be high on the list.
Even before the SDK was published, I have made a HDR button overly for the DJI Fly that automated the taking of HDR photos by simulating screen click and gestures (tasker on Andorid is extremely powerful).
Domjan I'm fascinated by your talk of automating HDR on the Mini using Tasker. Is that to the point Tasker could spin the drone to specific headings, alter the gimbal pitch and take multiple images? I have worked out you need about 87 shots on the Mini to do a 3 exposure per frame HDR 360 Pano. On a manual plan I've adapted on Dronelink I managed to complete the plan in about 4 mins which I was fairly pleased with but you need a separate plan for your starting shutter speed (so I have written about 20! Starting from 1/4000 down to 1/160 as you starting exposure) but it's clunky and I thought I had it all figured out and a plan I have run about 4 times successfully died today with a "Telemetry Delayed" error and I was only 20m away and all max distances on DJI Fly way beyond that (altitude and lateral distance). Is a plan like that really something Tasker could do? I'm not sure why its happening as Video is fine and DJI Fly never drops like that.
My script was for simply taking one HDR photo. There was no way to automate the pano with Tasker as there was no way to rotate the drone using just the screen gestures.
https://www.youtube.com/watch?v=oWfrQr0f_18
Using tasker to simulate screen gestures is also significantly slower as you can see in the video.
Wow! 20 different flight plans? As someone how likes to use computers to automate, this really makes me cringe. It really should be much simpler to accomplish what you are trying to do. Is there no way to read the current shutter speed to a variable and then use that to calculate the individual exposures?
I could replace 20 with 1 if you started with whatever shutter speed you needed for the current scene (to capture brightest highlight) then take two more shots. That's where the relative ability of +2 then +4 then change back to original with a -4 would be perfect. But DL doesn't do relative changes to shutter speed only absolute (yet - hence this thread).
Auto doesn't work...cos it's auto.
For cases like my place where you get the most amazing skies and sunrises/sunsets the 20 plans isn't so bad you can either just take a reading using your camera and launch straight from DL using that shutter speed reading as the plan to use or send the drone up first to get a reading then launch the necessary plan. But yes clunky and really needs to be On The Fly.
So just a stop gap really, good thing is it sounds like it's possible (even to do an On The Fly 360 HDR option) but it's just time and resources I guess. My biggest issue at the minute though is the unreliability of the plan not running on the Mini and the dreaded Telemetry Delayed message showing. Just makes it so hit and miss. I'm guessing some issue with the SDK? I just don't understand as DJI Fly is rock solid unless a micro disconnection which we aren't noticing in DJI Fly causes plan continuity issues in DL?
Thanks for the heads up on tasker I can think of a few non-drone apps where that could come in handy!
Relative shutter changes would certainly make things a lot simpler so hopefully I will be added in one of the future updates. I am very new to both DL and drones in general but after about ten 360 panos taken with the MM, I haven't seen a Telemetry Delayed error. Maybe these is something specific in your missions that is causing this. Could it be too fast execution? Maybe the camera needs more time to adjust the exposure. Do you want me to try and test it on my phone/MM?
As for the tasker, it's insanely powerful. Quite possibly the most powerful and complex app available for any phone platform.
That would be great! Can you see all the plans here? https://app.dronelink.com/andrew-busst/public/plans
Ranging from shutter speed 1/5000 to 1/200 max shutter speed.
So plans work by you set the drone at the max shutter speed to capture your brightest highlight (i should probably have up to 1/8000 in there)
Safest way to do that is take the Drone up using DJI Fly, using the Over Exposure display find your fastest shutter speed required. Or you could just do by eye in DL but when using DL I think good practice to start in DJI Fly anyway to set RTH height and behaviour plus max height and distance limits then switch to DL.
Then run that plan using Dronelink.
Will do a 360 Pano tilting to a max of +19 degrees (DJI SDK won't accept 20degrees) consisting of 29 positions with each position having exposures of 0 +2 +4. So you are guaranteed to capture your highlights and shadows should take care of themselves.
If you find any shutter speed errors let me know, I doubled checked but was exhausting loading!
NOTE: ALTITUDE SET TO 20M ONLY FOR TESTING PLUS IS HIGHEST I CAN FLY HERE AS AIRPORT NEARBY AND HAVE SHIELDING BANK. SO YOU WILL NEED TO CHANGE DESTINATION HEIGHT IF FLYING HIGHER. 20M IS TOO LOW FOR A GOOD STITCH SO WILL LOVE TO SEE A HIGHER VERSION RESULTS. I normally stitch in PTGUI
Good luck!
One thought would be using a function. The first question in the function could be "What do you want the starting shutter speed to be." From there the code could auto-select the next ones. You can see all the possible values here.
Yes, this is truly a job for a function. I am guessing it should relatively easy to modify the 360 pano function to do three panos, changing the stutter speed between them. Not as optimized as writing the whole plan as a function (I see that the 360 function actually just load the 360 component and not code all the command in JS).
Andrew, I'll finally managed to move to starting location of your plan to my location and will hopefully test it tomorrow, weather permitting.
Jim - Are you saying that's a relatively simple change that could be made to the 360 Pano On The Fly Function? That's encouraging. Something your team has to do I assume as outside my knowledge. What's your thoughts on Telemetry Delays as to why they are occurring?. Would wifi interference do that? Is it possible even a very small period of interference which causes a disconnect goes unnoticed in DJI Fly but upsets a plan in DL? When DL is used in like DJI Fly mode you never see any Telemetry Delays so makes me think the Mini being a wifi drone in an urban area these micro disconnects do become an issue for DL. Probably not an issue for occusync drones? Do you hear of any many Telemetry Delayed messages on those other drones? If that is the case is there anyway of building in an auto resume ability (I know probably way way harder than it sounds!)
Domjan - Looking forward to your results
Making the function change should be relatively straight-forward, and the source to the functions is open so it doesn't not require our team to do it (obviously you need some light scripting knowledge).
Telemetry Delay means the downlink connection is flaking out. Could happen for a lot of reasons, interference is likely.
Thanks Jim sorry was adding to my post but sounds like you have partly answered my edit. Sounds like Domjan might have some skills in that area, I watch with interest!. Would On The Fly Commands suffer the same sensitivity to interference?
All the functions do is generate missions, so if you are having connection / interference issues, it won't matter if it was pre-planned or done on the fly.
Good to know. I was thinking does DL lock down the auto WIFI channel selection that the Mavic Mini does? Could that millisecond changeover cause an issue? Should we be changing WIFI selection to Manual in DJI Fly?
DL does not change the channel selection mode, so you need to set it in DJI Fly first. Could be the issue.
I'll try some tests....thanks
Andrew, I have just tested your mission and am happy to report that it went without a hitch. No errors and all the photos got correctly taken. Granted, I didn't fly very far (about 150m horizontal and 50m in altitude). So, it doesn't appear to be a problem with DL or your mission. As Jim says, probably high interference environment. If you are flying directly above you, it is helpful to adjust the antennas to be horizontal.
As for writing a on-the-fly function, even though I do have experience with scripting languages, I actually haven't used JS much. If I find the time, I'll try to look through the existing scripts and see if I can learn everything I need without any official documentation (could be very tricky). For someone who knows DL inside-out, I am guessing it would certainly be much easier and quicker [winking is a general direction of Jim :) ].
I saw somewhere in this thread that autoexposure is not an option for quality reasons. I don't see why that is the case knowing that the Mavic Mini is limited by firmware and hardware (lens and aperture)
If you use a component where you program a sequence like this for five shots:
If you put this in an achieved component for a destination you can point the camera and the gimbal and the drone will stay put for the whole sequence. Would that not give the best quality you can get with a Mavic Mini?
As far as I know as you set the white balance and iso manually auto exposure only manipulates the shutter speed and that is precisely what we want to do.
Domjan - That is fantastic news! I think I need to get out in the country and have another try too. Hopefully the team will add a similar concept to functions in future seems having the "On The Fly" capability would be most useful. I thought the auto switching of wifi channels by the drone might impact the connection with DL but I turned that to manual this morning and it was worse! I did notice also my Mini is stuck on 5G not sure if that is a New Zealand requirement to sell the drone here or not so maybe the shorter range is an issue but I have had it out over 1000m with DJI Fly so just don't know really.
Ruud - It's actually pretty simple to write a plan for Autoexposure HDR but they just aren't as good as Manual HDR's and some stitching programs struggle to even stitch let alone do so smoothly. This site lays it out nicely. https://rockynook.com/article/hdr-panos/ oh and forget to say after the first exposure on lock it unlocks...
It is already on our list, but you may have to wait a while, the list is long. This is why we made so much of Dronelink open source (so the community wouldn't always have to wait on us).
That's great and I fully support that design philosophy - allow users to extend the functionality themselves. Can't wait to learn enough of the JS/DL to be able to write my own functions without having to bother anyone else with feature requests. What would have helped here is any kind of function writing tutorial and it certainly would have helped to have better commented function examples. As it currently stands, from someone not intimately familiar with DL internals, learning curve for custom functions seems very steep.
Could not agree more. Developer documentation is a great example of a feature that is higher priority than writing this function :)
Have to teach you guys how to fish right?
Definitely :) But please, don't make it a video tutorial. Compact, well written and easily searchable written tutorial or even extremely well commented demo function code that showcases most of the basic concepts would be much more useful.
The developer documentation will be written :)
Trust me, I am a developer, I know what devs want.
Andrew, I have slightly modified your 1/4000s plan and made it into a function so you no longer need to manually modify the destination. I hope you don't mind. It is publicly available on:
https://app.dronelink.com/dsvilko/360-hdr
I haven't had much time to test it but I think it works :) I've added a camera init functions at the beginning. Custom WB temperature doesn't seem to be working. It's still a very 'hacky' solution where the function just calls your components so still no way to change the exposure.
The next version will simply offer a choice of a few starting exposures. Not elegant by any stretch but good enough to be useful.
The endgame goal is to code it completely in javascript, with zero need for code repetition.
Ok, I've quicky put together a new version of the 360 HDR pano function that offers selectable maximal exposure in aprox. full-stop steps that should cover most shooting conditions. It's currently raining so can't test it but virtual tests seem ok.
Great work Domjan!! Love to see a copy once you have tested, thanks for doing this.
It is already available at
https://app.dronelink.com/dsvilko/360-hdr
You should be able to find it by searching the public repos from within the app.
Thanks Domjan
Please sign in to leave a comment.