June 28, 2003
Club Member Access
Each PAReX member is entitled to an account for authoring articles on the PAReX web site. If you want to post articles to the site let me know and I will set up an account for you.
Posted by Mike Linnen at
09:28 PM
|
Comments (1)
June 27, 2003
ER1 Software
I thought I would just explain a little bit about the ER1 software so every one can get an idea on how a program is created and the options an ER1 owner has.
The most basic concepts of the ER1 are "Behaviors", "If" conditions and "Then" conditions. A Behavior is made up of an "If" condition and a "Then" condition. Behaviors can run sequencially or in a sort of parrellel fassion. Behaviors can not execute at the same time (as far as I can tell) but any Behavior can terminate an existing Behavior if it is a higher priority. You can have 288 behaviors in a given program. You can extend beyond this 288 limit by setting up an "If" condition to load a new set of behaviors. So there really is no limit to the size of the program you can have.
The following "If" conditions can be tested on a given Behavior:
- Sight
- Sound
- Message Received
- Time
- At a Specific Time
- Interavals
- Sequence
- Run After a Specific Behavior
- IR Sensor
- IR Sensor 1
- IR Sensor 2
- IR Sensor 3
- Gripper
- Object entered Gripper
- Gripper Button Pressed
The following "Then" conditions can be executed when the "If" condition is met:
- Move
- Drive toward color
- Color
- Stop once the color takes up a specified percentage of the screen
- Drive toward object
- Object from the Library
- Stop once a specified distance to the object is reached
- Rotate toward color
- Rotate toward object
- Distance
- The distance to travel
- The Direction
- Angel
- The Degrees
- The Direction
- Relative position
- Play Sound
- Sound File
- Phrase to Speak
- Message Send
- Run Program
- Record
- Take a Photo
- Shoot Video
- Email Result
- Gripper
Multiple "If" and "Then" conditions can be selected for a given Behavior. Multiple "If" conditions can have an "And" or "Or" operand. The above conditions are very extensive and will meet most programming needs. There are some additional "Behavior Settings" that compliment the conditions. Primarily you can fine tune some of the "If" sensor thresholds to ensure the "If" condition detects a sensor reading accuratly.
The ER1 can also be commanded remotely. A wireless connection is needed for this to work. There are two options to remote control: Command Line API or use the ER1 Control Center software. If you use the Control Center software you can also get a video feed from the robot's camera.
Posted by Mike Linnen at
09:31 PM
|
Comments (0)
June 23, 2003
ER1 Voice Recognition
The voice recognition software for ER1 works more consistantly if you limit the words it needs to attempt to recognize. The Behavior Settings - Sound - Word Phrase list can be used to add words to limit the recognition too. This really improved the results even with the laptop microphone. The only thing is that this list is for all behaviors. In other words you can not have one list for behavior 1 and another list for behavior 2. Most of the other options in Behavior Settings can be set different for each behavior number. This did not stop me from getting the robot to recognize single phrase words in a specific sequence to initiate a specified task. You simply add all words to the Word Phrase List and set up individual behaviors with sequences to control the program flow based on word phrases. Couple this with loading new behaviors based on a sequence of commands and you have a real powerfull way to launch programs by voice.
Posted by Mike Linnen at
10:31 PM
|
Comments (2)
ER1 navigation by landmarks
I went back to trying this tonight. Look at my
first attempt here. This time I had some great success.
First I broke up the behaviors into mini programs. The cool thing about one of the new features of the ER1 software is the ability to trigger the loading of a new set of behaviors. So you can have a sequence that loads a completely new set of behaviors. So I ended up with three mini programs to do the job of detecting the quilt accross the room, navigate to it, spin around and navigate back to home base.
So here is a short summary of each program
- Program 1: Detect the quilt and navigate within 4 ft of it
- Program 2: If the quilt is detected rotate 180 degrees to the right
- Program 3: If the Home Base is detected navigate within 3 ft of it
This time I also took several snapshots of the destination landmarks at different distances to improve the overall detection at different distances. This improved the landmark navigation a heck of a lot. I am amazed at the pattern recognition of the software that comes with ER1. This software package is well worth the price of the robot.
Here are the snapshots of the quilt landmark on one side of my recreation room.
Here are the snapshots of the Home Base landmark on the other side of my recreation room.
Well this proved that I can do landmark navigation and the tasks can be broken up into multiple mini tasks. Now all I need to do is create another mini task that does the voice recognition of "Robot" "Go" and this mini task could launch Program 1 and I will have completed my entire robot navigation by landmarks project.
Posted by Mike Linnen at
09:34 PM
|
Comments (0)
June 22, 2003
ER1 Wish List
Here is a list of things that I would like to see added to the ER1. This list contains both hardware and software.
- Show all used behaviors
- Show all unused behaviors
- An articulated camera base. ER1 could use the pan/tilt camera to search for objects.
- Edit a captured image's features
- Add the Extended I/O to the "If" Conditions
- Add the Extended I/O to the "Then" Conditions
Posted by Mike Linnen at
11:13 PM
|
Comments (0)
ER1 navigation by landmarks
Well I set out to create a group of behaviors that would command ER1 to do the fllowing:
- Listen for "Robot"
- Listen for "Go"
- Navigate to a quilt object landmark within 2 feet
- Turn 180
- Navigate to the Base object landmark within 2 feet
- Turn 180
Well after tinkering with it for about an hour, I ran into a couple problems. When the robot approached the quilt it did not always end up perpendicular to the quilt, so the 180 degree turn would place the robot on a trajectory course toward the couch or the entertainment center. I failed to put object avoidance on so the robot would collide with both objects on it's return path. I enabled the object avoidance but I did not have time to tune it so the collision still occured. I ran out of time since I had to go into work today so I thought I would save this task for another day and start on something simpler. I will attempt to just program the robot to navigate to the base 1 object within several feet and avoid obstacles. Then I will see if I can command it to straighten out using the IR detectors. This will ensure the robot is lined up with the landmark before it executes it's turn command.
UPDATE:
see the update to this entry
Posted by Mike Linnen at
11:17 AM
|
Comments (0)
ER1 does not move when Laptop is plugged in
Did you know that the ER1 motion commands are disabled when your laptop is charging? I found out after about 30 minutes of troubleshooting my behavior. A message is even displayed in the log telling you this but I did not notice it.
Posted by Mike Linnen at
11:00 AM
|
Comments (0)
June 20, 2003
Meeting Location Change
Changed the West side
meeting location
Posted by Kelly Small at
06:31 PM
June 15, 2003
ER1 Does the Living Room
6/15/2003 ER1 Does the living room
Ok now I wanted to try some navigation by picking an object to navigate to as a landmark.
So I took the robot downstairs to my recreation room. I placed the robot in front of my
wifes hanging quilt. I took a snapshot of the quilt and then moved the robot about 15 feet
away from the quilt. I then programmed the robot to recognize the word "Robot" and the word
"Cooking". Once these two voice commands where heard by the robot he would reply "I do not
know what is cooking, let me go and find out.". Then the robot would start on a straight
path toward the quilt. Once the quilt was detected another behavior would kick in causing
the robot to move 1.5 feet away from the quilt. Then the robot would turn left 90 degrees
and attempt to navigate between the couch and the wall to go into the kitchecn. This gap
between the wll and the couch is very tight and I had my doubts that the robot would get
through it ok. There is only about 3 inches on each side. The first attempt did fine
finding the quilt but the navigation between the couch and the wall was unnsucessfull. So
I reduced the sensitivity on the IR sensors and gave it another try. And this time the
robot was able to squeeze between the couch and the wall. I attempted this a few more
times. The quilt was found every time but the navigation between the couch and the wall
was not always successfull. This proved I could use landmark navigation with a camera
with some great success. I am no longer restricted to encoder errors!! Landmark navigation
is a reality now and I can use it to solve the "Where am I?" problem.
Later on in the night I was upstairs working on my computer when I decided I was thirsty.
Since my robot was downstairs I decided to telnet into it and command it to say "Mike is
thirsty and he would like a beer". I did this several times with different wording and
it eventually produced me a beer from my wife downstairs. Wow I am beggining to like this!
Posted by Mike Linnen at
12:08 AM
|
Comments (0)
June 14, 2003
ER1 Remotely
Ok I got the ER1 moving. This was a very simple task.
The software makes it very simple to do small tasks without much effort.
But as it turns out I am always looking for a way to extend current functionality. The ER1
has a command line API that can be executed over a telnet session. This enables an external
program to submit commands either from the on board laptop of an external computer over a
wireless connection. I wanted to start out simple and write a C# program to submit commands
to the ER1. I had no idea how to open up a telnet session and communicate with the ER1
programmatically. The ER1 documentation details how to do this in JAVA, but I really wanted
to do it with C#. So I poked around a little bit on the internet and found a class that
would do the socket communications for me. After about an hour I had a program that could
submit commands to the ER1 and display the results.
Since I finished the basic program to do the communucations I decided to move onto using the
ER1 GUI to create a small task. I wanted to see if the ER1 could successfully navigate my
upstairs hallway without banging into the walls. The ER1 I have is equiped with 3 IR sensors
for obsticle avoidance. The hallway I wanted to navigate is 3 feet wide and 10 ft long.
After the 10ft mark the hallway drifts to the left and then back to the right and enters into
my sons bedroom. I created a behavior that detected an image and moved forward for 25 ft.
Once the robot saw the object it began it's run down the hallway. As the IR sensors picked
up the hallway walls the robot made small adjustments to stay in the middle of the hallway.
After the 10 ft mark the robot started to drift left and then drift right once the hall
straightened back out. The robot continued into my sons room. Once in the room the robot
proceded to vier to the right to get back on the original straight line of path. After
the robot figured it was back on the path it proceeded to turn to the left before it finished
the 25 ft path. Wow I was impressed! I didn't measure the actual path to see if it was
truely 25 feet but the robot made it from start to finish without touching the walls. I tried
the exercise two more times with simular success.
Posted by Mike Linnen at
03:14 AM
|
Comments (2)
|
TrackBack