Programming a 3D Printer to DESTROY Mobile Games

  Рет қаралды 164,205

BK Binary

BK Binary

Күн бұрын

Thanks for making it here! Today I'm showcasing a project wherein I use a 3D printer to destroy the mobile game WordHunt from game pigeon.
This project was tons of fun and I have a few more ideas for projects with the printer that will be equally absurd so I hope you guys are looking forward to it.
Anyways if you read this ily.
Code - github.com/Brendan-Kirtlan/Wo...
No compiled executables will be provided since it's specifically tailored for use on my own machine.
If you want to get in contact join my discord server - / discord
I don't check too often but feel free to message me. Also still have $500 of bounties :)
Music used (in order)
Stevia Sphere - Flying Saucers Are Still A Rumour / 5faecee9gisnhhp28
Spelunky HD OST - Yeti Caves (Eirik Suhrke) open.spotify.com/track/6mQ8nB...
Stevia Sphere - Elevator 9 steviasphere.bandcamp.com/tra...
Stevia Sphere - Plinky steviasphere.bandcamp.com/tra...
Stevia Sphere - Small Cute Machines steviasphere.bandcamp.com/tra...
Jin601 - Magic Pixel / ynegwtygv3qrpj8s6
Artists
Stevia Sphere - steviasphere.bandcamp.com/
Eirik Suhrke - phlogiston.bandcamp.com/
Jin601 - / jin601
Chapters
00:00 - Intro
00:28 - Background
00:56 - Algorithm to find all words
03:30 - Using OCR to get board
04:17 - Coding automatic inputs
06:01 - Programming 3D printer to play
08:35 - First test
12:38 - Montage
14:03 - Outro

Пікірлер: 505
@KolMan2000
@KolMan2000 Ай бұрын
Now have it destroy people with perfectly calculated shots in 8-Ball
@RadioactiveBluePlatypus
@RadioactiveBluePlatypus Ай бұрын
The channel "stuff made here" did this in real life.
@benm12310
@benm12310 Ай бұрын
I wanna see it master the pong game. I swear there’s a randomizer as I can never get accurate shots lol
@freman
@freman Ай бұрын
I'm almost convinced someone already has lol, I've seen people make incredible shots with no aim time
@bedwarsfan69
@bedwarsfan69 Ай бұрын
Yes
@leumasme
@leumasme Ай бұрын
Idea to Improve this: Sort the words to solve not simply by length and alphabetically, but try to sort them so that any word that starts at a certain position follows after one that ends at the same position (or close to it). This would reduce travel time between words and get you closer to getting every word - especially for shorter words, a majority of the time is going to be spent traveling between words and not actually solving them.
@experimenteeer
@experimenteeer Ай бұрын
This was my first thought when seeing the printer in action. A lot of time was wasted traveling from the end on one work to the start of the next. I would still sort by word length and just improve travel time to get the most out of each score bracket.
@Scrogan
@Scrogan Ай бұрын
Pretty sure he can crank up the move speed of that printer, and reduce the Z hop height. Maybe it would require a different stylus. But even my ender 3 can move much faster than this was moving, the vibrations wouldn’t be a problem, probably.
@user-ro2tm3dp8x
@user-ro2tm3dp8x Ай бұрын
won't it also increase the sorting time by a lot?
@BelviGER
@BelviGER Ай бұрын
​@user-ro2tm3dp8x if he switches to literally any other printer brand he can remove all the manual steps of doing stuff on the printer, uploading a gcode file etc via programs like ponterface that can just feed your printer commands live That saves way more time than any reasonable sorting algorithm can take, and suddenly you can do it live. Don't have to solve the whole thing before the first move, just need to solve it quicker than the printer can move
@MattWestwick
@MattWestwick Ай бұрын
Another optimization - use G0 rapids between words :)
@ladyravendale1
@ladyravendale1 Ай бұрын
For the character recognition, since it’s a known set of just 26 images with fixed sizes, I would ditch ocr all together and check against predefined images for what letter it is. If you really want speed, you could probably instead check individual pixels. I can’t imagine it taking more that 10 well chosen pixels to identify any letter, with the limit being 6 since 5 only have 16 combinations.
@taxatogaming
@taxatogaming Ай бұрын
Wouldnt 5 pixels give you 32?
@ladyravendale1
@ladyravendale1 Ай бұрын
@@taxatogaming yep, I can’t count
@experimenteeer
@experimenteeer Ай бұрын
OpenCV matchTemplate?
@dudedotmichael
@dudedotmichael Ай бұрын
This person is 100% correct. Do this. Python's opencv match templating actually works really well for OCRing in this case. Simply make 26 screenshots, one for each letter. Then for each of the 16 squares compare against all 26 and use the one that matches the most. No need to do black and white conversion. Superfast, super accurate, easy to implement. Works well for automation software like sikulix or autohotkey. Btw, if you have a mac Quicktime can easily capture your screen from your phone as well saving you $7.
@TripImmigration
@TripImmigration 23 күн бұрын
True we did something similar on my research. The caveat is the contrast need to be crank to Jesus because if finds a little bit of gray, sayonara your numbers
@Jacobadia
@Jacobadia Ай бұрын
“What’s printer?” Your friends are funny bro! “
@3v1Bunny
@3v1Bunny Ай бұрын
Bambu Lab A1
@InfiniteCoder01
@InfiniteCoder01 Ай бұрын
*A1 mini
@SullySadface
@SullySadface Ай бұрын
He wasn't asking what the printer was he was quoting the video -_-
@Jacobadia
@Jacobadia Ай бұрын
@@SullySadface haha yea. I’m glad someone understood
@Klannahar
@Klannahar Ай бұрын
If u play with a game and u get this msg about printer, how would u pt it context? printer has nothing to do with a game... U would be confused as well.
@MaebhsUrbanity
@MaebhsUrbanity Ай бұрын
the fact that bambu printers don't support just senting GCODE over serial(USB) is wild, but I think there might be an unofficial on-printer octoprint plugin which whould allow you to use their api if you wanted to get it to start files for a future progect.
@superduperbjarne
@superduperbjarne Ай бұрын
I know, bambu printers have some neat features, but with how closed of an ecosystem they have it's a hard no from me
@pepaw
@pepaw Ай бұрын
Agreed. Something to think about cause those mofos are not cheap.
@4nto418
@4nto418 Ай бұрын
Can you not even start the print remotely ?
@Jojo43O9
@Jojo43O9 Ай бұрын
@@4nto418 with the more expensive printers you can
@illcomeupwithanamelatter3632
@illcomeupwithanamelatter3632 Ай бұрын
Idk about sending over USB. But you can use a micro SD card to transfer gcode
@NoorquackerInd
@NoorquackerInd Ай бұрын
To prevent your stylus from destroying your phone, make sure you have a weak part in it that breaks _before_ your phone does. Think about how gas stations have break-away connectors so that driving away with the gas pump still in it doesn't spill gas everywhere and instead breaks apart in a controlled manner. While your print head might still be able to conflict with where your phone is and break it, at least incorrectly mounting the stylus won't screw up your phone
@meateaw
@meateaw Ай бұрын
The reason he is scared I think is less about the stylus; and more about the printer head itself crashing into the phone. I didn't pay attention but did he even remove the printing nozzle? that's a nice sharp metal point to scratch a phone screen.
@taylor5248
@taylor5248 Ай бұрын
My collage has a big AG section, so the robotics team made a small seed planter that would dig a hole, add a seed, and water it before going to the next spot. The instructor called it “A 3D printer with an identity crisis” when it was watering it thought it was turning on the fan. (It used a printers boards)
@kalebwilkes4705
@kalebwilkes4705 Ай бұрын
A less squishy stylus would probably recognize better at higher speeds
@JFed-9
@JFed-9 19 күн бұрын
The ones that almost look like a soft metal mesh (I assume it’s not metal given that it doesn’t scratch the screen, but that’s the only way I can describe it) seem to slide much easier. Could prevent skipping
@80lab38
@80lab38 Ай бұрын
the cheaper printers are usually less hassle when it comes to "non-standard tasks", since most of them use off the shelf microcontrollers with open source software.
@kajatoth9151
@kajatoth9151 Ай бұрын
Idk if you are already doing this but you can try to prefer words that starts with a letter that was a last letter in the previous word, example: cat - ton - new - win ...
@aidenparsons6571
@aidenparsons6571 Ай бұрын
underrated comment
@vlc-cosplayer
@vlc-cosplayer Ай бұрын
Regarding the janky OCR: I think Tesseract is specifically meant for books, not individual letters. You'd probably have better luck with a simpler library that identifies single characters 👀
@joe-skeen
@joe-skeen Ай бұрын
Also there's only one font and size you need to account for. Should be able to make it more reliable by making a small ML training set, wouldn't even need to make it black and white
@nicholasfinch4087
@nicholasfinch4087 Ай бұрын
I wonder if he could also train some kind of model that can determine the letters too. But considering it's working pretty successfully with his current setup, it's probably fine.
@K0nomi
@K0nomi Ай бұрын
​@@joe-skeenmaking it black and white would make things much easier and computationally faster though
@IbrahimDelil
@IbrahimDelil Ай бұрын
he doesn't need an ocr at all! since he is getting a screenshot (lossless) he can just crop the letters and compare them to an array of all the letters, in base 64 or some shorter hash of it.
@Simplicity4711
@Simplicity4711 Ай бұрын
The letters should be exactly the same bitmap you can easily check for.
@otter8899
@otter8899 Ай бұрын
there are some things you can do to improve the movement system just a bit and possibly break 60k points on average: 1. increase the movement speed of the XY axis by appending the F argument to the G0/G1 command (view the marlin docs on G0/G1) 2. decrease the Z hopping height as much as you can or speed it up more, or just start moving as it hops back up (using a smaller stylus could make this easier) and pytesseract sucks because of the font wordhunt uses, maybe you can try a different OCR model?
@BKBinary
@BKBinary Ай бұрын
Solid ideas, I'll have to try those. And yeah I assumed so. I tried 2 other ones but they were much slower than pytesseract. I even tried creating my own model for pytesseract using that font but there weren't many resources on it online so I couldn't figure it out.
@rrrrmrmr
@rrrrmrmr Ай бұрын
It could also probably be sped up by prioritizing words that start with the last letter of the previous word
@K0nomi
@K0nomi Ай бұрын
​@@BKBinarywhy not try using a standard image recognition library? you already made something to crop each letter, so just have a bank of the 26 images and check which each tile is closest to
@nassinger3365
@nassinger3365 Ай бұрын
@@K0nomi yess
@mentallydeficient8088
@mentallydeficient8088 Ай бұрын
@@rrrrmrmr generally minimizing movement between inputting words is a good idea, but im not sure if it would be more efficient after finishing a word to go for next word that starts with the last letter of the previous one, if the next word is a short one (example: builder -> rum) probably it would be more beneficial to move a few spaces to input a more valuable word. tho this all can slow down the g-code generation part, so im not sure if theres even a reason to bother
@lynxrbeam8732
@lynxrbeam8732 Ай бұрын
7:45 “using some really basic math-“ Proceeds to show not one single number and the absolute value of Poseidons trident.
@MQWalkman
@MQWalkman Ай бұрын
This is great! Since you asked for improvement ideas you can get styluses with non-squishy tips - kinda like cheap Apple pencils - which may reduce lag
@JorbIsMe
@JorbIsMe Ай бұрын
Really creative idea and smartly executed. It's cool to see you expanding your projects more into engineering cause you get to actually unleash them into the real world, and I am happy to have been a small part of this one :). 12:38 is some fire editing 💯
@jaygriffin6963
@jaygriffin6963 Ай бұрын
Great project! I also had the unsatiable desire to destroy my friends in word hunt. It was fun seeing someone else approach the problem (domination in silly word game) and your solution was objectively better (in my defense i was a junior in highschool) I could also never figure how to actually make it input on the phone (although i HAD thought about robot stylus i just couldnt rationalize it) so it was really fun seeing you succeed! thanks for sharing
@N0p3Mark
@N0p3Mark Ай бұрын
I dig the fact that you always wanted a 3D printer and now that you have one, landed on an A1 Mini. I’ve done my fair share of printer nonsense over the years. I’m certain that with your ingenuity only great things can come from your newfound resource. Great video, thanks for sharing. Cheers
@BKBinary
@BKBinary Ай бұрын
Thanks for the kind words!
@Xeoncross
@Xeoncross Ай бұрын
Great video, you walked through the whole process which was fantastic. Short and concise. I'll be checking out your other videos.
@alexismandelias
@alexismandelias Ай бұрын
One more idea for impoving this masterpiece of a comouter science project would be to sort the words in decreasing value order (longest to shortest, or whatever else the game uses), so that the printer starts with these first
@opitir
@opitir Ай бұрын
That's what I was going to say. It improve two things: it minimize the number of times and the total time spent between words, and from what I've seen, it looks like the bigger words give you a better point/letter ratio.
@Hack--rz1io
@Hack--rz1io Ай бұрын
Looking for words with a first letter physically close to the last letter of the previous word could help
@rjdverbeek
@rjdverbeek Ай бұрын
Optimizing for words with less corners. Maybe also having less sharp corner turns will help with keeping up the speed.
@AsiAzzy
@AsiAzzy Ай бұрын
@@rjdverbeek I don't think corners are a problem. You can max the acceleration until steppers start to skip. Then add a slight curve as it won't matter much for the phone, so making some radius moves might help a lot to seriousl limit the max acceleration (to be safely under the skipping steps limit). Crank the speed up to max, let it rip!
@StolenBlock
@StolenBlock Ай бұрын
​@@AsiAzzy Yes, that's genius. And have it also cut corners for a bigger radius. Would be interesting if there's a speed in the steppers where they're having an torque cutout.
@teamllr3137
@teamllr3137 Ай бұрын
there are libraries to inject instruction to the printer via MQTT else, really nice Project !
@WilsonBot
@WilsonBot Ай бұрын
Made a project like this minus the automatic input for the SpellCast word game on Discord, love how far you took the idea. Tries really come in clutch for this application.
@hi-its-me22
@hi-its-me22 Ай бұрын
Improvement idea to maximize score with current setup. Reverse sort your results list so it starts by playing the largest/longest words first and works its way down to the 2-3-4 letter words. Great work loved this project. First time watcher but you’ve got one new subscriber here. :)
@suleymantolgaacar5089
@suleymantolgaacar5089 Ай бұрын
Cool project, and the editing was great. Keep them coming man :)
@thewolfin
@thewolfin 12 күн бұрын
Thank you for the great video and props for taking the time to put in music credits
@ArchistYT
@ArchistYT 3 күн бұрын
BRO - you're doing what I've been daydreaming about for a couple years!! I just have no clue how to script and create codes for something like this, but you've seriously inspired me to try this myself! It would be sick to collaborate with someone who knows how to do stuff like this and learn from ya :D
@kaydabalab
@kaydabalab 21 күн бұрын
dude! this is amazing! id love to see another video of the updated ideas you have
@SlowCuberThirstix
@SlowCuberThirstix Ай бұрын
Really nice video, that I stumbled randomly on. Good luck on your KZfaq adventure :)
@theorangebaron1595
@theorangebaron1595 Ай бұрын
Haha this is great! Loved the video and the iteration process of your code and design. I wonder if you can increase the rapid travel move for the printer. This would allow it to retract faster and make travel moves faster. Some of the corexy motion systems would have insane travel speeds. The stylus would be a blur from moving so fast, and you could probably get a higher score. Sometimes when you just give the machine coordinates it moves at the “rapid” speed and this can be changed in the machine firmware.
@mylittleparody2277
@mylittleparody2277 Ай бұрын
Nice work! To speed up things: - Speed up letter recognition. Maybe just grab all the letters and compare each one. Even if it take the same amount of time(it wont) you will be way more reliable. - Try to find a way to inject the gcode directly. I can't believe such a pricey printer don't have a way to gobble up streamed gcode... - Change your paths. instead of doing (0,0,0) -> (0,0,10) -> (2,3,10) -> (2,3,0) , do (0,0,0) -> (1,1.5,10) -> (2,3,0) (it would make a triangle hop instead of a square one) - Also, use G0 if you didn't already, it is supposed (even if not always correctly coded) to be faster by don't guarantying using straight lines. - As other said, if you have done all of that, maybe try reorganizing the words. I would insert short ones to link the big ones at the start. It won't be that easy to code tho. Thank you for this fun video!
@Ishsa
@Ishsa Ай бұрын
If you do a little Post-Processing on the word list you generate, you can minimize your total path length and time spent not touching the phone, which will get you a lot more complete games. Also, it won't be a big optimization, but aiming for the center of each square is further than you necessarily need, so allowing the bot to cut some corners will save a couple precious hundredths of a second. I couldn't tell exactly how you're generating your trie or searching it, but my guess is there are some really fun encoding tricks that would save a lot of time as well. Matt Parker's video about how his viewers improved the speed of his code by like 22 million percent came to mind since this is also a word tree search problem.
@4nto418
@4nto418 Ай бұрын
For the OCR thing, since the letters are identical all the time, you could go with taking reference images of the letters, comparing them to the images you have in the current game and whichever image has the highest % of similarity (should be around 99-100%...) is the correct one. You don't even have to do any processing beyond cropping.
@experimenteeer
@experimenteeer Ай бұрын
Yep. OpenCV matchTemplate is the algo to use for this.
@braddofner
@braddofner Ай бұрын
I am certain you could get your printer to start the files automatically. I use Orca Slicer, which is open source I think, and it communicates with my P1S over my LAN no problems. Great project. I enjoyed coming on this journey with you
@kyleallred984
@kyleallred984 Ай бұрын
If you can get a felt tip styles for better accuracy and less resistance. Get a diy driver board for the motors and use octoprint for more automatic control. Possibly a camera, or just a simple timer, on the print head to detect a changed screen and stop the print
@Xealous
@Xealous Ай бұрын
I've had similar problems with tesseract, my solution was just to have a bunch of reference Pngs (one for each letter) and then just count how many pixels "match" for each one. since the font/backgrounds dont change this is very accurate. You can still apply image cleanup before as long as your reference images are close to the cleaned up images.
@BKBinary
@BKBinary Ай бұрын
I was thinking of doing this same thing! Thanks for letting me know it works!
@critical_always
@critical_always Ай бұрын
The lesson I hope you learned from this. Don't listen to KZfaq hype and always go open source... Open source printers can be controlled directly saving the need to waste time uploading the solution. Effectively turning the printer into a real time robot. That opens the door to solve all kinds of games. I don't play games but fruit ninja springs to mind.
@ExtemporaneousnessOne
@ExtemporaneousnessOne Ай бұрын
Yo this wild seriously impressive :O I didn't even realize you could use a 3d printer like that
@user-wo7rl4nm7w
@user-wo7rl4nm7w 24 күн бұрын
The 3d printer itself isn't doing much, bambu labs printers do have resonance compensation, cloud printing, failure detection, and flow rate calibrations, that are processed by the printer itself, but otherwise, the print settings, and everything else is baked into the gcode
@Krcma96
@Krcma96 Ай бұрын
I don't know it the bamboo labs printer have this option but you could connect the printer to the PC over USB, connect to the serial port of the printer from the python script and send the gcode commands that way. Really cool video and an interesting idea for a project. I might try doing something else then printing with my 3d printer now after this 😄
@RainShinotsu
@RainShinotsu Ай бұрын
Interesting video! For sending the gcode, maybe you could have tried another slicing software? I use Cura for my prints, but I might try Orca. One of those should support both arbitrary gcode and network printing, otherwise I'd be very surprised lmao. But idk, seems like even what you have so far is pretty efficient, so if it ain't broke…
@AsiAzzy
@AsiAzzy Ай бұрын
I think it would be streamlined more to have a single process like RPI controlling printer directly (octoprint-klipper) and some webcam and processing on the RPI. If fast enough might not even need to pause the game. It may start with a word and by the time it moves the head it might have a bunch more. Also idk what path you generate for corners, but i'd do a large radius to not hit max accelearion in corners. Some mechanical improvements: Ged a static bed instead of a bed slinger like corexy, cathesian ender 5 style or delta A delta printer might offer interesting advantages out of the box with fast presets and light print head and bed is static. Then ditch the print head (the heavyweight printhead slows down the max speed and acceleration). Then move to faster Z (minmize Z hop maybe a harder stylus) with belted Z or even better is to hook and induction coil to act as a solenoid to pop up-down the stylus. Then furter make it faster by converting to larger pulleys, bigger steppers.. test to find max speed and acceleration supported. If skipping is not occuring, then bigger pulley on motor will grant more speed. Repeat until it skips. It might go with crazy 600mm/s+ even more with a lighthead stylus. For this i bet a delta conversion is beter suited beacuse the deleted printhead was the only mass that was limiting the acceleration and speed. Without it might reach speeds beyond 3d printing realm (maybe 1000-2000mm/s, maybe more idk). Corexy has the whole gantry to move that is the same mass, and bedslingers have the whole bed + phone so a delta might be the best. An even higher tier of mods might be with cone angle movements instead of stylus moving. To further increase speed, maybe moving the whole stylus is not the route. Maybe have a ball joint on a very long stylus and angle it to reach the phone. It can have two axis with strings to hook on the end of the stylus to angle it. Math will get harder but doable. Also when everything is maxxed, then it comes nema23 and other bigger grunty-er steppers and servos that can really speed up crazy fast (it can have a redection gear to raise the speed and lower the torque) It would be interesting to see further versions of this mobilephone games ultimate destroyer.
@hulio3994
@hulio3994 Ай бұрын
Things I think to improve it: Remove weight from moving parts Arrange the word order so that words starting with the letter the stylus is currently on are the next to be written. You can then also code an algorithm that calculates the correct word order to minimize the distance traveled and achieve the highest possible score.
@iamsick5204
@iamsick5204 Ай бұрын
You could speed it up by haveing the next word start with a nearby letter Also having the correct index of words This is incredible! I can't believe it worked first try!
@maxb.5905
@maxb.5905 Ай бұрын
dude thats such a cool project, how do you not have more views/subs?
@brittonstudios
@brittonstudios Ай бұрын
You can probably up the speed and acceleration in the gcode to move faster. Also, could have the solver start the next word from the last letter of the previous word to waste less time moving. Nice work!
@brittonstudios
@brittonstudios Ай бұрын
Well, added that before the end of the video, still think the second part about stacking the words to move less works… could also test to see how far you have to go to register for the outer words so you don’t have to go all the way to the center of them.
@lucasperies6952
@lucasperies6952 Ай бұрын
No way, I commented on this on Reddit not too long ago, and now the algorithm has brought me to the video. Awesome man!
@BKBinary
@BKBinary Ай бұрын
That's so crazy haha I didn't expect anyone from reddit finding this video
@lucasperies6952
@lucasperies6952 Ай бұрын
@@BKBinary are you sweaty grun.... ?
@xanderplayz3446
@xanderplayz3446 Ай бұрын
Nice work, Brendan! Just a quick tip: Maybe import the other files instead of calling them via subprocess.
@frollard
@frollard Ай бұрын
To limit acceleration issues, consider using arc gcode commands. If you draw a pseudo bezier through the words it will get rid of most of the abrupt angle changes. Like you said already sorting the list to word-centipede chain the entries you could save a bit of time. Prioritize longer words but if you can insert a short word between long ones... You'll still finish all your long words but the cut jog time should get more in...(definitely, yes, supreme, end, diatribe -- instead of definitely /jog/ supreme /jog/ diatribe ...)Do like maze solving robot mice and cut every corner possible.
@danielsalyi7194
@danielsalyi7194 Ай бұрын
Great project, very interesting hiccups along the way, I thought solving the puzzle was gonna be the hardest
@markokorevec3198
@markokorevec3198 Ай бұрын
As for the letters, split them in separate images and then run OCR, it will most likely be 100% as with the current setup it tries to connect before/after letters into something more meaningful than just A or F or X.
@benromarowski9235
@benromarowski9235 Ай бұрын
this was awesome! do all boards given by the game yield the same number of points? I see you solve the longer words first, but maybe you could make the program optimize the score by including the time that it takes to make a given word.
@Braxel_
@Braxel_ Ай бұрын
A different printer that is not closed source and more basic, it's possible to take off the print head and hold only the stylus. Less weight and upping the speed should make it ever better since it does not have to worry about wobble or extruding. Still really cool idea and amazed how well it works.
@shivaargula4735
@shivaargula4735 Ай бұрын
IDK if you've done this but sort the word list so the starting character of the next word matches the finishing character of the previous word. You can also optimize the path the printer takes, it doesn't need to travel right through the center of each word, it can take racing lines lol. If you want to go even further, you could include the printer travel speed into the calculations and select the most optimal words in terms of score vs speed, so if it regularly gets partway through the 4 letter words, you can pick the best of them.
@larryhannon49
@larryhannon49 Ай бұрын
This has to be the best video on this platform damn
@Okuhno
@Okuhno Ай бұрын
You should try upping acceleration >:) Also if you ever want a better 3d printer consider something running klipper (voron, annex k3, custom built) :P
@AyaanThe0ne
@AyaanThe0ne Ай бұрын
I cant tell you how much ive loved this video. Amazing 💪
@menty6666
@menty6666 Ай бұрын
Very cool!! A couple of armchair suggestions... Tesseract works better against B&W images than color, even seemingly black and white ones on the screen. Given you know the space each letter occupies, you might consider either only evaluating regions, or consider easyOCR, but easyOCR needs a word model, so I don't know if it can pick up on single letters. You'd still want to use regions, however because both packages are kind of a PITA in only finding first instances. A cheaper printer, like the low end Creality printer, allow for use of programs (like OctoPrint and others) that can allow live writing of gcode commands via terminal to output to the printer. You could stream your commands instead of creating a .gcode file to recover the FTP time. Lastly, since you find the solver list up front, inverting it to maximize the higher points from the longer words first could goose your score. Thanks for the fun watch!
@BKBinary
@BKBinary Ай бұрын
Hey thanks a lot for the suggestions! Will definitely use your tips in improvement. Thanks for taking the time to leave this comment!
@Rolandfart
@Rolandfart Ай бұрын
Here are a few ideas for increasing the score: 1. Use a less mushy stylus, small improvement but it could let you be more precise with raising lowering the pen. 2. Instead of moving from one word to the next based on which one is bigger, move to the next word by only raising the pen if it is absolutely necessary. This could be done by: char a = last character of the word you just solved char b = first character of the word you are going to solve next find a word in the list that starts with the a and ends with b and if a path can be created for that word starting and ending at the correct spots. Solve that word and you should be ready to solve the next biggest word. Only raise the pen if you cannot find an intermediary word.
@The_Arx
@The_Arx Ай бұрын
You still need to raise the pen in order to stop one word and start the next one
@aze4308
@aze4308 Ай бұрын
this is really cool!
@magnuzzs6186
@magnuzzs6186 23 күн бұрын
Amazing! I got two questions: do you solve the longest words first? Second: do you solve words that are the closest to the end of the last word rather than words further away? Maybe these are some changes that could even improve the score. Great work!
@alixcozmo
@alixcozmo 15 күн бұрын
with jailbreaking you could use veency, also, very cool!
@natotj333
@natotj333 Ай бұрын
Reeeeealy nice Idea and implementation!
@Ernzt8
@Ernzt8 Ай бұрын
What are friends for if you can't totally destroy them 😆 Great project!
@ikocheratcr
@ikocheratcr Ай бұрын
Interesting. Ideaa: * use a camera to capture screen, and make the whole thing stand alone to play one game after another. * for OCR maybe a small neuronal network trained to solve the 26 char images, very super specific, low resolution will cut it. ** if fully automated: are the buttons to start etc always on the same locations? * make it that you just put the phone on the bed, with app load to start the runs. yes any orientation :) Show the full "AI" Also, I get a clear message from this video: do not buy bambu printer due to proprietary closed interface, that sucks.
@ninjaman570
@ninjaman570 Ай бұрын
I saw some other recommendations for faster solutions, but honestly a really easy solution would be to just increase the speed of the movements. I haven’t used a Bambu labs printer, but I imagine there’s options like most other printers to increase “printing speed”, because while it goes fast now, it can definitely move faster
@deecat2018
@deecat2018 Ай бұрын
honestly best bambu lab ad i ever see that printer is very good and reliable tho for $249 con is about 3-5 time the price for its part(when need to repair) and closed source hard to mod its software(but it already refine by company) pro is best plug and play printer for today
@DanteEhome
@DanteEhome 11 сағат бұрын
Honestly, it's the coolest thing I have seen in a while.
@Cr480mx
@Cr480mx Ай бұрын
I think redesigning the stylus holder to make it a bit stiffer, adjusting the z axis to the absolute minimum height required for the stylus to work (so its lightly touching it as it seems its pressing down quite a bit in the video) and reducing your z hop height, increase your acceleration would allow you to increase the speed i think. Couple with whatever back end programming wizardry you can achieve i think you could easily get double the scores.
@FunnyIvri
@FunnyIvri Ай бұрын
Instead of ocr i think just hard coding the position of each letter then then just compare it to the font directly will completely break it if you wanted to use a diffrent verison of word hunt with a different font, but would be very fast and simple
@gajustempus
@gajustempus Ай бұрын
just flip the results file upside down - so the longest words are done first, then it proceeds with the shorter one's. That way the travel time of the stylos is optimized. You can optimize it even further by running an algorythm over it to arrange the words in such a way one word ends right next to the square of the next starting letter or minimal movement time. That way you should do a few more words extra withint he time limit. And lastly - try automation though Octoprint. That way your software talks directly to your printer, so no manual steps anymore. Should also save you a few seconds.
@MrMausao
@MrMausao Ай бұрын
It seems like from the video that it is possible that the word number 0 ends in a corner and the word number 1 starts on the opposite corner. It would be nice to also sort the words for the smallest distance of the previous one ending. This could be tricky because the best word after one might be so small that it's best to do another one that is further away.
@BKBinary
@BKBinary Ай бұрын
I was thinking of doing this but still keeping them sorted by length. So I would minimize travel time in each word length but still do all the longest words first just in a much more efficient order.
@JamsterJules
@JamsterJules Ай бұрын
Great project! I did a simular thing with BookWorm for the PC, Although being PC based i could just manipulate the mouse. Post an update please if you make any improvements. I suspect you got addicted to watching it run for a while 😂
@danny3793
@danny3793 16 күн бұрын
Also - I think a way to maximize your potential max score would be to organize your words based on the position of the last letter of the previous word so that the move doesn’t need to be across the screen to start the next word, obviously this only works for a certain period of time depending upon the letters you get and the words you can make, but it would be a great way to boost through the majority of your dictionary really fast I think.
@paulmeynell8866
@paulmeynell8866 Ай бұрын
That was really cool , well impressed
@aceramey8245
@aceramey8245 Ай бұрын
I just bought that same printer a week ago, it's so cool :)
@ilaik
@ilaik Ай бұрын
I had the same problem with tesseract (you need to configure it very accurately), instead I used EasyOCR (also python). It works really well and lets you train your own recognizer if needed (I'd just crop line by line and recognize them)
@endgame4883
@endgame4883 17 күн бұрын
one simple tip that could marginally improve scores, you can make the printer take a shorter path by making it go to the edges of the squares instead of the middle
@Vojtas35
@Vojtas35 Ай бұрын
I rememeber doing sort of the same thing couple years ago minus using the 3D printer to physically insert the words. My solution was using messenger variant of this app in regular browser on PC and writing a Python program that used selenium to control and extract stuff from browser and emulated mouse on top of it which iirc was significantly faster. Too bad my way of finding valid words was jank af compared to yours so it could never find the really juicy long ones, but it still absolutely smoked my wife at the game.
@fabcstlls
@fabcstlls Ай бұрын
If someone beat me that HARD in WordHunt I'll get traumatized
@Grazfather
@Grazfather Ай бұрын
Funny, an interview question I used to ask many candidates is 'boggle solver' where I get them to spit out a list of possible words. The ideal solution of course uses the trie and DFS. Maybe I should get them to output gcode too 😂
@BKBinary
@BKBinary Ай бұрын
Wish you interviewed me so I could nail that problem lol. Still haven't even landed my first interview with this market though
@Grazfather
@Grazfather 29 күн бұрын
@@BKBinary Ugh, that's tough. Keeping with projects like this and you'll surely distinguish yourself above the rest.
@johngriffith744
@johngriffith744 Ай бұрын
And Skynet was born 😊 Fascinating video
@zdrux
@zdrux Ай бұрын
Came for the idea Stayed for the prolapse and turdions
@StephanBuchin
@StephanBuchin Ай бұрын
Great job. Maybe use a hard tip touch stylus and a spring to get better contact and go faster.
@tomodovodoo641
@tomodovodoo641 Ай бұрын
There are many open source ocr implementations of single font detection of letters, or you can train one yourself. I can help if you need a custom neural net, but I think there's more than enough online to get you started with :D
@tomodovodoo641
@tomodovodoo641 Ай бұрын
Of course, since it's the same font every time, you can use a hardcoded solution by using just using the nearest coordinates to a general shape, which should only take a few compares, and is faster than an ML solution.
@johanvink2337
@johanvink2337 Ай бұрын
random idea run the solved game list of words through a tie algorithm to get a list of words based on last letter of the first word and the first letter of the next. so if for example the first word is word and the second is droves it is preferred and the longest sequence gets put in first and then remove the already solved words from the list and repeat until you only have single words?
@Progaros
@Progaros Ай бұрын
improvement: sort withing each length group so that the words start with the same position* as the previous one ended * not necessarily letter, because letters can be duplicated example with numbers: 123456, 654, 432
@ralphgifford8652
@ralphgifford8652 Ай бұрын
You know, if your goal is to solve all possible words, you probably should program it to solve words not in point order priority, not in alphabetical priority, but where the last letter of one word is the first of the next one. So, after solving for piano, the next word could be opinion, followed by nap, etc. This decreases the transit time between words. What little I know about sorting algorithms says this could be really hard, but it would definitely be faster.
@TheAechBomb
@TheAechBomb Ай бұрын
you'd just need to order the final list of paths such that as many connect as possible; it'll never be perfect (travelling salesman problem and disconnected paths), but it'd be slightly faster
@DominoKiddoo
@DominoKiddoo Ай бұрын
THIS IS SO COOL! Future project idea: use the printer to type things on a keyboard, a wireless one for example and make it speedrun wordle.
@grantshardelow1522
@grantshardelow1522 Ай бұрын
Some slicer programs have print time estimations. You could try to calculate out the print time to exactly the game length time so that the stylus lifts once the time has run out.
@SytanOfficial
@SytanOfficial 19 күн бұрын
You could also increase the accel and max speed of the printer and raise the stylus a little higher (for less friction) and you should be able to go at least 2x as fast. These little printers are super robust and could likely go extremely fast You could also optimize the words to have as little travel between them as possible, though that might trade off max points for speed of completion, so IDK
@azim0ff
@azim0ff Ай бұрын
You can optimize the print by sorting the words in a way where the next word starts at the location where previous word ended
@laurent4533
@laurent4533 Ай бұрын
How do you not have like a million subs man
@BKBinary
@BKBinary Ай бұрын
hopefully soon :) thanks for the support
@skylerockspecial
@skylerockspecial Ай бұрын
You could try to make the first letter of the next word match whatever letter was right next to the last letter of the previous word in the direction the printer was traveling in to reduce travel time between words.
@ft4jemc
@ft4jemc Ай бұрын
Since you already have the list created, you could add another sort where it optimizes the list based on closeness of words. Basically prioritize the words by how close they are when drawn.
@fluffycritter
@fluffycritter Ай бұрын
A trie isn't the most time-efficient way to do this. A sorted list of words, with a prefix search done via binary search, tends to be faster, at least in C++, and the performance characteristics at play make it seem that in Python the time savings would be even better. And since you can just store the wordlist pre-sorted, the loading phase means just loading it into memory. In Python you can implement a binary search using 'bisect' and its default behavior will be a prefix search.
@hi-its-me22
@hi-its-me22 Ай бұрын
Another improvement idea… watch the screen for the countdown timer or the end screen. And have the stylus lift / home when the game is done.
@bjornjurgens3499
@bjornjurgens3499 Ай бұрын
instead of moving in angles, you could improve the path a little. Rounded corners would increase the top-speed and precision for the print head and reduce slippage for the stylus. also you could control the printer with a raspberry pi and octoprint. The it can send the g-code to the printer via usb and safe time during the startup. And since octoprint already has a web-cam interface, it should even be possible to implement the entire thing as a octo-print plugin. (I guess the hardest part would be to reliably extract the text from the webcam)
@BKBinary
@BKBinary Ай бұрын
I was looking into octoprint but I'm not sure if it's compatible with the mini. It doesn't have any USB ports on it but it does have 2 ports I'm not familiar with. If you have an extra info on this I'd love to know as I couldn't find too much about it online.
@bjornjurgens3499
@bjornjurgens3499 25 күн бұрын
​@@BKBinary a little tangent: the developer of the open-source firmware for my robot-vacuum constructed a custom adapter, that lets you connect a usb.cable directly to the mainboard, which can then be used to flash the new firmware to the vacuum. He even offers to send the adapter to users of his firmware, so people can install it to they vacuum. The usb-connection then speaks to the vacuum via ADB and fastboot (like an android phone) What I am getting at; It could be possible to make an adapter for the debug-ports on year printer, to create a direct connection. maybe you could reach out to some devs who already did similar things. (in my experience open source people are very helpfull, when you come to them with thoughtful questions) But if you want to go that route, it would probably be simpler to buy a cheap printer that already has an usb-port and octoprint-support.
@dawica
@dawica 9 күн бұрын
IDK how hard this would be for you, but you might want to have some kind of image recognition to detect whether a word was accepted by the game. It would help prune words from the scrabble list that aren't in the game's dictionary. It would need some amount of slop, though, to account for words which may have just been misinputed by the printer
@malou13337
@malou13337 19 сағат бұрын
u can also try to add checking for word length and word score so first of all algorithm finds these words to get best score and after that other shorty words
@MiDnYTe25
@MiDnYTe25 Ай бұрын
Getting a Bambulab printer as your first is pretty sick, you'll not be disappointed in the printer. The closed source thing kinda sucks, but their value proposition is kinda unmatched rn.
@Beateau
@Beateau Ай бұрын
You could probably run close to double those speeds and still be accurate. You got this easy.
@Retroplanegeek
@Retroplanegeek Ай бұрын
1 question tho why? All seriousness tho this is crazy impressive and cool great job subscribed
Why the Ocean Looks So Fake on Google Maps
8:39
Half as Interesting
Рет қаралды 308 М.
VENOM: THE LAST DANCE - Official Trailer (HD)
3:15
Sony Pictures Entertainment
Рет қаралды 14 МЛН
ДЕНЬ РОЖДЕНИЯ БАБУШКИ #shorts
00:19
Паша Осадчий
Рет қаралды 6 МЛН
Storing Files in the Walmart Chip Aisle
5:49
BK Binary
Рет қаралды 296 М.
Building a Mini Vegas-Sphere
7:16
Carl Bugeja
Рет қаралды 968 М.
树莓派5的五个有趣细节
8:52
Zihao Zhang
Рет қаралды 10 М.
How to Convince Your Parents to Buy a PC
0:58
Zach's Tech Turf
Рет қаралды 3,7 МЛН
Cheapest Bullet Time with a 9 Dollar Camera
6:59
3DSage
Рет қаралды 261 М.
How Communists Made Unbreakable Glass
15:02
fern
Рет қаралды 1,8 МЛН
I Over-Engineered this Machine, cause Manufacturers Didn't
1:23:24
Marius Hornberger
Рет қаралды 1,1 МЛН