Staff Firmware Engineer

Agility Robotics Agility Robotics · Robotics · Fremont, CA · Hardware

Staff Firmware Engineer for Agility Robotics, focusing on planning robot firmware architecture, designing subsystems, and developing robust firmware for their humanoid robots. The role involves C++ firmware development for low-level systems, communication layers, and hardware abstraction, along with real-time testing and debugging. Collaboration with cross-disciplinary teams and documentation of interfaces are key responsibilities. Requires extensive C++ experience and embedded systems knowledge.

What you'd actually do

  1. Contribute to the C++ firmware architecture that drives our robot’s low-level sensor network, controls, and power management systems
  2. Develop the firmware communication layer utilizing EtherCAT and CAN
  3. Write firmware for the hardware abstraction layer, peripheral drivers, and applications
  4. Perform real-time hardware testing and debugging using benchtop test equipment such as logic analyzers and oscilloscopes.
  5. Work with cross-disciplinary teams to solve complex problems dealing with the integration of software and hardware

Skills

Required

  • BS in computer science, electrical engineering, or related field
  • modern C++ (17, 20)
  • FreeRTOS or similar
  • best practices for writing performant and maintainable software
  • Linux-based development environment
  • Ability to read schematics, PCB layouts, and component datasheets
  • Ability to verbally communicate technical information effectively

Nice to have

  • implementation of automation fieldbuses such as EtherCAT, CAN, etc.
  • embedded C++ for ARM systems
  • developing real-time or low-latency systems
  • designing and implementing hardware-in-the-loop (HIL) testing frameworks for embedded systems
  • unit testing such as with GTest and coverage analysis
  • Python (3.6+)
  • standard agile and software development processes (issue tracking tools (Jira), feature branching, version control (Git), continuous integration and deployment)
  • using AI in coding

What the JD emphasized

  • 10+ years industry experience
  • Experience writing modern C++ (17, 20)
  • Experience with best practices for writing performant and maintainable software
  • Ability to read schematics, PCB layouts, and component datasheets
  • EtherCAT is highly desirable