Over here in the Netherlands we usually have just a few days or weeks of snow per year. When the time comes, there are three things that absolutely have to happen.
Go sledging
Go ice skating
Build a robot to drive in the snow
I wont bother you with the first two items, but I thought you might like number three.
I was surprised that I couldn’t find a single video of a snow plow, plowing real snow. There are robots pushing LEGO around, and static models of a snow plow. This is what I made.
The robot is a regular half-track, but uses a triangular tread configuration to keep the motor out of the snow. It also has a rotation sensor on the unpowered front wheels, to detect the robot isn’t moving.
I’m not sure if you are interested in the software or building instructions, because it uses the RCX with parts from Ultimate Accessories and Ultimate Builders sets, as well as miscellaneous red parts. Are you?
Unlike the Cyber, the Sciento is controlled by sending actual ASCII commands, rather than stepping the motors directly.
It is a lot smarter than the other arm, as it can remember its position. A list of commands:
“Z” Sets the reference point
“N” Go to the reference position
“C”/”O” Close/open the claw
“M100,0,-250,0,0,0” Move the motors for the specified steps.
“H7” Save the current position in the specified register(1-100)
“P5,500,200,-5,0,0,0” Save the specified position in the specified register(first number, 1-100)
“G1” Move to the location in the specified register
“S5” Set the motor speed(1-5)
“D1” Wait for x seconds. Useless?
“L1” Check the limits of the motors. Recommended for testing, off by default.
Note that numbers are represented as ASCII text and that commands are upper-case. All commands are terminated by a carriage return.
A downside to this arm is that in comparison to the one-byte commands for the Cyber, it takes ages to send an ASCII command across, making this arm unsuitable for smooth control with a gamepad.
I programmed a coarse and ugly controller, with buttons for storing positions and moving to them. In the video I’m just stepping through the motions I stored earlier.
The controller is a real mess, based on the Cyber code, and not very interesting.
The code for the arm itself is nice though. Note the use of the actual strobe line, as opposed to the strobe bit in the Cyber code.
We got 2 robotic arms from a school lab that did them away. After we got them, they had been accumulating dust for ages in our shed, with one failed attempt at making them work in between.
This was my second attempt. As you can imagine, there aren’t nearly as many people writing about robotic arms as there are writing about Clojure or Node.js, so documentation is sparse.
The most useful (English!) resource I found was this collection, which has original manual pages he got from a museum(!). I contacted him for a couple more pages, which where very helpful.
I can only say it was very hard to find out how easy it was to control this arm.
Basically, you have one pin for every motor, and 2 control pins. To send a command you just set the motor pins, and then turn the corresponding toggle pin on and off.
To reverse motor 2:
01000000
01000001
01000000
To turn motor 3 one step:
00100000
00100010
00100000
Once I figured that out, I probably spent most of my time installing stuff on Windows, then installing Ubuntu and installing there.
To make PyParallel work, I had to rmmod lp and to run as root.
The code, might you have a dusty Cyber 310 in your shed: