Recent Posts

Pages: 1 2 3 ... 10
1
Mechanics and Construction / Re: My Advanced Realistic Humanoid Robot Project
« Last post by artbyrobot1 on August 03, 2024, 03:19:48 PM »
So the pulleys were working fine except occasionally the thread would wedge between the plastic discs and the bearing causing the system to jam. My solution originally was to cut out finger nail clipping shaped pieces of thin clear plastic to glue onto the inner face of the discs that contain the bearing of the pulley which would act as standoffs preventing the pulley string from sliding between the bearing and the outer discs and jamming. It turned out this was borderline impossible for me as these tiny pieces of plastic were so tiny that even my precision tweezers were barely able to hold them and they would go flying in random directions and get lost - being clear and tiny they were near impossible to find as well. So this led me to taking a step back for a few weeks to work on other unrelated projects and take a break due to this impass/dead end. I came up with some ways to redo the pulleys but hated the idea of scrapping the ones I already made that needed improving. Well I have great news: I did find a way to salvage my existing pulleys that is reasonably doable and not nearly as hard though still tedious as can be. I am using Singer nylon clear monofilament thread and gluing down one end of that to the outer plastic disc of the pulley using superglue applied with the tip of a tiny sewing needle as my applicator and then letting that fully dry (can't use accelerant spray since it has to be very precisely applied and can't get on bearing but is being glued less than a millimeter away from bearing outer race). Then I lay the string along the crack formed between the bearing and the outer plastic disc which fills that crack and I apply glue here and there once every millimeter as I see need for it to secure the string along the entire crack while being careful not to get any on the metal bearing. I use an xacto knife blade to scrape any glue I get on the outer race of the bearing off and any I do get on the bearing I prevent from gluing the clear monofilament thread to the bearing by moving the bearing a couple turns while the glue is drying to keep it from gluing in place. I move the bearing using the tip of the xacto knife blade and I scrape any glue off as I see it on the shiny outer race of the bearing. I use about a 3" long piece of thread each time I do these gap filling passes and then trim off the excess from both sides once done. Attached is a photo with arrows indicating the gap filling clear nylon monofilament thread. I have since tested these pulleys that I fixed and no more jamming is occurring - it worked! Now I want to avoid doing this for every pulley and every crack on every pulley so for now I'm just doing it for known trouble cracks on certain pulleys that prove to jam up the system during testing. Once I can pass all testing without a jam for like 50 back and forth tests in a row, then I'll call this fix done.




Note: for future pulley making, to avoid this issue entirely, I plan to make the bearings outer race be grooved before I even make the pulley. This way the string passing over the outer race circumference of the pulley will not end up wedging between the outer disc and the pulley in the crack and jamming. The groove on the outer race of the pulley will keep the string passing along its outer race centralized in that grooved channel so it doesn't walk out and get jammed anywhere. To achieve adding a groove to the bearing outer race, I'm planning to lay the bearing flat on a piece of wax paper and then carefully applying epoxy to the crack between the paper and the pulley outer race filling that crack. Picture caulking a bathtub crack between bathtub and wall. Same concept. Then once that is done I flip the pulley and do the same for the other side. You then end up with a v grooved channel in the outer race of the pulley. The rest of the pulley assembly will continue as usual. Attached is a drawing of a pulley on a piece of wax paper with an epoxy bead applied filling the crack and forming one half of the intended v grooved channel on the outer race of the pulley.




Note: hitting that dead end with trying to fix the jamming issues with the pulleys and frustration with the pulley fix caused me to procrastinate on the robot build and temporarily call off my commitment to work on the robot every day even if just one small accomplishment per day. I still love that commitment and am now getting back to that now that I have come up with my solution and am moving forward again. It really is a great commitment to make sure I keep the project alive and actively in development. It is so easy to just not work on the robot once it is no longer part of my daily routine and the last thing I want is for months or years to slip by without me working on the robot much as has happened to me in the past so many times.
2
Electronics / Re: Control board for Pool Robot no longer working
« Last post by artbyrobot1 on July 18, 2024, 02:09:22 PM »
I think so.
3
Electronics / Control board for Pool Robot no longer working
« Last post by born2fly on July 10, 2024, 01:54:23 PM »
I'm new to the forum. I repair various electronic devices. Recently I received 2 non-working control boards,  built by 2 different manufacturers for pool robots. One board had 2 obvious faults that resulted from overloading. Those 2 burnt components were replaced to no avail. The other board had no obvious damage. Neither of the board's fuses blew.  Both do have a Microcontroller IC that I suspect might be at fault. Schematics are not available. I have spent days going over both of these boards trying to figure out where the fault is.  >:( 

Is it possible for an overload to corrupt the Microcontroller IC? Both customers have told me their 'pool supply guy' has numerous people in need of repair of these boards but after spending so much time trying to determine what failed I can't help but wonder if I am just wasting my time if it is a Microcontroller IC issue.
4
Software / Re: What is the cost for built robots
« Last post by artbyrobot1 on July 07, 2024, 03:12:43 PM »
assuming you are talking about beginner robot projects for learning, average cost is probably $50-70 as long as you buy on ebay or aliexpress and stay away from namebrand.  Like a genuine arduino is $20 or w/e but a generic arduino is like $3-6.
5
Mechanics and Construction / Re: My Advanced Realistic Humanoid Robot Project
« Last post by artbyrobot1 on July 07, 2024, 01:27:14 AM »
A colleague pointed out that the robot probably will need massive batteries.  I agree with this in part, but with some caveats.  Yes, to support the massive number of motors and the large bursts of energy required when most motors are firing all at once during rigorous athletic type activities, you would need massive batteries to supply all of this energy demand during peak periods.  You also want the batteries to have a decent overall runtime duration.  I intend for it to use fairly massive batteries for these reasons.  However, there is a common misconception that the batteries must be so big that the robot is able to run all day on a single charge and that if it only can run for say an hour, that means it will only be capable of working 1 hour then charging and totally idol and not working for an hour or two and then get back to work again which would cap its productivity massively.  People then conclude battery technology today rules out humanoids being particularly useful due to the lack of capacity.  This is a completely solved problem and indicates people's lack of thinking this through thoroughly.  The solution is simple:  I don't have to worry much about large capacity for long duration of runtime since my intention is to have it hot swap battery packs frequently and always have 5-10 battery packs charging so that it always will be able to swap a new pack in that is fully charged. This way it can have 24/7 uptime while not having to carry a very large battery pack to have a long runtime.  This is the same approach construction workers use with their cordless tools.  They have a ton of packs charging at all times and use batteries till they get low and just swap a new fully charged one in as needed.  They don't try to fit a entire days work into one giant battery.  They have a ton of small batteries charging at all times instead and just hot swap full ones in for low ones.  This should have been obvious to everyone as the perfect solution for humanoid robots too. 

Note:  in my design, he will have a significant battery pack in the abdomen which never swaps out and tops itself up from the hot swappable battery backpacks as needed.  This abdominal battery pack will enable it to swap in new hot swap battery backpacks since you need batteries running it while the hot swappable packs are being swapped.  The hot swappable packs will be worn as a backpack just like a school bookbag.  When available, the robot will optionally also be able to plug a AC power cord into the wall outlet to charge, although if it has multiple hot swappable batteries already charging by various available wall outlets then this would be redundant.  It is a good tool though in general for some situations. 

Note:  the backpack battery can be taken off and the robot will still have a very limited runtime just based on its abdominal battery pack.  It uses this limited time to swap in a new hot swappable battery pack as the primary reason for the abdominal pack, however, another good reason to have a permanent abdominal battery pack is so that it can do demonstrations with no battery backpack on.  A use case for this would be:  lets say it wants to do a flip or cartwheel and the battery backpack's added weight would be a hindrance for such a maneuver.  It could simply take the backpack off, do the flip or cartwheel, then after bowing for applause, it can put the backpack back on. 
6
Mechanics and Construction / Re: My Advanced Realistic Humanoid Robot Project
« Last post by artbyrobot1 on July 07, 2024, 01:23:59 AM »
A colleague of mine expressed concerns over how I will deal with the heat generated by the motors and other electronics.  He pointed out that all these motors are going to generate heat while running and the silicone skin will prevent that heat from escaping.  This was a great observation and one that must necessarily be addressed as it is a make or break problem that the entire success of the project hinges upon.  In fact, it is so important that I spent a great deal of time designing and planning multiple redundant cooling systems for the robot to absolutely ENSURE that heat does not end up being my greatest downfall of the whole project which could easily be the case if not handled properly.   To start, I have designed artificial lungs that will draw in cool outside air, expel that through tubing to every key area of the body, and vent tubing will take out the hot internal air this fresh intake air displaces so that the entire robot has great air circulation. The lungs are to look a bit like a small accordion or bellows for a fireplace ie they will have two flat hard plates and a soft gasket that joins the two hard plates and one of the plates will move away from the other plate to draw air in and then the two plates will be smashed back together for air expulsion.  A single motor can achieve this.  Here's a drawing of this:

This is a rough design of the accordion-like lungs I intend to make for the robot's internal air circulation and evaporative cooling and water cooling systems. This drawing mainly demonstrates the working principle of the way the lungs will open and close as well as valves for opening the inlet and outlet which have to open and close alternately for in-taking fresh air and then pushing that fresh air into the body. I recently realized they can just both be one way valves and don't even need to be motorized that way. The lungs bring the air into the body but never exhale air out of the body they only inhale air into themselves then exhale it into the body and vent exit tubes take care of allowing the hot air that is being displaced by the fresh new outside air to exit the body through the nostrils. The intake is also through the nostrils btw. This way the mouth does not need to open for it to breathe in and out.



This drawing demonstrates the idea of dividing up the air in the lungs into separate compartments for a more even distribution of the air when it draws it into the rest of the system to ensure the whole system gets the correct amount of air to each location. I am not sure if this is needed though as I think further reaches can just have larger diameter tubing and closer reaches can use smaller diameter tubing so the air will divide up automatically that way. Not sure on this. But I have this concept of division into pockets just in case I find issues with most air going to one area and not enough to another area and I can fall back to this pocket distribution idea in that case to solve it. Its just another tool in the bag so to speak.



This drawing is for an idea to use a actual freon based air conditioning system just like cars and window units employ but miniaturized in the robot's lungs. I am leaning toward not doing this anymore since it would add unnecessary weight and complication, but I leave it here for reference and it is a optional tool in the bag just in case we wanted to try it in the future or someone else wants to try similar. I think the ice cube based cooling is a superior approach now because ice can be found anywhere you go or a cold drink and this can cool its water cooling system and make a literal freon-based air conditioner in its chest overkill and unneeded.





These drawings show a simple early sketch for a ice cooling system for the robot and then a more elaborate sketch for it. I've iterated on these designs several times since these were drawn, but these drawings are simple exploded views of how the working principle can look in general. I have improved on these a lot since then but I think these do a good job of demonstrating the concept. The water cooling system will double as a evaporative air conditioner by sending water trickling down netting in the lungs so that when it breathes the air its breath interweaves with the water droplets causing evaporation which triggers the evaporative cooling effect which in turn cools both the air and the water tremendously. Its the same working principle as air hitting sweat - you instantly feel cold on your skin when a fan hits liquid on your skin. That is the evaporative cooling effect in action. So I intend to use this effect to cool air and water within the lungs. The ice cooling reservoir will be a bag that presses flush with the distilled water cooling reservoir bag. The dirty or soda containing or non-distilled water containing ice water or ice juice (whatever the robot can get its hands on for cooling needs) does not have to be pure because its just anything the robot can find in the moment it needs cooling. Even anything from a vending machine it can drink then. It will be kept in its own separate reservoir so it doesn't gum up the main distilled water cooling system. So the ice water/ice cubes/juice etc reservoir presses against the main distilled water cooling reservoir (containing only distilled water which won't gum up or corrode the main water cooling system). And by having the two bags pressed against eachother, the coldness of the one bag cools the distilled water cooling water bag, pulling heat out of that bag quickly. Once the two bags' temperatures reach equilibrium, the robot can then pee out the ice water cooling reservoir bag contents and go get another drink of ice water or cold whatever drink to rinse and repeat that process as needed. I don't anticipate it needing this extra cooling often, but in hot conditions or rigorous work that is quite physical or sports or dancing it would need this to add extra cooling to its existing cooling approaches. It would then "fuel up" on ice water in advance of rigorous physical activity to prevent overheating during said activity.

Note: I originally planned to put the water cooling and ice cooling reservoirs in the chest of the robot but later realized I could instead put them in the belly of the robot more toward the front of the robot and this way the torso has much more room and these reservoirs won't take up so much room in the chest - which is much needed room. So then, when the robot needs ice cooling, it can drink a large volume of ice and cold water (or juice or w/e drink that's cold) and this will fill its ice reservoir bag which will then cause the belly to protrude like a pot belly. This is how humans work since when we eat a ton our belly sticks out. Same principle. This means we get bonus space available for this purpose outside the normal operating space of the robot's torso due to this natural protrusion factor. This bonus extra room in demand is a nice luxury since it means we don't have to accommodate cold water/ice/juice in the precious coveted space within the torso which gives us more room for other important electronics and stuff to fit in.

Note: the reservoirs of the distilled water for the main water cooling system and the ice water reservoir for the ice cooling system both are best being as big as reasonably possible since the bigger the reservoir the more cooling you get and the longer it takes for those bags to heat up and start causing problems with heat. So then the bigger the reservoir the more sustained cooling we get. After both these reservoir's contents get heated up significantly, they are no longer effective at cooling the system and the robot would have to either sit down and rest and wait till these cool down naturally or would need to pee out the ice cooling reservoir bag warm/hot contents and go drink cold liquid and/or ice to fill the bag back up with something that will quickly cool the whole system down again and it can resume work right away this way with no downtime.


7
Mechanics and Construction / Re: My Advanced Realistic Humanoid Robot Project
« Last post by artbyrobot1 on June 26, 2024, 01:17:16 PM »
A colleague of mine asked why I'm using Windows for the robot's brains instead of Linux. Well, in my experience, if you set a program on windows to real-time priority or even above normal priority, it will give most of the processor over to that process and act like a real time operating system. So whatever "bloat" windows may have of background processes is quite cleared up by that. Also, IMO the background processes of windows don't take up that much processor and with multi-core processors and distributed processing any background tasks just won't impact performance much at all IMO. So performance-wise the hit is negligible and unnoticeable IMO. Then comes the upsides (since the downsides were nearly imperceivable). The upsides are I already have many years of experience working with windows API and can reuse the existing code I have developed for AI on Windows. That's a huge advantage so I'm not working from scratch. Also, loads of 3rd party programs and libraries that are well supported run on windows - moreso even than Linux I believe. So I would have easy access to tools. I also own a lot of 3rd party software that is paid software that run on Windows (and may not run on Linux) that the robot can then utilize as tools. Also, troubleshooting operating system problems and knowing common causes is a big deal at times and I have decades of doing so on Windows so that I know it like the back of my hand and can easily fix problems. So that is huge too. So if you are working on a SUPER resource constrained slow single core computer, sure, maybe Linux. But if you have a multi-core higher end gaming pc in the robot's chest, it has WAY more than enough power to run Windows without taking any noticeable hit in performance and one should use windows if they have more experience or exclusive experience with windows rather than attempt to learn a whole new operating system for no good reason IMO.

Oh yeah, one more thing: while testing the AI, I?ll be using it on my personal desktop PC which will act kind of like Siri as I?m training it. My PC is Windows. So if I were to develop the AI for Linux, I?d have to also train it on Linux rather than windows so I couldn?t use it on my personal PC unless I used a virtual machine or something. Basically, I want the AI listening to me and watching me at all times when I?m using the computer and learning about me that way and learning in general that way. It would be getting to know me silently but also possibly speaking to me at times or asking me questions about what I?m doing. I would also want it to be able to interface with any programs I?m using on my personal PC to assist me in whatever ways. So even if it were on a sandbox virtual machine that would then lock it out from helping me on windows doing whatever tasks I?m doing and being interactive with me in that way. That would not be ideal.
8
Mechanics and Construction / Re: My Advanced Realistic Humanoid Robot Project
« Last post by artbyrobot1 on June 25, 2024, 03:39:47 PM »
I bought a bunch of punches to make the pulley disc cutting out process way easier than scissors alone. You just place these over the plastic you want to cut and hammer them down with a cutting mat as a backing plate and just one or two hammer taps is all it takes to cut a disc out. Also, now that I plan to make custom plastic washers that I will glue onto the bearings to keep the string centered, these punches will be pretty necessary since that would be much harder to do with scissors than regular discs.




Also, here's an update on the cable routing work I've gotten done for the index finger. So the distal-most joint and 2nd joint in from that are both being actuated by a single motor since they both seem to always move together in unison on a human hand IRL. So I tied off one end of fishing line to one joint and the other end to the next joint forming a loop. Pulling on this loop curls both of these joints into a grasp. I then decided the string that pulls on this loop should itself not have a fixed attachment point but instead a sliding attachment point (I could be wrong on this not sure). So to do this I used the eye of a fishing hook on the loop and tied the next string to that which pulls the loop by way of the fishing hook eye. Next I used a piece of tig welding rod and secured that to the loop tubing and to the tube that pulls on the loop. This gave space for the drawing of the loop to actuate the two joints. Seems to work well so far in manual testing.

Note: take note that the entire section the tig welding rod is attached to is all free floating and has slack so that when the wrist bends back and forth it can adjust freely and not constrict wrist range of motion nor affect finger position when wrist moves.






And here's a range of motion test on the cable grasping mechanism for the index finger. It is a decent range so I consider this design successful as of right now in early testing. A more extreme grasp range would be ideal though IMO but this is as far as it is wanting to go.


9
Robot Videos / Re: make your own printed circut board
« Last post by TylerRoss on June 25, 2024, 12:51:04 PM »
Cool Video!
10
Mechanics and Construction / Re: My Advanced Realistic Humanoid Robot Project
« Last post by artbyrobot1 on June 02, 2024, 08:43:21 PM »
I recently had an associate disagree with me that if I push through this phase of the project I'll be home free. He said he thinks the AI relating to robot balance and sensory input and physical execution based on sensory feedback will be the hardest part. While I agree that will be time consuming, I don't think it will be nearly as "hard".

My instinct is that those purely software challenges are not as "hard" for several reasons. First of all, consider that in 2009 a Japanese institute of technology - mere students, solved all of those challenges with HRP-4C which would walk and dance and everything and this was just student coders doing this in their spare time while maintaining their entire class load as well. In my view, the hardest part of the project is maintaining personal belief that I will succeed and not giving up like 99% of others have who set out on this bipedal android dream. There is a massive up front money and time investment and EVERYONE tells you this cannot be done and you are delusional. Pushing past the initial design challenges and hardware development to get a functioning prototype is then the hardest part by far. Once you have a working design that overcomes cooling issues, noise issues (runs silently), space issues (can fit all the crap that has to fit) and all the parts and assembly is of high quality and successful, and you had to learn and half master about a dozen fields to get here mind you, ONLY THEN are we talking about advanced AI implementation to synchronize it all and bring it all to life properly in the ways you mentioned. Well consider this: by the time you are in that phase, you already have proven to the world you are not delusional, have a amazing piece of technology - bird in hand, and now have immense confidence and momentum going into the AI phase where balance and walking and whatnot challenges are faced off with. This is SO MUCH EASIER since excitement and morale are at all time highs, you no longer have overwhelming apathy or nay-saying from all sides on your dream, and you have built a massive fan-base rooting for you. So even if the complexity or time investment may be higher on the challenges you mentioned, the morale boost and momentum make that phase easier since it is not the implementation challenges that are hardest but the motivation and persistence and perseverance against all odds and emotionally bearing all the nay-saying and hating that is hardest. Also the fear of the unknown and fear that you will just never make it or will die long before the project could take off fears etc. Overcoming all of that is the real challenge of something like this. Maintaining faith in the vision despite most everyone having faith against the vision is not easy and even your own mind whispering doubts at times that you have to shoe away. You are just mentioning complexity and technical execution which to me is not all that hard. Also note: the other major battle in the hardware phase I'm in now is that a great deal of the approaches I'm taking are entirely novel and untested. Almost everything I'm doing has no guide, no other successes to base off and glean confidence from, and at every turn what I'm doing could fail majorly and have done so. This means you always wonder will I just hit a dead end and have to start over which has happened to me over and over which is very demoralizing especially when paired with naysayers and haters overwhelmingly apathetic and negging my whole dream. Its a lethal combo. Whereas the AI tech you described harmonizing all the sensory input and perfectly bringing the hardware to life in the real world is stuff that has already been achieved and would not be novel and would not be unproven and would have no risk of dead end or wondering if it is even possible since trend setters have already proven this works and there is already a great host of information on all aspects of that and you don't really have to blaze your own trail in those aspects. There is most likely even documented successful strategies for nearly every single aspect of it - unlike the novel hardware and mechanical engineering phase I'm in. So that part doesn't take as much blind faith and assumptions but rather is a surefire guaranteed part where failure is not possible given enough time and patience and perseverance which will be easy to muster with the whole world cheering by that point (whole world meaning just whoever stumbles across the project by that point of progression and leaves a positive note etc).

So to sum, when you have to maintain faith that you will succeed at a dream that most say is impossible, improbable and is surely doomed to fail and they utter this with total confidence in mass numbers with near total unanimous accord, that is hard. That is the hardest part IMO. Maintaining faith against such opposition in viewpoint from so many puts one into the realm of delusion in the eyes of most. How is that not delusional to believe a thing to be true - that you are capable of "the impossible" when most everyone else can plainly tell you are not capable of it and are too blind to see it. That is the definition of delusional. It is narcissistic grandiose delusionality disorder and it is also Dunning-Kruger effect in full force. You have to walk in those titles and persevere as a madman. But the funny thing is, IF you do push through that half wondering if you are crazy for long enough and you manage to succeed, suddenly, you aren't delusional, did not have Dunning-Kruger effect, and were totally sane the whole time and just everyone else was wrong all along and you were right the whole time. The entire cards all flip and you are the vindicated one and everybody else has to hang their head down and admit they were wrong and apologize for hating. It is a remarkable thing how the tables can turn.

One day later:

As I edit the above writing, I am realizing I missed another MASSIVE hard part of the project I never mentioned. Perhaps even on the same level of hard of the things I already mentioned. That is the managerial execution on your life to make such a big and time consuming and money sucking project possible over a long haul. You have to convince your family to "put up with" the project and compromise with them on also maintaining acceptable progress on other initiatives they value higher than your android project. You have to manage your finances expertly in order to be financially stable enough to put thousands of dollars into the android project over the years. You have to manage your time in such a way that you are able to carve out enough time to make meaningful and consistent progress on your android project over the years despite so many other pressing time draws constantly barraging you over the years. You have to manage your emotional and spiritual condition so that you are able to maintain high morale to even be productive over the bear minimum of just doing your absolute necessities day by day. You have to manage your energy levels and health so that you have enough pep in your step to be able to not only take care of your family and friends but also your job and household responsibilities and on top of ALL OF THIS manage to STILL have the energy to pour COUNTLESS hours into your android sustainably over the decades. You also have to maintain your vision and not let scope creep or distractions or self doubt erode at or take away your vision entirely. So in other words, to sum, one of the hardest parts of such a massive project has NOTHING to do with the project itself AT ALL but has everything to do with managing everything else in life outside of the project with such excellence that you are able to execute the project and carve out the necessary time and resources for the project while also expertly managing your own life in all other areas. If you don't do this, similar to the idea of technical debt in a project, you end up with life debt on account of your project which forces your project to fail. So for example, lets say you racked up $20k in credit card debt while neglecting to work or pay your bills and buying parts for your android and working on it exclusively to the detriment of your financial situation and money earning capacity. Yes, that made you able to make vast and fast progress on your android project, but at what expense? Financial ruin? That is not a sustainable approach. You cannot just ignore these other key aspects of life and go all in tunnel visioned on such a big project. That might work for short term projects but long term projects you can't just press the pause button on the rest of your life and expect it not to come crashing down eventually as you neglect everything but your android project. This will come back to bite you. So you MUST establish yourself with great stability in all areas of life FIRST before you can sustainably perform the android project without it harming other areas of life. Or consider relationship with family and a significant other. If you go all in on a massive long term project like the android project, but in the process you neglect family and friends or your significant other, you end up causing them to think you don't care about them and may lose people or ruin these relationships in your pursuit of your long term project goals. That is not sustainable or responsible and is reckless and selfish to go that route. Or how about your weight? Are you going to spend so much time on your long term project and maintaining your income and relationships but throw your health out the window in the process and not make time for the gym or healthy eating? That is not sustainable either. So you MUST take time to be a great caretaker of your health. So then to sum, you must master life in all areas and be stable across the board in order to execute a long term project without neglecting and ruining all manner of things in the peripherals. So for that reason, I say the success in all these peripherals is one of the hardest parts of such a project and if you can master this, the project is a piece of cake by comparison.
Pages: 1 2 3 ... 10