To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.roboticsOpen lugnet.robotics in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Robotics / 25364
25363  |  25365
Subject: 
Re: Why java (or other langs) for Robots
Newsgroups: 
lugnet.robotics
Date: 
Thu, 19 Jan 2006 06:46:27 GMT
Original-From: 
dan miller <DANBMIL99@stopspammersYAHOO.COM>
Viewed: 
1952 times
  
--- PeterBalch <PeterBalch@compuserve.com> wrote:

Dan • ..
You almost had me convinced there for a moment.

heh, I'll keep trying.

4GLs are wonderful for quick "I wonder if this will work" programs. And
that's exactly what most of the robot we build are.

But such languages require a lot of housekeeping in the background and a
lot of debugging tools in the forground. They don't readily fit into a
tiny
computer. To get the best of both worlds, you need to run a 4GL on a PC
with a radio-link to a dumb robot. Once your code works, you (somehow!)
compile it down to fit into a few K of RAM.

Well I agree halfway.  Small interpreter kernels like Lua can fit easily
into the 256K flash.  The programs themselves are typically very compact.

The really scarce resource will be RAM -- 64K is quite limiting.    But
think of a setup like this: there is quick-reaction-time code running on the
robot; and the desktop machine acts more or less like a hard drive or
database.  So you need a system that is architected to cache the local data
in the robot as needed.  Lots of client/server/agent stuff, esp. in Java,
thinks this way already.

Until such a system is available for $200, we're stuck with NQC and its
equivalents in other languages.

...
There is no such practice as "typical" robot programming. There are three
rather different practices:

Type 1 People who make balancing robots want something like an analogue
computer. You set up the "circuit" for your PID controller or whatever and
then twiddle the control knobs until the robot balances. Quite a lot of
low-level robot control is like that.

Type 2 People who make simple mobile robots want something like Brooke's
subsumption. Small "behaviours" which are triggered by events: if you bump
into a wall, back up and turn left; or follow the left hand wall until you
sense an opening then expect to find some steps and ...".

Type 3 People who make robots with vision and route finding through the
desert want high-level languages to crunch enormous amount of data or
explore huge "search spaces" for the path to some goal.

Great analysis!  I've been thinking about just these issues.  Fact is,
serious roboticists are using all of these techniques simultaneously.  Only
academic purists are convinced of the one true way.  Consider a roving robot
like one from MobileRobotics.  It uses PID loops to control servos and
velocity.  There are medium-level logic routines, multitasking, to
coordinate sensor readings and react to situations like unexpected
obstacles.  Then there are high-level routines to map and navigate.  This
three-level architecture is actually just what they teach in grad school (at
least at CMU.)


Type 3 People won't be using a tiny computer. They'll mount a PC on a big
chassis and have as much processing power as they can afford. We can
forget
them. They need Lisp or Prolog or Haskell or whatever is the fashionable
languge this month. The rest of us don't.

Here's where we part ways.  I believe the type 1 and type 2 people could
easily move up to type 3 stuff, if the tools were available.  What I'm
proposing (to the degree I've actually proposed anything -- more like what
is percolating in my mind) is a system where these levels of architecture
are more naturally integrated.  My present thoughts revolve around some sort
of meta-language, that has the right properties to be implemented at all
three levels.  Low-level routines would be strongly typed and compiled for
performance and footprint, and reside directly in the controller (the NXT in
the Lego model).  Mid and High-level routines would reside mostly in the big
brain, but bits of code could be downloaded and executed on the controller
when necessary (say because of latency concerns).  All of this would be as
transparent to the programmer as possible.

Your thoughts about time domain issues (subsumption, analog circuit
metaphors, threading, etc) are right on the money.  I think a new langauge
paradigm may be necessary to capture the essence of what you need to do good
robotics.

This is very ambitious obviously, and frankly it goes beyond my interest in
Lego.  Lego for me is a tool, not an end in itself.  But it represents the
absolute best tool available for prototyping the real-world part of robotics
quickly and easily.

To sum up, I think I'm saying this: The whole combination of NXT, lego
building components, bluetooth, and the availability of cheap PC's with huge
hard drives and fast CPU's, may add up to more than the sum of the parts.
I'm just trying to think out of the box a bit, and not get stuck in the
groove of "it's just an RCX with a bit more memory".  I don't think so.

best,

dan



Message is in Reply To:
  Re: Why java (or other langs) for Robots
 
Dan (...) structures (...) youngsters for (...) You almost had me convinced there for a moment. 4GLs are wonderful for quick "I wonder if this will work" programs. And that's exactly what most of the robot we build are. But such languages require a (...) (19 years ago, 18-Jan-06, to lugnet.robotics)

2 Messages in This Thread:

Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR