Software - Car Walker

 

This application reads 3D geometry parameters from a set of arrays, then generates and displays a Java3D model. The program provides the user with a set of Swing-based GUI controllers to manipulate the movable parts and animate them. The controllers give the user the ability to control all aspects of the movements and behaviors.

Individually the program parts are a generic solid modeler, and a set of controllers and analyzers.

Collectively, however, it is a simulator of a robotic car with legs instead of wheels.

This little ditty was inspired by the DARPA Grand Challenge; not that I thought I could enter, but that I thought bugs are really good at doing the kind of things that those big over-engineered contraptions failed so hilariously at. Like many of my home projects, this was so inspiring, I could hardly wait to abandon it and get started on my next great idea. It's not perfect, but the idea has a lot of potential for a real gas-powered go-kart-sized project some day. Couldn't you just see that in the Rose Bowl Parade? That would be so cool!

Details

 Normally, this program displays an image of the car in an area it can walk around in and a control panel.

 

Description: Description: C:\Users\Mike\MikeBrownProjects.net\CarWalker_images\Walking_Car_2.jpg

 

The car automatically turns when it approaches the edge of its area so it never leaves the sandbox. Noticed that some of the feet are green; that indicates they are on the surface and bearing a load, otherwise they turn grey when they are in the air. If the foot turns red, that indicates the foot is supposed to be on the ground but can’t even reach it.

 The shape and size of the car are about that of a go-kart; I was hoping to test out the static loads and kinematic behavior to determine if it might be feasible to build a rideable vehicle. I also built some more driver-friendly controls for a "glass cockpit" kind of dashboard. Wishful thinking.

 The display screen has mouse control of the perspective; such as zooming and panning.

 

Description: Description: C:\Users\Mike\MikeBrownProjects.net\CarWalker_images\Controls_Panel_2.jpg

 

Here’s what the controls do:

*      Belly Height -- the height of the belly of the car above the ground; like to do push-ups.

*      Step Height -- the height the foot lifts as it moves forward; like to step over things.

*      Outward Reach -- the distance inward or outward the calf will reach from a vertical angle; like in tight quarters

*      Forward Reach -- the angle forward (and backward) the front (and rear legs) are centered from straight out.

*      Phase Shift -- the staggering of the motion of the feet; to change the pattern of the walk.

*      Stride Length -- the overall distance each foot moves from the front to the back.

*      Up/Down Ratio -- the ratio of time spent in moving forward in the air verses moving backward on the ground.

*      Pace -- the speed with which the feet move; equates to the car’s speed.

*      Steering -- the degree of curvature right or left (or straight forward) to move; like a steering wheel. It can even spin in place.

 

Description: Description: C:\Users\Mike\MikeBrownProjects.net\CarWalker_images\Wire_Frame_Analysis_2.jpg

 

This is a view of a test mode. The wire-frame mode allow me to see what goes on a lot clearer without having to keep moving the view point around. The green lines are the path relative to the car where the legs are moving, given the settings, such as Reach, Stride, Pace, and Steering. The blue and purple lines are the limits of the center of gravity before it starts to fall over. If it starts tipping a warning is shown. This allows me to determine the best parameters for different conditions.

 I’ve also got a control window that allows me to control each joint movement individually. In the early development I used it to make sure I was controlling everything properly. It’s such a low-level control that it impractical to even think about it; kind of like thinking all the muscles in your legs and arms use exercise just to walk -- if you had to think about it at that level you couldn’t do it.

 I think if I ever get back to this program to work on it some more, I'll have it lean the car as it turns (according to the tightness of the turn and the speed) and as it changes speed (according to the acceleration or breaking), so as to maintain a comfortable vertical equilibrium for the driver. And I'll create a random terrain to walk around on so it can sense and react to some ground conditions. And I'll add higher-level logic to control the walking pattern; replacing the Forward Reach, Phase Shift, Stride Length, Up/Down Ratio controls to produce a more adaptive behavior.