What is a Prioritising Mechanical Multiplexer?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
typically in robotics we have a control system which moves motorized joints to specific positions at specific times sometimes these are fixed positions and timings and sometimes they're dynamic based on the robot's balance it's tilt and roll or some other sensor inputs however good motors can be expensive so a while ago during project ultron i made a mechanical multiplexer this used one drive motor which is positioned by a servo to drive multiple outputs i eventually scrapped this idea in favor of just some higher power servos for the three axes i required but it's something i've been thinking about ever since so today i'm going to build an updated version of this arduino control mechanism and ask for suggestions as to what sort of robot could use it if you think you have a good idea then check out the rest of the video and put your idea in the comments the majority of the parts for this project are 3d printed i've got quite a lot of gears in the project including some worm gears so these are printed in a 0.15 millimeter layer height with a half millimeter nozzle and that seems to be coming out pretty well even though there's quite sharp overhangs i am using 100 fan for the majority of the print but i'm pretty happy with the print quality i use the gear generator to generate these in fusion 360 and this is the gear that runs on the worm and you can see the teeth are slightly slanted as they should be thanks to 3d fuel for the filament for this project and lots of other projects so check out my channel for more 3d printed projects and check out 3dfuel.com i'm using a pretty basic geared motor to drive this project as the main drive motor this is a 100 rpm 12 volt motor with an integrated gear head and you can see the output is slightly off center from the middle of the motor and what i'm building here is really a proof of concept or a demo for the idea so it could be a much more expensive motor like one of the brushless motors i use for my cycloidal drive and harmonic drive reductions which i built in the last few weeks and i've used in many other robots including robot dogs that motor is mounted onto a 3d printed mount which is actually a shuttle which will slide up and down and i've attached a 3d printed gear to it that motor on its mount fits into the base of the mechanism and that allows it to slide up and down pretty freely there's not a proper carriage here it's just 3d printed parts and i've made a groove so that it can be constrained and still slide up and down i'm going to use a lead screw with a nut on to drive it and this is a specific lead screw with about a four millimeter lead which runs really freely that's driven by another motor and that motor has an encoder on so that we can measure the position and position it accurately i'm just using one of these cnc couplers to keep everything aligned just putting some power on that motor and it seems to run absolutely fine and i have constrained the other end of the lead screw with an eight millimeter internal diameter bearing similar to escape bearing in another 3d print typically you wouldn't do that with a 3d printer but everything looks fine in this mechanism so it's time to put the rest of the assembly together which involves two sides and these two sides have multiple places to hold multiple outputs and the whole aim of this mechanism is to use one motor being driven up and down to control the multiple outputs and apply some logic to it which will code into the arduino to prioritize how the motor drives the outputs based on the inputs there are multiple pieces which slot together and those are just screwed together with self-tapping screws and i will publish the cad for this mechanism as well as the code which is entirely open source and you can find that in the link in the description to this video so now it's time to insert the worm gears i printed each one has a spur gear attached and that's going to mesh with the main gear on the motor all of these fit on one piece of four millimeter steel bar so they run nice and smoothly i made the end of the spur gears quite pointy so hopefully they mesh better than if they didn't have those pointy pieces on we could have a better meshing system like some sort of synchromesh but that'll probably do for now so let's try the gears out i'm going to manually move the lead screw for now to engage and disengage the drive gear and see how well it meshes with the other gears as it passes by so that seems to work perfectly well we can try that a few more times but there's no grinding and nothing seems to get called but how about with the main motor switched off at some point this motor will slide up and down switched off before it selects which output to control and the motor is turned on to control it and turn it in an appropriate direction but that seems to be working okay next is time for the main output gears which are those slanted gears we printed at the beginning and those of course run on the worms and there are three of them which run on the three worm gears so we can select three outputs i've super glued those to six millimeter steel shaft as well as some spacers to keep them in place so those are on pretty tight and the six millimeter steel will be our main output i've also fitted some knobs on the end with some pointers on so we can see which direction they're pointing in and those turn as the worm gears turn when they're selected by the main drive motor as it moves up and down so hopefully all of those run pretty well or at least well enough for the demo and each of those output shafts is attached to a potentiometer so we can measure its position and position the output turning it in each direction based on the demand input position so far this is a pretty crude mechanical system it's pretty easy to see how it works but the main thing is we've got one drive motor and we've got three outputs and of course we could make it's really long so we could have five or six or ten outputs and we could drive that from one main drive motor and that drive motor could be really expensive like hundreds of pounds it could be a cycloidal drive or a harmonic gearbox or something else driving all of these outputs so what we need to do now though is make sure we can actually control it and somehow prioritize which output it is that it switches so basically we're going to attach these three parts as inputs that we can adjust and then we're going to write some code running on an arduino that's going to read the inputs look at the current position of the outputs and decide what to do next now it's time for a quick ad from the video's sponsor which is thangs fangs is an online catalog of 3d models with over 1.6 million index models in the database fangs finds the exact item you're looking for as well as normal text-based search thangs is powered by a geometric search function this means that you can find 3d models by uploading a model and finding similar models so if you have an incomplete model you can upload it to fangs to find similar completed models to download for your project you can also collaborate on thangs by creating a private team of fangs users to share ideas iterate on designs and keep track of model versions and revisions fangs allows you to create a portfolio of model files or fangs that you love you can see all of the details of the model with 3d preview options without using any cad software at all fangs is a community you can co-create with other fangs members follow the work of other fangs users and comment or like on their models fangs now support asm assembly files which makes uploading and organizing quick exploring models and each of their components is easier than ever before there's an explode function so you can inspect each part in detail another useful feature is the new hover and highlight which makes part identification and selection possible find hidden parts in the assembly by hovering over the part name in the assembly list you can also download augmented reality files for many of the items on thangs use an ar app to see the model in the space before it's printed find fangs share thangs build things together [Music] i've mounted my three potentiometers which have knobs on and those are going to be the input demand positions that we request from the outputs the outputs are now attached to those pots yes i've just used blue tape and zip ties but that will do for the purposes of this demo the whole thing is controlled by an arduino mega that reads both sets of analog pots and decides what to do with the motor moving up and down to control the outputs yes i'm using an l298 motor driver which is a terrible thing and that one's seen better days it's probably been stripped out of another project but it controls two amps per channel and there's two channels to control the two motors so it's more than adequate to test this mechanism since there's no load on the output so first of all i've programmed the arduino to look at the two pots on each channel and find out where the biggest difference is so that's the biggest difference between where the output is and where i turn the pot to it then moves the shuttle to that position i'm reading the encoder position on the main linear drive motor to position that shuttle and that means i can also work out when it's got there so i'm specifying a demand position for it and when the encoder matches within a tolerance it tells me it's arrived there so that part of the system seems to be working pretty well so now i've built in the logic to actually turn the outputs based on the input position so it's actually going to turn the motor in either direction to try and match that output knob and match the position of the input demand position and it's going to do that by prioritizing whichever one has the biggest difference so if there's a bigger error on the first one on the left it will do that first and then it will go for the smaller ones the problem is though if i turn multiple knobs at the same time as it goes and hits the biggest one trying to reduce the error barra then becomes smaller than one of the others so it immediately goes to do the next biggest one and the next biggest one and so it cycles between all of them reducing them a little bit at a time of course that makes the next one bigger and the whole thing goes round and round until it solved all of them so the next thing i've coded in is to make sure it finishes the current output before moving on to the next one so essentially until the motor's still a flag is set which doesn't allow it to check for the next biggest error so now it still solves the outputs based on the biggest error from the input but it won't move on to the next one until it's totally finished so now if i move multiple knobs at the same time it will definitely go for the biggest one then solve it completely then move to the next biggest one solve that completely and finally move to the next one and if i keep moving the knobs it'll carry on forever just trying to solve them in order of whichever one's biggest are the next points the only problem i've got now is that if data is constantly changing on one of the inputs so if i keep wiggling that knob on the left hand side but there's a bigger error on one of the others then it goes off and forgets what it's doing with the first one solves the bigger one and then comes back to solve the other one even if the error is smaller so what we really need is a system to make sure that it doesn't go and prioritize another input or output if the data is still changing but that is easily solved by running a slightly slower loop at only every 100 milliseconds so 10 times a second checking the data against the last data on that loop so bookmarking the data and checking it again on the next loop to see if it's any different and only going and resetting the flag to look for the next biggest error if the data hasn't changed and that means if i keep wiggling one of the knobs but there's a bigger error somewhere else then it doesn't go and solve the bigger one until i finished wiggling the other knob and so the data hasn't changed for more than 100 milliseconds and then it goes off and prioritizes whichever one is biggest and the next biggest and so on until it solved them all of course the advantages here we can have one big expensive or heavy motor we can control multiple outputs however we like and the logic of course doesn't have to be that we solve the biggest one first or we don't move on until another one stop moving or whatever it is we could assign that logic however we like we could even assign the priority based on other sensor data so perhaps if the robot is tipping and we're measuring it with an inertial measurement unit that will prioritize the outputs at the bottom and if it tips that way it prioritizes the outputs here and of course these could all be cable controlled to multiple joints in multiple limbs and we could have multiple modules or multiple motors going up and down so we could have perhaps two or three motors controlling 10 outputs but we only have the mass or the cost of three expensive accurate powerful motors or whatever it is we have to control it so if you've got an idea for using this concept this type of mechanism doesn't have to look exactly like this but prioritizing outputs with fewer motors then put that in the comments below and if there's a really good one then i might build it and actually try and build the robot but that's all for this project but i'm really interested in your input i'm going to publish the cad and code if you want to see how it works as well and that's open source so check out the github link in the description to this video and all of that is totally open source you can do what you like with it so if you'd like to support me through patreon or youtube channel membership those links are in the description below alright that's all for now [Music] you
Info
Channel: James Bruton
Views: 231,305
Rating: undefined out of 5
Keywords: 3dprinted gears, 3dprinting a gearbox, mechanical multiplexer, Prioritising Mechanical Multiplexer, 3d printed mechanical multiplexer, how to make a 3D printed gearbox, 3d printed worm gear drive, 3d printing and testing gears, 3d printed reducer, 3d printed gear shifting, gear shifting assembly, how to make moving gears mesh well
Id: WwCmzwSE98o
Channel Id: undefined
Length: 15min 23sec (923 seconds)
Published: Mon Apr 26 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.