Over the last two years, we have applied methodologies developed for
domain-specific embedded languages to create a high-level robot
control language called Frob, for Functional Robotics.
The goal of Frob is to provide an environment where robot software can
be clearly, cleanly, and correctly specified, while suppressing unnecessary
implementation detail. To this end, Frob incorporates three important
notions: an implicit representation of time, equational specification
of continuous-time behaviors and asynchronous events, and functions
to construct complex, reusable abstractions. We show that these ideas
can be combined to produce many commonly used ``higher-level'' abstractions
for specifying robot programs. Experience with this approach to robot
programming suggests that it leads to effective development of robot
software while producing programs that are readable and can be reasoned
about in a formal sense.