TulBot is an autonomous robot built (with breaks) roughly from year 2009 to 2012. It was created while I was studying at the Technical University of Liberec – hence the name TUL-BOT. Of couse project was also supported by the school. The basic idea was simple – to create a universal robot for academic (and enthusiast) robotic competitions like Eurobot, Sick Robot Day, Robotour or Robotic Day. Usually, robots for these events are strictly dedicated to perform particular competition task. They are sometimes even designed to serve for only one year of a particular competition. Such ephemeral robot did not seem like the ideal solution. The idea was thus to create some more handy machine, which would be capable of performing a wider variety of tasks. Ideally it should not be limited only to indoor competition, but just handle everything in every environment.
The robot has a classical differential wheeled undercart with two driven wheels and one omni-directional wheel. By default robot has indoor wheels with hard tread (to achieve more accurate odometry). For outdoor operations, however, the robot can switch to a significantly larger pneumatic wheels. Indoor wheels don’t even need to be dismount during the transition. Outdoor wheels have a special flange, which enables them to be attached directly onto indoor wheels (using indoor wheels as carriers). The robot has naturally sensor equipment for working in indoor or outdoors environment. Ultrasonic rangefinder, infrared range finders, camera, GPS, electronic compass, IMU unit. But the most importantly, robot has a depth camera – Kinect and a key element of universality – a mechanical arm.
Vision is essential
From the beginning it was clear that if the robot should be able to manipulate with something, it must perceive it’s surroundings perfectly. Much better than conventional task dedicated robot which can afford half-blind picking with some adapted grabber. Of course it would be absolutely ideal to base machine vision on a spatial Lidar (which, after all, is now used by various professional autonomous cars). But such sensor would somewhat exceeded the planned budget. Actually it would exceeded it a lot, roughly hundredfold. I note that the toys like Kinect or Asus Xtion did not exist yet in 2009. Other avaible solutions were for example SwissRanger or SICK LMS 200. For a student budget equivalently unreachable, of course.
It was therefore decided to create a custom vision system. The system was supposed to be able to capture a two-dimensional “slice” through space, much like Sick LMS 200, but would fit into approx. 80€ budget. The principle is shown in the figure above. The system is using line laser and a camera (inside the body of the robot). Line laser is projecting a line on the ground in front of the robot and the camera is capturing a distortion of the line. Subsequently, the software is supposed to reconstruct the space (and a obstacles) in front of the robot. Since the laser with line pojecting optics was again quite expensive and in fact also very low power (these devices are usually intended as a component in barcode readers), it was again decided to create some custom solution. I managed to get an adequate powered laser from eBay – decent 50mW retina burner. Now just change the dot into the line. Spreading the laser beam was finally ensured by oscillating actuator from discarded hard drive and a small mirror. Sure, it would be possible to use only a small motor with a mirror mounted on a rotor, but such solution would waste the the light beam at the moment when the projected beam runs somewhere behind the sensor. Since the system has to work also in outdoor, it can not afford to waste a precious light. The projecting device is shown on the image below …
Although the laser system works reasonably after completing (in outdoor only in the shade – I need a 500mW retina burner next time 🙂 ), the robot over time acquired some more advanced vision systems. For example machine vision system using stereo disparity (on the cover image) from colleague Žabčík . Finally, in early 2011 Kinect came out and the choice of the final vision system was clear.
Mechanical arm makes a nifty robots
Universal robot means above all a universal mechanical manipulator. TulBot is therefore equipped with a complete mechanical arm with five degrees of freedom. Again there was a opportunity to just get some final mechanical arm solution, probably from Lynxmotion. However, after seeing these manipulators in action, I again prefered to make a new one from scratch. The majority of hobby manipulators have no sufficient stiffness, movement is imprecise and arm is constantly vibrating.
Individual segments are relatively short to prevent the oscillation of the arm. The two most loaded servos also do not use the built-in servo amplifier. Only wires for motor power and feedback potentiometer are brought out and the servo is drived by a custom electronics circuit. This circuit, among other things, ensures soft and smooth lifting of burdened arm segment or electric braking if the burdened arm segment is descending. Generally, the servo having a long lever on the shaft (in addition with a variable burden at the end of the lever) is in principle a bad solution and any good behavior can not be expected anyway. However, the stepper motor would incredibly weight and complicated the arm (and the entire robot).
Gripper was designed as a self-locking mechanical parallel motion gripper. Undoubtedly, some even more universal concepts can be found. However it is not a problem to switch to another tool like vacuum cups, or anything else.