Embedded Software Engineer
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 applicationsDevelop high-performance algorithms to enhance system efficiency and functionalityConduct regular code reviews to ensure code quality and reliabilityWork closely with electrical engineers to develop and integrate custom hardware into robotic systemsArchitect, design, and implement software solutions for embedded systems, ensuring high performance and reliability for robotic applicationsWork closely with multidisciplinary teams to integrate software with complex hardware components, ensuring seamless operation across robotic platformsProduce and maintain clear, comprehensive documentation for software design, interfaces, and system configurations to support ongoing development and future upgrades. Requirements
7+ years of experience delivering robust, production-level codeBS or MS in Computer Science, Robotics, Physics, Electrical/Mechanical/Aerospace Engineering, or a related fieldProficient in C++17 or laterExperience with modern software engineering practices (e.g. git, issue tracking, and CI/CD pipelines).Strong background in Linux-based platforms and development environmentsExcellent troubleshooting and debugging skillsExperience implementing and debugging real-time operating systems (RTOS) with hard real-time requirements on embedded microcontrollersFamiliarity with common communication protocols (e.g., CAN, I2C, SPI, RS-485, EtherCAT).Knowledge of synchronization and resource-sharing techniques for memory-constrained systemsComfortable using electrical engineering tools such as schematics, logic analyzers, and oscilloscopes for hardware evaluation and reworkExperience as a technical lead, with a track record of mentoring other developers. Bonus
Experience with robotics, control systems, kinematics, machine learning, or physics simulationProficiency in data processing, logging, and visualization toolsFamiliarity with ROS, gRPC, LCM, or other inter-process communication middleware technologiesHands-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 integrationExperience with complex system failure analysis in cross-functional teamsFamiliarity 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.
Apply for this job →