We are looking for an experienced engineer to work on systems that bring together many moving parts. Inertial sensors, visual sensors, wireless radios such as UWB, Bluetooth, and Wi-Fi, GNSS, and on-device processing all come together here, and much of what these systems do emerges from the interaction between those pieces rather than from any one of them alone. Understanding that interaction is most of the work, and it is what makes the problems here genuinely interesting.
The role has two sides, and we mean both of them equally. You will help decide how a system is put together: where functionality should live, how the components talk to each other, and what we trade away to get what we need. You will also be the one who builds it, writing production code, bringing up new hardware, and chasing down the failures that only appear on real devices. We have found that these two things belong together. The best designs come from people who have built the system, and the best implementations come from people who understand the whole of it.
Responsibilities
Help define the architecture of multi-component location systems spanning hardware, firmware, and software, and implement the interfaces that hold them together.
Write, review, and maintain production-quality code in C++, Objective-C, and Swift for systems that ship to our customers.
Design and implement how inertial, visual, and wireless sensing come together into a system that behaves as one.
Integrate and bring up new hardware and software components, working through the problems that only surface on real devices.
Weigh the tradeoffs between accuracy, latency, power, memory, and reliability, and bring partner teams along with your reasoning.
Debug complex issues across the full stack, where the root cause could sit anywhere from the sensor to the application.
Take new technologies from early prototype through evaluation and into production, fusing them with our existing capabilities.
Collaborate with silicon, hardware, firmware, and algorithms teams from first concept through shipping.
Build the tooling and instrumentation that let us characterize how a system really behaves, with data rather than intuition.
Participate in evaluating new signals and technologies as our platforms continue to evolve.
Requirements: Minimum Qualifications
At least 7 years of hands-on C++ or Objective-C programming experience, or in a comparable modern systems language such as Rust, with coding central to your day-to-day work.
Experience designing and implementing complex systems built from multiple hardware and software components with tight interaction between them.
Deep experience at the hardware/software boundary: sensors, radios, cameras, firmware interfaces, drivers, or timing and synchronization.
A track record of taking a system from concept to production, including integration and bring-up you performed yourself.
Know how to debug complex systems where the root cause is not localized
Deep understanding of software design paradigms and software development best practices.
Excellent collaboration and communication skills.
A passion for programming and building things.
BSc in Computer Engineering, Computer Science, Electrical Engineering, or equivalent experience. MSc in a relevant field a plus.
Preferred Qualifications
Experience with location, navigation, sensor fusion, or wireless positioning technologies.
Experience integrating and shipping visual sensing systems such as visual-inertial odometry or SLAM on real devices, including camera calibration and pipeline integration.
Experience with real-time or resource-constrained systems.
Experience with data analysis and results dashboards.
iOS, macOS, application, and/or Unix system development.
Swift programming experience.
This position is open to all candidates.