Post

7 followers Follow
0
Avatar

DJI Air 3 ?

Will Map Pilot Pro work with a DJI Air 3 ?
Charles Hartwell

Please sign in to leave a comment.

16 comments

0
Avatar

To our knowledge DJI will not be adding SDK support for it, so no.

Zane 0 votes
Comment actions Permalink
0
Avatar

Zane, any more updates on if Map Pilot Pro will work with DJI Air 3?

Chris Carter 0 votes
Comment actions Permalink
0
Avatar

No updates. Be sure to let DJI know SDK support is important to you.

Zane 0 votes
Comment actions Permalink
0
Avatar

Regarding the DJI Air 3 and the "Export Only" feature of the map pilot pro: my air3 has rc-2 remote control so my guess is I can't transfer the flight plan to the controller, rigth? But if I buy the rc-n2 controller I will be able, right?

javier mugueta 0 votes
Comment actions Permalink
0
Avatar

You should be able to do it if you can get the KMZ onto the remote somehow. This is not something we have tested. 

Zane 0 votes
Comment actions Permalink
0
Avatar

Hi, 

The directory structure in the RC2 remote is as shown in the image below. Tried to put the exported "wayline_mission" folder in couple of places in the tree but nothing happens. I have also tried with the dummy mission approach but a crash happens when opening the mission in the rc2 remote (crash dump also included below), it is  a java.lang.IndexOutOfBoundsException, maybe the format and database used in rc2 is different than fly app, who knows... For transferring files I use a mac and the Android File Transfer App installed with brew.

===== Device Info =====
manufacture:DJI
product:rc331
model:DJI RC 2
version:V04.00.01.41 test-keys
android version:11
build num:1010
build name:1010
sdk version:30
===== App Info =====
versionCode:3108068
versionName:1.13.9
===== Crash =====
java.lang.IndexOutOfBoundsException: Index: 66, Size: 66
at java.util.ArrayList.get(ArrayList.java:437)
at com.dji.waypoint.kmz.WPMZAdapter.h(SourceFile:53)
at com.dji.waypoint.WaypointCenterManager.t0(SourceFile:4)
at com.dji.waypoint.missionlib.MissionLibAdapter.checkAndLoadMission(SourceFile:4)
at com.dji.waypoint.missionlib.MissionLibAdapter.onBindViewHolder$lambda$2(SourceFile:1)
at com.dji.waypoint.missionlib.MissionLibAdapter.b(Unknown Source:0)
at com.dji.waypoint.missionlib.i.onClick(Unknown Source:4)
at android.view.View.performClick(View.java:7448)
at android.view.View.performClickInternal(View.java:7425)
at android.view.View.access$3600(View.java:810)
at android.view.View$PerformClick.run(View.java:28309)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7711)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:619)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:984)
 
=======Thread info======Crash name:java.lang.IndexOutOfBoundsException: Index: 66, Size: 66
 Cause is:null
 Thread name is:main 2
 Thread count is:168
 Fd count is:445
 
Name: dji.go.v5
Umask: 0077
State: R (running)
Tgid: 29594
Ngid: 0
Pid: 29594
PPid: 702
TracerPid: 0
Uid: 10019 10019 10019 10019
Gid: 10019 10019 10019 10019
FDSize: 512
Groups: 3001 3002 3003 9997 20019 50019 
VmPeak: 2099664 kB
VmSize: 2044016 kB
VmLck:      96 kB
VmPin:       0 kB
VmHWM:  386028 kB
VmRSS:  288076 kB
RssAnon:  118388 kB
RssFile:  169272 kB
RssShmem:     416 kB
VmData: 1072924 kB
VmStk:    8192 kB
VmExe:      24 kB
VmLib:  340336 kB
VmPTE:    2652 kB
VmSwap:   87316 kB
CoreDumping: 0
THP_enabled: 0
Threads: 228
SigQ: 1/6156
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000080001204
SigIgn: 0000000000000001
SigCgt: 0000006e400084f8
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000000000000000
CapAmb: 0000000000000000
NoNewPrivs: 0
Seccomp: 0
Speculation_Store_Bypass: thread vulnerable
Cpus_allowed: ff
Cpus_allowed_list: 0-7
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 71626
nonvoluntary_ctxt_switches: 38618
 
============Start dump thread info============
total =168
线程号:128 = Signal Catcher
线程号:130 = HeapTaskDaemon
线程号:131 = ReferenceQueueDaemon
线程号:132 = FinalizerDaemon
线程号:133 = FinalizerWatchdogDaemon
线程号:5915 = process reaper
线程号:2 = main
线程号:134 = Binder:29594_1
线程号:135 = Binder:29594_2
线程号:136 = Binder:29594_3
线程号:137 = Binder:29594_4
线程号:140 = pool-3-thread-1
线程号:141 = pool-3-thread-2
线程号:144 = queued-work-looper
线程号:148 = pool-8-thread-1
线程号:149 = Firebase-Messaging-Init
线程号:151 = Firebase-Messaging-Topics-Io
线程号:154 = Crashlytics Exception Handler1
线程号:156 = com.google.firebase.crashlytics.startup1
线程号:158 = awaitEvenIfOnMainThread task continuation executor1
线程号:160 = FirebaseInstanceId
线程号:164 = LogHandlerThread
线程号:166 = RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@563ccd9
线程号:167 = region_decoder
线程号:168 = AsyncTask #1
线程号:170 = dji_background_thread
线程号:171 = midware_background_thread
线程号:172 = ConnectivityThread
线程号:173 = DataBaseProcessor
线程号:174 = DJIExecutor:handlerThread
线程号:175 = DJIPackManager-data-parser
线程号:176 = csdk-send-pack-parse
线程号:178 = DJIAnalytics
线程号:180 = RxSchedulerPurge-1
线程号:181 = RxCachedWorkerPoolEvictor-1
线程号:184 = Thread-7
线程号:187 = WifiManagerThread
线程号:190 = dji_background_thread
线程号:191 = Thread-10
线程号:192 = Thread-11
线程号:202 = RxCachedThreadScheduler-2
线程号:203 = RxComputationThreadPool-1
线程号:204 = bgHandlerThread
线程号:205 = RxCachedThreadScheduler-3
线程号:206 = RxComputationThreadPool-2
线程号:207 = DJIExecutor IO #1
线程号:209 = io_thread
线程号:210 = net_thread
线程号:211 = simple_thread
线程号:212 = DJIExecutor IO #2
线程号:213 = RxCachedThreadScheduler-4
线程号:214 = RxComputationThreadPool-3
线程号:215 = RxCachedThreadScheduler-5
线程号:219 = OkHttp flysafe-api.dji.com
线程号:221 = RxComputationThreadPool-4
线程号:222 = RxComputationThreadPool-5
线程号:223 = RxComputationThreadPool-6
线程号:228 = RxCachedThreadScheduler-6
线程号:229 = Thread-16
线程号:231 = FinalHttp #1
线程号:232 = DJI_MediaScanner
线程号:233 = DJIMediaProviderSyncManager
线程号:238 = Uni.TaskQueueThread
线程号:239 = Uni.TaskExecuteThread
线程号:240 = com.universal.statistics.android.sdk.StatisticsMessages.Worker
线程号:244 = UNIVERSAL_DATA_THREAD
线程号:246 = LogHandlerThread
线程号:247 = Thread-21
线程号:249 = FirmwareUpgradeSingle
线程号:250 = RxSingleScheduler-1
线程号:252 = RxCachedThreadScheduler-7
线程号:254 = LCT_TASK_FIXED_THREAD_POOL_5-1
线程号:255 = VideoPreviewer1721873234748
线程号:257 = HwBinder:29594_1
线程号:262 = Thread-26
线程号:263 = Thread-27
线程号:264 = Thread-28
线程号:265 = RxComputationThreadPool-7
线程号:266 = RxComputationThreadPool-8
线程号:268 = RxCachedThreadScheduler-9
线程号:269 = RxCachedThreadScheduler-10
线程号:271 = RxCachedThreadScheduler-12
线程号:272 = RxCachedThreadScheduler-13
线程号:273 = RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@c808470
线程号:274 = FinalHttp #2
线程号:276 = RxCachedThreadScheduler-14
线程号:277 = RxCachedThreadScheduler-15
线程号:278 = RxCachedThreadScheduler-16
线程号:279 = RxCachedThreadScheduler-17
线程号:280 = RxCachedThreadScheduler-18
线程号:288 = RenderThread
线程号:289 = RxCachedThreadScheduler-19
线程号:290 = RxCachedThreadScheduler-20
线程号:291 = RxCachedThreadScheduler-21
线程号:292 = RxCachedThreadScheduler-22
线程号:293 = Thread-32
线程号:295 = pool-3-thread-3
线程号:296 = pool-3-thread-4
线程号:299 = DJIExecutor Urgent #1
线程号:300 = DJIExecutor Urgent #2
线程号:301 = DJIExecutor Urgent #3
线程号:302 = DJIExecutor Urgent #4
线程号:303 = DJIExecutor Urgent #5
线程号:304 = DJIExecutor Urgent #6
线程号:312 = RxCachedThreadScheduler-23
线程号:313 = TcmReceiver
线程号:318 = hwuiTask0
线程号:319 = hwuiTask1
线程号:320 = Okio Watchdog
线程号:321 = cc-pool-321
线程号:325 = FinalHttp #3
线程号:327 = HybridData DestructorThread
线程号:328 = mqt_js
线程号:329 = mqt_native_modules
线程号:492 = Binder:29594_5
线程号:3560 = OkHttp api.maptiler.com
线程号:3691 = Binder:29594_6
线程号:3697 = Thread-3393
线程号:3700 = Binder:29594_7
线程号:3711 = RxCachedThreadScheduler-24
线程号:3713 = Alarm
线程号:3717 = Worker 1
线程号:3718 = AssetManagerFil
线程号:3719 = Worker 4
线程号:3720 = Worker 2
线程号:3721 = LocalFileSource
线程号:3722 = OnlineFileSourc
线程号:3723 = MaptilerFileSou
线程号:3724 = DatabaseFileSou
线程号:3725 = ResourceLoaderT
线程号:3726 = Worker 3
线程号:3728 = RxCachedThreadScheduler-25
线程号:3742 = Worker 1
线程号:3773 = arch_disk_io_0
线程号:3774 = glide-active-resources
线程号:3775 = glide-disk-cache-thread-0
线程号:3789 = InsetsAnimations
线程号:3794 = TopBarLog
线程号:3803 = OkHttp ConnectionPool
线程号:3808 = arch_disk_io_1
线程号:3809 = arch_disk_io_2
线程号:4084 = arch_disk_io_3
线程号:4332 = glide-source-thread-0
线程号:4811 = Binder:29594_8
线程号:4812 = Binder:29594_9
线程号:5249 = OkHttp TaskRunner
线程号:5828 = pool-4-thread-4
线程号:5829 = Measurement Worker
线程号:5830 = firebase-installations-executor-7
线程号:5831 = firebase-installations-executor-8
线程号:5864 = RxCachedThreadScheduler-32
线程号:5865 = RxCachedThreadScheduler-33
线程号:5866 = RxCachedThreadScheduler-34
线程号:5867 = RxCachedThreadScheduler-35
线程号:5868 = RxCachedThreadScheduler-36
线程号:5871 = RxCachedThreadScheduler-37
线程号:5872 = Thread-5501
线程号:5874 = RxCachedThreadScheduler-38
线程号:5875 = RxCachedThreadScheduler-39
线程号:5878 = RxCachedThreadScheduler-40
线程号:5886 = OkHttp Dispatcher
线程号:5887 = Okio Watchdog
线程号:5888 = OkHttp Dispatcher
线程号:5889 = OkHttp Dispatcher
线程号:5890 = OkHttp Dispatcher
线程号:5891 = OkHttp TaskRunner
线程号:5892 = OkHttp TaskRunner
线程号:5893 = OkHttp TaskRunner
============end of dump ==========
 
javier mugueta 0 votes
Comment actions Permalink
0
Avatar

Javier: That looks right. You need to copy the KMZ you make with Map Pilot Pro into your 1915F871-B660-4346-AEB0-F4DC99D5778B folder. Then copy the name of the existing KMZ (1915F871-B660-4346-AEB0-F4DC99D5778B.kmz in your case). Then delete that file and change the name of the file you made with Map Pilot Pro to 1915F871-B660-4346-AEB0-F4DC99D5778B.kmz.  Then restart the DJI Fly app. 

We HATE this workflow which is why we tried to make it as easy as we could for the operating systems that support it. 

Zane 0 votes
Comment actions Permalink
0
Avatar

I am following the steps mentioned but when I open the plan in the RC2 controller, it crashes. Just to clarify, the RC2 controller is the one with the screen in it, no mobile device at all.

Regards

javier mugueta 0 votes
Comment actions Permalink
0
Avatar

Javier: Try using an SD card to move the files around instead of connecting it to a computer. 

Zane 0 votes
Comment actions Permalink
0
Avatar

Hi, I don't think the problem is regarding the mechanism to transfer the kmz. I have tested to copy a valid kmz created in the rc2 controller to the laptop, change something like point heith and copy back again to the controller and it works.

In fact, I have been comparing the template.kml and waylines.wpml files created by the rc2 controller and the ones created by pilot pro and I see differences:

- the template.kml file from rc2 is pretty simple, the one created by mpp has more stuff in it

- the <actionGroup> section of the wpml is the place whe I think is the issue because the way <actiongroup> and <actionid> are numbered differs from one to the other.

See screenshots, I can share the files created by rc2 controller if you want.

kml comparison (rc2 controller on the left):

 

wpml conparison (rc2 controller on the left):

 

javier mugueta 0 votes
Comment actions Permalink
0
Avatar

Ive watched the video a few times and am working my through the process. I have an Air 3. under settings, do I select Mavic Air 3 (export only)? I don't see an Air 3 option. I realize this is a DJI issue and you're trying to provide a work around which I appreciate because I really don't want to buy a new drone right now.

 

thanks

Joe

Joseph Schena 0 votes
Comment actions Permalink
0
Avatar

The it will say Air 3 in the future. The Air used to be part of the Mavic family and we still have it categorized there internally. Same same.

Zane 0 votes
Comment actions Permalink
0
Avatar

We are actually seeing that the RC2 works fine with the KMZ files currently being generated by Map Pilot Pro. Here are the steps to reproduce:

  1. I made a dummy mission
  2. I made a mission in Map Pilot Pro and exported it
  3. I deleted the dummy mission in Android Transfer window on my mac
  4. I renamed the exported KMZ to the dummy mission UUID
  5. I moved the renamed exported KMZ into the dummy mission folder
  6. I started up DJI Fly on the RC 2
  7. found and loaded the mission
Zane 0 votes
Comment actions Permalink
0
Avatar

Zane,

The Waypoint missions (KMZ) are limited to 200 points, ok?

Is there any way, for large areas, to split the mission in multiple KMZ files (200 points)? For example, one mission with 1000 points could be flown with 5 KMZ files, in sequence.

 

Machadoagri 0 votes
Comment actions Permalink
0
Avatar

We will be adding support for generation partial missions using the manual restart point feature in the future. You would basically have to choose where to restart a mission in Map Pilot Pro and then generate the KMZ. So you would go back and forth between MPP and the DJI app.

Zane 0 votes
Comment actions Permalink