Rope Measure

Darren Smith, Masters Student, Department of Computer Science
Cheng Fu, PhD student, Department of Geography

Rope Measure is a device for measuring distance traveled on climbing rope. It utilizes a dissected optical mouse, an arduino, a 7 segment display, and a 9v battery pack. Parts were 3d printed to hold the rope firmly and closely to the optical sensor.



Motivation

Estimating cliff height accurately is both difficult and important. Two common and potentially dangerous scenarios in climbing could be avoided if cliff heights were known and rope lengths were chosen accordingly. When rappelling, it is common to not be able to see the ends of the ropes after you throw the rope, so you can't always know if the rope goes all the way to the ground. Rappelling off of the ends of ropes in this scenario is a leading cause of death. Another scenario is when a leader climbs a route and is then lowered from the top. If the rope is not twice the length of the cliff then they cannot be lowered to the ground. For these reasons Guidebooks usually list route lengths, however data is often incomplete or inaccurate. "Climb Maryland" is accurate, but in order to get good results the author had to carry a long tape measure (100 ft) and lower this from every point of interest. Our solution does not require anything more than a simple device to attach to a rope that you would already have with you, and most likely setup on the route your are interested in.

Hardware

Screen Shot 2012-11-07 at 10.45.32 AM.png

We used an old LED optical mouse which has the chip ADNS2051. Most mice have a similar or compatible chip. Our idea was inspired by mouse cam. Mouse cam turns the mouse into a camera by accessing the mouse's images used for optical flow. Whereas we only care about the quadrature output (see Software below) of the Y-direction. Powering the mouse like normal (from the usb input) did not work, as the mouse seemed to require some initialization communication before it would turn the LED on. It took some trial and error, but we found that we could connect to the positive end of the LED and the ground input of the ADNS2051 and both the chip and the LED would work correctly (the LED would even auto-power down to save power).

The seven segment display only requires power, ground, and a connection to the Arduino Tx pin.

Enclosure and Rope Holder

Screen Shot 2012-11-06 at 10.11.53 AM.png
The temporary solution for the enclosure is a corrugated board box which fits the folded hardware size well. The rope holder is composed by two 3D-printed plastic square plates. Each plate has a slot so a rope can be inserted when the two plates are folded. And two rubber bands are used to tighten the plates, allowing the rope holder to fit ropes with different diameters. The rubber bands also help to attach the rope holder to the bottom of the enclosure. In the bottom of the box and the upper plate which is close to the box, there is a well designed hole so that the light from LED on the mouse board can reach the rope, and the reflection will also be retrieved by the mouse sensor.

Software

220px-AB_Signal_and_Ref.svg.png
Our code for the Arduino records mouse movements, and outputs numbers to the seven segment display. The ANDS2051 chip from the mouse has pins which output Quadrature for both x and y. Quadrature allows you to track movement with only two bits (pins). In the figure above (from wikipedia), using just lines A and B, if you state is 1, 1, and your next state is , 1 you know that your direction of movement is one state to the right. This method of movement signaling is the same as regular physically turning rotary encoders. We used code provided from the rotary encoder at sparkfun to track quadrature.

The seven segment display, is used by writing to serial out some initialization commands and then just the raw digits. We noticed significant slowdown in our code when this was updated frequently, so we only update the display when an actual number changes.

Arduino code on Github

Challenges

We ran into some difficulty making a fully 3d printed enclosure in a timely manner. We designed a full enclosure + rope holder, but it was fairly complex, requiring long print times, and being susceptible to distortion while printing. When we would realize minor flaws in our design, it would take too long to fix it, as this required starting the print job over. For this reason, we only printed the parts that needed to be solid and robust. Which were two plates to hold the rope, have a hole, and snugly fit the mouse sensor exactly to it.

We also found that our device is not accurate when moving the rope too fast. This is probably because the rope is moving so fast that the ADNS2051 chip cannot process optical flow fast enough to keep up. The chip was designed for highly precise readings in short distances (from calibration we found that it differentiates between 350 pixels per inch). It may be worth looking into seeing if accuracy can be improved by adjusting the depth from the optical sensor to help it focus (the lens has a very narrow spec). Our plate holds it 1mm from the rope, which is about the depth of the original mouse.

Resources

7-segment serial display user's manual
http://en.wikipedia.org/wiki/Quadrature_phase
http://www.circuitsathome.com/mcu/programming/reading-rotary-encoder-on-arduino
"Climb Maryland!"
mouse cam
http://www.martijnthe.nl/2009/07/interfacing-an-optical-mouse-sensor-to-your-arduino/