Software Engineer to build the software foundations of our state estimation program, spanning pose, calibration, and mapping. You'll develop libraries, interfaces, and infrastructure used across the autonomy stack to enable safe, precise operation. You'll help us track our excavator's articulated arm, and represent the site it's actively reshaping. You'll leverage the type system to prevent coordinate-frame errors, and provide idiomatic, ergonomic interfaces for querying pose across a wide variety of vehicle platforms.
If you've built production software for localization, mapping, or calibration on robots or autonomous vehicles, this role is a natural fit. Experience with game engines, graphics software, or replay systems also applies. You don't need a background in filtering or estimation theory. You'll work daily alongside engineers who specialize in it. Depending on your background, you may focus on geometry and kinematics APIs, replay and evaluation infrastructure, or fleet and map data systems. We're hiring at mid and senior levels, with scope matched to experience.
What you'll do- Design and own core geometry and kinematics libraries that teams across the autonomy stack rely on to represent coordinate frames, transforms, and machine motion consistently
- Build pose and trajectory APIs that return machine state, including arm joint positions, at any timestamp, across machine types and sensor configurations
- Develop infrastructure to routinely recompute pose estimates, calibrations, and maps on historical data for ML training datasets
- Implement evaluation and regression testing tooling for pose estimation, calibration, and mapping
- Build monitoring that detects when a sensor on a working machine has shifted out of calibration
- Build storage and versioning for maps of sites that change every day
- Diagnose issues from machines working on live job sites and optimize software performance, using recorded data, simulation, and testing on physical machines
What we're looking for- 4+ years of professional software engineering experience, or a substantial record of shipping production systems or libraries that other engineers depend on
- Working knowledge of linear algebra and 3D rigid-body transforms, including rotations, coordinate frames, and composing transformations
- Ability to implement and test numerical code, including reasoning about numerical precision, boundary conditions, and correctness
- Strong production software skills in Rust or modern C++. Our production stack is primarily Rust, and we will support experienced C++ engineers as they ramp up
- Strong debugging and performance-analysis skills, including tracing problems across components and building tests and diagnostics to reproduce failures and prevent regressions
- A degree in Computer Science, Robotics, Electrical Engineering, Applied Mathematics, or a related field, or equivalent practical experience
Ways to stand outOne or more of the following:
- Experience shipping software on robots, vehicles, or other machines in the field
- Production experience with Rust, including using types to enforce units, coordinate frames, or similar correctness guarantees
- Experience with numerical optimization software
- Experience with embedded or real-time systems
Other special aspects of the role- Based in the Bay Area with the ability to be onsite at our SF office on a daily/weekly basis