[From Bruce Abbott (2018.02.23.1320 EST)]
[Rick Marken 2018-02-23_09:23:18]
Bruce Abbott (2018.02.21.1435 EST)–
BA: I’ve posted several times exploring how useful the Lego EV3 system might be for learning the mechanics of control and for investigating PCT in a real-world setting as opposed to simulations. The most common response on CSGnet to this series has been ---- nothing. The lack of commentary has me wondering whether anyone is actually interested in this topic – it’s hard to tell when a forum devoted to perceptual control systems ironically provides no feedback to the poster. The information provided may be appreciated (by some at least) but thought not to require comment, I suppose, but without it I have no way of knowing.
BA: My idea was that this discussion might benefit anyone thinking about acquiring a Lego Mindstorms EV3 kit with the aim of exploring/learning about control theory by building simple robots, implementing various control-system architectures, and seeing how well they perform. Rupert Young is already doing this, but my idea was to provide some useful information for anyone else who might want to take a stab at this. It’s my way of encouraging others to get out of the purely philosophical debate mode that dominates CSGnet and into the research mode.
BA: So, how about some useful feedback? Is there any real interest in this?
RM: I’m certainly interested in using robotics and electronics kits to learn about control theory. But I’m mainly interested in using these kits to build robotic systems that illustrate principles of control that are particularly relevant to understanding the behavior of living systems – that is, the principles of control theory that are emphasized by perceptual control theory. The main principle to be illustrated, of course, is that control systems control perceptual variables. Another is that the appearance that control systems respond to stimulation is an illusion created by the disturbance - resistant characteristic of control.
RM: I suggested one idea about how to demonstrate control of perception using robotics but I think it was pretty much laughed off.
Certainly not by me. What was the idea?
But if you or anyone else who is good at building these things would start developing robotics demonstrations of PCT principles that are clear and simple (so that even I could build them) then I would be happy to join in. I have my EV3 kit set up and ready to go;-)
That certainly is my intension. Have you seen my EV3-based “Lorenzâ€? Crowd Demo demonstration? The “Twitchieâ€? arm demo? But the EV3 platform is proving to be something of a challenge to implement PCT control architectures in, as I’ve documented in previous posts.  Unlike our computer simulations, these EV3-based control systems have to contend with noisy sensors, loose gear trains, and instable variables such as irregular surfaces and flexible plastic parts, that make designing an effective control system a bit more challenging than our simulations do.Â
So presently I’m working on learning how to deal with them.  For example, the Lego Mindstorms kit includes plans and programming for a couple versions of a self-balancing robot. I have built one of these and observed that it does a nice job of keeping itself upright (so long as disturbances are not too severe). I wasn’t successful getting the robot to balance with my own PCT-style hierarchical control system, so the question is, what is the Lego program doing (that my program wasn’t) that allows it to succeed in balancing the robot? I’ve been trying to answer that question by systematically studying the Lego program and testing its various components using “testbedâ€? programs.Â
For example, this morning I discovered that a “MyBlock� element called “GetMotorSpeed,� contains a “bucket brigade� delay line that preserves a change in motor speed for seven iterations. That’s interesting, although I don’t yet understand why it was deemed to be necessary. If the EV3 is connected to my laptop while the program runs, I can observe the values of the various variables used in the program and see how they change. Unfortunately, subroutines that have been saved as “MyBlock� elements cannot be “unpacked� to watch their interior variables, so I found it necessary to duplicate the GetMotorSpeed block’s contents and place them directly into a program rather than using the MyBlock directly. The MyBlock subroutine requires assembling a large number of Blocks, wiring them to other blocks correctly, and setting certain Block parameters. It required an extended effort to recreate the GetMotorSpeed routine and debug it. However, doing so and watching it run helped me to understand how this block does what it does.
So yes, I hope to develop clear robotic demonstrations of PCT principles, but unfortunately, the hurdles are such that one must learn to walk before one can run.
Bruce