Day 16: it moved
Everything has been on the plate for a few days now. The brain, the camera, the servo, the little board that talks to the servo. Bolted down, aligned, cable routes thought about. A very tidy arrangement of objects that had never once done anything.
Today it did something.
The whole robot, such as it is, drawing a hundredth of an amp.
The wall I expected
The last thing to connect was power for the servo. Everything else runs off the Jetson’s own supply, but a servo that stalls can pull more current than the entire computer, and the polite thing to do is give it its own source rather than let it brown out the brain mid-thought.
So: bench supply, two wires, done in five minutes.
The terminal block had twice as many screws as I was expecting, and it turned out that half of them belonged to an entirely different, much higher-voltage system for a servo family I don’t own. Getting that wrong in one particular direction would have destroyed the servo instantly — no fuse, no warning, no second chance. The only thing standing between me and that was reading the tiny printing on the board carefully enough.
I read it carefully. Twice. With a magnifier.
Then I set the supply to six volts, set its current limit deliberately low — low enough that a mistake trips it instead of being delivered — and put a meter on the screws before anything was attached. Six volts, right way round.
That was the wall I’d been bracing for, and it took ten minutes.
Four walls I didn’t expect
The board lit up before I connected the power. Little LEDs, cheerfully on. So I asked the obvious question — do I actually need the bench supply at all? Turns out the board runs its own brain off the USB cable and the servo’s muscle off the other input entirely. Lights on means the thing is awake. It says nothing at all about whether the servo can move. Two power inputs, two completely different jobs, and only one of them makes LEDs.
The camera wasn’t there. I’d installed the driver, set up the streaming, done the permissions dance. Plugged it in. Nothing on the bus at all — not a permissions error, not a half-working device, just absence. It was the cable. A USB cable that charges and does not carry data looks exactly like a USB cable.
The serial port wasn’t where it was supposed to be. Every guide, and every document I’d written myself, said the servo adapter would show up as one thing. It showed up as another, because the chip on this particular board presents itself to Linux as a slightly different class of device than the older, more common one. My own notes were wrong in four separate files. I’d written them all confidently, months apart, having never once had the hardware in front of me.
And then permission denied. The port existed, and I wasn’t allowed to open it. One group membership, one logout, one login.
None of these were hard. That’s sort of the point — the last mile between “fully wired” and “it works” was four small things, none of them the thing I’d spent two weeks worrying about.
It answered
Then the servo answered.
ID 1, which is the factory default and exactly what it should be. It reported its position, its voltage — six point one, against the six I’d set, which is the servo’s own sensor agreeing with my power supply to within a tenth of a volt. Its temperature. Thirty-two degrees. Cold. Not fighting anything.
And it was drawing one hundredth of an amp. Which confused me for a second, until I understood: a servo powers up with its motor disengaged. It was awake, listening, reporting, and doing absolutely nothing with its muscles. All that current was the thinking part.
It moved
Small first. Four degrees, there and back, because I still didn’t know which direction was which and four degrees is safe in either.
It went. It arrived within one encoder count of where I’d asked — about a tenth of a degree — and stayed there.
Then eight moves of twenty-two degrees each, over eleven seconds, and I sat and watched an arm I designed swing back and forth on a plate I designed, being told where to go by a computer bolted to that same plate, in a case I printed for it.
Every single move landed within one count.
The supply never flinched. The whole sequence drew less than the safety limit I’d set, which I’d chosen to be deliberately paranoid. The servo warmed up by one degree.
The bit I liked most
There’s a number the servo reports for how hard it’s working. During the sweep it read the same in both directions, and zero whenever it stopped.
Which tells you something you can’t see by looking at it. If the arm were fighting gravity, one direction would cost more than the other, and holding still would cost something too. Same effort both ways, nothing to hold: the arm isn’t lifting against anything. What I was measuring was friction and the effort of getting a stationary thing moving, and nothing else.
I didn’t have to reason about that. The hardware just told me, in a number, and the number happened to confirm the geometry I’d drawn weeks earlier without being able to check it.
The effort figure was about eleven percent of what the servo can do. It is, to put it mildly, not straining.
Where this leaves things
The hardware side of the first milestone is done. Every stage of the bring-up sequence I wrote — supply, camera, first contact, motion — has passed, in that order, with a meter or a log at each step.
What’s left is software. The camera publishes what it sees, the controller works out where the arm should point, the servo goes there. Two of those three pieces existed only as maths with no wires attached to it. Tonight I wrote the wires.
None of it has been run. The setup is powered down, the arm is free, and tomorrow I’m taking the joint apart to remount it so it can turn a full circle instead of half of one.
But it moved. After eleven weeks of buying things, drawing things, printing things, and reading datasheets on a laptop in a room with no robot in it — the thing moved because I told it to.