The snow is still falling, the walk isn’t cleared, and the robot is dripping melting snow onto the garage floor. I have a fresh pot of tea (Nilgiri black, from Mark T. Wendell teas) steaming on the drawing table, along with a home-made English muffin with honey and butter.
What was I doing again? Oh yeah, the Snow Shovelling Robot.
So, previously we tried the snow-blower, and the plow. Now it is time to get serious. A snow shovelling robot should shovel snow. How hard can it be? 10 year old kids can do this. Take a shovel, stick it in the snow, toss it away, repeat. Easy. We can take a shovel, and cut down the handle. Attach it to the robot, and add a mechanism to stick it horizontally into the snow. Add another mechanism to lift the shovel blade, and another one to fling the snow off to the side. The robot moves forward, and the process repeats. Where’s my pencil?
I’m sure you can envision the Snow Shovelling Robot: tank treads, front mounted arm, with a shovel blade, electronics, servo-motors, pneumatic cylinders driving the tossing mechanism, possibly even a steam tank to keep the blade from freezing up. A total steam-punk fantasy. Now we are ready to roll! Except for the hard part, the brains.
Don’t get me wrong, the mechanical system is complex, and requires serious engineering. I’m sure any number of mechatronics engineers were having a chuckle at the obvious mechanical errors expounded in the previous post. But that is my point – they were obvious errors. If you look at the hundreds of existing robotics systems in the world today, you will see mechanical, electrical, pneumo-hydrolic marvels doing work in bomb disposal, deep sea exploration, flight systems, everything! But the vast majority of them require a person to drive them around; a person to make sense of the environment by looking through the sensors; a person to decide what to do; and a person to execute the plan using the joysticks, game controllers, and switches on the console. In fact in systems like the Predator drones, it literally can require three or four people to fly the mission.
Right now, it is a person making the hundreds of judgement calls needed to actually do something useful, like shovelling the sidewalk. “What?” you say, “Judgement calls about shovelling?” Actually, yes.
A judgement call is a decision that is made dependent on the situation, and frequently without complete knowledge. Think about the types of decisions:
- How big a ‘bite’ of snow to take,
- Where to toss it,
- How best to get the snow off the shovel blade,
- What to do when the snow sticks,
- How best to get the shovel blade down to the concrete, without jamming it into a crack, and so on.
And all of these decisions, are being made in real time, you’ve got maybe 3 seconds per ‘shovel operation’. And, these decisions are being made without complete information. You don’t know the ‘stickiness’ of the snow, as you move down the sidewalk, when is the snow you are tossing getting too close to the neighbor’s car? Do you break your rhythm to clean the blade, or risk having the shovel fly out of your grip when the snow doesn’t let go?
And our mission, should we choose to accept it, is to get a computer to do all this, while controlling the robot.
And, perhaps the most daunting aspect of all, is we don’t really understand how ‘we’ as humans make these decisions. If you asked people how they decide how big a ‘bite’ of snow to shovel, you’ll get answers like “the feel is right”, or “I just kind of eyeball it”, or (my favorite) “When you’ve been shovelling snow as long as I have, you just know.” Program that into your robot. The odd thing is, according to a number of current cognitive science theories each of these answers is exactly right.
There are two competing truisms: 1) if you can’t explain how to do something, you can’t program a computer to do it, 2) the act of explaining how you do something frequently changes the process that you are trying to explain. Sure, there are exceptions to both of these ‘rules’, but they hold most of the time. This is why you don’t have a snow shovelling robot. It’s not the hardware, the mechatronics engineers are giving us great hardware, we are still working on how to ‘tell’ the hardware what to do. For a more detailed analysis you can check out our book “Robots, Reasoning, and Reification”
The short form is that the robot needs to map the current situation into a model of the world (the reification part), and then have behaviors it can execute (the robot part), and it has to select the appropriate behaviors (the reasoning part) as the situation changes.
It becomes a dance of a sort. A three step figure:
- Figure out what aspects of the shovelling process can be reduced to pre-programmed ‘muscle memory’ – behaviors that can be re-played in specific situations.
- Figure out when to ‘re-play’ those behaviors – what are the circumstances in which those behaviors are the appropriate behaviors
- Figure out how to stitch those together into a pattern that ends up with the snow off the sidewalk, and not on the neighbors car.
To do that we need data – Well, the snow is picking up again, so I need to get up, grab the shovel, and start shovelling. Looks like, for this storm anyway, I am the Snow Shovelling Robot.
Where’s your Robot? Ours are being built by Gamma Two Robotics, here in (snowy) Colorado.