Here is a video of my simulated virtual robot walking, note the similarity in gait to the physical robot.

−

−

[[Media:Goodwalker.avi]]

== Robot Design and Rationale ==

== Robot Design and Rationale ==

Line 359:

Line 354:

== Virtual Model and Physics Based Simulation ==

== Virtual Model and Physics Based Simulation ==

+

+

I created a virtual model of my robot in the Adams physics based simulation environment. Rather than representing the individual Lego blocks, I created Adams geometric primitives for each of the major parts of the robot. The proportions of the body parts to each other is roughly the same as in my Legos model. Adams allows a user to simulate the reactions of bodies in a physical reality, with forces such as friction and gravity, motions, and various attachments of bodies to each other. Adams is a complex software package, which I only delved a little into, and it has a substantial learning curve. I have posted links below to resources that I found helpful in learning Adams.

+

+

Certain abstractions were needed to represent the robot in Adams that do not map to the physical reality. One such example is that the drive train of the physical robot is powered by a motor, which is in turn powered by a battery. The motor turns a long axle, which turns two worm gears, the worm gears then turn two 24T Lego gears, which are fixed to two axles set perpendicularly to the long axle of the drive train. In this way as the motor turns, the leg joints, which are attached to the two cross axles, revolve in a circle and the legs follow suit. When constructing the Adams virtual model, I set individual rotational motions on each of the four hip joints, so there really isn't anything to synchronize the virtual model's hips as there is in the physical model. I set the rotational speed of the virtual model as 88 degrees/sec, which I arrived at by empirically observing that it takes approximately 4.1 seconds for the physical model's legs to perform one complete rotation (360 degrees / 4.1 seconds is roughly 88 degrees per second).

+

+

Algthough there were some differences between the physical and virtual model, I feel that the virtual model I created had reasonable fidelity to the physical model, which is bourne out in the simulation video of the virtual model. In the simulation video, the robot appears to walk with much the same lurching gait as the real model, and the head and tail both swing up and down as in the real model. I have included a simulated video of my virtual model walking, as well as the actual file for my virtual model.

+

+

+

[[Media:Goodwalker.avi]]

+

+

<!--GICL Bot edit:-->[[Extrusions.zip Contents|Extrusions.zip]]

+

+

+

One aspect of virtual simulation I have explored is tolerance and parametric testing on the virtual model. When building a physical prototype, it can be far too expensive in time and materials to perform full testing of a parametric space, so in building a suitable virtual model many more tests can be run in a repeatable and efficient manner. For instance, I only had access to one motor for my robot, so I couldn't tell the top speed supported by my robot's gait. Through using the virtual model, I was able to keep increasing the rotational speed until the legs collapsed from underneath the center of gravity of the robot, which occurs around 300 degress per second. I have included a simulated video of my virtual model collapsing below.

+

+

+

[[Media:Collapses.avi]]

+

+

+

+

+

I have also created a video tutorial that shows creating part of a robot similar to mine. This tutorial demonstrates creating a robot body, attaching a hip gear as a revolute joint to the body, adding a rotational motion to the hip gear, adding a leg attached to the hip on a rotational joint, adding a foot onto the leg with a fixed joint, creating a ground plane, and adding contact forces between the ground and the foot (I realize now that I forgot to add frictional force, which is just a modification of the contact force between the ground and the leg). I also show how to set a simulation going in this tutorial. Following the tutorial step-by-step will not arrive at robot like mine with four complete legs forward walking motion, but it will demonstrate most of the steps needed to construction such a robot. I have also uploaded the robot model that was created during the tutorial, which can be loaded into an Adams environment.

+

+

+

Note: I had to break up the tutorial into individual parts due to file upload limitations, also, it may be easier to download the files than to play them in a browser--I had some difficulty playing the files myself.

+

+

[[Media:Adamsexamplepart1.avi]]

+

+

[[Media:Adamsexamplepart2.avi]]

+

+

[[Media:Adamsexample3.avi]]

+

+

[[Media:Adamsexample4.avi]]

+

+

<!--GICL Bot edit:-->[[Example.zip Contents|Example.zip]]

== Useful Links and Resources ==

== Useful Links and Resources ==

−

include lego robot book

+

I found the following book on building robots with Legos quite useful:

Latest revision as of 19:06, 17 March 2009

Contents

Introduction

My robot is modeled on a polar bear, although the lurching and maladroit gait of my creation does little justice to the grace with which that largest of surviving Ursine comports itself. I opted for a four legged creature as it would be simpler to balance than a two legged one, and would require fewer parts than a six legged one. My overall design is fairly simple, with a single drive train and motor that powers all four legs and the offsets of the leg attachments to the body providing the body with stability.

My simulation model was created using the MSC Adams View software, essentially I created an abstracted virtual model of Adams geometric primitives based loosely on the proportions of the Lego pieces in the physical model. My virtual model evolved over time to finally approximate my physical model reasonably well. The rotational speed of the hip gears on the virtual model are closely matched to what I empirically measured on my walking physical model, and the gait of my virtual model is quite similar to the physical one, both in terms of the side to side lurching and the rising and falling of the front and rear body segments. I feel that the virtual model I have created is close enough to the physical model that I can perform parametric tests on the virtual model and feel confident that the findings would apply to the physical model--this idea of simulation and testing the virtual in place of the physical being one of the core ideas in this course. To this end I have actually used my virtual model to find what rotational speed on the hip gears would cause the robot's legs to become unsynchronized, resulting in the robot's loss of leg synchronization and stability, and eventually an overall bodily collapse. This kind of testing can stand in the place of having to try out different motors on the physical robot in order to find the fastest speed sustainable by the robot.

Robot Design and Rationale

My design goals were simplicity and stability for this robot. By creating a four legged robot I didn't have to worry about correcting for the shifting center of gravity as I would in a two legged robot, and as there were only two cross axles to the central drive train I felt that a single motor could power the robot. In offsetting the legs to four different positions, I thought that I could provide stability to the robot by always having two legs diagonally across from each other touching the ground at the same time. This design also made the power distribution simple by allowing a single rotational power source to supply all four legs at the same time, since the offsets in the legs' positions are enough to keep them in the correct order relative to each other. This meant I could simply turn on the motor and have it power the legs without worrying about any kind of control program, though clearly this also limits the robot to walking forwards or backwards only (depending on the polarity of the motor wires connecting to the 9V battery power source). The 9V battery serves a dual purpose, both providing power and a counterweight to the motor.

The drivetrain consists of a single motor that provides rotational output spinning around the long axis of the robot's body. The motor is connected to a long connector axle with two worm-gears set at fixed distances along the drivetrain, these distances corresponding to the 24T gears which are centered on each of the two leg axles. The two leg axles spin in an axis perpendicular to the long axis of the robot, spinning in what would be the Y axis if the drivetrain is the X axis. As the motor spins the central drivetrain, the worm-gears on the drivetrain spin the 24T gears, which are fixed to the leg axes, and thus spin the leg axes. The hip gears are fixed to these leg axes, and provide four different positions to attach the legs. By attaching the legs in an offset position I keep the stability of the robot intact and keep the drivetrain design simple. When looking at a 24T gear, if the four holes of the gear are positioned so that each one is in one quadrant (upper left = 1, upper right = 2, lower right = 3, lower left = 4), I set the legs at offset positions so that legs diagonally opposed to each other would either be on the ground at similar times (rather than the same times, what I mean here by similar is mostly the same times) or in the air at similar times. So for the description of gear holes above, I could position the front right leg at hole 1, the rear left leg at position 2, the rear right leg at hole 3 and the front left leg at position 4.

Simplified Drive Train example

Description

Thumbnail Image (click for full size)

An example of a leg axle system, has an axle with one 24T gear fixed to the axle at the center, and a 24T hip gear fixed at either end of the axle.

Here the leg axle system is set into a frame of two cross beams set along the long axis, the axle can spin freely while being held in place between the two beams.

Here a drive train axle with worm gear is attached into cross beams that are set along the same axis as the leg axles, the drivetrain can spin freely while being held in place, as the drivetrain turns, the worm-gear spins the central 24T gear.

Actual Drive Train

Description

Thumbnail Image (click for full size)

A view of the drive train exposed, with the right side hip gears removed.

A view of the drivetrain down the long axis of the robot, with the hip gears removed

.

A view of one of the leg axles with the hip gear removed.

A view of the hip gear with the leg removed (4 different possible positions of leg can be seen).

The legs are attached to the hip gears via two rotational joints, one joint connecting the cylindrical leg extender to the hip gear, and one joint connecting the cylindrical leg extender to the leg itself. These cylindrical hip extenders create additional distance of the legs and feet from the body, which provides extra stability. The legs are fixed into the feet of the robot and are also wide for stability--just like the polar bear's wide feet which help reduce pressure by distributing the weight over a larger area, helping to prevent falls through thin ice (of course this is just wild speculation, but it sounds plausible and I wanted to highlight the bio-inspired theme again).

A 9V battery is connected to the motor through the wire, and depending on the polarity of the battery's attachment to the motor, the motor will spin clockwise or counterclockwise. The central axle then spins, and the worm-gears on the central axle spin the central 24T gears on the leg axles. The leg axles rotate the hip gears, which then lift the legs and feet. Each leg is constantly rotating around the leg axle, which means that it is lifting off the ground and moving forward (or backward), which together with the action of the other legs will propel the robot in a direction along the long central axis of the robot.

Here is a video of my physical robot walking, the book behind it is for a frame of reference.

Virtual Model and Physics Based Simulation

I created a virtual model of my robot in the Adams physics based simulation environment. Rather than representing the individual Lego blocks, I created Adams geometric primitives for each of the major parts of the robot. The proportions of the body parts to each other is roughly the same as in my Legos model. Adams allows a user to simulate the reactions of bodies in a physical reality, with forces such as friction and gravity, motions, and various attachments of bodies to each other. Adams is a complex software package, which I only delved a little into, and it has a substantial learning curve. I have posted links below to resources that I found helpful in learning Adams.

Certain abstractions were needed to represent the robot in Adams that do not map to the physical reality. One such example is that the drive train of the physical robot is powered by a motor, which is in turn powered by a battery. The motor turns a long axle, which turns two worm gears, the worm gears then turn two 24T Lego gears, which are fixed to two axles set perpendicularly to the long axle of the drive train. In this way as the motor turns, the leg joints, which are attached to the two cross axles, revolve in a circle and the legs follow suit. When constructing the Adams virtual model, I set individual rotational motions on each of the four hip joints, so there really isn't anything to synchronize the virtual model's hips as there is in the physical model. I set the rotational speed of the virtual model as 88 degrees/sec, which I arrived at by empirically observing that it takes approximately 4.1 seconds for the physical model's legs to perform one complete rotation (360 degrees / 4.1 seconds is roughly 88 degrees per second).

Algthough there were some differences between the physical and virtual model, I feel that the virtual model I created had reasonable fidelity to the physical model, which is bourne out in the simulation video of the virtual model. In the simulation video, the robot appears to walk with much the same lurching gait as the real model, and the head and tail both swing up and down as in the real model. I have included a simulated video of my virtual model walking, as well as the actual file for my virtual model.

One aspect of virtual simulation I have explored is tolerance and parametric testing on the virtual model. When building a physical prototype, it can be far too expensive in time and materials to perform full testing of a parametric space, so in building a suitable virtual model many more tests can be run in a repeatable and efficient manner. For instance, I only had access to one motor for my robot, so I couldn't tell the top speed supported by my robot's gait. Through using the virtual model, I was able to keep increasing the rotational speed until the legs collapsed from underneath the center of gravity of the robot, which occurs around 300 degress per second. I have included a simulated video of my virtual model collapsing below.

I have also created a video tutorial that shows creating part of a robot similar to mine. This tutorial demonstrates creating a robot body, attaching a hip gear as a revolute joint to the body, adding a rotational motion to the hip gear, adding a leg attached to the hip on a rotational joint, adding a foot onto the leg with a fixed joint, creating a ground plane, and adding contact forces between the ground and the foot (I realize now that I forgot to add frictional force, which is just a modification of the contact force between the ground and the leg). I also show how to set a simulation going in this tutorial. Following the tutorial step-by-step will not arrive at robot like mine with four complete legs forward walking motion, but it will demonstrate most of the steps needed to construction such a robot. I have also uploaded the robot model that was created during the tutorial, which can be loaded into an Adams environment.

Note: I had to break up the tutorial into individual parts due to file upload limitations, also, it may be easier to download the files than to play them in a browser--I had some difficulty playing the files myself.