About the role
You will own embedded software from microcontrollers and real-time control support through the Linux robot runtime. You will bring up new electronics; build drivers, deterministic communications, timing, health monitoring, calibration, logging, and fault response; and expose stable interfaces to higher-level autonomy.
Embedded Hardware owns released boards, network physical layers, connectors, and harnesses. Power Electronics owns high-current conversion and drive hardware. Robotics Systems owns subsystem integration. You own firmware, drivers, diagnostics, update behavior, and software behavior on those platforms. Success means versioned software produces known behavior on a known hardware configuration and remains observable, recoverable, and testable through degraded conditions.
What you will do
- Design and implement C and C++ firmware, device drivers, hardware abstraction, real-time services, communication protocols, and robot-runtime components.
- Define timing, bandwidth, lifecycle, state-machine, calibration, diagnostic, and fault-response contracts across sensors, actuators, power electronics, compute, and autonomy.
- Bring up new boards and embedded compute using debuggers, oscilloscopes, logic analyzers, bus analyzers, kernel traces, and structured telemetry.
- Build boot, provisioning, parameter, configuration, software-update, rollback, and recovery paths with explicit failure behavior and version compatibility.
- Develop simulation, software-in-the-loop, hardware-in-the-loop, fault-injection, and regression tests that run automatically and gate releases.
- Measure and improve latency, jitter, resource use, startup time, communication reliability, logging completeness, and recovery under load.
- Investigate integrated-machine failures across firmware, Linux, networking, electronics, controls, and autonomy, then carry corrections through reproducible tests and release evidence.
Minimum qualifications
- Bachelor’s degree in computer science, computer engineering, electrical engineering, or a related field, or equivalent practical experience.
- Shipped C or C++ software on a custom electromechanical product using an RTOS, embedded Linux, or both, including direct responsibility for hardware bring-up or field failure resolution.
- Implemented and debugged device drivers, interrupts, DMA, concurrency, memory ownership, and at least one physical interface such as CAN, EtherCAT, Ethernet, SPI, I2C, or UART.
- Demonstrated real-time systems work with measured latency, jitter, bandwidth, CPU or memory use, and behavior under overload or component failure.
- Closed a hardware-software defect using instrumentation and captured evidence, then added an automated test, monitor, or fault response that prevented recurrence.
Preferred experience
- Robotics, autonomous vehicles, aerospace, industrial controls, or other distributed real-time machines.
- Bootloaders, secure boot, over-the-air updates, Yocto, kernel or device-tree development, time synchronization, or deterministic networking.
- Hardware-in-the-loop infrastructure, safety-related embedded systems, fleet configuration, or production programming and calibration.
Working at GRAM
This role is based on-site in El Segundo and is inseparable from physical hardware. You will work at the bench and on the machine with electrical, controls, autonomy, system safety, data, manufacturing, and reliability engineers. Software changes will be evaluated against instrumented behavior, not only code-level tests.