Tuesday, August 26, 2025

Acuitas Diary #87 (August 2025, Allergic Cliffs demo)

It's ready! Acuitas can play the text version of Allergic Cliffs and is often able to determine one of the secret rules by which the cliffs operate. Watch the video watch the video

In a previous blog I discussed how Acuitas chooses moves based on a simple heuristic that tries to replicate successes and avoid repeating failures. The part I haven't fully discussed yet is the final version of rule formation. Acuitas attempts to generalize from the results of past moves to derive rules of cause and effect that indicate when the cliffs sneeze. At this time all possible move results are reduced to the two goal-relevant outcomes (succeed or fail), and generalizations are made by looking at commonalities among all actions that share the same result. I started by just comparing pairs of actions, then upgraded the algorithm to look at the entire pool of past actions for feature combinations common across two or more of them.

For the moment, all rules are given in positive form. So, supposing the rules for the current game round divide the zoombinis onto the lefthand bridge if they have a blue nose or the righthand bridge if they do not, you'll never hear Acuitas say, "If a guide puts a zoombini who does not have a blue nose on a lefthand bridge, a guide fails," or "If a guide puts a zoombini does not have a blue nose on a righthand bridge, a guide succeeds." Instead you would get "If a guide puts a zoombini who has a blue nose on a righthand bridge, a guide fails," or any of "If a guide puts a zoombini who has a [red, orange, green, purple] nose on a lefthand bridge, a guide succeeds."

I ended up not having time (in my completely self-imposed schedule) to implement experiments (purposely choosing moves that will falsify or confirm tentative rules) or rule-following (informing moves by rules to increase chances of success). So Acuitas still plays the whole game using the "similar to previous move" heuristic. At the end of the game, he scores all tentative rules that have not yet been falsified and selects the one with the highest score to announce out loud. The scoring system is of interest.

Rules with more evidence behind them (more moves which had those combinations of features in common) score higher, naturally. But I found that I needed another trick to more successfully pick out which tentative rule was among THE rules of the current round. Any action which is the cause in one of THE rules tends to have a counterpart which differs by one feature and produces a different effect. So if you have a rule like "Put a zoombini with an orange nose on the lefthand bridge and you will succeed," then if THE rules are about orange noses, there ought to be opposing rules such as "Put a zoombini with an orange nose on the righthand bridge and you will fail," or "Put a zoombini with a blue nose on the lefthand bridge and you will fail." If these opposite counterparts don't exist, then the orange nose + lefthand bridge = success association is probably incidental; some other feature is driving the cliffs' behavior, and it just *happened* that all the zoombinis allowed to cross the lefthand bridge also had orange noses.

There's a lot more fun I could have with this and many directions to extend it, obviously, but for now I'm finished. I'm toying with the idea of possibly sharing the Allergic Cliffs text adventure (not any part of Acuitas, just the independent game script) for others to use. I would want to polish it first, add documentation, and possibly implement the higher difficulty levels, so I can't say when that might happen.

Until the next cycle,
Jenny

Tuesday, August 12, 2025

ACE the Quadruped 2025

It's about time I blog about ACE (Ambulatory Canine Emulator). This project got neglected while I focused on completing Atronach and getting started with hydraulics, but I've been poking at it every now and then. My most recent conclusion is that I do, in fact, need to replace the PF35T-48 motors. Those bargain-basement unipolar steppers are just not good enough.

My last major overhaul of ACE was - gulp - three years ago. The quick summary is that I solved enough rigidity and tolerance problems that the skeleton could be posed standing at its full height, and repositioned the motors so that none of their weight had to be carried on the legs. Since then, I've been doing motion tests and refining the design of the ankle/hock joint.

Once I started trying to make parts of ACE *move*, it quickly became obvious that, out of the box, the PF35Ts didn't have enough torque to accomplish much. It was difficult for one of them to even swing the upper leg back and forth when it was hanging free - a relatively easy motion, since the only load was the weight of the leg itself. So I detoured into designing gearboxes, taking my motor cradle as a starting point and adding mounting tubes for additional drive shafts. A single gear designed to mesh with the little one that comes attached to the motor was good enough to enable upper leg motion (see the first video, above). But there was still no way that was going to be enough to operate the hock joints. My efforts to *really* gear these motors down led to the creation of the little beauty in the video below, with three gear pairs. I'm still quite proud of it.

I also fiddled with the hock joint design and some of the tendon routing, trying to optimize the mechanical advantage and reduce the strain on the motors as much as possible. In this new version, the tendons are more exposed, but I think I get better leverage out of the deal. So I tried the new joint prototype with the new gearbox, and no gravity loading the leg - it's just moving in a horizontal plane. How did it go? Not well.

It only managed to do as well as it did for that demo because I was over-volting the motor (I typically operate these at 5-6V.) Careful study of this test setup convinced me that the main problem was with the tendons binding against various corners they have to go around. But they're made of nylon fishing line, which presents a very low-friction surface, so they shouldn't be binding that *hard*. I think the latest joint design is about as good as it can get, and the gearbox is doing fine as well - I saw no evidence of the gears jamming or anything like that.

So with no weight on the leg, and the motor geared down so much that it's moving miserably slow, it's still stymied by a little friction. My guess is that I'm not getting the higher torque I expected because losses in the gearbox are consuming it; the amount available was so low to start with that I might not be able to make the situation much better, no matter how many gear pairs I add. Although there are some small adjustments I could make to reduce how tightly the tendons are bent around corners, I'm taking this test result as a sign that the motors are just not right for this project.

Fortunately, there are options with a much better torque-to-weight ratio out there. They do cost a little more, but I'm not budgeting as tightly as I was back in my college days. I've already selected some new models to try, and redesigned the motor cradles to hold them. (It's so nice to have a somewhat modular design.) Here's hoping for somewhat more progress when I get a chance to try them.

Until the next cycle,
Jenny