Shop OBEX P1 Docs P2 Docs Learn Events
Eddie's visit to Norris Labs — Parallax Forums

Eddie's visit to Norris Labs

norris56norris56 Posts: 69
edited 2012-02-09 06:06 in Robotics
For the past month or so I have had an Eddie robot visiting here at Norris Labs. It has been great fun!

Despite being engineered independently Eddie and my robot K-See have many similarities. But one major difference between K-See and Eddie is the ability to pan the Kinect left or right by 90 degrees. Being able to pan the Kinect greatly increases its field of view without the need to rotate the entire robot. This is particularly useful when navigating around obstacles while trying to keep a navigation target (a sign, glyph, or a person) within the view of the Kinect. The Kinect is restricted to about a 60 degree field of view. It can quickly lose its target if the robot were to turn sharply while avoiding an obstacle. And since I was planning on reusing my K-See software I decided to add the same feature to Eddie.

To accomplish this (in a non-destructive manner), I replaced the Kinect’s mounting plate (from Parallax) with my own made from Plexiglas and cut to the same dimensions of the original. To this new plate I cut a center hole for a Hitec HS-422 servo. Using leftover parts I fashioned a mounting plate and support structure for the Kinect. I attached this assembly to the servo. The servo was then electrically connected to one of the Eddie Control Board digital I/O pins. I also had to modify the Eddie Control Board firmware to support an additional command (KPOS) used to position the servo from 0 to 180 degrees left to right.

I like to write my own code and despite all its capability (and complexity) I did not want to use the Microsoft RDS robot operating system. As mentioned before I had already developed software for K-See which was written in C# and uses the Microsoft Kinect SDK and a WPF user interface. It was a simple matter to port it over to Eddie. Most of the changes involved rewriting the underlying communication code in the RobotController class to support the Eddie firmware protocol instead of my own used in K-See.

My application provides a basic navigation system and obstacle avoidance using a behavior-based programming architecture. This architecture uses a collection of simple behaviors that take inputs from one or more of the sensors (both the Kinect and the Pings/IR) and then triggers an action that is sent to motor drive system. Each behavior is written as a single C# method that is called sequentially based on its priority. The priority determines when a behavior can get access to the motor drive system.

The user interface for my Eddie application is divided into five display tabs. The first tab displays the Ping and IR sensor data graphically while the second tab displays it numerically. The third tab displays the Kinect’s RGB and depth data streams. The fourth tab is used to create and edit glyph routes (not finished yet). Finally the fifth tab provides manual control of the robot. I access this tab from another PC and connect to the Eddie laptop via Remote Desktop over Wi-Fi
.
I love working with Eddie and I hope he will stick around the lab a little while longer. There will be a full article in the next Robot Magazine and I'll post the finished code as well.

Below are some pictures on my modified Eddie and screen shots of the application.

Here is a link to a YouTube video showing Eddie navigating and avoiding stuff: http://www.youtube.com/watch?v=bQkHZhvnd-g
1024 x 685 - 90K
1024 x 680 - 101K
1024 x 684 - 103K
1024 x 683 - 92K
1024 x 684 - 88K
1024 x 680 - 45K
680 x 1024 - 149K

Comments

  • ercoerco Posts: 20,256
    edited 2012-02-07 12:41
    Sweet navigation! What's up with that rotating front caster? Almost looks like it's powered and scanning in some shots.
  • spikedspiked Posts: 20
    edited 2012-02-07 12:56
    A really off the wall comment, but I would like to agree with you on C# and WPF. I have been trying robotics for quite a while now, and once you use C# and WPF it is extremely difficult to use anything else. I tried Java, but the lack of decent GUI tools and APIs got very frustrating. I am trying to experiment in robotics. Not spend weeks writing plumbing code that exist and is built in somewhere else, for something as common as a GUI. Ah but MS has abandoned (http://www.youtube.com/watch?v=RRFiu0xfQzw) C# and WPF and gone a different direction, so we are already using 'legacy' code.

    Congratulations a successful project. It looks very good, clean and well thought out. An Eddie is still on my wish list, but I'm waiting for the product to mature a little (ie stabilize need for firmware updates) and a 'release' version of MRDS 4.
  • Tom CTom C Posts: 461
    edited 2012-02-07 15:36
    @erco,
    I have built an EDDIE clone along the lines of Steve's K-See except that mine is a double decked version of EDDIE. I am using Steve's K-See Propeller Controller and Prototino sensor controller and software. I am presently awaiting an Intel dual Atom motherboard and associated support hardware to simulate K-See's Atom powered Asus laptop. I presently do not have my Kinect mounted on the top of the 2" PVC tube which I plan to cut down slightly this weekend. The wooden shelf above the PC case is where I am mounting the PC video dsiplay. I can't wait to try out Steve's software on my Atom PC.
    Here is a link to Steve's K-See Bot Mag download page: http://www.find.botmag.com/031205
    Regards,
    TCIII
    750 x 1000 - 71K
    1000 x 750 - 145K
    1000 x 750 - 95K
    750 x 1000 - 94K
    1000 x 750 - 127K
  • Tom CTom C Posts: 461
    edited 2012-02-09 06:06
    @Steve,
    Have you encountered this kind of behavior with the Kinect while the EDDIE or K-See are in motion:

    "Jessica,

    Thanks for the reply. Damping the movement with foam is a good idea, I'll give that a try. Late last night (too late to really investigate) I saw an entry in one of the C# files in the ReferencePlatform2011 service group that had an entry for acceleration ramping with a value of 5. However, I didn't see one for deceleration so possibly it is just a generic for acceleration (both positive and negative). I'm going to do some more testing and see if the Kinect shake is when Eddie starts, stops, or both.

    Todd ."

    Regards,
    TCIII
Sign In or Register to comment.