Manual robotic arm control using a mouse

Hi all,

I modified my Arduino-controlled arm setup, which was posted here -> http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1273759010/0#0 , adding manual control using USB mouse. Video is here -> Controlling Robotic Arm with Arduino and USB Mouse - YouTube . Arduino code is here -> USB_Host_Shield/examples/arm_mouse.pde at master · felis/USB_Host_Shield · GitHub An article describing HID interface and code examples are here -> http://www.circuitsathome.com/communicating-arduino-with-hid-devices-part-1

Enjoy!

Looks fantastic! Any plans on making it a bit stronger or a little smoother?

Wow, very cool. Nice work!

Is the video the real speed or did you increase the play speed?

Any plans on making it a bit stronger or a little smoother?

The arm is pretty smooth, the operator is not:-)

Is the video the real speed or did you increase the play speed?

Some places are 1x, others are sped up. For example, the place when arm moves in a circle is 1x. It was intended as a demonstration of Arduino's number crunching abilities - here not only IK but also coordinate generation is done using trig ( Rsin(a), Rcos(a) ).

Unless you practice a lot, manual positioning would be quite slow so I increased play speed and cut frames out here and there. Also, a mouse is not the best controller for the arm, either; I ordered console-style wireless game controller off of eBay this morning - the next step is going to be to place this arm on a cart :slight_smile:

Nice work. I most like your choice to use a mouse as the control method. However, using the scroll wheel for movement seems a bit awkward when having to stop and start because of its limited stroke length. Have you considered making Z, grip, wrist, and grip angle controllable by sliding the mouse as you do for X and Y? It would work like a click-and-drag. Is this a project you are planning on continuing to develop? I would be really interested to see you incorporate the ability to record a sequence of movements for automated repetition.

I'm planning on making the arm mobile and incorporate vision so I will need an input device with more controls; therefore, I won't be developing for the mouse anymore. The modifications that you propose are very easy to implement. The global 'armdata' structure contains coordinates, if you need a sequence, just print it somewhere in the loop(). Mouse report is parsed in mouse_poll(); change the switch statement to however you want the arm to react to mouse buttons+movement. If you'd like to do this yourself and have questions, contact me off-list; I will be happy to go through code with you.