• Flywheel and Ratchet

    05/07/2016 at 00:38 0 comments

    When you have a lot of different projects and not enough motivation, energy and time to work on all of them all the time, it's very important to organize them in such a way, that you can work on them in small increments. There are two patterns that help with that, the Flywheel and the Ratchet.

    A flywheel accumulates energy. You can make it spin, and leave for some time, and it will keep on spinning, at least until friction makes it stop. You can store energy in a flywheel, when you have it, and then use it later, when you need it. You could also call it a battery, I suppose.

    I always try to organize my projects so that they have a kind of psychological flywheel in them. When I have a lot of motivation and energy, I can "store" it in them, and later draw upon it when it gets low. How do I store the energy? There are many ways. I might link to some inspiring materials, I might write down the ideas, I might create a "done list" (it's like a "todo list", only the other way around, more motivating), I might post some questions online, I might order some cool parts, design a PCB, write a proof of concept program, etc. There are all sorts of small activities I can do while I'm motivated. The point is to always make them leave some kind of trace, so that they can motivate me later on. This may be serendipitous, like finding an old picture or prototype, this can be on-demand, like going through my "done list" or reference links, or it may be timed, like receiving the ordered parts. The point is to always store away energy when I have it.

    A ratchet is a mechanism that makes sure that you only move forward, and not backwards. If you use psychological ratchets, you can work on your projects in small increments, and still have them all progressing. The ratchet will prevent them from dissolving over time.

    Again, there are many ways to introduce a ratchet. Using version control repositories for your code is one such example. Saving snippets of articles you write, even if they don't make much sense yet. Saving sketches. Keeping photos of the things you are disassembling or assembling. Using bolts instead of glue, and plugs and sockets instead of soldering everything. Having room for keeping all the prototypes. Having enough stock parts to not cannibalize old projects. Putting labels on the PCBs, so that you can figure out what goes where even after you forgot. Commenting your code.

    Both of those mechanism also work very well with collaboration. In fact, they let you collaborate "asynchronously", without even having to actively cooperate with your collaborators. They can pick up your flywheels and your ratchets years after you created them, and develop them further independently. All you have to do is to make them public, though that is not always possible with physical things.

  • Crawling and Walking

    04/03/2016 at 11:21 1 comment

    Ever wondered why I build those super-expensive 4-legged robots with 12 servos, three servo per leg, when all you need to have a "walking" quadruped robot is two servos and a piece of wire bent just the right way, and three servos for a hexapod? My answer is simple: those robots are not really walking. They are crawling. What's the difference?

    When you are walking, you make steps -- your feet move, relative to the ground, only when they are in the air. Once you put a foot on the ground, it stays pretty much in the same spot. You don't drag your feet.

    When you are crawling, most of your body stays in contact with the ground, and you use your arms and legs to push it forward. It's similar to rowing. You never completely raise from the ground, some parts are always touching it, you just drag them.

    But what is the practical difference? First of all, crawling usually requires much more energy. How much exactly depends on the kind of surface you are crawling on -- which is another down side. You can walk as well on a puffy carpet as on a smooth floor, but crawling on the carpet is much harder. Then, crawling doesn't require much balancing. Since most of your contact surface stays the same, there are no complex movements you need to do to shift your center of gravity to keep from falling down. For all you care, you are already down. And finally, most importantly to me, crawling is not nearly as interesting.

    What about those single-motor mechanisms that use intricate systems of levers or gears to move their many legs in a walking fashion? In theory they lift their feet for movement, and they don't drag them on the floor much, so that counts as walking. However, in practice, this walking doesn't give them any advantage over normal wheeled locomotion. In fact, if you look carefully, they simply move on wheels, just the wheels touch the floor through the system of levers, instead of directly. This of course looks cool and all that, but it doesn't let you move more efficiently over uneven terrain, climb stairs, etc. -- so most advantages of walking are gone. They still make nice toys, though.

  • Humanoid Robots are Impractical

    02/07/2016 at 10:28 0 comments

    Whenever someone attempts to build a humanoid robot (an android), whether it's Boston Dynamics or a hacker in a garage, they usually have one or several justifications for it. I'm going to list the common justifications here and explain why I think they don't make sense, except for one of them.

    Perfection. Humans are the pinnacle of evolution and our bodies are the most perfectly matched to operate in this environment. Bullshit. Our bodies were optimized for many tasks that robots simply don't do, such as growing, giving birth, running very long distances, resting, mating, raising young, etc. They were also optimized around constraints that are simply not there for the robots, such as limited material strength, high cost of precise sensors, limitations of energy distribution, need for regeneration, inherited overall structure of mammals, etc.

    If you reconsider the needs of the environment and the possibilities the technique gives you, you will come up with a construction that is smaller, lighter, faster, has much more reach and more flexibility, has eyes and other sensors practically everywhere, and doesn't look anything like a human.

    Teleoperation. This is what many giant robot movies claim -- you build a robot, and make it repeat all the moves of a human pilot, only with greater force and often in larger scale. There are two reasons why this doesn't work. First, if you really make the robot considerably larger, you are going to have completely different dynamics. Even if you make the robot's actuators super-strong and fast, so that you can compensate for the dynamics in software (you can basically simulate any dynamics, as long as you have enough torque), this is going to be very inefficient and awkward.

    Second, there is no reason for that robot to still have human proportions. The pilot would need to learn to operate the robot anyways, there is no getting around that, and our brains are very flexible -- we could easily operate a body that has completely different proportions -- much better suited for the task at hand. For instance, a chimpanzee can run much faster than a human.

    Man-made environments. If it's going to be used in environments made for humans, and use human tools, it has to look like a human. Again, not true. Technology can do much better. It doesn't have to have the same size, strength and reach as humans do -- it just needs to be smaller, have greater reach and be stronger. It doesn't need to be humanoid. In fact, if you have a dog, you can already see that it can operate in human environments just fine, even though it's much smaller and less agile. Something like RoboSimian is going to operate in human environments much better than humans. As soon as it has good enough control, that is.

    Blend in. It will be easier to interact with and get used to it if it looks like a human. That's actually exactly the opposite. You see, we appeared on this planet together with several other species of hominids, and we have evolved to exterminate them with extreme prejudice. Whenever we see something that looks like a human, but not quite, we find it extremely creepy and disgusting. This is called "uncanny valley" and it's a big problem. The easiest way to avoid it is to not make robots look like humans.

    It's cool. This is the only reason I can accept. Yes, it's insanely difficult, it requires a lot of research and it's expensive. All the more impressive! It totally makes sense to make humanoids for entertainment purposes, to put them in shopping windows, TV shows, live performances and what not.

    And that's pretty much it.