Systems Software Engineer, Robotics
Systems Software Engineer needed to develop software stack for robots, focusing on embedded systems, real-time Linux, and communication systems.
About the Team
Our Robotics team is focused on unlocking general-purpose robotics and pushing towards AGI-level intelligence in dynamic, real-world settings. Working across the entire model stack, we integrate cutting-edge hardware and software to explore a broad range of robotic form factors. We strive to seamlessly blend high-level AI capabilities with the constraints of physical systems to improve peoples’ lives.
About the Role
As System and Platform architect you will play a crucial role in defining and developing our software stack deployed on our robots. You’ll help us establish software systems around development, logging, and deployment of world class embedded software with an emphasis on reliability and performance. You will help drive decisions and lay the foundations around implementations that balance short-term prototype needs with long-term production-ready platforms.
This role is based in San Francisco, CA, and requires in-person 5 days a week.
In this role, you will:
Collaborate on the design and implementation of our embedded, on-device, high-performance software stack; architecture, tool-chains, style guide, commit process, testing philosophy, validation flow, etc.
Help build high-performance communication systems for IPC, logging, visualization and inference.
Develop methodologies for enforcing soft and hard-real-time constraints across different parts of our system.
Write and deploy software focused on large applications processors that coordinate data streams from a wide variety of sources.
Work directly with hardware across bring-up, debugging, and deployment of custom hardware.
Help to develop foundational infrastructure for managing and deploying an embedded system at scale in a production environment.
You might thrive in this role if you:
Have a Bachelor’s or Master’s degree in Software Engineering or a related field.
Have 6+ years of experience in embedded system development and deployment.
Have a deep understanding of real-time Linux and interprocess communication strategies for real-time systems.
Have diverse experience with network technologies such as CAN, RS485, or Ethernet.
Have a strong proficiency in Rust or C++.
Have excellent communication skills, capable of conveying complex technical information clearly and effectively.