Our mission is to solve the most important and fundamental challenges in AI and Robotics to enable future generations of intelligent machines that will help us all live better lives.
As an Embedded Software Engineer, you will work cross-functionally with a talented team of engineers and researchers to develop cutting-edge robotic systems. Your contributions will directly advance the state of the art in robotics. We operate onsite at our new Cambridge, MA office, fostering a collaborative and dynamic environment.
Responsibilities
- Collaborate with research and hardware teams to design, develop, test, and maintain embedded software for various robotic applications
- Develop high-performance algorithms to enhance system efficiency and functionality
- Conduct regular code reviews to ensure code quality and reliability
- Work closely with electrical engineers to develop and integrate custom hardware into robotic systems
- Architect, design, and implement software solutions for embedded systems, ensuring high performance and reliability for robotic applications
- Work closely with multidisciplinary teams to integrate software with complex hardware components, ensuring seamless operation across robotic platforms
- Produce and maintain clear, comprehensive documentation for software design, interfaces, and system configurations to support ongoing development and future upgrades.
Requirements
- 12+ years of experience delivering robust, production-level code
- BS or MS in Computer Science, Robotics, Physics, Electrical/Mechanical/Aerospace Engineering, or a related field
- Proficient in C++17 or later
- Experience with modern software engineering practices (e.g. git, issue tracking, and CI/CD pipelines).
- Strong background in Linux-based platforms and development environments
- Excellent troubleshooting and debugging skills
- Experience implementing and debugging real-time operating systems (RTOS) with hard real-time requirements on embedded microcontrollers
- Familiarity with common communication protocols (e.g., CAN, I2C, SPI, RS-485, EtherCAT).
- Knowledge of synchronization and resource-sharing techniques for memory-constrained systems
- Comfortable using electrical engineering tools such as schematics, logic analyzers, and oscilloscopes for hardware evaluation and rework
- Experience as a technical lead, with a track record of mentoring other developers.
Bonus
- Experience with robotics, control systems, kinematics, machine learning, or physics simulation
- Proficiency in data processing, logging, and visualization tools
- Familiarity with ROS, gRPC, LCM, or other inter-process communication middleware technologies
- Hands-on experience with robot sensors (IMUs, cameras, etc.).Experience programming FPGA and/or FPGA/ARM SOC systems (e.g., Zynq).
- Expertise in developing test and validation plans for system integration
- Experience with complex system failure analysis in cross-functional teams
- Familiarity with developing Linux kernel modules.
We provide equal employment opportunities to all employees and applicants for employment and prohibit discrimination and harassment of any type without regard to race, color, religion, age, sex, national origin, disability status, genetics, protected veteran status, sexual orientation, gender identity or expression, or any other characteristic protected by federal, state or local laws.