It bumps its own shell: measuring where the head can really go
- Log
- 12 of 25
- Date
- Reading
- 3 min read
Skills in this log
Something broke in this log. It is written up anyway.
Shortly before one in the morning on 25 October, I filmed six seconds of the robot doing nothing. Its head was tilted about 8 degrees to its left, the antennas uneven, and it no longer reacted to anything. I restarted it.

What happened
The log of my program had nothing to say: it was healthy, it had answered me 25 seconds earlier. The system log of the robot would have told more, but it is not kept across restarts: everything before the restart was gone. Lesson one: I want that log to survive the next time.
What I could see on the video was the head pressed against the body’s shell. The most likely story: a motor pushed against the shell goes into protection and cuts its torque. The head sags and tilts. Only a restart brings it back. That fits everything I saw, but without the lost log it remains a hypothesis.
Who pushes the head into the shell?
I listed every part that moves the head:
- the maker’s face tracking, which turns the head towards a face, with no limit of its own;
- my program’s ear, which turned the head towards a sound;
- the glance before an emotion;
- the recorded emotions themselves;
- the start of an emotion: its first position is sent at once, at full speed, from wherever the head happens to be.
The model said one thing
The maker publishes a 3D collision model of the robot. Simulating it, the head should touch the shell at about +55 degrees on its left and −50 to −55 on its right. But the model is made of rough cylinders and boxes, and in it the robot’s sleeping pose sits 9 mm inside the shell. I did not trust it.
The robot said another
So I measured on the robot itself, bare, body fixed, turning the head in 5-degree steps. Detecting a contact took three passes. The first compared the pose asked for with the pose measured, which drifted by 6 degrees even at rest: misleading. The second watched each motor with a threshold of 4 degrees, too low, since a free motor already lags by 2 to 4. The third, the right one, flagged a lag over 6.5 degrees or a jump over 2.5 between two steps.
| Head position | Free up to | Contact at |
|---|---|---|
| Neutral | −35° on its right, +75° on its left | −40° on its right |
| Tilted down 15° | −60° and +65° | not reached |
| Tilted up 15° | not noted | −70° and +70° |
| Nodding only | ±40° | ±45° |
| Rolling only | ±50° | not reached |
| Lowered by 10 mm | ±60° | not reached |
| Raised by 10 mm | not noted | −35° and +30°, the limit of the motors more than the shell |
The model was wrong by 10 to 15 degrees: optimistic on the right, pessimistic on the left. And the asymmetry is real: −40 on one side, +75 on the other. Something in the head’s shell or in my assembly is slightly off centre. I still have to look.
Five recorded emotions go beyond −35° on the right. One of them, “curious”, goes to −45°. It played 47 seconds before my video, while face tracking already held the head at −37°.
The guardrails, the same night
At two in the morning, on the robot: the “curious” family removed, the glance limited to 25 degrees instead of 35, the ear to 30 degrees instead of 150. And, in passing, the greeting shortened from 8 seconds to 3.
Next
Removing “curious” is a bandage, and I do not want to lose it: it is one of the robot’s best faces. The real fix is a neck. The head will stay between −30 and +45 degrees of the body, and beyond that the body will turn and take the rest. Then the emotions will start softly instead of jumping, a watchdog will back off when a motor strains, and “curious” will come back.

