Programming a 3D Printer to DESTROY Mobile Games

  Рет қаралды 207,769

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

Пікірлер: 565
@KolMan2000
@KolMan2000 3 ай бұрын
Now have it destroy people with perfectly calculated shots in 8-Ball
@RadioactiveBluePlatypus
@RadioactiveBluePlatypus 3 ай бұрын
The channel "stuff made here" did this in real life.
@benm12310
@benm12310 3 ай бұрын
I wanna see it master the pong game. I swear there’s a randomizer as I can never get accurate shots lol
@freman
@freman 3 ай бұрын
I'm almost convinced someone already has lol, I've seen people make incredible shots with no aim time
@bedwarsfan69
@bedwarsfan69 3 ай бұрын
Yes
@leumasme
@leumasme 3 ай бұрын
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 3 ай бұрын
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 3 ай бұрын
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 3 ай бұрын
won't it also increase the sorting time by a lot?
@BelviGER
@BelviGER 3 ай бұрын
​@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 3 ай бұрын
Another optimization - use G0 rapids between words :)
@ladyravendale1
@ladyravendale1 3 ай бұрын
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 3 ай бұрын
Wouldnt 5 pixels give you 32?
@ladyravendale1
@ladyravendale1 3 ай бұрын
@@taxatogaming yep, I can’t count
@experimenteeer
@experimenteeer 3 ай бұрын
OpenCV matchTemplate?
@dudedotmichael
@dudedotmichael 3 ай бұрын
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 2 ай бұрын
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
@NoorquackerInd
@NoorquackerInd 3 ай бұрын
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 3 ай бұрын
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.
@superslimanoniem4712
@superslimanoniem4712 Ай бұрын
​@@meateawbrass is never going to scratch glass. A kot of pressure on that sharp point might end up cracking something though...
@Zyghqwyv
@Zyghqwyv Ай бұрын
@@superslimanoniem4712 print nozzles on Bambus are steel or hardened steel
@Zyghqwyv
@Zyghqwyv Ай бұрын
The steppers will skip before damage occurs
@MaebhsUrbanity
@MaebhsUrbanity 3 ай бұрын
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 3 ай бұрын
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 3 ай бұрын
Agreed. Something to think about cause those mofos are not cheap.
@4nto418
@4nto418 3 ай бұрын
Can you not even start the print remotely ?
@Jojo43O9
@Jojo43O9 3 ай бұрын
@@4nto418 with the more expensive printers you can
@illcomeupwithanamelatter3632
@illcomeupwithanamelatter3632 3 ай бұрын
Idk about sending over USB. But you can use a micro SD card to transfer gcode
@80lab38
@80lab38 3 ай бұрын
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.
@Jacobadia
@Jacobadia 3 ай бұрын
“What’s printer?” Your friends are funny bro! “
@3v1Bunny
@3v1Bunny 3 ай бұрын
Bambu Lab A1
@InfiniteCoder01
@InfiniteCoder01 3 ай бұрын
*A1 mini
@SullySadface
@SullySadface 3 ай бұрын
He wasn't asking what the printer was he was quoting the video -_-
@Jacobadia
@Jacobadia 3 ай бұрын
@@SullySadface haha yea. I’m glad someone understood
@Klannahar
@Klannahar 3 ай бұрын
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.
@kajatoth9151
@kajatoth9151 3 ай бұрын
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 3 ай бұрын
underrated comment
@kalebwilkes4705
@kalebwilkes4705 3 ай бұрын
A less squishy stylus would probably recognize better at higher speeds
@JFed-9
@JFed-9 2 ай бұрын
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
@taylor5248
@taylor5248 3 ай бұрын
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)
@DRedGuia
@DRedGuia 25 күн бұрын
Lol, its really easier to use a printer board, than trying to make something yourself
@Gilmixz
@Gilmixz 3 ай бұрын
Wait until you get an ad and accidentally buy something 💀
@vlc-cosplayer
@vlc-cosplayer 3 ай бұрын
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 3 ай бұрын
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 3 ай бұрын
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 3 ай бұрын
​@@joe-skeenmaking it black and white would make things much easier and computationally faster though
@IbrahimDelil
@IbrahimDelil 3 ай бұрын
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 3 ай бұрын
The letters should be exactly the same bitmap you can easily check for.
@otter8899
@otter8899 3 ай бұрын
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 3 ай бұрын
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 3 ай бұрын
It could also probably be sped up by prioritizing words that start with the last letter of the previous word
@K0nomi
@K0nomi 3 ай бұрын
​@@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
@im-nassinger
@im-nassinger 3 ай бұрын
@@K0nomi yess
@mentallydeficient8088
@mentallydeficient8088 3 ай бұрын
@@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
@JorbIsMe
@JorbIsMe 3 ай бұрын
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 💯
@N0p3Mark
@N0p3Mark 3 ай бұрын
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 3 ай бұрын
Thanks for the kind words!
@maxv08
@maxv08 Ай бұрын
this is amazing! how it doesn’t have 1mil+ views I don’t know. as someone who knows nothing about coding it’s mind-blowing to me that you can do this. props 🙌🏻
@jaygriffin6963
@jaygriffin6963 3 ай бұрын
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
@MQWalkman
@MQWalkman 3 ай бұрын
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
@suleymantolgaacar5089
@suleymantolgaacar5089 3 ай бұрын
Cool project, and the editing was great. Keep them coming man :)
@Xeoncross
@Xeoncross 3 ай бұрын
Great video, you walked through the whole process which was fantastic. Short and concise. I'll be checking out your other videos.
@WilsonBot
@WilsonBot 3 ай бұрын
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 3 ай бұрын
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. :)
@thewolfin
@thewolfin 2 ай бұрын
Thank you for the great video and props for taking the time to put in music credits
@kaydabalab
@kaydabalab 2 ай бұрын
dude! this is amazing! id love to see another video of the updated ideas you have
@ArchistYT
@ArchistYT 2 ай бұрын
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
@theorangebaron1595
@theorangebaron1595 3 ай бұрын
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.
@SlowCuberThirstix
@SlowCuberThirstix 3 ай бұрын
Really nice video, that I stumbled randomly on. Good luck on your KZbin adventure :)
@teamllr3137
@teamllr3137 3 ай бұрын
there are libraries to inject instruction to the printer via MQTT else, really nice Project !
@4nto418
@4nto418 3 ай бұрын
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 3 ай бұрын
Yep. OpenCV matchTemplate is the algo to use for this.
@Ishsa
@Ishsa 3 ай бұрын
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.
@braddofner
@braddofner 3 ай бұрын
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 3 ай бұрын
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
@ExtemporaneousnessOne
@ExtemporaneousnessOne 3 ай бұрын
Yo this wild seriously impressive :O I didn't even realize you could use a 3d printer like that
@user-wo7rl4nm7w
@user-wo7rl4nm7w 2 ай бұрын
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
@maxb.5905
@maxb.5905 3 ай бұрын
dude thats such a cool project, how do you not have more views/subs?
@hulio3994
@hulio3994 3 ай бұрын
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.
@danielsalyi7194
@danielsalyi7194 3 ай бұрын
Great project, very interesting hiccups along the way, I thought solving the puzzle was gonna be the hardest
@critical_always
@critical_always 3 ай бұрын
The lesson I hope you learned from this. Don't listen to KZbin 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.
@Xealous
@Xealous 3 ай бұрын
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 3 ай бұрын
I was thinking of doing this same thing! Thanks for letting me know it works!
@Ernzt8
@Ernzt8 3 ай бұрын
What are friends for if you can't totally destroy them 😆 Great project!
@mylittleparody2277
@mylittleparody2277 3 ай бұрын
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!
@DanteEhome
@DanteEhome 2 ай бұрын
Honestly, it's the coolest thing I have seen in a while.
@larryhannon49
@larryhannon49 3 ай бұрын
This has to be the best video on this platform damn
@brittonstudios
@brittonstudios 3 ай бұрын
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 3 ай бұрын
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.
@alexismandelias
@alexismandelias 3 ай бұрын
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 3 ай бұрын
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 3 ай бұрын
Looking for words with a first letter physically close to the last letter of the previous word could help
@rjdverbeek
@rjdverbeek 3 ай бұрын
Optimizing for words with less corners. Maybe also having less sharp corner turns will help with keeping up the speed.
@AsiAzzy
@AsiAzzy 3 ай бұрын
@@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 3 ай бұрын
​@@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.
@xanderplayz3446
@xanderplayz3446 3 ай бұрын
Nice work, Brendan! Just a quick tip: Maybe import the other files instead of calling them via subprocess.
@aze4308
@aze4308 3 ай бұрын
this is really cool!
@natotj333
@natotj333 3 ай бұрын
Reeeeealy nice Idea and implementation!
@Rolandfart
@Rolandfart 3 ай бұрын
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 3 ай бұрын
You still need to raise the pen in order to stop one word and start the next one
@RainShinotsu
@RainShinotsu 3 ай бұрын
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…
@lucasperies6952
@lucasperies6952 3 ай бұрын
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 3 ай бұрын
That's so crazy haha I didn't expect anyone from reddit finding this video
@lucasperies6952
@lucasperies6952 3 ай бұрын
@@BKBinary are you sweaty grun.... ?
@shivaargula4735
@shivaargula4735 3 ай бұрын
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.
@Krcma96
@Krcma96 3 ай бұрын
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 😄
@DominoKiddoo
@DominoKiddoo 3 ай бұрын
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.
@benromarowski9235
@benromarowski9235 3 ай бұрын
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.
@magnuzzs6186
@magnuzzs6186 2 ай бұрын
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!
@paulmeynell8866
@paulmeynell8866 3 ай бұрын
That was really cool , well impressed
@markokorevec3198
@markokorevec3198 3 ай бұрын
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.
@danny3793
@danny3793 2 ай бұрын
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.
@frollard
@frollard 3 ай бұрын
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.
@iamsick5204
@iamsick5204 3 ай бұрын
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!
@whoseuler
@whoseuler 2 ай бұрын
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
@Okuhno
@Okuhno 3 ай бұрын
You should try upping acceleration >:) Also if you ever want a better 3d printer consider something running klipper (voron, annex k3, custom built) :P
@joe-skeen
@joe-skeen 3 ай бұрын
For V2: * Ditch Bamboo Labs if you can't find a way to control over USB (there are plenty of cheap printers that work great with Octoprint or Klippr) * install Webcam to capture image, hooked up to something like Raspberry Pi * improve ML letter recognition (see my other comment) * control everything in a single process * profit
@Braxel_
@Braxel_ 3 ай бұрын
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.
@ThePrintHouse
@ThePrintHouse 3 ай бұрын
Im confused how the 1 single gcode file can process more than a single word on the screen. After each word is selected new letters "fall into place" and a new gcode file would need to be created, correct??
@ninjaman570
@ninjaman570 3 ай бұрын
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
@AyaanThe0ne
@AyaanThe0ne 3 ай бұрын
I cant tell you how much ive loved this video. Amazing 💪
@Cr480mx
@Cr480mx 3 ай бұрын
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.
@MrMausao
@MrMausao 3 ай бұрын
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 3 ай бұрын
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.
@YourComputerExpert
@YourComputerExpert 3 ай бұрын
"Boring funeral? WordHunt." lmao subbed
@ikocheratcr
@ikocheratcr 3 ай бұрын
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.
@weirdsciencetv4999
@weirdsciencetv4999 Ай бұрын
Turdions, a once proud race of aliens, who turned back their invasion upon seeing the ubiquity of toilets on earth. Nice project! I subscribed!
@zdrux
@zdrux 3 ай бұрын
Came for the idea Stayed for the prolapse and turdions
@AsiAzzy
@AsiAzzy 3 ай бұрын
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.
@menty6666
@menty6666 3 ай бұрын
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 3 ай бұрын
Hey thanks a lot for the suggestions! Will definitely use your tips in improvement. Thanks for taking the time to leave this comment!
@satibel
@satibel Ай бұрын
in my experience stock tesseract works better with handwriting than fonts if you want better results you need to train it on the fonts you'll use specifically. if you have a consistent font that's monospace (it's kinda the case here as you have a single letter at a defined position), the easiest way is to do a sum of xor, basically for each pixel, you xor with the pattern, then you add the result to the current sum, then save the total sum to the corresponding pattern in the array. then you just get the smallest value, and that's gonna be your match. if you want more performance you can do most of the heavy lifting on gpu (though if you go to a 16x16 pattern it's actually fairly fast, that's "only" 100k operations for the whole 4x4 grid , which isn't a lot for a modern cpu, and it's heavily parallelizable.) you can sometimes get even faster results with non same width fonts if you take the width into account. I did a batch of ocr like that on digital reciepts, it was a bit more complex as I had an extra pass with the same system except I also had a mask on the whole picture, which basically allowed me to pattern match with different types, and find what font it used and where the text I was looking for was. and since it wasn't monospace sometimes I had to add an edge finding pass to find the borders of the letter. implementation details on cpu: for xoring, the fastest way that gives decent results is to do the xor is in monochrome 16x16, because you can use the AVX2 VPXOR instruction that xors 2 256 bit arrays in one instruction. that means you can have a single instruction per comparison. to count the delta, you can then simply unpack it in 4 64b ints (qword unpack) and use POPCNT which gives the number of nonzero bits.
@hi-its-me22
@hi-its-me22 3 ай бұрын
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.
@FunnyIvri
@FunnyIvri 3 ай бұрын
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
@MiDnYTe25
@MiDnYTe25 3 ай бұрын
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.
@JamsterJules
@JamsterJules 3 ай бұрын
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 😂
@NakedSageAstrology
@NakedSageAstrology 3 ай бұрын
Super cool idea!
@alixcozmo
@alixcozmo 2 ай бұрын
with jailbreaking you could use veency, also, very cool!
@johngriffith744
@johngriffith744 3 ай бұрын
And Skynet was born 😊 Fascinating video
@laurent4533
@laurent4533 3 ай бұрын
How do you not have like a million subs man
@BKBinary
@BKBinary 3 ай бұрын
hopefully soon :) thanks for the support
@gajustempus
@gajustempus 3 ай бұрын
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.
@dawica
@dawica 2 ай бұрын
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
@surburous1221
@surburous1221 2 ай бұрын
super cool! just one question about yourself. what did you do to learn to code? did you do your own schooling or go to a local uni? asking because im a week into my own coding journey and im barely learning python and stuff and im just curious.
@ft4jemc
@ft4jemc 3 ай бұрын
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.
@johanvink2337
@johanvink2337 3 ай бұрын
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?
@azim0ff
@azim0ff 3 ай бұрын
You can optimize the print by sorting the words in a way where the next word starts at the location where previous word ended
@grantshardelow1522
@grantshardelow1522 3 ай бұрын
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.
@airpeguiV2
@airpeguiV2 3 ай бұрын
Underrated video!
@StephanBuchin
@StephanBuchin 3 ай бұрын
Great job. Maybe use a hard tip touch stylus and a spring to get better contact and go faster.
@Arctic_Gt_1
@Arctic_Gt_1 Ай бұрын
The Bambu lab A1 mini is nice
@aceramey8245
@aceramey8245 3 ай бұрын
I just bought that same printer a week ago, it's so cool :)
@fabcstlls
@fabcstlls 3 ай бұрын
If someone beat me that HARD in WordHunt I'll get traumatized
@Beateau
@Beateau 3 ай бұрын
You could probably run close to double those speeds and still be accurate. You got this easy.
@skylerockspecial
@skylerockspecial 3 ай бұрын
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.
@fluffycritter
@fluffycritter 3 ай бұрын
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.
@ztech-consulting
@ztech-consulting 3 ай бұрын
Idea to optimize the solver. Once it solves for the words, it should solve for the most optimal path(s) to solve with the least amount of pen travel. That would greatly increase the solve time but....I'm sure you can do it ;)
I tried Injection Molding using a 3D Printer!
18:27
CNC Kitchen
Рет қаралды 481 М.
I Made an AI with just Redstone!
17:23
mattbatwings
Рет қаралды 858 М.
Smart Sigma Kid #funny #sigma #comedy
00:40
CRAZY GREAPA
Рет қаралды 32 МЛН
Survive 100 Days In Nuclear Bunker, Win $500,000
32:21
MrBeast
Рет қаралды 76 МЛН
WORLD'S SHORTEST WOMAN
00:58
Stokes Twins
Рет қаралды 121 МЛН
How I made a 3D Level in a 2D Game
24:28
Spu7Nix
Рет қаралды 3,8 МЛН
Full colour first layers on your 3D prints - Sublimation guide part 1
18:08
I spent all summer building THIS! (relay computer)
22:34
WillsBuilds
Рет қаралды 4,1 М.
High precision speed reducer using rope
20:19
Aaed Musa
Рет қаралды 1,5 МЛН
We Built a Camera with an Etch-a-Sketch
30:53
Every Flavor of Robot
Рет қаралды 619 М.
Making a d10 spinner
15:59
Attoparsec
Рет қаралды 212 М.
The $5 Mid-2000s Mini PC - Thrift Store Finds
32:43
Michael MJD
Рет қаралды 26 М.
I Made a CRT Game Boy
20:44
James Channel
Рет қаралды 155 М.
I Made Real-life Airsoft AIM-ASSIST: Aimbot V3
25:19
Excessive Overkill
Рет қаралды 1,4 МЛН
Smart Sigma Kid #funny #sigma #comedy
00:40
CRAZY GREAPA
Рет қаралды 32 МЛН