Arduino

Hi Grog,

I was having trouble with the Arduino service seeing my arduino.  I am running Win 7 Pro 64 bit, MRL 14.9, and Java Hotspot 64bit.  Attached is the log.

GroG's picture

Hello jburnz86

Yes, 64 bit windows machines was not previously supported - 
Here is the detail in the log you attached.

 

Caused by: java.lang.NoClassDefFoundError: gnu/io/CommPortIdentifier
	at org.myrobotlab.serial.gnu.SerialDeviceIdentifierGNU.getSerialDeviceIdentifiers(Unknown Source)

I have just fixed this and refactored the heck out of the serial code.  I will need a little time to test before releasing.  I am now running a 64 bit windows 7 machine which will certainly make it easier for me to test your setup.

If you can tell me a little more about your project's hardware I might be able to put more fixes in which will help you further along.  I understand it's a robotic arm chess player?  Can you answer the following  questions :

  • Will you be using MRL's chessgame Service?  I have played it before and I can't win (not sure if that says much - I'm not the greatest chess player :P )
  • What does your Arm hardware consist of?  Servo's, DC Motors connected to the Arduino, or is it an Arm Kit with its own serial protocol?

P.S. change your profile picture - I don't think the default scared gopher suites you :D

jburnz86's picture

My project is a gutted OWI

My project is a gutted OWI Edge Robotic arm with DC motors wired to an arduino uno using a diagram I found online http://luckylarry.co.uk/arduino-projects/arduino-modifying-a-robot-arm/

I have doubled the length of the arms using aluminum :)  I will get some pictures uploaded soon.

The hope is to get it to play chess and I am going to use the chess game with MRL's chess game.  I am completely new robotics.  (So the scared gopher isn't that far off!) I am doing this as a project for my summer class which is Human Computer Interactions.

jburnz86's picture

Update

The original idea was to have somebody sitting at the chess board playing against the robot arm.  Since there is only a few weeks left in class we have decided to change the plan.  

A person will play the chess game in MRL.  The arm will just take care of moving the all the pieces on the chess board for now.  That way I don't have to set up and program a seperate system to read the board and relay the moves back to the computer just in case I don't have time and since I know very little about the actual programming side of things and am just learning.

GroG's picture

Ok - looks like you have a

Ok - looks like you have a good start on the hardware setup.  Simplification is a good thing.

Now a few more questions :

Did you get Processing to control it successfully?

Do you have or have you found any Inverse / Kinematics software?

I don't know the details of the robotic arm, it looked like from the link you have it's control commands only... Are there feedback as far as position?   If its just dc motors there has to be some form of encoding to do positioning.  Is this a closed loop system where you send a command to move joint 1 to 10 degrees and the arm/circuitry determins where 10 degrees is without sending the info back up to the controlling software?

 

GroG's picture

From the video I saw on the

From the video I saw on the second link it looks like there is no feedback ?

Nor is there positioning control - ie the robot arm does not know where it is in space.  

Is only relational positioning based on time available ?   This would be the amount of time that some motor runs...  (e.g. We make motor 1 run for 1 second and the hand is "probably" about here...." ?

jburnz86's picture

Kinect?

There is no feedback with the motors.  I am trying to research different ways to accomplish this.  I will look into relational positioning based on time available.  I also had another idea.

My class has a spare Kinect laying around.  So I was thinking about maybe using a Kinect to track position of the arm.  Then, after I finish my current goal of using the arm to move all the pieces on the chess board, I could maybe use the Kinect to track the entire board and have a person playing "against" the arm at the physical chess board.

I found a thread here http://social.msdn.microsoft.com/Forums/en-US/kinectsdknuiapi/thread/631aff06-cb4c-42ff-84ee-d895c94c5da4 about tracking X,Y,Z coordinates with the Kinect.  It seems like a good start anyway.

I could also look at swapping the motors for servos so we would have position feedback.  I am going to spend a day or so going over the possibilities.

I would like to keep it as simple as possible for now.

GroG's picture

I agree simple is good.  But

I agree simple is good.  But with poor sensors, it makes the challenge more complicated. 

Here is what I see in this challenge:

  • You want to track the tip of the gripper - this could be done with absolute encoders on all the joints and some trig.   You could attempt relational positioning... it's less sensors, but more guessing, special cases and more prone to error
  • It would be nice to track the pieces - You could go initial state, and no feedback - Such that a move would "theoretically" put a piece into a new location - again this is very prone to error
  • If it was me, I'd probably go with the kinect.  The "simplest" that I can think of is aiming the kinect downwards above the chessboard.  You can filter the depth of interest.  This would be a plane which all the chess pieces intersect - probably 1" above the board.  So you have 32 little circles which are the pieces.  Then have the arm move in a different plane above the pieces.  Switch the kinect depth filter to this plane.  Then you line up the claw with the appropriate piece and go through a "grab" routine - then a lift - then a "drop"

Just some thought that might help you on your way.