National Robotics Engineering Center
Pittsburgh, Pennsylvania, United States
18 May 2021
The National Robotics Engineering Center (NREC) at Carnegie Mellon University is seeking applicants for the position of Software Engineer for existing and new projects. In this position, you will work on a variety of software and embedded systems that are used in the robotics perception systems. You’ll have an opportunity to collaborate on an internal team and with sponsoring partners to support the work through all lifecycle stages.
Our team has members with diverse backgrounds both in robotics and other industries aligned to make robust software and firmware that is useful in the world. Projects you may support range from industrial machine operator assist systems to agricultural productivity tools and beyond to other automation, autonomy, or safety systems. Your day to day work will include: interfacing and programming for custom sensors and hardware, debugging prototypes, and integrating your work and other software modules into complex systems.
- Design, develop, document, test, troubleshoot, and maintain software applications and integrated systems for both robotic and general-purpose applications.
- Develop computer vision algorithms for real world applications.
- Create and maintain development tools and infrastructure for robotic systems.
- Adapt and integrate proprietary and open source software packages and APIs.
- Transition applications to embedded CPU/GPU/FPGA code for production.
- Build new tools for software communication, logging, and data analysis.
- Gather and provide input on functional specifications and requirements.
- Supporting business user questions/issues regarding applications and/or systems issues and availability.
- Interact with the team and sponsors for planning, application support, and reporting purposes.
- Participate in the software process: design, code reviews, etc.
- Survey literature and implement state of the art techniques to solve challenging problems.
- B.S. in Computer Science, Engineering, Mathematics or equivalent experience (more is a bonus).
- 3+ years combined graduate academic and professional software development experience.
- Demonstrated understanding and use of software engineering concepts, practices, and procedures.
- Knowledge of basic computer vision principles.
- Proficient C++ skills.
- Experience with scripting languages for quick prototyping (Python preferred).
- Linux development experience.
- Experience with network communications and protocols.
- Solid technical communication skills.
- Demonstrated success working as part of a cross-functional team.