15-494: Cognitive Robotics, Spring 2009
Richard Ha
Implemented Actions
tapGroundPoint
- Image of leg above point
- Image of leg touching point with a *tap* sound effect
The first of the actions available to the Chiara. When asked to perform this action, the Chiara will quite literally move the tip of its leg to a point directly above a provided point p and then tap the point on the ground. The point above p is a pound-defined constant in the code where it is exactly 50.0mm above p. There was also a second option available for implementing this action which was moving exactly one joint such that it would move the leg in a short arc back and forth while tapping. It was less preferable over the other option because it looked awkward and mechanical. The other was chosen for seeming to be a more natural tapping behavior.
Such a feature along with the next action could be used for interesting behaviors such as the Chiara pushing buttons to communicate or even tapping out messages in Morse code.
It is important to note that the z-coordinate is ignored for this action and the next one too. One could supply a floating point infinity as the z-coordinate and it would have no effect on its actions.
pushPoint
- Image of leg above point
- Image of leg stabbing the ground
Similar to to tapGroundPoint but rather than just tapping the ground, the Chiara tries to reach that is -10mm under the ground. This just makes the Chiara put a little bit more strength into its leg such that it could probably do better in activities such as pushing buttons without excessively wearing down the gears in the servos.
pokePoint
- Image of leg away from point
- Image of leg poking point through elvtr rotation
Unlike the previous two actions, which were actions specialized for interacting with the planar world, this action can be applied to all of 3D space within range. Given a point p, the Chiara moves the tip of its leg to p, moves the leg back by rotating the RFr:elvtr joint away from the point and then finishes by moving the leg in the opposite direction through and past p. This is how it performs a poking action.
This gives the Chiara a larger range over what it can interact with in its own environment. Now it is not restricted to the ground anymore.
flickPoint
- Image of leg before flick, make sure to display pseudo-obstacle
- Image of leg opening up and hitting object/point
reachPoint
- Image of planar leg reaching behind setObstacle
- Image of leg reaching point
grabObject
- Image of leg reaching behind object with arm
- Image of leg and arm closing around object
- Image of object being pulled in
Summary and Future Work
Despite what I was able to do with the Chiaras, there is a lot of for improvement and other work that could be done.- Write code where the leg reaches around objects. This would take advantage of the shoulder the most because it requires the leg to be parallel to the ground in order to work.
- Add more complex motions to the leg's library such as drawing lines and shapes in space. The base code is written. All one needs is some time and a little bit of work to create a large repertoire of potential actions.
- With this code, one can start making interesting behaviors for the Chiara, such as chasing after a basketball.
- (In progress) Implement code using Rapidly-Expanding Random Trees (RRTs) to allow the Chiara to reach around obstacles. Note how in the diagram below, the extra ``shoulder'' joint of the leg is rotated upwards by ninety degrees allowing the Chiara to act like a second planar leg and be able to ``reach around'' obstacles like the green circle in order to interact with a point ``behind'' the obstacle from the Chiara's reference frame.
- Using the RFr leg as a second planar leg also has benefits where it could use its two legs and try to (awkwardly) pull an object towards itself and conversely, push the object away elegantly. This is one of the many things I wanted to work on but was not able to get to doing on time.
Diagram 3
The shoulder joint rotated upwards by 90 degrees to allow the RFr leg to be used as a second (makeshift) planar leg.