Saturday, August 7, 2010

Farewell to EURECA

Hi all, I hope you enjoyed reading my posts for my accomplishments this summer.
I would like to take this time to say a couple of my last thoughts about EURECA.

So, I have been involved in the Pharos robotics team this summer to develop a couple of tasks for our new Proteus platform.
Like I explained in the last post, most of the milestones came together in the last few weeks of the summer when we were able to work with more robots instead of simulation.

I wish, however, that I had a stronger background in the underlying theory so that our algorithm is fortified with the backbones of concrete theory.
Most of the algorithm that we developed this summer was tweaked in order to best fit the goals of Proteus.
It was an ineffably amazing experience though, when the robots started following the lines and avoiding cardboard walls we made!
Participating in hands-on research programs like EURECA is a definite refreshment from the theoretical world that we all enjoy (!?) in school.

Overall, I felt like I opened my vision towards engineering; for those of you that are more stimulated by the hands-on experience, this is a great program for you!
The amount of community in the group was also fantastic, and was exciting to attend the numerous social events that were set up this summer.

Alright, that might explain most of my thoughts. Thanks for reading!

-- Arthur

Thursday, August 5, 2010

EURECA research summary

I've experienced a full 9 weeks of the exposure to great experience with the Pharos lab group.
Let me summarize the accomplishments that were made this summer by our team.

If you remember my second post, our goal was to develop new tasks to the new Proteus platform.
In my previous post, I clarified that those two tasks were line following and obstacle avoidance.

Although coming up with different algorithms and ideas for actually writing the codes for the tasks were not difficult, testing them on both simulation and physical robots became a challenge for our software guys (where I mainly lived in this summer).

Simulation:
There were various simulation driver settings and environments that weren't entirely reliable in the goals that we wanted to achieve.
For example, there was a camera driver called blobfinder in the player library, along with a driver called ptz (pan tilt and zoom) for control features for the camera.
However, the ptz driver was not available for the current version of Stage simulation, so the robots within the simulation environment could only look straight forward.

Physical robots:
For a substantial portion of the summer, the hardware parts for the sensor plane were not available.
This caused a delay in the number of robots that we were able to test with, and that became a huge problem for things like obstacle avoidance, which we wanted to run on multiple robots.
However, most of the hardware sources became ready recently and we now have had three robots to test with!

Getting back to the updates on development of those two tasks:
Line following:
Since about two weeks ago, we started to test our algorithm using thin black tapes.
We drew arbitrary paths and turns in order to see the strengths and weaknesses of our code.
For slow speeds (up to about 0.4 m/s), our implementation works fantastic!
We did have a problem with sharp turns, where our robots were not able to track the lines fast enough and would lose the lines.
Replacing the thin tapes with thicker tapes may have helped, but this may be the fact that turns are no longer as abrupt as they were when the tape was thin.
There is definitely more room for this task to grow and to improve, such as making use of the ptz driver in the future.

Obstacle avoidance:
You might remember that I talked about an already developed algorithm called VFH.
VFH was embedded as a player driver, but it expected a solid destination point, which our subsumption system does not support (only collects instantaneous velocity and turn angle).
The VFH driver was also difficult to turn on and off within our code, which lost our desired modularity for using tasks only of high priorities.
The software guys and I eventually decided that we should borrow the ideas of VFH and to write a mimic algorithm within our code, so it can be easily fit into subsumption.
Our current code works pretty well, but more tests can be done in our next stage in order to fortify the effectiveness of our code for multiple robots.

Plotting efficiency of my research v. time:

This is a plot of a quanticized data for my research effiency this summer.

The first few weeks were not very productive, because most of my time was spent on becoming familiar with Player/Stage with its installation, simulation, and control/configuration codes.
I remember that most of our initial tasks were running simple simulations for tasks like moving in a square.

The middle of my summer became slightly more active, when we were introduced with the two tasks that would be great to add for the Proteus robots.
We started to introduce and discuss different structures and algorithms that would be apt for the tasks.

The last few weeks of the research became intensively exciting, when the hardware started to come together.
It started with simple things like the cameras coming in and were debugged and ready to go, and eventually in larger scales were the robots were starting to get built.
This was especially important for the line following task, because we were not able to test our code on simulation.

What remains to be done:
Overall, this summer was a great phase for the Pharos lab, but there still remain jobs for our team to complete.
We need to make complete documentations and demos on the tasks that we developed this summer, as well as testing it to refine our code for an even better set of robots.

I had a blast this summer, and I hope you enjoyed reading my posts. :)

-- Arthur

Friday, July 16, 2010

Proteus research update

Hi all!

A good half of my research experience here at EURECA has quickly gone by, and I wanted to give an update on how the project is going along.
There were two main tasks that I am supposed to help with for the robots this summer (using the subsumption technique I described in the last post):

1. Line following using a camera (the driver is called CMUCAM2), which will greatly enhance the flexibility of the robot's motion tasks.
2. Obstacle avoidance using a method called VFH (vector field histogram), extending them to multiple robots.

The main software algorithms have been written for the two tasks, and in the past few days we were able to use the programs on the actual robots.
There will be a couple of fine-tuning (redesigning of the algorithms, if necessary) in order to make the tasks as flexible and smooth as possible.
I plan to do this within the next few weeks along with the other software research students, and hopefully we can realize these enhancement ideas well!

One of the biggest drawbacks of the recent experiments that the software students and I were doing were the clashes between simulation and true experimentation.
For example, there were some algorithms that we thought of that worked fairly well on simulation well, but not well on the actual robots.
In order to overcome this setback (that I think is universal), we need to also think of a better way to debug or observe the robot's behavior.

It would be fantastic if these useful features of the robots can be implemented within the next few weeks!

--Arthur

Thursday, July 1, 2010

Proteus and subsumption



Hi all!

So, as I said last week, I am continuing to work with the Proteus robot model and its task development using what's called the subsumption technique.

A general description of the Proteus model, its foundation and research purpose can be read here:
http://frisbee.ece.utexas.edu/svn/pctb/proteus/doc/Tech_paper/Proteus_tech.pdf
(user:anon pass:anon)
The document talks about Proteus's aim to be a robot that is low-powered and easy to use; in order to achieve these goals, developers must allow flexibility in all architectural, hardware, and software design.
One of the things that allow such a simple usage of robots are the Linux supported programs called Player and Stage, allowing software developers to implement tasks through high level driver commands using the API (Application Programming Interfaces) in the programs' core library.
More information about this user friendly application can be found here:
http://playerstage.sourceforge.net/

One of the challenges that come in any design is its engineering structure.
In the Proteus's software scope, this would be the realization of multi-tasked robots; in order to achieve the flexibility that the project calls for, there needs to be a way to appropriately execute tasks that are easily layered and integrated.
This can be done through division of tasks in small modular codes which are controlled through a main program with an associated priority level.
For example, if a robot was to reach a certain destination while avoiding any obstacles, the subsumption layer would look like this:
### Highest priority
Avoid obstacles
Move to
Stop
### Lowest priority

The following article explains some insights on the realization of such robots:
http://people.csail.mit.edu/brooks/papers/representation.pdf the hi

Looking at all of these aspects, some solid goals for the summer for the robot are multi-robot obstacle avoidance and line following (using a camera).
These are implemented using subsumption in C++ codes that Player supports.
I hope to understand these engineering techniques and to dig deeper in order to help out with lower level driver implementations, as well as seek higher in order to develop high level robotic controls.

=== our current model of the Proteus robot ===
Neat, huh. :)
I hope everyone has a great Independence Holiday, I know I will!

-- Arthur

Tuesday, June 22, 2010

About my project

Hello! The EURECA project has brought an exciting start to my summer so far!

Let me explain a bit about my project.
I will be under the guidance of Nick Paine, who has been working on implementations on robotic algorithms in the Pharos lab.
This summer, I will be helping out with a mix of software and hardware regarding future goals for the new PROTEUS model of their robots.
Some specific goals for the lab this summer were things like multi-robot obstacle avoidance and visual interpretations using small cameras.

In these past few days, I have absorbed most of the basics on the large scale data flow and control structures of the communication between the robot and software.
To be specific, I have learned implementation of robotic controls using two programs called Player and Stage, frequently used for robot simulation and interfacing.
There are still loads of software skills and details I need to become familiar with, but I am enjoying the learning experience!

I do not have a solid set of milestones for the entire summer, but here are a few things I want to work on this week.
June 23rd : Become educated about version control systems for collaborate software editing, calibration techniques for robotic measurement/control devices, and subsumption techniques on task distributions and layering.
June 24th : Continue working on topics above to implement summer goals for PROTEUS.

I hope that with the project I can expand my scope of knowledge in the integration of hardware and software to achieve specific goals, which is useful in any light of engineering.
Of course, I will always remember to have fun in the process. :)

-- Arthur

Wednesday, June 9, 2010

About myself

Hi all!
My name is Arthur Ishiguro and I am participating in the EURECA program this summer under the Pharos robotics lab.

Let me introduce myself a bit.
I was born in Osaka, Japan and started attending school in Texas since 3rd grade.
I still cannot completely depart from the tasteful bits of the Japanese culture, but I have gotten to appreciate different hobbies and activities as I started to outgrow my fobby self.
In my personal life, I like to go jogging, netsurf, and play games with my friends.

Not to forget, food is amazing! Especially when self-made...















Drool...right? Exactly!


This summer, I will be working and learning with other research students to achieve implementations of diverse tasks with the Proteus model robot.
With the opportunities given with UT EURECA, I hope to further expand my views in engineering outside of the pages of textbooks.
Reserving the technical details off for its own topics, I am most excited about integrating the learning experience of the research process with teamwork!

-- Arthur