Senior Embedded Software Engineer - Frameworks at Intuitive — Sunnyvale, CA
Full job description
Primary Function of Position
Our Servo Frameworks and Simulator team is responsible for the real-time software infrastructure that supports critical performance, safety and user-facing features of the da VinciTM Surgical System, Intuitive’s flagship product. Our real-time software includes robotics frameworks, infrastructure for motion control algorithms, audio intercom and system sounds, data streaming and logging, and platform support for our next-generation da VinciTM product line. Our team occupies an exciting intersection of real-time architecture, feature development, and demonstration of product safety and reliability.
The successful candidate must excel in a cross-functional environment, be able to drive to solutions from rough requirements, and have a commitment to high product quality. They must demonstrate ownership of their areas of responsibility and of the overall product. A strong sense of shared responsibility and shared reward is required. A demonstrated experience and comfort working with C++ in an embedded environment is required.
Essential Job Duties
- Design and develop product-focused, robust, efficient, and elegant C++ software in a heterogeneous, multi-processor real-time-embedded environment.
- Lead efforts to modularize and unify robotics software frameworks across multiple platforms and product lines.
- Leverage systems software building blocks to provide software functionality for multiple Intuitive Surgical robotic systems, maximizing flexibility and modularity while maintaining peak performance.
- Analyze and quantify overall system performance and safety, including verification of adherence to specifications as well as identification of improvement opportunities.
- Extend existing tools and create new tools to support such analysis efforts.
- Interface and collaborate effectively and respectfully with other teams, including Platform Software, Hardware, System Analysis, System Test, User Interface Software Engineering, Manufacturing and Clinical Engineering.
- Participate in product risk analysis, defining requirements, implementing mitigations, and drafting and executing verification tests.
- Contribute to multiple areas of software development, including but not limited to the following:
- design and development of robotic frameworks and middleware
- configuration and monitoring of custom motion control hardware.
- real-time processing performance analysis.
- extension of current processing frameworks to new processors and hardware designs.
- design, development, and extension of offline hardware simulation environments to facilitate rapid software development and testing.
- bring-up of research prototypes used to evaluate new product concepts.
- design and development of hardware / software diagnostic tools.
- apply appropriate inter-thread or process communication software design principles.
Required Education, Skills & Experience
- Minimum of 8 years of experience and a Bachelor's degree; or 6 years of experience and a Master's degree; or a PhD with 3 years of experience; or equivalent experience.
- Experience developing embedded software for RTOS and/or embedded Linux devices.
- Experience in C++ and familiarity with design patterns.
Preferred Skills & Experience
- Experience developing common frameworks and middleware for robotic applications or embedded devices.
- Experience with Python for diagnostic/test automation.
- Comfort with concepts of design input, design output, traceability, and risk analysis.
- Demonstrated experience and comfort with all phases of the product development lifecycle (design, implementation, debug, verification, validation, and transfer to manufacturing).
- Experience with safety critical software.
Mandatory Notices