Senior Software Engineer, Onboard Autonomy
Develop and deploy onboard autonomy software for self-driving vehicles, focusing on real-time decision-making, sensor integration, and optimization under strict constraints. Requires strong C++/Rust skills and experience with robotics middleware and embedded systems.
About the job
What You’ll Do
- Develop, integrate, and deploy onboard autonomy behaviors (e.g., navigation, obstacle avoidance, lane/route following, docking, interaction behaviors).
- Implement and maintain real-time decision-making components: behavior planning, state machines/behavior trees, local planning, and control interfaces.
- Build robust sensor-driven autonomy pipelines on-device (camera, lidar, radar, IMU, wheel odometry, GNSS), including synchronization, calibration hooks, and fault handling.
- Optimize autonomy performance for latency, CPU/GPU usage, memory, and power on embedded compute (e.g., NVIDIA Jetson, x86 edge boxes, custom ECUs).
- Design and implement safety and fallback strategies: health monitoring, degraded modes, watchdogs, safe-stop, and redundancy-aware logic.
- Own the autonomy stack’s on-robot integration: bring-up, debugging, profiling, logging, and release validation on real hardware.
- Improve onboard observability: structured logs, traces, metrics, event recording, and tools to support incident review and rapid iteration.
- Collaborate with perception, mapping/localization, controls, hardware, and systems teams to define clear interfaces and ship end-to-end features.
- Participate in field testing and root-cause analysis of autonomy issues seen in real deployments.
Required Experience
- Strong software engineering skills in C++ and/or Rust (Python acceptable as a supporting language).
- Experience shipping software that runs on-device with real-world constraints (embedded Linux, real-time-ish systems, performance-sensitive code).
- Understanding of autonomy fundamentals: planning, state estimation/localization, controls, and how they interface (you don’t need to be an expert in all).
- Experience with robotics middleware and tooling (commonly ROS/ROS 2, custom pub/sub frameworks, gRPC, DDS, etc.).
- Proficiency with debugging and performance tools (e.g., gdb/lldb, perf, flamegraphs, profiling GPU workloads, log/trace analysis).
- Strong testing discipline: unit/integration tests, simulation/HIL concepts, and safe rollout practices for autonomy.
Nice to Have
- Experience with behavior trees (e.g., BehaviorTree.CPP), hierarchical state machines, or mission/task planning.
- Practical experience with local planners (trajectory rollout, MPC, sampling-based methods) and real-time control loops.
- Sensor fusion experience (EKF/UKF), time sync, calibration, and handling intermittent sensors.
- Experience with mapping and localization stacks (scan matching, visual-inertial odometry, SLAM, map-based localization).
- Familiarity with safety standards/processes (e.g., ISO 26262 concepts, FMEA, hazard analysis) depending on domain.
- Experience deploying autonomy to fleets: OTA updates, versioning, configuration management, and field telemetry.
- Experience in inference optimization
Compensation: $193,930 - $291,150/year base pay, plus annual performance bonus, equity, and competitive benefits.
Skills
C++, Rust, Python, ROS, Ros 2, gRPC, Dds, Nvidia Jetson, Embedded Linux, Behavior Trees
Similar jobs
Embedded Engineering jobsIntegrate and deploy autonomy software on unmanned aircraft, prepare systems for flight, and troubleshoot hardware, software, and embedded integration issues during lab and field tests. The role requires a relevant degree or equivalent experience, C++ and Python proficiency, and at least two years of related experience.
Leads development and deployment of autonomy, robotics, and embedded software for safety-critical pilot assistance systems. The role requires 5+ years of production robotic or embedded software experience, strong C++ or Python skills, and hands-on hardware and edge-compute integration.
Develops C/C++ software, firmware, integrations, and manufacturing tools for YubiKey devices and custom embedded hardware platforms. The role requires 5+ years of software engineering experience, embedded development expertise, and familiarity with Windows or Linux internals.
Develops operating-system platforms, drivers, and infrastructure for autonomous-vehicle devices and hardware-accelerated workloads. Requires 8+ years delivering production systems, strong Linux internals and C/C++ experience, and familiarity with embedded Linux or robotics is advantageous.
Leads systems engineering for autonomous battery-electric rail vehicles, defining architectures and requirements while driving integration, verification, and validation across hardware, firmware, and command-and-control software. Requires a relevant engineering or computer science degree and at least five years working with complex hardware systems.