Open position

Senior Software Engineer (Firmware and Robotics)

Hybrid San Jose, CA Senior Full-time $200,000 – $250,000

We are seeking a Senior Software Engineer to write the embedded firmware on the microcontrollers inside our robots and the ROS 2 drivers that talk to it. The firmware handles internal communication between motor controllers, sensors, and safety hardware. The drivers expose that hardware to the on-robot compute.

You will work in the core robotics team with hardware and controls engineers, on the bench and on deployed robots.

What you’ll do

  • Develop and own embedded firmware on the robot microcontrollers, from board bring-up through production release.
  • Design the internal communication layer between MCUs, motor controllers, sensors, and the on-robot compute, including bus protocols and error recovery.
  • Own timing-critical firmware paths: interrupts, DMA, scheduling, and the latency and jitter budgets.
  • Write MCU peripheral drivers: CAN, SPI, I2C, UART, timers, ADC, and GPIO.
  • Build and own the ROS 2 drivers and ros2_control hardware interfaces that expose robot hardware to AMP.
  • Define the firmware to driver interface, including clock synchronization and diagnostics, and keep it stable as hardware changes.
  • Maintain the bootloader and firmware update path, including recovery from a failed update.
  • Implement the firmware side of safety-relevant signal paths, under the safety architecture.
  • Diagnose failures across the firmware, driver, and hardware boundaries, on the bench and on deployed robots.

Job requirements

Experience

  • 5 to 8 or more years of professional engineering experience, with at least 3 years writing production embedded firmware on microcontrollers.
  • Experience bringing up a new board from first power-on through to a working driver on the host.
  • Experience shipping firmware onto fielded hardware, where a defect has a physical cost.
  • Experience working directly with hardware and controls engineers through design and debug.

Education

  • Master’s degree or higher in Computer Engineering, Electrical Engineering, Robotics, Computer Science, or a closely related technical field. This is a minimum requirement.

Core technical background

  • Strong embedded C, plus C++ where the target supports it.
  • Strong grasp of MCU architecture: interrupts, DMA, memory maps, clock trees, power modes, and peripheral configuration.
  • Experience with an RTOS such as FreeRTOS or Zephyr, and with bare-metal firmware where no RTOS is used.
  • Hands-on experience with embedded and industrial buses: CAN and CAN FD, SPI, I2C, UART, and EtherCAT or another Ethernet-based fieldbus.
  • Experience designing a communication protocol over a bus, including error handling and version compatibility.
  • Experience with bootloaders, firmware update mechanisms, and memory partitioning.
  • Experience with motor control and drive interfaces, including homing, limits, and fault handling.
  • Hands-on experience writing ROS or ROS 2 drivers and ros2_control hardware interfaces.
  • Working knowledge of C++ and Python on the host side, including driver diagnostics and introspection.
  • Fluent with an oscilloscope, logic analyzer, and bus analyzer, and able to read a schematic.

Systems mindset

  • Ability to isolate a firmware defect from a hardware defect and show the evidence.
  • Designs for dropped frames, bus errors, brownout, and sensor dropout.
  • Works to worst-case timing, not typical timing.
  • Clear view of what belongs in firmware and what belongs in the driver.
  • Builds on the assumption that a firmware update in the field is expensive.

Collaboration

  • Willing to work on hardware in the lab and at customer sites.
  • Clear communicator who can work effectively with remote teams across multiple time zones, including hardware colleagues in Germany.

Nice to have

  • Experience with KUKA hardware or KUKA controller interfaces.
  • Experience with functional safety in firmware, including dual-channel architectures and IEC 61508 or ISO 13849.
  • Experience implementing the device side of EtherCAT (SubDevice) or another fieldbus stack.
  • Experience with AMR or mobile manipulator platforms in production.
  • Experience with firmware and driver testing: hardware-in-the-loop rigs, unit testing on target, and static analysis.
  • Prior open-source contributions to ros2_control or the ROS hardware ecosystem.