Mike Grauer's Robot Project
Version 1.0 Manual Power
I started with the idea of making a 4 legged robot, as that seemed easier to stabilize and balance than a 2 legged creature, and a bit simpler than a 6 legged robot in that 4 legs are fewer than 6. This robot has a single axle down its center axis that powers 2 separate 24T gears, each of which is attached to an axle that powers front or rear legs. The legs are attached to the axle with another 24T gear, which allows for 4 different offset positions of the leg attachments, though in this version of the robot I didn't really play around with that. When I built this robot, the kit I was working with had no motors, so I couldn't really design around the motors, and subsequently when I saw the motors I realized that I'd have to change the design as there was no place to attach a motor. In my mind I had thought that a single motor could drive both gears, and as a result, both sets of legs, and that I would simply be able to swap in a motor for the manual turning of the central axle, but this didn't work out. Part of the problem was that the motor took up too much space on this robot and had to be pushed far out to the head/tail so that it could properly attach to the central axle (I'll start calling this the drivetrain from now on), and once I attached a motor at this position the weight of the motor threw the entire robot off balance. At this point I realized I needed a partial tear down and redesign.
Version 2.0 9V battery powered Lurch
I attached a single lego motor to the drivetrain, which meant I needed to first extend the length of my robot to accommodate the motor, and the motor's weight set the robot off balance. I extended the robot in the other direction (both extensions were along the central axis) and at first used what I planned to be an unpowered motor to balance the weight, but once I found out that the motors could be powered by a regular 9V battery I realized that I could just put the battery opposite the main drive motor and the weight of the battery would balance that of the motor. Now that the overall length and weight of the robot had been increased, the original legs were not up the the task of holding the robot. I set the legs on pegs that were attached to the 24T gears so that the legs were seated at a greater distance from the center of the robot, which gave the robot a wider base, and I also widened the feet to give a more stable platform overall. The robot actually walked in this configuration, though lurch is probably a more accurate description of its motion. Shawn had told me that in watching a dog walking he noticed that there was a progression of different legs contacting the ground, e.g. left front, right rear, right front, left rear, so I set my robot legs to be attached in such a configuration based on the 4 different pin positions available on the gears. The offset is reasonably well upheld on legs on the same axle, but the offset isn't that tightly maintained between the two axles, and even so, this smoothed out the motion enough for the robot to make noticable forwardish progress. I took video of the robot at this stage moving across a tabletop, the book behind it is for a frame of reference.
CAD model work
I am attempting to make a model of my robot using the Adams software, and have run through some of the tutorials that Rich P put into his project page. I have also explored importing step files into CAD, for which I created a page CAD_Info. There are many Lego parts modeled in CAD environments, but some of them are unlabeled, so I spent some time importing them into Adams and creating a map of part labels to parts.
I've spent quite a bit of time with Adams now, using some of the various tutorials that are posted around the wiki. My general pattern seems to be: start using Adams, make some progress (monitonically increasing with the number of times I use Adams), get to some point where my simulation no longer works and I cannot revert back to a working model and cannot figure out which pieces are breaking the model, get frustrated and leave.
For a while I was trying to import the CAD models of the Lego pieces, but Adams will convert STP and STL files to shells, which rids them of solid properties like mass, center of gravity, and watertightness (notions of inside and outside). Parasolid files can be imported as solids. After this experimentation with the Lego pieces, I decided to try building an abstraction of my robot in Adams using Adams's geometric primitives.
Here I have built a portion of my robot: the back is represented, as are revolute jointed legs and feet; however, I have only attached legs and feet to one side (left/right) of my robot. I'm having a lot of trouble getting objects oriented in the Z axis. All of my XY objects work fine, which is why I can set up legs on one side, but when I tried to setup legs on the other side of the back of the robot, I couldn't get the pieces alligned properly and then my simulations started breaking.
Here is a simulation of the 2 legged robot, note that there is rotational motion on the two hip joints, and there is a contact force between the feet and the ground block, but not between any other two components.
Here are some of the areas that I've had trouble with and the solutions:
1) making simulations and recording them--the set of steps to follow is not intuitive, but eventually with Rich's help I worked it out somewhat, then I showed Bill M, who improved on the process and described the solutions in his project page.
2) after rotating or changing the view I couldn't get back to the original view--Shawn P showed me this, through the View/Preset menu item, you can snap the view back to any orientation--front is the orientation that you probably started with.
3) convincing objects not to pass through each other--the way to do this is to apply a contact force to both objects
4) viewing certain objects once the model gets reasonably complex and messy--I have some instructions but they didn't work consistently--go to the Settings/Icons menu option, then leave the visibility of all model icons to on, and select the particular type of icons (forces for instance) that you want turned off, click visibility off and apply. To show the type of icon you should just have to click visibility on and apply, although this didn't work for me.
The two major areas that I would be really helped by would be placing objects in the Z plane (in 3D space in other words). I can get my primitives to behave well in 2D space, but then when I need to for instance attach left legs, which would go behind the right legs in the Z plane, I cannot get the objects to go where I want them to. Then when I try to simulate I get some fairly unhelpful error messages. This brings me to the second area I could be helped by--knowing how to debug a simulation and understand the error messages provided by Adams. Often I'm told that some particular part is what the problem is, but I'll have no idea where that part is or how to access it. Also, sometimes when I remove parts Adams will leave a marker in their place that breaks the simulation.