<?xml version="1.0"?>
<rss version="2.0.">
  <channel>
    <title>robots.net blog for RoboDo</title>
    <link>http://robots.net/person/RoboDo/</link>
    <description>robots.net blog for RoboDo</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sat, 17 May 2008 02:52:43 GMT</pubDate>
    <item>
      <pubDate>Sat, 12 Apr 2008 00:34:38 GMT</pubDate>
      <title>12 Apr 2008</title>
      <link>http://robots.net/person/RoboDo/diary.html?start=8</link>
      <guid>http://robots.net/person/RoboDo/diary.html?start=8</guid>
      <description>&lt;b&gt;RoboDo - Distractions&lt;/b&gt;&lt;br&gt;&lt;br&gt;&#xD;
BrainBoy and the Slug: BrainBoy was an NXT bot which&#xD;
navigated with the sonic sensor, while the Slug had no&#xD;
sensors. The 2 were in communication via bluetooth, with&#xD;
BrainBoy recording its movements, introducing a 3 move lag,&#xD;
then transmitting moves to the slug, who just followed&#xD;
along. I was exploring an idea for the robotic&#xD;
transportation of military goods where a manned truck would&#xD;
be followed by an unlimited number of unmanned robot trucks&#xD;
carrying supplies.&lt;br&gt;&lt;br&gt;&#xD;
The Chariot: The Chariot was another experimental bot which&#xD;
featured a front powered section (without sensors) which&#xD;
pulled a trailer containing a sensor array. Having the&#xD;
sensors in an unpowered trailer allowed me to build a sensor&#xD;
array that was capable of continuous 360 degree&#xD;
rotation.&lt;br&gt;&lt;br&gt;&#xD;
Just for the record... this intensive electromechanical&#xD;
research and development phase, involving numerous&#xD;
iterations, each exploring different design possibilities&#xD;
while keeping within the physical constraints of the&#xD;
available robotic prototyping system should never be&#xD;
confused with "playing with Legos." Someone needs to explain&#xD;
this to my girlfriend.&lt;br&gt;&lt;br&gt;&#xD;
Ok, maybe the robo-forklift was just for fun.&lt;br&gt;&lt;br&gt;&#xD;
</description>
    </item>
    <item>
      <pubDate>Mon, 31 Mar 2008 01:09:36 GMT</pubDate>
      <title>31 Mar 2008</title>
      <link>http://robots.net/person/RoboDo/diary.html?start=7</link>
      <guid>http://robots.net/person/RoboDo/diary.html?start=7</guid>
      <description>&lt;b&gt;RoboDo - Toddler&lt;/b&gt;&lt;br&gt;&lt;br&gt;&#xD;
RoboDo will eventually be a biped humanoid, but that is a&#xD;
long way off. For the moment, I will concern myself with&#xD;
laying the foundations. The RoboDo series of bots is&#xD;
building towards the main project goal.&lt;br&gt;&lt;br&gt;&#xD;
The latest incarnation in the series is RoboDo Toddler,&#xD;
based on the Lego NXT system. RoboDo Toddler is actually&#xD;
like 2 robots in one.&lt;br&gt;&lt;br&gt;&#xD;
The top section contains an NXT controller, an ultrasonic&#xD;
sensor with 180 degrees of motion (right-left), and 2 sound&#xD;
sensors. The top section will handle the decision making&#xD;
processes.&lt;br&gt;&lt;br&gt;&#xD;
The bottom section features an NXT controller, 2 touch&#xD;
sensors, and 2 light sensors.&lt;br&gt;&lt;br&gt;&#xD;
The top part looks around and maps out where the bot can and&#xD;
can't go from it's current position. It then decides what to&#xD;
do, sets the numerical variable "order" to a number&#xD;
representing its choice, then sends the value to the bottom&#xD;
section via bluetooth.&lt;br&gt;&lt;br&gt;&#xD;
The bottom section sits and waits for a message. When one is&#xD;
received, it executes the order if possible. It then returns&#xD;
a status message to the top section and waits for further&#xD;
orders.&lt;br&gt;&lt;br&gt;&#xD;
The bottom section usually just follows the instructions&#xD;
passed to it from the top section, but there are times when&#xD;
it can't follow these instructions. For example, if the&#xD;
bottom section gets an order to move forward when the front&#xD;
bumper sensor shows that way to be blocked, this condition&#xD;
is recognized and the bottom section instead follows&#xD;
instructions specific to this condition.&lt;br&gt;&lt;br&gt;&#xD;
In any case, the bottom section generates a status message&#xD;
which it sends to the top unit, again via bluetooth. This&#xD;
status message not only lets the top know what's going on in&#xD;
the other unit, it also serves as a timing signal; the top&#xD;
will sit and wait for this message before thinking about its&#xD;
next move.&lt;br&gt;&lt;br&gt;&#xD;
The NXT-G language seems rather limited, but the custom&#xD;
blocks allow the creation of simple behavior "chunks" which&#xD;
can then be assembled into much more complex behaviors. The&#xD;
graphical interface allows one to make visual sense of the&#xD;
interactions, which makes development go much faster. Yes, I&#xD;
will be going to a more powerful language one day, but NXT-G&#xD;
is perfect for this stage of my project.&lt;br&gt;&lt;br&gt;&#xD;
Adopting coding standards, even at this early stage, is&#xD;
crucial. Top and Bottom sections may run different code, but&#xD;
they both use the same variables for the same functions.&#xD;
Custom blocks used only by the top section all start with&#xD;
the letter "T" and those used by the bottom start with "B".&#xD;
The icons used also display a consistent pattern. These&#xD;
"small" details will pay big dividends as the project gets&#xD;
more complicated.&lt;br&gt;&lt;br&gt;&#xD;
The control scheme, based on "orders" and "reports" is&#xD;
simple and effective, and allows co-operation between the&#xD;
sections. The top section decides what to do, but the bottom&#xD;
section is allowed some flexibility in how to carry out the&#xD;
orders. I am starting with a very simple set of possible&#xD;
actions, but once I get the system itself working properly,&#xD;
I expect to develop much more complex responses. I think the&#xD;
basic control scheme will scale up well.&lt;br&gt;&lt;br&gt;&#xD;
More soon...</description>
    </item>
    <item>
      <pubDate>Tue, 25 Mar 2008 15:26:14 GMT</pubDate>
      <title>25 Mar 2008</title>
      <link>http://robots.net/person/RoboDo/diary.html?start=6</link>
      <guid>http://robots.net/person/RoboDo/diary.html?start=6</guid>
      <description>&lt;b&gt;Baby's First Words&lt;/b&gt;&lt;br&gt;&lt;br&gt;&#xD;
My little NXT bot, RoboDo Baby, has uttered its first word,&#xD;
which was, "Ooops."&lt;br&gt;&lt;br&gt;&#xD;
I'm using the sounds to help me figure out what's going on&#xD;
in the program as it runs. &lt;br&gt;&lt;br&gt;&#xD;
Right now, Baby moves forward until it detects something&#xD;
within 10 inches. Once it detects something in its way, it&#xD;
says "ooops" then calls a custom scan block which returns&#xD;
range data for 90 degrees right and left, 45 degrees right&#xD;
and left, and straight forward. This data is then passed to&#xD;
a primitive mapping block which sets the variables right,&#xD;
front right, front, front left, and left to either "1" (can&#xD;
enter) or "0" (can't enter.)&lt;br&gt;&lt;br&gt;&#xD;
If the way is clear in only one direction, Baby says "turn"&#xD;
followed by the clear direction. Baby will then turn in that&#xD;
direction and restart the movement routine. &lt;br&gt;&lt;br&gt;&#xD;
If both right and left are valid options, Baby will randomly&#xD;
pick a direction. When this happens, Baby says, "Mindstorm"&#xD;
before making its choice. Introducing random elements gives&#xD;
me the ability to dynamically weight these decisions at some&#xD;
later time.&lt;br&gt;&lt;br&gt;&#xD;
Two variables are set whenever Baby turns: "dist-turn"&#xD;
resets the distance Baby has traveled since the last turn,&#xD;
and "last-turn" records the last turn direction.&lt;br&gt;&lt;br&gt;&#xD;
These variables are used in a special case where Baby has&#xD;
wandered down a corridor where turning is impossible. In&#xD;
this case, Baby says, "ooof" backs up to its last&#xD;
turning point, then turns in the same direction again, which&#xD;
 sends it back the way it originally came from.&lt;br&gt;&lt;br&gt;&#xD;
I'm having problems with the turns. It's hard to get&#xD;
accurate 90 degree turns, so Baby crawls in odd directions.&#xD;
The easiest solution will be to get the compass sensor, and&#xD;
that's what I intend to do.&lt;br&gt;&lt;br&gt;&#xD;
Baby also hits its back end sometimes when it turns. Since&#xD;
RoboDo will have bluetooth communications between torso and&#xD;
legs, I am considering getting a second NXT kit so I can&#xD;
play with NXT to NXT communications via bluetooth. This&#xD;
would also give me more sensors and servos so I could have&#xD;
the bot navigate more effectively. If I do get another kit,&#xD;
expect RoboDo Baby to be replaced by RoboDo Toddler. :-)&lt;br&gt;&lt;br&gt;&#xD;
That's all for now.</description>
    </item>
    <item>
      <pubDate>Sun, 23 Mar 2008 11:19:26 GMT</pubDate>
      <title>23 Mar 2008</title>
      <link>http://robots.net/person/RoboDo/diary.html?start=5</link>
      <guid>http://robots.net/person/RoboDo/diary.html?start=5</guid>
      <description>&lt;b&gt;RoboReality&lt;/b&gt;&lt;br&gt;&lt;br&gt;&#xD;
Ok, so maybe building a 32 DOF biped humanoid Kung-Fu bot&#xD;
isn't the best "first project". Though confident I can&#xD;
mostly handle the mechanical end, the computer end is way&#xD;
beyond me... for now.&lt;br&gt;&lt;br&gt;&#xD;
I can't afford to spend thousands of dollars on parts all at&#xD;
once, and even if I could, the complexity of getting it all&#xD;
working together would be quite overwhelming.&lt;br&gt;&lt;br&gt;&#xD;
So I bought a Mindstorms NXT.&lt;br&gt;&lt;br&gt;&#xD;
I'm a "hands on" kinda guy, so this will give me the chance&#xD;
to get some experience with the sensors and programming...&#xD;
real world interaction.&lt;br&gt;&lt;br&gt;&#xD;
I built and unbuilt RoboDo Zigote and RoboDo Fetus, learning&#xD;
as I went. I'm pretty happy with the newest incarnation,&#xD;
RoboDo Baby, which has 2 driven front wheels and one&#xD;
unpowered rear wheel. The ultrasonic sensor is mounted on&#xD;
the 3rd servo, and the sound, light, and touch sensors are&#xD;
mounted up front too.&lt;br&gt;&lt;br&gt;&#xD;
So far, Baby crawls forward until it detects something&#xD;
within 10 inches. It then looks left and right, recording&#xD;
the sensor readings. Baby then turns in the direction&#xD;
offering the most room and starts crawling forward&#xD;
again.&lt;br&gt;&lt;br&gt;&#xD;
The next evolution will be to use data from the other&#xD;
sensors to build a more sophisticated control scheme. For&#xD;
example, I would like Baby to tend to turn towards the light&#xD;
when blocked forward but right and left are both clear. I&#xD;
want to mess around with weighting sensor reading to&#xD;
influence control decisions, which will all be probabilistic&#xD;
in nature.&lt;br&gt;&lt;br&gt;&#xD;
Another thing I am going to start developing is a mapping&#xD;
routine. I'll start with a limited 6" grid, perhaps as small&#xD;
 as 10X10. I'll preload areas outside the map as "0" or&#xD;
unreachable, start Baby in a known location and orientation,&#xD;
and let Baby fill in the rest of the map as either "1"&#xD;
(reachable) or "0" (unreachable). This will, no doubt, give&#xD;
me all kinds of problems to overcome or work around.&lt;br&gt;&lt;br&gt;&#xD;
The NXT-G language is interesting, but can seem like trying&#xD;
to build a bridge with dominoes sometimes. I am looking into&#xD;
options here, and am leaning towards switching to NXC&#xD;
soon.&lt;br&gt;&lt;br&gt;&#xD;
I have not given up on RoboDo. The RoboDo Baby work will lay&#xD;
the foundations for what is to come later. I would expect to&#xD;
 use a succession of platforms in this project, and this is&#xD;
but the first.&lt;br&gt;&lt;br&gt;&#xD;
That's all for now...</description>
    </item>
    <item>
      <pubDate>Tue, 18 Mar 2008 17:14:07 GMT</pubDate>
      <title>18 Mar 2008</title>
      <link>http://robots.net/person/RoboDo/diary.html?start=4</link>
      <guid>http://robots.net/person/RoboDo/diary.html?start=4</guid>
      <description>&lt;b&gt;RoboDo: Overall Control Ideas, Awareness&lt;/b&gt;&lt;br&gt;&lt;br&gt;&#xD;
RoboDo should be able to amuse, entertain, educate... and&#xD;
fight. In order to do these things, the robot will need a&#xD;
certain awareness.&lt;br&gt;&lt;br&gt;&#xD;
The most basic levels of awareness will operate&#xD;
automatically, no matter what the control mode. These&#xD;
include...&lt;br&gt;&lt;br&gt;&#xD;
RoboDo should be aware of its body position, center of&#xD;
gravity, and current and upcoming motions in order to&#xD;
maintain its balance. A 2 axis gyro/3 axis accelerometer&#xD;
combo will be the main sensor in this sub-system, and&#xD;
corrections should be applied in real time, without&#xD;
involving upper level subsystems.&lt;br&gt;&lt;br&gt;&#xD;
RoboDo should be aware of its environment. Mapping (including&#xD;
sonic mapping) will be a key process, at least in most&#xD;
modes. The head mounted Ping ultrasonic sensor, head mounted&#xD;
sound detectors, and hip&#xD;
mounted Sharp IR sensors will provide  the data. This&#xD;
environmental data will&#xD;
automatically limit the robot's actions. For example, the&#xD;
"walk forward" command would be disabled if there was a wall&#xD;
directly ahead.&lt;br&gt;&lt;br&gt;&#xD;
This lower level data (balance and mapping) would be used by&#xD;
the mid level subsystems...&lt;br&gt;&lt;br&gt;&#xD;
The localization sub-system would add the "you are here"&#xD;
sticker to our map. This subsystem would use data from the&#xD;
onboard compass, mapping sensors, and vision system to&#xD;
determine the robot's position. (The ceiling, with its&#xD;
uncluttered straight lines and clear intersections might&#xD;
prove useful here)&lt;br&gt;&lt;br&gt;&#xD;
The tracking subsystem will use the vision system to detect&#xD;
and track moving objects. This will probably involve&#xD;
capturing several frames and comparing them to see what's&#xD;
changed. The camera will have servo control of tilt and pan&#xD;
and automatically track the closest object in certain&#xD;
modes.&lt;br&gt;&lt;br&gt;&#xD;
Upper level subsystems related to awareness include the&#xD;
actions subsystem, which maintains an array containing all&#xD;
of the actions RoboDo can perform. Mode constraints will&#xD;
eliminate some of these possible actions. For example, the&#xD;
"do a cartwheel right" action isn't available in "Explore&#xD;
and Map" mode. Map constraints further limit the actions,&#xD;
and other subsystems may limit the available actions&#xD;
too.&lt;br&gt;&lt;br&gt;&#xD;
These subsystems will work together to provide a certain sensory&#xD;
awareness. Through them, RoboDo will be aware of its body&#xD;
position and center of gravity, it will sense its&#xD;
environment and know where it can and can't go... what it&#xD;
can and can't do. It will also recognize and track other&#xD;
moving objects in its environment.&lt;br&gt;&lt;br&gt;&#xD;
Anyway, that's the general idea as it stands now.</description>
    </item>
    <item>
      <pubDate>Tue, 18 Mar 2008 14:58:17 GMT</pubDate>
      <title>18 Mar 2008</title>
      <link>http://robots.net/person/RoboDo/diary.html?start=3</link>
      <guid>http://robots.net/person/RoboDo/diary.html?start=3</guid>
      <description>&lt;b&gt;RoboDo Seeds&lt;/b&gt;&lt;br&gt;&lt;br&gt;&#xD;
I'm using my blog as a notebook... to keep track of the ever&#xD;
changing idea that may one day become real. I suspect that&#xD;
what I write is so far below what some here are doing that&#xD;
it seems laughable. Much of it is probably unworkable, too&#xD;
complex, too simple, or just plain wrong. Writing this stuff&#xD;
helps me understand by exposing what I don't understand.&lt;br&gt;&lt;br&gt;&#xD;
I got sucked into this biped robot thing when I stumbled&#xD;
upon a video from one of the Robo-One competitions. It was&#xD;
rather amusing, actually. The 'bots stood (sometimes)&#xD;
flat-footed, in a normal standing stance, and sometimes&#xD;
flailed away. As often as not, their own exertions caused&#xD;
them to topple. Huge lags between moves showed serious flaws&#xD;
in the control scheme. THIS was the current world&#xD;
standard?&lt;br&gt;&lt;br&gt;&#xD;
My inner engineer recoiled in horror. A quick look at the&#xD;
bots themselves revealed that most of them were unable to&#xD;
assume a proper fighting stance. What the world needs,&#xD;
thought I, was a robot that can learn Kung Fu.&lt;br&gt;&lt;br&gt;&#xD;
The new bot, dubbed RoboDo, would need to have an autonomous&#xD;
 fighting mode, and this itself presented a problem. Did I&#xD;
really want to create a 2' high terminator?&lt;br&gt;&lt;br&gt;&#xD;
To win, my bot would have to lock onto a target, close to&#xD;
striking range, then deliver an attack... all under its own&#xD;
command. Clearly, safeguards would have to be devised.&lt;br&gt;&lt;br&gt;&#xD;
It should be possible to place the fighting routines on a&#xD;
flash card, and only insert the card during actual&#xD;
competitions or when "training" the bot. (Ok, a 2' bot with&#xD;
very limited battery life isn't going to take over the&#xD;
world, but we don't want him mauling the dog.)&lt;br&gt;&lt;br&gt;&#xD;
So it seems possible.&lt;br&gt;&lt;br&gt;&#xD;
Mechanically, the bot isn't all that difficult. I have most&#xD;
of the details more or less worked out, and am confident I&#xD;
could build it. I don't have the funds to build it all at&#xD;
once, and frankly, don't have the expertise required to&#xD;
program it.&lt;br&gt;&lt;br&gt;&#xD;
But I can start somewhere and learn as I go. I have an&#xD;
overall idea of where I want to take this project. I'll&#xD;
probably end up getting one USB servo controller and a few&#xD;
servos and building an arm or leg or something.&lt;br&gt;&lt;br&gt;&#xD;
Maybe I'm just not smart enough to be intimidated by&#xD;
this.&lt;br&gt;&lt;br&gt;&#xD;
more later</description>
    </item>
    <item>
      <pubDate>Sun, 16 Mar 2008 19:11:14 GMT</pubDate>
      <title>16 Mar 2008</title>
      <link>http://robots.net/person/RoboDo/diary.html?start=2</link>
      <guid>http://robots.net/person/RoboDo/diary.html?start=2</guid>
      <description>&lt;b&gt;RoboDo Control: Revised&lt;/b&gt;&lt;br&gt;&lt;br&gt;&#xD;
One of my design goals in the RoboDo project is to establish&#xD;
"levels" of control which mimic, in some small way, the&#xD;
interactions found in nature.&lt;br&gt;&lt;br&gt;&#xD;
When you wake up in the morning, what do you do?&lt;br&gt;&lt;br&gt;&#xD;
I open my eyes and look at my environment. My body tells me&#xD;
I am lying down. My mind then determines that I am in bed in&#xD;
my bedroom. I then mentally review my priorities and decide&#xD;
what to do next. This almost always involves getting out of&#xD;
bed.&lt;br&gt;&lt;br&gt;&#xD;
Note that most of this is done more or less automatically,&#xD;
and that different "systems" are involved. Note also that&#xD;
some of these systems are under the direction of other&#xD;
systems, but that the "lower level" systems don't need&#xD;
detailed instructions in order to perform their routine&#xD;
tasks. When we decide to walk, for example, we don't need to&#xD;
concentrate on moving each muscle... our legs know how to&#xD;
walk. It's exactly this sort of layering I want to&#xD;
explore.&lt;br&gt;&lt;br&gt;&#xD;
I now see that I will need more processing power and memory&#xD;
than that provided by the typical microcontroller, so I am&#xD;
looking at a single board computer (SBC) instead.&lt;br&gt;&lt;br&gt;&#xD;
The new scheme includes a SBC with a 500Mhz processor, 1 gig&#xD;
of RAM, 4 USB ports, 4 com ports, a flash card slot, and&#xD;
fast Ethernet. A 16 channel USB servo controller in the hips&#xD;
will control the legs, while another in the torso will&#xD;
control the arms. A 4 channel USB servo controller will&#xD;
handle the torso bend and torso rotate, as well as the head&#xD;
tilt and pan. The torso will also contain a USB I/O board&#xD;
for the sensors.&lt;br&gt;&lt;br&gt;&#xD;
Of course, all of this is subject to change.   :-)&lt;br&gt;&lt;br&gt;&#xD;
More to follow...&#xD;
</description>
    </item>
    <item>
      <pubDate>Sun, 16 Mar 2008 17:50:52 GMT</pubDate>
      <title>16 Mar 2008</title>
      <link>http://robots.net/person/RoboDo/diary.html?start=1</link>
      <guid>http://robots.net/person/RoboDo/diary.html?start=1</guid>
      <description>&lt;b&gt;Humanoid Robot Joints - The Hips&lt;/b&gt;&lt;br&gt;&lt;br&gt;&#xD;
&#xD;
&lt;p&gt; The hip joints of today's popular bipedal robots have many&#xD;
limitations. More articulation in this area would allow much&#xD;
greater range of motions.&lt;br&gt;&lt;br&gt;&#xD;
&#xD;
&lt;p&gt; After playing around a bit, I have come up with a design&#xD;
which I intend to use in my RoboDo project. Here's a rough&#xD;
picture...&lt;br&gt;&lt;br&gt;&#xD;
&lt;img src="http://www.lorehold.com/robodo/images/hips.png"&gt;&lt;br&gt;&lt;br&gt;&#xD;
&#xD;
&lt;p&gt; The "stride" servos (the topmost ones) are connected to&#xD;
their respective legs with either chain or gears, which&#xD;
allows us to reduce the 180 degree servo motion to 120&#xD;
degrees. This will produce a modest gain in power while&#xD;
limiting the travel in this joint to 75 degrees forward and&#xD;
45 degrees backwards.&lt;br&gt;&lt;br&gt;&#xD;
&#xD;
&lt;p&gt; The main benefit however, is that this allows us to have the&#xD;
leg joint supported by a solid shaft and 2 bearings.&lt;br&gt;&lt;br&gt;&#xD;
&#xD;
&lt;p&gt; The leg rotate servos are also supported by 2 bearings. I&#xD;
just don't like the idea of hanging the whole leg off of a&#xD;
single, cantilevered support point.&lt;br&gt;&lt;br&gt;&#xD;
&#xD;
&lt;p&gt; At first glance, the "leg lift" servos (the lowest ones&#xD;
pictured) may seem redundant, but these servos will allow&#xD;
RoboDo to kick higher when the legs are rotated to their&#xD;
normal walking position, and allow freedom of motion in this&#xD;
area when the legs are rotated to other positions.&lt;br&gt;&lt;br&gt;&#xD;
&#xD;
&lt;p&gt; More soon...</description>
    </item>
    <item>
      <pubDate>Sat, 1 Mar 2008 19:58:08 GMT</pubDate>
      <title>1 Mar 2008</title>
      <link>http://robots.net/person/RoboDo/diary.html?start=0</link>
      <guid>http://robots.net/person/RoboDo/diary.html?start=0</guid>
    </item>
  </channel>
</rss>
