Software Engineer, Robotics
Role details
Job location
Tech stack
Job description
Some of the types of challenges you might be working on:
- Building robust interfaces between sensors/actuators and higher-level software
- Designing and optimizing new motions for a 4DOF XYZ-style crane or exploring adding a new degree of freedom to the system
- Designing and implementing the controls stack for tool changing, so our robots can perform new tasks autonomously
- Implementing production-level code at whatever level makes sense (embedded firmware in C++, or our application layer in Rust) necessary to bring your algorithms to life
Help us bring our robots to life and join our mission to bring automation to the construction industry to create affordable, beautiful, high-quality housing for everyone.
What you'll be responsible for
- Design and implementation of controls algorithms, both prototype quality for early experiments and production quality for real-world use. We expect you to write C, C++, Rust or Python code, not just simulations in Matlab.
- Design and implement localization algorithms (e.g., visual-inertial SLAM) and ensure we use the right sensors and logic to determine our position in world-space, using sensor fusion when required.
- Design and build tools that allow debugging, analysis, and performance evaluation of your algorithms.
- Bringing software engineering best practices to our team. You should be able to write production-level code that will stand on its own.
- Root cause analysis and general debugging skills whenever things fail.
- Taking full ownership of a project, going from idea to prototype to finished project.
Requirements
We're looking for software engineers with deep knowledge of building end-to-end robotics systems. You'll work across the stack to bring our robots to life and join our mission to bring automation to the construction industry to create affordable, beautiful, high-quality housing for everyone., * Experience implementing algorithms for calibration, motion control, and path planning of complex robotic systems.
- Practical and theoretical knowledge in modelling, signal processing, motion planning, sensor fusion, collision avoidance, and SLAM.
- Industry experience building and deploying production systems in C, C++, Python, Rust, or comparable languages.
- Software engineering skills and best practices: you use git for version control, know how to do unit tests, and can automate deployment of your code.
- Basic familiarity with Linux systems and conventions. For example, you're comfortable SSH'ing into other machines to troubleshoot issues.
- Experience in troubleshooting issues and conducting root cause analysis.
- Preferred experience in building prototypes in a zero-to-one environment and/or top student teams.
- B.Sc. in Electrical, Mechanical, Mechatronics, Controls System Engineering or equivalent.