Independent Study for Biobots, A Continuation
Biobots continued ...
The overall goal for this project is to further our work from the Biologically Inspired Robots class, specifically representing the behavio(u)r of robots, co-design of physical systems and software, creation of virtual worlds for behavior testing, fidelity testing between physical and virtual models, and tracking course progress in a way that is educationally valuable to future users.
A course in which the three participants attempt to build a real robot, made out of
This is a block quote from wikipedia: http://en.wikipedia.org/wiki/Lego
Design and manufacture Since their introduction in 1949, Lego pieces of all varieties have been, first and foremost, part of a universal "system". Despite tremendous variation in the design and purpose of individual pieces over the years, each remains compatible in some way with existing pieces. Lego bricks from 1963 still interlock with those made in 2007, and Lego sets for young children are compatible with those made for teenagers. Bricks, beams, axles, minifigures, and all other elements in the Lego system are manufactured to an exacting degree of tolerance. When snapped together, pieces must have just the right amount of "clutch power"; they must stay together until pulled apart. They cannot be too easy to pull apart, or the resulting constructions would be unstable; they also cannot be too difficult to pull apart, since the disassembly of one creation in order to build another is part of the Lego appeal. In order for pieces to have just the right "clutch power", Lego elements are manufactured within a tolerance of 2 µm. Since 1963, Lego pieces are manufactured from a strong, resilient plastic known as acrylonitrile butadiene styrene, or ABS. Precision-machined, small-capacity moulds are used, and human inspectors check the output of the moulds, to eliminate significant variations in colour or thickness. Worn-out moulds are encased in the foundations of buildings to prevent their falling into competitors' hands. According to the Lego Group, its moulding processes are so accurate that only 18 bricks out of every million fail to meet its stringent standards. It is thanks to this care in manufacturing that the Lego Group has maintained such a high degree of quality over the decades. Manufacturing of Lego bricks occurs at a number of locations around the world. Moulding is done at one of two plants in Denmark and Switzerland. Brick decorations and packaging is done at plants in Denmark, Switzerland, United States, South Korea and the Czech Republic. Annual production of Lego bricks averages approximately 20 billion (2 × 1010) per year, or about 600 pieces per second.
1. Brooks, Rodney. "Intelligence Without Representation." Artificial Intelligence 47 (1991): 139-159.
2. Agarwal, Pankaj K., Leonidas J. Guibas, Herbert Edelsbrunner, et al. "Algorithmic Issues in Modeling Motion."
This article is based on the report of the Workshop on Algorithmic Issues in Modeling Motion, sponsored by an NSF grant CCR-00-83-033 and an Army Research Office grant DAAD 19-00-1-0478, held on August 6 and 7, 2000 at Duke University, Durham, NC.
3. Dalvand, Mohsen M., and Majid M. Moghadam. "Stair Climber Smart Mobile Robot (MSRox)." Autonomous Robots 20, 1 (January 2006): 3-14
4. Hyneman, J., Grant Imahara, and Adam Savage. "Mythbusters Test: The Vex Robotic Design System." Robot <http://www.botmag.com/articles/vex_1.shtml>
We got the robot kits in this week and started playing with the parts. We each built our own prototype and discussed possible tasks we would want the robot to perform.
We decided to build a robot that would be capable of climbing the stairs in the Bossone Lobby. We hope to achieve the climbing motion early on and then add intelligence to the biobot so that it can predict when it is approaching stairs and determine whether the height of the stairs is too great for it to climb.
- Explore design options.
- Consider design issues (limited number of ports on NXT brick, communication between bricks)
We have performed a prototype evaluation of the following locomotion strategies and decided upon a strategy for our prototype:
- inchworm style (accordion type motion with a wheel climbing up the stair)
- flipping and crawling (having body segments that lift other body segments up onto the stair)
- tri-wheel front crawler (which we are currently going with, so more about this later)
- tank tread type design (we may come back to this one)
We got the tri-wheel idea from the paper Stair Climber Smart Mobile Robot (MSRox) in Autonomous Robots (I've attached a zip of the article html), which also has some nice comparisons of locomotive strategies and good ideas for analysis. In the first three images you can see virtual models they used to calculate the dimensions of the physical model. The fourth and final image shows the physical model they created.
Our robot will have three wheels on each of the right and left sides of the front axle. These wheels will roll when the robot is moving around on flat ground, and the entire assembly will tumble and pull the robot up stairs/obstacles when the robot is in climbing mode. There will be a single set of rear wheels, which may or may not be powered.
The current design has a single motor for the tumbling/climbing aspect, and two motors for each side (L/R) for normal rolling motion and to enable turning. As there are three sensors ports on the NXT brick, our current thinking is to have ultrasonic sonar distance detectors for all three of these sensors, though possibly we could use the compass sensor for mapping purposes. The sonars would point straight ahead and diagonally up, then we have an option of either straight behind or forward looking down to the ground, we'll have to figure this out later on. Better would be to have a single sonar that we can change the direction of, but this would take up a motor and necessitate another NXT brick in the model, and this could cause problems with tangled wires.
- Build prototype
- Explore programming options
We've built the prototype of the front of the robot with the single tumbling motor and the triangular wheel frames. We have also built a test frame for the sensors (basically a carriage with four wheels, a forward looking and diagonally upward looking sonar) that we've playing around with writing code for. We took measurements on the spiral-ish staircase in Bossone to check the height and length of the stairs, and used this in conjunction with our sensor test frame to start coming up with algorithms for the robot to determine how high of an obstacle it can climb.
After creating very simple programs with the GUI provided, we downloaded Robot C and started writing a basic control program. We successful complied and loaded this code onto the NXT brick.
- start on the virtual model of this style of locomotion, also model the Bossone stairwell environment in Adams
- come up with a definition of the behaviors for the robot (possibly a flow chart)
- figure out the programming environment (currently we are using the Lego graphical environment, which doesn't provide enough control)
- start programming the behaviors of the robot
- complete the physical prototype (add rear wheels, add gear structure to triangular wheel assembly, add drive motors, decide on a sensor package)
We have investigated different programming environments which we found on the following two sites:
Out of these we chose to start experimenting with Robot C which has a 30 day free evaluation. The main issue we have found so far is that there is only a windows version (and two of our group members have Macs). It also list on the evaluation site that it does not support the bluetooth brick to brick capability. We have run simple programs to power the motors and use the sonar sensor.
This is also the first week we have been able to test the tumbling motion on a "stair." Currently, we are using a NXT box as our stair. On the first test we realized that one motor for tumbling would not be powerful enough, so we added a second motor - one to power each triskelion.
Next we needed a motor to the back with two wheels. This added additional force to move the robot forward. This allowed the robot to climb half a stair. The robot went through many alterations over two days. We added a one to three treads and eventually came to the conclusion that we needed a new design because the tumbling motion does not have even power to lift the weight of the robot over a stair.
- Find a design that can climb stairs!
We used Adams to build virtual models of prototypes that we could not build with the physical materials that we had. One of the most interesting discoveries was that our original design could have worked:
The virtual could climb stairs. The main difference between this and our actual model in the weight distribution over the body. Since we were using one NXT brick and it is the heaviest part of the biobot we could not make something with the weight evenly spread out. In the virtual model when we made the front or back end heavier the bot tumbled. When the weights were even it was able to climb the stairs.
This video shows our virtual model with a large boxy body and two sets of triskelions (the three legged tumbling design), one on each side of the front axle, and a slightly smaller one on each side of the rear axle. Unfortunately the robot flips over backwards when trying to climb the first stair, which is what the real robot of this design did.
This next model has the large boxy body replaced with two separate boxes, one for the front axle and one for the rear. The two sections are joined together by two straight link bars coming out horizontally from each of the body segments and are fixed together. This model can climb a single stair, but isn't that stable as the link bars get hung up on the stair the same as the large boxy body did.
Next we took the link bars and changed them so that they were coming out of the boxy body segments at a 30 degree angle and then were fixed together. This robot climbs stairs, but doesn't seem particularly stable. The big advantage of this model is the fact that the link bars are not flat and so do not get caught on the stair that the robot is climbing.
Another idea we had was to replace the rear triskelions with a large wheel, but the problem with this design is that the tumbling front part could get up the first stair but the wheels were stuck below. We tried shrinking the size of the donut tires but that didn't help.
Trifront bigdonutback.avi trifront_bigdonutback.avi
We then went back to the idea of four triskelions, two on the front and two on the back, but rather than having single bars as the contact points, we added on donut shaped wheels that didn't rotate to the ends of the legs--this was more similar to our actual robot design. We went through a few revisions of this, one with the front body segment being lighter than the rear, one with the rear segment being lighter than the front, but we had the best success when both of the body segments were the same weight.
Bitridonut frontheavier.avi bitridonuts_frontlighter.avi Bitridonuts_frontlighter.avi bitridonut_frontheavier.avi
This was our final virtual model design, as mentioned above this model has 4 triskelion segments with donut shaped fixed wheels attached to each leg. It actually climbs stairs reasonably well, and even corrects itself if it slips off of a stair in case the first contact with the stair doesn't produce a good grip or decent leverage. What isn't clear is whether we could actually build an NXT lego robot of this design as we ran out of time in the course.
Climbing stairs is a more complex and interesting task than it may initially seem. After working on creating a walking biobot in the fall quarter and a stair climber this winter we have all learned that these natural everyday tasks have a lot of smaller subtasks that can be hard to model. We spent more than half of our time on this project working on a robot that used a tumbling motion to conquer the stairs. Even though our initial virtual and physical models showed little promise we continued to make modifications to this design in hopes of succeeded. The design had been successfully implemented with different materials and we thought that we would be able to mimic that with the legos. We tried changing the position of the weight, position and size of the wheels, length of the "legs" and body; unfortunately we never made it up a Bossone Lobby stair.
In the end via virtual models we learned that the design could work, but we needed a way to distribute the weight of the biobot or add more torque to the motors.