kebhr / scratch3-tello Goto Github PK
View Code? Open in Web Editor NEWLet's fly Tello with Scratch 3.0 !
Home Page: https://scratch3-tello.app/
License: Other
Let's fly Tello with Scratch 3.0 !
Home Page: https://scratch3-tello.app/
License: Other
Hi, I noticed that in the documentation, The following was bolded:
After connecting to Tello, launch Scratch3-Tello.exe
I was wondering if there is anyway to open the exe without connecting to a Tello. This might be a duplicate of the discussion here. Would love to contribute if there some direction in your mind? Thanks for the excellent project!
¿Existiría tal posibilidad? Gracias de antemano!
Using the compiled mac versuin hwere ....
Process: Scratch Desktop [8839]
Path: /Applications/Scratch Desktop.app/Contents/MacOS/Scratch Desktop
Identifier: edu.mit.scratch.scratch-desktop
Version: 3.10.4 (3.10.4)
Code Type: X86-64 (Native)
Parent Process: launchd [1]
User ID: 506
Date/Time: 2021-11-12 21:07:46.8852 -0600
OS Version: macOS 12.1 (21C5031d)
Report Version: 12
Bridge OS Version: 6.1 (19P50631c)
Anonymous UUID: 9B4A7380-34AD-19A1-468F-A6CCBA25ABC6
Time Awake Since Boot: 1700 seconds
System Integrity Protection: enabled
Crashed Thread: 0
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: Namespace DYLD, Code 1 Library missing
Library not loaded: @rpath/Electron Framework.framework/Electron Framework
Referenced from: /Applications/Scratch Desktop.app/Contents/MacOS/Scratch Desktop
Reason: tried: '/Applications/Scratch Desktop.app/Contents/MacOS/../Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/Applications/Scratch Desktop.app/Contents/MacOS/../Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/Library/Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/System/Library/Frameworks/Electron Framework.framework/Electron Framework' (no such file)
(terminated at launch; ignore backtrace)
Application Specific Information:
Library not loaded: @rpath/Electron Framework.framework/Electron Framework
Referenced from: /Applications/Scratch Desktop.app/Contents/MacOS/Scratch Desktop
Reason: tried: '/Applications/Scratch Desktop.app/Contents/MacOS/../Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/Applications/Scratch Desktop.app/Contents/MacOS/../Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/Library/Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/System/Library/Frameworks/Electron Framework.framework/Electron Framework' (no such file)
Thread 0 Crashed:
0 dyld 0x10e3b60ce __abort_with_payload + 10
1 dyld 0x10e3cc1cf abort_with_payload_wrapper_internal + 80
2 dyld 0x10e3cc201 abort_with_payload + 9
3 dyld 0x10e37a613 dyld4::halt(char const*) + 375
4 dyld 0x10e37655d dyld4::prepare(dyld4::APIs&, dyld3::MachOAnalyzer const*) + 3955
5 dyld 0x10e3754b4 start + 388
Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x0000000002000209 rbx: 0x0000000000000000 rcx: 0x00007ff7bc367678 rdx: 0x00007ff7bc367ae0
rdi: 0x0000000000000006 rsi: 0x0000000000000001 rbp: 0x00007ff7bc3676c0 rsp: 0x00007ff7bc367678
r8: 0x00007ff7bc3676e0 r9: 0x0000000000000000 r10: 0x000000000000008c r11: 0x0000000000000246
r12: 0x000000000000008c r13: 0x00007ff7bc367ae0 r14: 0x0000000000000001 r15: 0x0000000000000006
rip: 0x000000010e3b60ce rfl: 0x0000000000000246 cr2: 0x000000010e37ce3c
Logical CPU: 0
Error Code: 0x02000209
Trap Number: 133
Binary Images:
0x10e370000 - 0x10e3dbfff dyld (*) <15411f2c-1dc7-3958-b73d-d85cdf549ec1> /usr/lib/dyld
External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
VM Region Summary:
ReadOnly portion of Libraries: Total=800K resident=0K(0%) swapped_out_or_unallocated=800K(100%)
Writable regions: Total=9224K written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=9224K(100%)
VIRTUAL REGION
REGION TYPE SIZE COUNT (non-coalesced)
=========== ======= =======
STACK GUARD 56.0M 1
Stack 8192K 1
VM_ALLOCATE 12K 3
__DATA 32K 3
__DATA_CONST 80K 1
__LINKEDIT 216K 3
__TEXT 596K 2
dyld private memory 1024K 1
=========== ======= =======
TOTAL 65.9M 15
{"app_name":"Scratch Desktop","timestamp":"2021-11-12 21:07:46.00 -0600","app_version":"3.10.4","slice_uuid":"596191eb-2c06-339c-917c-d986342c029e","build_version":"3.10.4","platform":1,"bundleID":"edu.mit.scratch.scratch-desktop","share_with_app_devs":1,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.1 (21C5031d)","incident_id":"513CAC25-DDBA-4CCE-AE52-4D0FF2467759","name":"Scratch Desktop"}
{
"uptime" : 1700,
"procLaunch" : "2021-11-12 21:07:44.9062 -0600",
"procRole" : "Background",
"version" : 2,
"userID" : 506,
"deployVersion" : 210,
"modelCode" : "iMacPro1,1",
"procStartAbsTime" : 1698719613452,
"coalitionID" : 2089,
"osVersion" : {
"train" : "macOS 12.1",
"build" : "21C5031d",
"releaseType" : "User"
},
"captureTime" : "2021-11-12 21:07:46.8852 -0600",
"incident" : "513CAC25-DDBA-4CCE-AE52-4D0FF2467759",
"bug_type" : "309",
"pid" : 8839,
"procExitAbsTime" : 1700697116499,
"cpuType" : "X86-64",
"procName" : "Scratch Desktop",
"procPath" : "/Applications/Scratch Desktop.app/Contents/MacOS/Scratch Desktop",
"bundleInfo" : {"CFBundleShortVersionString":"3.10.4","CFBundleVersion":"3.10.4","CFBundleIdentifier":"edu.mit.scratch.scratch-desktop"},
"storeInfo" : {"deviceIdentifierForVendor":"665605F8-4558-5D41-A526-23F69C453296","thirdParty":true},
"parentProc" : "launchd",
"parentPid" : 1,
"coalitionName" : "edu.mit.scratch.scratch-desktop",
"crashReporterKey" : "9B4A7380-34AD-19A1-468F-A6CCBA25ABC6",
"bridgeVersion" : {"build":"19P50631c","train":"6.1"},
"sip" : "enabled",
"isCorpse" : 1,
"exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"},
"termination" : {"code":1,"flags":518,"namespace":"DYLD","indicator":"Library missing","details":["(terminated at launch; ignore backtrace)"],"reasons":["Library not loaded: @rpath/Electron Framework.framework/Electron Framework","Referenced from: /Applications/Scratch Desktop.app/Contents/MacOS/Scratch Desktop","Reason: tried: '/Applications/Scratch Desktop.app/Contents/MacOS/../Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/Applications/Scratch Desktop.app/Contents/MacOS/../Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/Library/Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/System/Library/Frameworks/Electron Framework.framework/Electron Framework' (no such file)"]},
"asi" : {"dyld":["Library not loaded: @rpath/Electron Framework.framework/Electron Framework","Referenced from: /Applications/Scratch Desktop.app/Contents/MacOS/Scratch Desktop","Reason: tried: '/Applications/Scratch Desktop.app/Contents/MacOS/../Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/Applications/Scratch Desktop.app/Contents/MacOS/../Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/Library/Frameworks/Electron Framework.framework/Electron Framework' (no such file), '/System/Library/Frameworks/Electron Framework.framework/Electron Framework' (no such file)"]},
"extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
"faultingThread" : 0,
"threads" : [{"triggered":true,"id":91233,"threadState":{"r13":{"value":140701991336672},"rax":{"value":33554953},"rflags":{"value":582},"cpu":{"value":0},"r14":{"value":1},"rsi":{"value":1},"r8":{"value":140701991335648},"cr2":{"value":4533505596},"rdx":{"value":140701991336672},"r10":{"value":140},"r9":{"value":0},"r15":{"value":6},"rbx":{"value":0},"trap":{"value":133},"err":{"value":33554953},"r11":{"value":582},"rip":{"value":4533739726,"matchesCrashFrame":1},"rbp":{"value":140701991335616},"rsp":{"value":140701991335544},"r12":{"value":140},"rcx":{"value":140701991335544},"flavor":"x86_THREAD_STATE","rdi":{"value":6}},"frames":[{"imageOffset":286926,"symbol":"__abort_with_payload","symbolLocation":10,"imageIndex":0},{"imageOffset":377295,"symbol":"abort_with_payload_wrapper_internal","symbolLocation":80,"imageIndex":0},{"imageOffset":377345,"symbol":"abort_with_payload","symbolLocation":9,"imageIndex":0},{"imageOffset":42515,"symbol":"dyld4::halt(char const*)","symbolLocation":375,"imageIndex":0},{"imageOffset":25949,"symbol":"dyld4::prepare(dyld4::APIs&, dyld3::MachOAnalyzer const*)","symbolLocation":3955,"imageIndex":0},{"imageOffset":21684,"symbol":"start","symbolLocation":388,"imageIndex":0}]}],
"usedImages" : [
{
"source" : "P",
"arch" : "x86_64",
"base" : 4533452800,
"size" : 442368,
"uuid" : "15411f2c-1dc7-3958-b73d-d85cdf549ec1",
"path" : "/usr/lib/dyld",
"name" : "dyld"
}
],
"sharedCache" : {
"base" : 140703231553536,
"size" : 15218327552,
"uuid" : "4615d93b-88ac-3433-9374-0d7be43ddd95"
},
"vmSummary" : "ReadOnly portion of Libraries: Total=800K resident=0K(0%) swapped_out_or_unallocated=800K(100%)\nWritable regions: Total=9224K written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=9224K(100%)\n\n VIRTUAL REGION \nREGION TYPE SIZE COUNT (non-coalesced) \n=========== ======= ======= \nSTACK GUARD 56.0M 1 \nStack 8192K 1 \nVM_ALLOCATE 12K 3 \n__DATA 32K 3 \n__DATA_CONST 80K 1 \n__LINKEDIT 216K 3 \n__TEXT 596K 2 \ndyld private memory 1024K 1 \n=========== ======= ======= \nTOTAL 65.9M 15 \n",
"legacyInfo" : {
"threadTriggered" : {
}
},
"trialInfo" : {
"rollouts" : [
{
"rolloutId" : "607844aa04477260f58a8077",
"factorPackIds" : {
"SIRI_MORPHUN_ASSETS" : "60ef663fa2f864203caf575c"
},
"deploymentId" : 250000055
},
{
"rolloutId" : "60da5e84ab0ca017dace9abf",
"factorPackIds" : {
},
"deploymentId" : 250000007
},
{
"rolloutId" : "60356660bbe37970735c5624",
"factorPackIds" : {
},
"deploymentId" : 250000013
},
{
"rolloutId" : "5ffde50ce2aacd000d47a95f",
"factorPackIds" : {
},
"deploymentId" : 250000063
},
{
"rolloutId" : "5fc94383418129005b4e9ae0",
"factorPackIds" : {
},
"deploymentId" : 250000154
},
{
"rolloutId" : "602ad4dac86151000cf27e46",
"factorPackIds" : {
},
"deploymentId" : 250000250
},
{
"rolloutId" : "601d9415f79519000ccd4b69",
"factorPackIds" : {
"SIRI_TEXT_TO_SPEECH" : "6184371b8763315b96047a4d"
},
"deploymentId" : 250000308
}
],
"experiments" : [
]
}
}
I am just getting started with the DJI Tello. I have the EDU version that also includes some mission pads that can be detected by the sensor on the drone and uniquely identified by an integer number. There are some other commands available, described here: https://dl-cdn.ryzerobotics.com/downloads/Tello/Tello%20Mission%20Pad%20User%20Guide.pdf.
Would you consider adding these commands to the scratch extension?
sir i have this code run in my code my code in add extension tello3 drone in not solve earror node dgrame in telloprocessor please tell me solution about this earror quickly
Hello!
I tried to run Scratch Tello in three different computers, but with no success.
I also ran the clear command queue and also didn't work.
Could you give me any suggestion?
Hey @kebhr
I am so excited to see this repo. I would love to get students up and running with Tello and Scratch 3. Is the current build functional (sorry, I didn't see any details in the readme/etc.)?
Thanks much.
Andy
Dear Kanta Ebihara
Thank you for publishing your Scratch3 tello extension. It must have been a lot of work to figure out how to control the tello drone from scratch.
I use your scratch tello extension to teach programming at a primary school in the Netherlands. During the coding workshops, kids have to program some maneuvers or try to find and land on a mission pad automatically.
Sometimes my tello drones fails to perform a command at the first time. However, when I send the same command again a few seconds later, it is performed as expected. I have found a nice idea in this python library (https://github.com/damiafuentes/DJITelloPy): commands are repeated if tello fails the execute them.
I have tried to add repeating of tello commands to the scratch3 tello extension. Similar to the scratch "Wait X sec" block, the tello blocks are also waiting until tello confirms a command with "ok". If tello does not reply within 7-10sec or answers with an error message, then the command is sent again to the drone. The code makes use of the scratch util.yield() function, which ensures that the scratch even loop keeps on calling the code of the tello block, until it succeeds.
I thought, you might find the code interesting. Feel free to download it here:
scratch3_tello.zip
Please do not hesitate to reply if you have any comment or question on the code.
Best regards,
Andreas Zolnay
Buenas tardes,
Me gustaría saber cómo codificar un vuelo de dron tipo "Flip" con los bloques que se cargan a través de la extensión tello añadida a Scratch Desktop. Gracias!
when I execute takeoff Tello takes off and starts drifting to the back right.
and it won't receive any other command.
then after some seconds, it starts blinking red and loose connection to scratch
hi
I have an issue : i need to set up training for engineer with a combination of tello and a lego boost. I ahve seen that scratch3 includes the lego boost extension (but not the tello one) while the scratch desktop (based on scratch3) does not include the lego boost extension.
Is it normal? do I have to do something the get both extension ?
Thanks in advance for your answer. My objective is to set up a business cse with a recognition drone and a recovery car controlled by the same application.
I'm a teacher in an association and I learn to code to children on Tello drone.
I have compile scratch3-tello on Ubuntu 21.04 on a raspberry pi and also on Lubuntu 20.04.3 on PC.
The result of this compilation is OK on the 2 platforms.
But when I launch scratch3-tello with "npm start", I obtain this 2 debug windows, same error messages in the console :
But I still can command Tello with Scratch.
And making the package with "npm run dist:dir" doesn't work :
The version of node and npm are the same in the 2 platforms :
Thanks for this good job kebhr
Great to see that you developed this extension for the Tello for Scratch 3.0. However, I am looking for a way to have Scratch reconnect to the drone without having to restart the application every time. The connection is lost quite often with the batteries only supplying about 10 minutes of flying time (max).
Is there a way of doing this? Maybe by running a separate script in the background?
I can't say for sure if this is an issue with the drone itself or the version of the scratch 3 tello I am using, but putting fairly simple code like when I press right arrow, move some amount of distance to the right results in unintended outcomes. It takes off fine and I can press right arrow and it moves right, however because I pressed right for more than 1 frame and the drone takes more than 1 frame to move it just executes that command over and over and over and over until it hits a wall or it runs out of commands that have built up in the queue. I've tried using clear command queue but that seems to cause it to ignore a lot of commands. Perhaps it is an issue with how I am coding it and the scratch code has to be more complex, but all I really want to achieve as as follows: a pretty intuitive keyboard control that when you use arrow keys it moves the direction you press until you let go and is then able to respond to you pressing another direction pretty quickly. If that isn't possible due to limitations in the drone, then I understand.
I have added tello extension to my exe and all the blocks are loaded successfully but i cannot able to connect it to tello drone.
すみません、あなたが開発したtelloプラグインを見て、とても好きです。
しかし、使っているうちに、telloの状態値が正常に戻らないことが分かりました。このプラグインにビデオ伝送機能を追加できますか?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.