Skip to content

Motor Controller Bridge

STM32 firmware connecting the motor controller to the Raspberry Pi superordinate controller. The bridge relays messages between the CAN bus and the motor controller boards.

Overview

The Kiwi Robot connects its subsystems through one CAN bus. The Motor Controller Boards drive the motors, but they are third-party products with a UART interface only. The Bridge makes them appear on the CAN bus as if they were CAN nodes. It is the only participant that speaks both interfaces.

The main stakeholder is the Superordinate Controller, a Raspberry Pi that commands the robot over CAN. Developers can attach a notebook to the USB serial port to watch debug output.

The Bridge is deliberately simple. It relays messages and adds no behavior of its own. Each capability of the Bridge is specified in one file under Capabilities. See the System Context for the environment.

AI Assistant Configuration

Claude Code configuration cascades from committed, team-shared files to personal, uncommitted overrides:

  • CLAUDE.md (project root) — committed, shared instructions for the whole team
  • CLAUDE.local.md (project root, gitignored) — personal additions, loaded alongside CLAUDE.md
  • .claude/rules/ — committed, project-wide or path-scoped rules (extracted from the guidelines)
  • .claude/settings.json — committed, shared tool and permission settings
  • .claude/settings.local.json (gitignored) — personal overrides
  • .mcp.json — committed, team-shared MCP server config. GitLab projects come with GitLab's official MCP server preconfigured (OAuth, no secret to set up — approve it once via /mcp); GitHub projects start with an empty config, since GitHub's MCP server is still limited-rollout — add it yourself with claude mcp add once available on your account.

See the Claude Code Memory Documentation for the full loading order and precedence rules.