Skip to main content

more options


Follow our other projects!

In case anyone has stumbled upon this blog since we completed this project, here’s a link to our main website where you can read about the Tufts Robotics Club’s ongoing projects:

http://sites.tufts.edu/robotics

 

Custom Servo library

Last night I wrote up a wrapper for I2C communication with our 2 RMCS-2203 servos. We also set up a github repository which will host and version-control all of our code. I also put our electronics schematics in there. Here’s a link to the repository so you can peek at what I’ve written: https://github.com/wincelet/tuftsrobotics_icc2015

My library appears in the “main_sketch” folder and consists of the RMCS2203.h and .cpp files.

I’m pretty proud of the library. It allows you to set and every parameter described in the I2C section of the datasheet (which I’ve hosted here: https://drive.google.com/file/d/0Bzfnuj4LxfQ9VGFNV2k5dnhTNTQ/view?usp=sharing)

You create the RMCS2203 object like so:

RMCS2203 myMotor;

And in setup() you attach the motor to a particular I2C address:

myMotor.attach(0x10);

Then you should probably set the servo’s control system to default gains, since these can get set improperly when powering off the motors:

myMotor.defaultGains();

Simple as that. I have yet to write any code to move the smaller servo, but I should most likely be able to use the Servo library packaged with the Arduino IDE, so there’s not much work to do there.

Final Iteration of Shield

So I continued work on the shield and changed quite a few things from the last design. First, I decided to move the relays off board and connect them to the power supply with low gauge wire instead of routing power through the board, as I was scared of overheating the board with high current draw (the linear actuator goes up to about 5A at max draw). There are now two additional 2-input screw terminals, one to connect the coil from each relay. This also reduces the size of the board substantially.

I’ve added a D-sub 15 pin connector plug in our joystick with all necessary voltage division and pull-up resistors on board. Initially I forgot to include the joystick interface in my design, but that was quickly fixed.

I also widened the small traces because of the way we are fabricating the board. We didn’t have enough time to get the board professionally fabricated (I tend to order from OSH Park, but their turnaround time is 12 days!). Instead, we used an Othermill at the Makerspace in Tufts’ Center for Engineering Education and Outreach. The Othermill is a small milling machine which can make single-layer circuit boards from a copper sheet. We used two single-layer copper sheets to do both of the layers of our board. This involved mirroring the board so that the copper would eventually be on the underside of the board, for ease of soldering in through-hole components.

This meant we could get our board in a day as opposed to two weeks.

The final board layout and schematic are shown below:schematic BOARD

The gripper in action!

Take a look at our gripper doing its thing:

 

Some notes from testing:

Water is much more effective at creating negative pressure than air, since it’s non compressible. We get much better grip while also moving the syringe less distance, meaning that the linear actuator won’t have to expend very much energy to get the gripper to become rigid.

In addition, a water based system means this gripper could potentially work in space. Overall, the water is beneficial in just about every way. We just need to be mindful about how we keep our electronics safe from potential leakages.

 

Some notes about the design:

We use glass beads in the gripper because they are waterproof, as compared with the traditional universal gripping material, coffee, which would dissolve in water over time.

We use commonplace 11in latex balloons to hold the beads. The balloon is clamped to a tube with a filter on the end to prevent the beads from flowing back into the tubing. The tubing runs to a syringe which will eventually be actuated by a linear actuator. The whole system is filled with water.

Designing the Electronics

Lately I’ve been busy designing a shield for the Intel Galileo which will interface all of our actuators. This includes the linear actuator and three servos. They are all controlled in different ways, all of which is handled by my board.

The 2 larger servos, the RMCS-2203’s, are powered from a 12V source (not routed through the board, since there is high current draw) and controlled via I2C. It is also often necessary to communicate with these servos over a serial connection (which basically opens up a command line interface for setting certain servo settings). It’s pretty cool and advanced for a simple motor. Anyway, I want to enable all of these communication channels between the Galileo and each motor. I reserve pins on the Galileo for software serial, 2 for each motor (RX and TX). These are pins 2, 3, 4, and 5. Then I link the SDA and SCL pins out of the Galileo to each motor. I use JST headers to as the motor plugs.

The smaller servo is controller via a simple PWM signal (like most servos) and is powered from a 9V regulator onboard which receives 12V from the 12V source as input. Pin 9 is reserved as the small servo control pin.

Lastly, the linear actuator is controlled by dropping 12V across it in either direction. Reversing the polarity will make it change directions. For this reason, we need a setup which uses two SPDT relays. This will allow the Galileo to reverse the polarity of the linear actuator while also remaining isolated from its power supply. I looked up a schematic for a single SPDT relay from Sparkfun for inspiration: https://www.sparkfun.com/tutorial/Outlet/RelayBoard-Large-v11.pdf

Powering the linear actuator through the board is tricky, since it can draw up to 7 amps. I used this calculator: http://circuitcalculator.com/wordpress/2006/01/31/pcb-trace-width-calculator/

and found that 7A with 1 oz/ft^2 of copper thickness requires a trace width of 451 mil, which is enormous. I can’t quite make that, so I’m hoping 200 will do. I only expect bursts of 7A so it should be okay.

I’m continuing to work on this, but here is my schematic so far:

schematic

 

And here’s the current layout of the board. Notice the thickness of the traces around the relays:

BOARD

 

Also the thick blue traces on the right appear to be connected, but htat is merely due to the small resolution of the picture. They’re isolated from each other in the actual design.

Hoping to get this shipped to us by next week!

 

Gravis BlackHawk Joystick

The arm we are building will need some form of control. Since we are cost minded, and we happened to have an old 15 pin gaming joystick laying around, we decided to hack it for our purposes.

I was able to search up some pin-out guides for the joystick outputs:

http://www.epanorama.net/documents/joystick/pc_joystick.html

http://pinouts.ru/Inputs/GameportPC_pinout.shtml

Here is the setup I came up with.

IMG_20150311_192238072_HDR

 

I have some simple arduino code reading in the analog and digital outputs from the joystick. As the guide was not exact for the joystick we happen to have, I had to do some testing to determine which physical inputs were linked to each particular pin.

Here I tested the x-axis (arbitrarily named), of the joystick.

IMG_20150313_152605831

Here are the outputs I was testing and logging.

 

IMG_20150313_152608585

I found that two of the digital outputs were linked to two buttons, the third button seemed unresponsive (which is ok, because we don’t necessarily need it). In addition, the two axes on the joystick work fine, as well as a side wheel. These analog inputs give us ranges on outputs from ~500 through 1023. I used 100Kohm divider resistors in the breadboard circuit. I think changing these could help out with our current resolution/input range.

There are clearly a few kinks to figure out, but we should be able to create controls for our project using this joystick.

The Quest for the Perfect Power Connector

Our system involves a lot of actuators that are powered off a 12V source. If all actuators are stalled at once, you’re looking at about 20A of current. This demands some pretty beefy wires and power connectors if this worst case scenario ever occurs, otherwise we might burn something.

When I first started investigating power connectors, I thought of Molex connectors – like the ones you’d find in your average desktop power supply. The only problem is these connectors can actually really only handle 6-10A, at least according to MolexKits.com’s datasheets: (http://www.molexkits.com/Datasheet/76650-0176/)

On the same site, I found some connectors that looked a bit more up to the task:

http://www.molexkits.com/Type/HCS-125/

The HCS-125 connectors can handle 12-20A, according to their datasheet (http://www.molexkits.com/Datasheet/76650-0001/)

These seem to do the job, so I’ll stick with these. I realize I’ve only looked at one manufacturer, but frankly I trust Molex to make good quality power connectors.

Now the next issue is how to assemble the actual cables. On the side I’ve been looking into cable assemblies for the motor data lines, and manufacturers charge a LOT of money for crimping tools, which are designed for a specific series of connectors – they’re not universal. Take a look at this:

http://www.digikey.com/product-detail/en/58247-1/A1999-ND/117951

How ridiculous is that? $189 for a stupid crimping tool. I guess it makes sense – the demand for the crimper for this SPECIFIC line of power connectors is probably pretty low, so their profit margin has to be high.

Anyway, I expect to run into the same problem for the HCS-125 connectors. I can buy the connector housings, the wire crimp ends, but the crimper itself costs a fortune. Maybe I can get buy with soldering the wires to the wire crimps? I dunno. I’ll let you all know what I come up with in another blog post.

EDIT: It may not be the end of the world to just use pliers to crimp the wires…

Project Overview

Hey everyone,

This blog is where the Tufts Roboticists team will post updates on our progress on our Intel Cornell Cup Project.

So what is it we’re building?

The Tufts Roboticists team is building a robotic arm intended for use with any mobile robot. We intend to engineer a modular, lightweight, multipurpose arm that will allow almost any mobile robot to interact with its environment.

 

Making it Multi-purpose

To make the arm multipurpose, we take inspiration from the universal gripper arm, developed by Cornell University:

This arm is able to pick up almost any object, regardless of shape. The only constraint on the arm is the amount of weight it can pick up. Thus, this kind of arm is suited to many applications and will enable almost any mobile robot to interact with its environment.

Our goal, then, is to mount this universal gripper on a lightweight arm, better suited to mobile applications than the one in the video. Our design consists of two joints and a rotating base, allowing for horizontal extension up to 60cm. Here’s a video showing our design in motion:

Making it Power Efficient

Another goal of the arm is to reduce power consumption. Cornell’s universal gripper makes use of a vacuum to create negative pressure, allowing the balloon to grip objects. The problem here is that running a vacuum for the duration an object is picked up consumes a lot of power. We have redesigned the system to use a noncompressible fluid (water), a locking linear actuator, and a syringe to create negative pressure. This required that we changed the solid medium in the balloon from coffee grounds (what Cornell used) to fine glass beads, as coffee grounds will dissolve in water. This mechanism only requires energy to remove fluid from the balloon, and once power is cut from the syringe, it (or rather, the attached linear actuator) will lock in place. This means that once an object has been picked up, no more energy need be expended to hold onto it.

Making it Lightweight

Another important factor in the efficiency of the arm is how much weight it has to lift. Ideally, most of the work done by the arm will be put into lifting the target object. This means we must reduce the weight of the arm itself as much as possible. For this reason, the arm is being made from length of 1″ diameter PVC. Additionally, our larger servo motors will be offloaded from the arm, rotating the base plate and the first join of the arm. A smaller, lighter servo is mounted at the upper joint.

What Can It Do?

Our preliminary calculations show that the arm will be capable of the following:

  • Arm will be able to lift 2.3 kg before stall
  • Arm is 60 cm in length when fully extended
  • Base motor has ~50 kg-cm torque
  • Upper arm joint has ~45 kg-cm torque
  • Full range of motion reachable in 10-15 seconds

What are your designs?

Here is a system diagram showing all the actuators, how they are controlled, and how they are used:

2015012303091078

 

We are currently designing a shield for the Galileo which will have ports for all the actuators to plug into for data. Power will be delivered on separate boards, to protect the Galileo from high currents.

Where are you guys at?

At this point we have received all mechanical parts except a few we need to gear down the servo which will rotate the base plate. We have conducted a proof of concept demonstration of the balloon mechanism with water and glass beads, and found that the mechanism succeeded in picking up objects. We are finishing up a design for a coupling between the linear actuator and syringe. We are also designing the shield for the Galileo which will interface with all actuators. All in all, there is work to be done!


Skip to toolbar