Thursday, February 23, 2006

More Random Observations of Insignificant Phenomena

If a sheet of 8.5x11 in. paper is taped to a wall via the top two corners, over time the bottom half of the page tends to curl inward. The cause of this is unclear but it may be caused by some form of creep or the stresses involved in temperature fluctuation if the top half of the paper is held fixed. Moisture might have something to do with. The curl might act as a sort of temperature gauge that increases curl with heat and the temperature the paper was taped at. The curl might also be used as a way of moving and sorting papers such as those used in copiers and printers.

Gum tends to accumulate on concrete sidewalks over time. The gum is always blackened and flat and proportional to the age of the fresh pavement. The amount of gum covering could be used as a measurement of age or cultural customs. Perhaps it could also be used as a measurement of economic prosperity, littering laws and the perception of littering laws. The gum itself might be harvestable for some recyclable purpose such as adhesives, mortar, or ceramic products.

In most modern toasters, bread crumbs tend to accumulate at the bottom over time. People rarely empty or clean these toasters out during the lifetime of the toaster. The breadcrumbs are usually burnt or dried out and thus do not decompose very well. Any decomposition is usually killed by the daily toasting temperatures that exceed the boiling point of water. The bottom of toasters might serve as an useful testbed for equipment to be used in space due to the extreme variations in temperature and the biological barreness. The bread crumbs might also be harvested and used a source of food or perhaps the base in some recipe.

Saturday, January 28, 2006

Observations of the Palm Tree in Front of My Apartment

While observing a withered palm tree in front of my apartment, I noticed several different activities that this tree is simultaneously engaged in. For one, it is gradually trying to curve around the corner of my apartment building since our building is largely blocking out the sun. The tree is growing at a 80 degree angle from the ground plane. To balance its weight, there is a significant bulk of bark and husk of where another tree once grew right next and attached to the palm tree. The palm tree has taken this material for its own, wrapped it in its own bark, and subsequently using this as a counter weight to its sideways growing motion. It is not clear whether this tree is intentionally using this as a counterweight or it actually grew this extra material for this purpose. However, it appears to be doing just that.

The dead tree stump right next to it was cut in some age past and one can notice how hollow it is by knocking on the wood. However, the bark seems to be alive and a product of the main living tree. The palm tree has also been cut in several different places over the past and terminated those branches with some new bark covering. Old battle scars from a gardener long past.

What intrigues me is what could be the purpose of the dead palm fronds that hang on to a palm tree long since they've become brown and non-photosynthetic. Possible theories include discouraging primates, jaguars, or humans from trying to climb the tall trees, and another is that the dead fronds are used as a sort of shade along the base of the tree to keep it from over-heating and loosing moisture during the hot summers. It is also observed that these fronds only seem to fall off during rain and wind storms. Perhaps this a form of reproduction. It is not clear from observation of this tree how it goes about reproduction.

Jacob Everist

Tuesday, April 12, 2005

Node Synchronization

Suppose you have many robots in an area or perhaps you have wireless sensors distributed in an environment. However, you would like to get them all synchronized so that they have the same time or that they do an action all simultaneously. How would you do this?

This is a problem of time and how to keep it across multiple locations on different computing resources. One solution is to just start all the nodes at the same time so they all have the same digital clock time. But this requires time-keeping hardware and the guarantee that nothing will ever happen to the nodes that will cause them to lose power temporarily or drift from their synchronized time. In fact, processors track time at different rates for a variety of different reasons, but this isn't important right now. The question is, what are ways you can synchronize these nodes?

Assuming you have the ability to communicate with your neighbors through a wireless communication, you can implement something called a pulse-coupled oscillator. This is essentially modeled after natural phenomena such as crickets, fireflies, and pacemaker cells. Each individual member in the population emits a periodic "cry" or "signal". In the case of crickets, its the screach. In the case of the firefly it's the photoluminescent flash of its torso. However, over time the periodic pulses of the individuals begin to synchronize over time by gradually adjusting their period to that of their neighbors. This allows you to synchronize the whole population without any notion of "global time" or a centralized time-keeper.

This phenomenon is very interesting and if you're interested in knowing how to implement it in a technological system, you can read this paper[1] on how they used it in coordinating the data transmission times in a wireless sensor network to conserve power.

[1] Wakamiya, N., Murata, M., "Scalable and Robust Scheme for Data Fusion in Sensor Networks", Proceedings of the First International Workshop on Biologically Inspired Approaches to Advanced Information Technology, Lausanne, pp. 305-314, January 2004

Thursday, April 07, 2005

Robot Software

One of the difficulties of doing research on robotic platforms is the lack of available software to accomplish basic functions like obstacle avoidance, mapping, vision, etc. For those software components that are available, they only work in limited circumstances on certain platforms. This situation makes the prospect of doing your own original robotics application an especially daunting task because you will have to re-write a lot of software to accomplish basic functions-- in effect, re-inventing the wheel.

The study of Robot Software Architectures seeks to alleviate the numerous problems encountered by novice robot programmers by providing easy and simple frameworks in which to test applications and re-utilize old software written by other groups for possibly different robot platforms.

MARIE is a project that seeks to unify and integrate all the various disparate software packages and testing suites. This would allow a person to rapidly develop and test software using tools that were not designed to work together.

Player is an abstracted device interface to various robotics research platforms. This allows you to run your programs on the real robot as well as on the two simulation environments, Stage and Gazebo.

Thursday, March 10, 2005

Conflicts of Resources

One of the things that you will discover when you try to build your own autonomous robot is the competing and conflicting demands for resources. These generally include the following:
  • Sensors
  • Computation
  • Power
  • Communication
  • Motor Speed / Torque
  • Size
  • Time
You want your robot to do smart things so you need computation. But running an 800MHz processor takes a lot of power. Presumably you won't be plugging your robot into the wall, so you'll need to carry on-board batteries. If you need lots of power, you'll need big batteries which take up space and will increase the weight of your robot and demand more power from your motors which in turn demand more power from your batteries.

Communication is a requirement for some robots to transmit data to their masters or to their robot brethren. In some cases, communication is also a way of circumventing the need for bulky on-board computation and just running most of the code on a server. But communication also requires power. And communication also adds delay to the performance of your robot.

You can begin to see the interconnecting constraints that all of these resources impose on each other. This is where engineering comes in and you need to roll up your sleeves and just try some designs, gain some experience, and learn what you can. Talking to others who have gone down this gauntlet can be helpful, but they may have taken a different path and they may have missed some shortcuts on the way. Plus technology improves over time and becomes cheaper. Things that were impossible 5 years ago may now be practical.

Wednesday, March 09, 2005

Future of Construction Robots

One of the big applications I see for the future of robotics is in construction. Particularly, I think the field is ripe for earth-moving robots. We currently have all the raw materials in the form of large manually-operated construction vehicles from likes of John Deere and Caterpillar. All that is needed are these vehicles to be given electronic controls and put a computer in-charge of their operation.

What makes the task of earth-moving easier from an autonomous robot perspective is that there isn't a lot of activities that require the articulate manipulation of human hands. Most of the activities can be done using large equipment and thus can be done autonomously.

However, there remains an economic return issue that needs to be resolved. Why should a construction company buy one of these autonomous tractors that are complicated to control, only good for a specialized purpose, a potential safety hazard, and a liability instead of just hiring a worker on an hourly wage?

This is something that needs to be addressed, but I think the answer to this question is scale. An autonomous tractor would be useful and economic for very large projects. Suppose you are digging a strip-mine. It would save a lot of money if you put robots in charge of hauling dirt and digging into the earth instead of having to pay humans to do the work *and* have to shut down during the night.

Farming could be another application where an automaton could be of use. There are large expansive farms that require tilling, fertilizing, and harvesting. These farms are often thousands of acres in size. The current method of doing things is only possible with lots of cheap immigrant labor. There could be a niche for a robot if the cost of labor goes up dramatically, or the selling price of crops goes down dramatically. Or maybe yet, a robot could even undercut cheap labor.

Thursday, March 03, 2005

Walking Gaits

Walking gaits are the study of legged motion and how legs can be used to produce different kinds of motion. We're interested in learning how to control these legs, and also we want to extract general principles of legged motion, so we can easily port these to novel robot designs.

There are the typical bipeds which is what humans are, two-legged creatures. And there are the quadruped and hexapod creatures that have 4 and 6 legs respectively.

We often look to biological organisms and what their solutions are for legged motion. You can look at Kimura for examples of taking biological concepts and porting them to robots. I'm studying quadrupeds right now, so most of his papers are on quadrupeds, but I beliieve he does more general research.

Basically, they use neural oscillators to generate the movements of the joints. All of the oscillators for each joint are coupled, or "mutually entrained" as he says. I believe this also means that they're conditioned to respond to each other effectively just like you would train any neural network. This also makes the robot control adaptive since the oscillators are sensitive to the joint angles.

Of course, the problem with this is that you need to be doing numerical operations in real-time and also communicate the entrainment between all the joints in real-time. This is easy to do if you build a custom robot for this application, but on a generic robot platform, communication and computation becomes an issue.