Menu
The robot E-wanna riding the twin steel cables of a mock high-tension power line at night, headlights on, during the UNETBots 2015 competition

E-wanna — a Power-Line Inspection Robot

  • October, 2015

Real high-tension transmission lines run for kilometers through terrain that's slow and dangerous for a person to walk, so keeping them running means either sending a lineman to climb the towers or renting a helicopter. E-wanna is a robot built by team FutBot USB (Universidad Simón Bolívar) for the DESAFÍO category of UNETBots 2015, a national robotics competition whose challenge was exactly that: build an autonomous robot that rides the cable itself, finds hot spots and encroaching vegetation, reports how far each one is from the start, and physically cuts the vegetation off the line — all while two electric fans blow simulated wind at it.

Step 1Define

The Challenge

UNETBots is Venezuela's national robotics competition, hosted by Universidad Nacional Experimental del Táchira (UNET) together with AVERD (Asociación Venezolana de Robótica y Domótica) and FUNDELEC, the government's electrical-service development foundation. The 2015 edition's DESAFÍO category asked teams to automate exactly the kind of inspection real utility linemen do by hand or by helicopter.

Official diagram of the competition rig: five towers carrying twin steel cables with ceramic insulators, marked hot points, tissue-paper vegetation knots on the wires, foam vegetation blocks below, and two wind fans

The official course (from the competition rulebook): 5 towers, twin 1/4″ steel cables 25 cm apart, white-tape "hot points," paper-tissue vegetation knots on the wire, foam blocks simulating roadside brush, and two 3-speed fans for wind.

Robots had to weigh 1500 g or less and fit in a 30×30×30 cm cube. Points were awarded per hot point found (more if its distance from the start was also reported correctly), per tower cleared, per dangerous weed detected within 40 cm of a conductor, and per piece of on-wire vegetation actually removed — with a penalty for any left behind. Running with the wind fans on paid a speed bonus. The event ran classification → quarterfinals/semifinal → a single-attempt final over three days (Oct 28–30, 2015) in San Cristóbal.

What It Had to Do

The competition rulebook spells out the brief; these are the parts that shaped E-wanna:

  • Size1500 g or less, fitting inside a 30×30×30 cm cube
  • RideTravel on one or both 1/4″ (≈0.65 cm) steel conductors, on top or hanging, past the ≈1.1 cm ceramic insulators at every tower and up to the higher centre tower
  • LocateGive the distance from the start mark to every hot point and every weed within 40 cm of a conductor, to ±5 cm
  • ReportAt each find, stop for at least 10 s, light a red (hot point) or green (weed) LED and show the distance on a screen
  • ClearRemove every tissue‑paper knot on the wires, and never touch the ground
  • WindStay on the line with the two fans blowing
  • Time5 minutes per attempt, 10 in the final

Step 2Simulate

Motor Driver in Proteus

We first drew the motor driver as a Proteus model in mid‑August 2015, about a week before the board was soldered. The schematic below is that model rather than a board drawing: the PIC16F877A drives ULN2003A arrays, each wired to one of Proteus's animated unipolar stepper motors (the +88.8 boxes are their live readouts), ideal 5 V and 12 V batteries stand in for the supply, and the I²C, serial, step and direction lines end in labelled terminals.

Schematic of the motor driver board: a PIC16F877A driving ULN2003A Darlington arrays, communicating over I2C and serial to the Arduino

The motor driver board: a PIC16F877A plus five ULN2003 Darlington arrays for the drive and cutter motors.

Step 3Build

System Architecture

E-wanna splits the work across three boards, each doing only what it's best suited for:

BoardRoleWhy
Raspberry PiMain controller — runs the state machine and the computer-vision pipeline, makes all high-level decisionsOnly board in the stack with enough headroom to run OpenCV on camera frames in real time
Arduino Mega 2560Sensor controller — reads the IR/line sensors, talks to the motor board, validates sensor data before passing it upHuge pin count for the sensor fan-out, plus a custom shield soldered directly to it
PIC16F877AMotor controller — generates the step/direction signals and drives five ULN2003 Darlington arrays that provide the actual motor powerA dedicated, interrupt-driven board keeps motor timing precise regardless of what the Pi/Arduino are doing

The Pi talks to the Arduino over a plain serial link; the Arduino talks to the PIC over I²C. Both hops use small, fixed-format text/byte commands rather than anything heavier — see Communication below.

Our write‑up is explicit about why: a plain microcontroller wouldn't have had the headroom to run computer vision, so the Pi does all the high-level decision-making through a state machine and treats every other board as a subordinate that only hands up already-processed sensor data. That state machine is also what decides how long the robot pauses at each hot point or vegetation cluster to show its reading before moving on.

A Raspberry Pi in a case with a red 3D-printed pan-tilt camera mount, connected by ribbon cable to the Arduino shield perfboard

The Raspberry Pi with its 3D-printed camera mount, wired to the Arduino shield.

Close-up of E-wanna's electronics stack: a PIC perfboard, a Raspberry Pi, ribbon cable, four stepper motors and two headlight LEDs, mounted on pink foam padding

E-wanna semi-assembled on the lab's cable rig, with a FutBot USB team poster visible on the wall behind it

The finished electronics stack (left), and, from our paper on E-wanna, the semi-assembled robot (right).

Mechanical Design

The chassis is welded from thick steel wire rather than sheet metal or 3D-printed plastic — lighter, and its open lattice doesn't catch much wind. Getting a clean weld on wire that thick took a few failed attempts; the fix that worked was wrapping each joint with a thin wound wire before soldering, so the joint closed around something instead of trying to bridge bare wire to wire.

The robot's welded steel-wire chassis frame, with a sheet-metal deck riveted on top and a cutout for the camera

A side view of the assembled chassis showing the stepper motors and wheel mounts at the rear

The welded frame under construction, and the finished chassis with motors mounted.

Top-down view of the finished chassis mounted on all four wheels on the cable, showing the sheet-metal deck cutout with wiring passing through

The finished chassis riding the cable on all four wheels, from our paper.

Four 3D-printed wheels carry the robot: the rear two are keyed directly to the stepper motor shafts (a friction-fit adapter clamps each wheel on with a single screw) and provide all the driving force; the front two spin freely on a bearing axle and are only along for balance. Every wheel has a machined groove sized to ride the 1/4″ cable while still clearing the ceramic insulators bolted to each tower ring — a couple of millimeters of tolerance is the difference between rolling through cleanly and getting stuck on every single insulator.

A hand-drawn design sketch dimensioning the wheel groove against the cable diameter (0.65 cm) and the insulator diameter (1.1 cm)

Close-up of the robot's front axle and bearings, which let the front wheels spin freely while being pushed by the rear stepper motors

Working out the wheel-groove clearance by hand — the groove has to pass a 0.65 cm cable and the 1.1 cm insulators bolted along it — and the free-rolling front axle and bearings themselves.

Vegetation removal borrows straight from a string-trimmer: a small DC motor spins two twisted lengths of thin copper wire fast enough to shred the paper-tissue "weed" bundles clipped to the line, and switches on only when the vision system has actually flagged vegetation ahead — it doesn't run continuously.

Electronics

SensorPurpose
Camera (Pi Camera)Finds the wire and towers ahead, and is the primary way the robot measures how far it's traveled from the start
IMUTracks the robot's tilt relative to the cable, to correct the camera-based distance estimate on sloped sections (the center tower sits higher than the rest, so the line isn't flat)
2× line sensorsTell the robot which side is riding correctly on a conductor
Sharp analog IRRanges the corridor below the line for waist-height vegetation encroaching on the right-of-way

Everything runs on +12 V and +5 V from a single 12 V/4.8 Ah battery, stepped down to 5 V with a switching regulator. An LCD on the chassis shows the live distance reading, three status LEDs (green/red/blue) report what the robot last found, and a physical switch is the only way to power it on.

An Arduino Uno wired to a custom PIC perfboard with terminal blocks, alongside two unipolar stepper motors, during bench testing

Hand-soldering the motor driver perfboard

Bench-testing the motor driver with an Arduino stand-in before the real Mega 2560 shield was ready, and hand-soldering the board itself.

The underside of the Arduino Mega shield perfboard, showing the hand-soldered tin traces connecting all the sensor headers

The motor driver board and the distance-readout LCD mounted on the chassis, with a stepper motor visible on each side

The Arduino shield's hand-soldered underside, and the motor driver board with the distance-readout LCD mounted on the chassis — both from our paper.

Power distribution diagram showing which components connect to the GND, 12V and 5V rails

Power distribution across the three rails — motors and headlights on 12 V, logic and sensors on 5 V.

Computer Vision

Rather than anything ML-based, the vision pipeline is a deliberately simple, deliberately robust color-blob detector — our own postmortem specifically flags lighting sensitivity as the main risk with camera-based approaches at a competition where you don't control the room. The Pi Camera runs with auto white balance locked off and a fixed "sports" (fast-shutter) exposure mode, so frame-to-frame color doesn't drift while the robot is moving:

  1. Crop a window around the expected tower location in the frame.
  2. Convert to HSV and threshold for the tower's known color range.
  3. Clean up the mask with a morphological opening and take the largest contour.
  4. Estimate distance to the tower from the contour's bounding-box width, using the classic similar-triangles relationship: distance = (real_width × focal_length) / pixel_width.
  5. A sudden jump in that distance means the robot just passed under a tower — increment the tower counter.

On the Raspberry Pi, vision runs in its own OS process (Python's multiprocessing), separate from the process driving the OLED status display and the one handling serial I/O to the Arduino, connected by pipes. That way a slow camera frame never stalls the serial link or freezes the display.

Communication Protocol

Both hops in the control chain use small, fixed-format messages instead of anything heavier:

Arduino → PIC (I²C, address 0x61) — a 6-byte frame per command:

ByteMeaning
1Mode: 0 move N steps, 1 set each coil pin directly, 2 move continuously
2Which motor (0–3)
3Step type: single / double / half
4Direction: derecha / izquierda
5Number of steps
6Delay between steps, in ms

On the PIC, all of this runs entirely from interrupts (Timer0 steps the motors, SSP handles I²C, RB-change reads the line sensors, RDA reads serial) — main() itself is just an empty while(true) loop. The step sequencing itself is a straightforward set of lookup tables for single/double/half-step unipolar drive, one table per direction.

Raspberry Pi → Arduino (serial) — short, human-readable ASCII commands, each character sent 5× in a row for reliability, e.g. MON/MOFF (drive motors on/off), CON/COFF (cutter on/off), RON/ROFF, VON/VOFF, ZON/ZOFF (red/green/blue status LEDs), and MFREC30–MFREC90 for seven preset drive speeds.

Step 4Test

Test Rigs

The official course didn't exist yet for most of the build, so we tested on stand‑ins of our own: first a small mock tower at home, with twin steel cables and foam blocks for the brush, and later a single cable strung between two welded towers in a classroom.

A small home-built mock power-line tower with a wooden mast, twin steel cables, and foam blocks standing in for roadside vegetation, used to test the robot before the real rig was available

Our classroom test rig: a single cable strung between two welded towers, with a hand-drawn system architecture diagram on the whiteboard behind it

The improvised test rig we built at home so the vision code had something to practice on before the official one existed (left), and, from our paper, the single-cable classroom rig we eventually built to test it (right) — note the system-architecture diagram sketched on the whiteboard behind it.

Sharp IR Calibration

The Sharp IR sensor needed its own calibration curve, since the raw ADC reading isn't linear with distance. A quick bench measurement and curve fit gave a clean exponential relationship that the firmware could invert cheaply:

A plot of measured distance versus ADC reading for the Sharp IR sensor, with a fitted exponential curve y = 147.5 e^(-0.01x) + 10.36

Distance vs. ADC-conversion curve for the Sharp sensor, fitted to y = 147.5·e−0.01x + 10.36. The PIC firmware carries the same relationship baked into a lookup table.

A photo from 24 October 2015 shows the bench: the sensor on a small bracket at the start of a tape measure, aimed along it at a cardboard target, and wired back to the Arduino and the PIC board. A second table lists the PIC's ADC reading for every centimetre from 10 to 45 cm, which covers the band the rules cared about: weeds within 40 cm of a conductor had to be reported, and none would be placed closer than 20 cm.

The Sharp IR sensor clamped on a small bracket at the zero end of a yellow tape measure on a wooden board, aimed at a cardboard target, with its wires running back to an Arduino Uno and a PIC perfboard with terminal blocks

Calibrating the Sharp sensor: tape measure, cardboard target, and the Arduino and PIC board on the left.

Vision Tests

A debug recording from development: raw camera feed (left) next to the detected-contour overlay (right) used to tune the color thresholds on the bench before the real rig existed.

Our team developed a system that was able to tell apart the three things the rig actually throws at it — hot points, insulators, and vegetation — once it was running on the real course. Hot points on the official rig are marked with white tape, which shows up clearly in this annotated frame from our paper: several white and yellow markers, each labeled and carrying its own measured distance from the start, overlaid directly on the image.

An annotated camera frame from the vision system showing several detected markers labeled 'blanco' (white) and 'amarillo' (yellow), each tagged with its own measured distance in centimeters

The vision system's own output, from our paper: detected markers labeled by color, each carrying its measured distance in centimeters.

That frame is the result of the final test in my teammate Said Alvarado's internship report on the distance measurement (September 2015). During development the algorithm was checked against two black lines drawn on a sheet of paper, with the camera about 11 cm above them; the final test used two steel cables 25 cm apart, as in the rules, over an irregular floor. Once the colour filters were recalibrated for it, the measurements came out with less than 5 mm of error — the rules allowed ±5 cm — at no more than 7 analysed frames per second on the development computer.

Step 5Refine

Problems Along the Way

  • Welding the chassis — thick wire wouldn't take a clean joint until we started wrapping each junction with a thin coiled wire first, giving the solder something to close around.
  • Motor selection — DC motors were prototyped first, but steppers won out because step count gives distance-traveled for free. Getting enough torque to carry the robot's weight over the whole course took more than one redesign of the driver circuit for higher current.
  • Vision under real lighting — development started before the real test rig existed, using an improvised home-built stand-in, so the color thresholds were tuned somewhat blind to the actual competition lighting. Locking the camera's white balance and exposure was the main mitigation.

What We'd Do Differently

  • Build (or borrow) a course rig at the very start of the project, not near the end — it's the only way to test vision honestly, and it also gives a fast, concrete way to check whether the robot is even sized correctly.
  • Consider dedicated color sensors instead of a camera, if the mission allows it — a lot of complexity in this build exists purely to compensate for camera/lighting variability.
  • Work out the actual power the motors need to consume for good performance before picking them, not after — guessing low cost us multiple motor swaps mid-project.
  • Many mechanical parts, and even the rig's own insulators, were 3D-printed; find an affordable commercial partner for that ahead of time rather than during the crunch.
  • Budget at least three months, full-time, for a project with this many interacting sensors and subsystems.

Our goal was never just to win the category: we built E-wanna hoping the approach could genuinely be extrapolated to real high-tension lines, and to help push the national maintenance problem it's modeled on a little further along.

Team

Team FutBot USB posing with E-wanna mounted on the display rig at the UNETBots 2015 competition

Team FutBot USB at UNETBots 2015, San Cristóbal.

E-wanna was designed and built by Jorge Pérez, Said Alvarado, Nestor Sánchez and Leonardo Ward — team FutBot USB, Universidad Simón Bolívar — for the DESAFÍO category of UNETBots 2015.

Posted In:
Robotics