Skip to main content

The Autonomous Roboticist

Since September 2016 I've been competing in the NASA Space Robotics Centennial Challenge (SRC). The challenge had a qualifying period and the final competition. I was one of the twenty teams from an international pool who qualified for the final competition. In mid-June the competitors ran their entries on a simulation in the cloud. The last few days, June 28 -30th capped the competition with a celebration at Space Center Houston, an education and entertainment facility next to the NASA Johnson Space Center.

On Thursday, the 29th, teams were invited to give presentations to the other teams, the NASA people who organized the challenge, and others. I used the opportunity to speak about my approach to the competition but also to raise the question of how an amateur roboticist, like myself, can make a meaningful contribution to robotics. 

Two ways are through competitions like this and by contributing software to the Robot Operating System (ROS). There aren't always competitions to work and ROS contributions don't fulfill my desire. In part, ROS misses the mark because before adding a new, usable package, I need to develop something new and useful. Now perhaps there are existing topics that need software and ROS packaging but how do I learn about them? 

And underlying issue for the amateur is knowing the state of the art in academia and industry. Often current academic material is behind paywalls. The amateur is also lacking in the background that lead to the current work. 

One of the reasons for this entry, and a possible new blog with the title, is to see if a third way can be found or created.

Why Autonomous?

Why the title "Autonomous Roboticist"? I started with "Amateur Roboticist" but wanted to add the term autonomous for clarity. I'm not interested in remote control 'robots' or combat 'robots', which are not robots, in my humble opinion. 

The SRC was about a humanoid robot on Mars tasked with maintaining the equipment and habitat NASA had landed there. This might be before astronauts landed or after they left but prior to another teams arrival. With the time lag between the planets and the narrow bandwidth available the robot needed to be autonomous. Human direction would take a long time and might even be overrun by events. If communication were even possible. One of the scenarios in the SRC was to realign the high-speed communications dish that was disturbed by a storm. 

The title "Amateur Autonomous Roboticist" or the permutation "Autonomous Amateur Roboticist" didn't really make sense. I then realized the two words, as used here, are close to being synonyms. An amateur is separate from established venues, i.e. is autonomous. I amateur from the title resulting in a play on the word autonomous. I want to work autonomously on autonomous robots.


I don't know.

One possible means is through affiliation with an academic group. Industry is usually precluded because of legal issues of employment, labor laws, and intellectual property ownership. They may exist with academia but there is more flexibility.

Define the Problem

If you're addressing a problem, it's useful to define the problem. Here's a list of the barrier items:

  1. What is the state of the art (SOTA)?
  2. What is needed to advance the SOTA?
  3. How can the necessary research material be obtained?
  4. How can it be translated into non-academic language, if necessary? 
About #4, an example is the use of AI in games versus robots. A specific example is the use of Behavior Trees, which I used in the competition. The academic material is dense and loaded with math which the gaming version is not. How does something similar happen to other material? 

There are other issues, I'm sure. This is just a start. 

Where can we go from here? 


Popular posts from this blog

Sensor - Accelerometer & Magnetics

Just as I was finishing my first look at the accelerometer and magnetic field sensors a couple of threads cropped up on the Android Developer's group:

I had the basic code working so dug a little deeper into the rotation routines and the timing. I posted responses on the threads but want here to dig into the details more.

First some observations applicable to my G1:

The sensors report approximetly every 20, 40 and 220 msec for FAST, GAME, and NORMAL.
A sample may be missed for a specific sensor but usually one of them will be generated - but sometimes all can be missed.
The magnetic field sensor is most reliable with only a few drops. The other sensors are dropped considerably more often.

A caveat in all this is the way I setup the sensor handling may make a difference. I have a singl…

Shifting Gears - iRobot Create

I'm shifting gears to robotics. Awhile ago I got an iRobot Create. Its basically a Roomba vacuum cleaner with the guts removed to make a cargo area. In this area is a 25-pin connector that provides power, TTL serial port, digital and analog I/O.

I also got a Command Module (CM) which fits onto the connector. The CM is an Atmega 168 processor that adds some additional I/O. It can be programmed to control the Create. I did so and basically reproduced the wandering behavior of the Create. It move around, bumps into things and turns away from what it hit. I added some additional behaviors such as if it got trapped, i.e. caught in the same place for a period of 10 secs, it would move to extract itself.

I want to do more with robots, such as entering in a RoboMagellan contest. That requires an outdoor capable robot that does a lot more than bump into things. A key component to me is vision. Maybe I could do that with the CM and another processor (like the CMUCam) but I really didn't …

Programming Languages Used for SRR

I asked at the SRR Challenge about the languages and vision processing used by each team. Here is what I found:

Team Language                       Vision Processing
Intrepid                         C++ / Matlab                                           Kuukulgur                     C++                                          OpenCV Mystic                           C++                                          RobotRealm SpacePride                    RoboRealm state machine          RoboRealm Survey                           C++, Python                             OpenCV Middleman                     LabView                                   LabView UCSC                           C/C++                                      OpenCV Waterloo                       C++, Python                                             WPI                              C++                                                              Wunderkammer             Python                                      ROS …