Software Engineer, Autonomy
Role details
Job location
Tech stack
Job description
We're looking for software engineers with deep knowledge of software engineering and controls engineering to join our team. 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.
We're building an operating system to make on-site construction possible with robotics. Our software stack allows us to do everything from 3D reconstruction (through photogrammetry) of a construction site, design of 3D structures that will be built, supply chain, path planning, and inverse/forward kinematics of our robots.
Some of the types of challenges you might be working on:
- Designing and modeling a localization and control system for our autonomous ground vehicles that can move around a construction site
- Designing or optimizing specific control loops, e.g. for mortar flow control through different sensors (e.g. a load cell, or time-of-flight sensors)
- Design and explore adding a new degree of freedom to the system
- 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. You might enjoy reading Bouke's blog post on his experience joining Monumental as a software engineer. You might also enjoy seeing this video by Andreas Klinger of what our office environment looks like.
What you'll do
- 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 doing simulations in Matlab.
- Design and implement localization algorithms (e.g., visual-inertial SLAM) and ensure we use the right sensors and logic to figure out where we are 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
- Experience implementing algorithms for the calibration and motion control, and path planning of complex robotic systems.
- Practical and theoretical knowledge on modelling, signal processing, motion planning, sensor fusion, collision avoidance.
- 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 or how to automate deployment of your code.
- Basic familiarity with Linux systems and conventions. E.g., you're comfortable SHH'ing into other machines to figure out why something isn't working.
- 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 Computer Science, Mechanical-, Mechatronics-, Controls System Engineering or equivalent.