As part of this team project for my CS 307 software engineering course, we developed a collaborative editor plug-in for the Eclipse environment. Users are able to share source code files with other users, who can view changes made to a document by other users in real-time, and make their own viewable modifications.
The plug-in integrates seamlessly with the Eclipse IDE, and features an independent server that can be run on any port-forwarded connection. Future versions will support additional editors, with more customizable features.
First to go is the flimsy plastic controller. The motor shield allows up to four of the of five motor joints to be controlled with the Arduino. I want to use this opportunity to explore the Java serial libraries to communicate with the Arduino over the Internet in a Java applet *or* purchase an Arduino ethernet shield and send commands directly to the device (see below).
I suppose, as an overall goal, I would like to be able to feed my fish while away with the use of a webcam and this robotic arm.
Completed Robotic Arm connection to motor
This setup allows control of the maximum of four motors. I’d rather have everything integrated into one cable, but the supplied cable didn’t have enough pins to handle 4 motors and power and ground. That’s why I added the red/black leads shown above. Here’s how everything looks hooked up to the freshly soldered motor shield:
Right now the Arduino is powered by USB, and the motors are powered by the arm’s original DC power source — 4 D batteries. This can easily be changed to have the arm run off of a DC adapter.
Next up: Due to the number of pins that the motor shield requires, I won’t be able to use an ethernet shield with this project. So, Java-based serial communication it is!
I wrote a Java application with SWT to handle the serial communication with the Arduino’s motor controller. Essentially, it relays messages over the serial line about what motor to enable. The “speed” of the motor is an illusion by using a custom TimerTask to repeatedly send requests to enable the motor (every 10ms) and then sleep the thread for a duration between each task interval, until the button is no longer pressed. This solution makes the robotic arm much more useful as it can now make very controlled movements (<1mm).
Here is a screen shot of the user interface:
I’ve started working on this project again! I decided to clean up some of the code and create an Android app that can control the arm wirelessly (as long as it’s connected to a host PC).
This team project consisted of two parts, both built with a Java GUI. The first half, the map editor, allows a user to mark locations and paths on an image to create an overlay graph data structure. The user can also name locations and export the saved data structure as an XML file.
The second half, the map viewer, loads the map image and XML file and uses an implementation of Djikstra’s algorithm to allow the user to find the shortest path between two selected points on the map. The map viewer also outputs the steps along the path, and adds the step costs using a scale factor to calculate the total distance of the path.
You can download a zip file containing the JAR files for MapEditor and MapViewer, along with the Purdue map image and sample XML dataset: MapEditor-MapViewer