Case Study · Robotics · Animal Welfare

CANIS

A behaviour robot for my fearful dog that only ever rewards — built on the position that if a machine is going to interact with an anxious animal, welfare has to be an architectural constraint, not a setting.

Built · Working
CANIS chassis prototype — a Raspberry Pi 5 in a black case mounted on a yellow and black perforated-metal chassis with rubber drive wheels
The working chassis: Raspberry Pi 5 (vision) riding on the drive platform.

The problem

My dog, Shifu, is fearful. Most consumer "training" devices attack that problem with aversives — spray, noise, static — which for a fearful dog doesn't fix behaviour, it deepens the fear. The behaviour-science approach that actually works is graded exposure with positive reinforcement: let the dog choose the right behaviour, reward it instantly, and never push past the level the dog can handle.

That protocol is very demanding for a human to run consistently. It is, however, exactly the kind of thing a machine can do with perfect patience.

Constraints

The core design inversion: CANIS rewards Shifu for leaving a zone — reinforcing the dog's own choice to disengage — rather than punishing him for entering one. Same behavioural goal, opposite emotional experience for the dog.

System architecture

CANIS is deliberately distributed across three controllers, each doing the job it's best at:

Safety is enforced by a ~1-second motion watchdog: if fresh vision data stops arriving, all motion halts within about a second. The robot is only ever allowed to move while perception is provably alive.

Perception

Raspberry Pi 5 · ArUco marker tracking

Behaviour logic

ESP32 arousal state machine · hysteresis · graded exposure levels

Actuation

Arduino treat dispenser

Fail-safe

~1 s motion watchdog — halt on stale vision

Principle

Reward for leaving a zone · no punishment path exists

Subject

Shifu (the dog)

What I built

CAD render of CANIS — a treat-dispenser hopper and blue electronics modules on a grey deck under a translucent shell, with drive wheels
CAD: treat hopper feeding the dispenser, electronics deck, and the translucent shell.

Results

CANIS is built and working: the full loop — ArUco tracking → arousal state machine → treat dispense on leaving a zone — runs end to end on the real robot, with the watchdog verified to halt motion when the vision feed is interrupted.

Honest limitations