This position is part of the National Institute of Standards (NIST) Professional Research Experience (PREP) program. NIST recognizes that its research staff may wish to collaborate with researchers at academic institutions on specific projects of mutual interest, thus requires that such institutions must be the recipient of a PREP award. The PREP program requires staff from a wide range of backgrounds to work on scientific research in many areas. Employees in this position will perform technical work that underpins the scientific research of the collaboration.
Research Title: Robotics Programmer
The work will entail: NIST is focused on the development and integration of robotic software architectures, leveraging ROS2, Java, C#, and C++ to build scalable control frameworks. The work will involve designing robust system interfaces and implementing PLC programming to bridge high-level logic with physical hardware, ensuring seamless interoperability and performance across diverse robotic platforms.
Key responsibilities will include but are not limited to: - Develop, integrate, and maintain scalable robotic software architectures using ROS 2, C++, Java, and C# in collaboration with NIST researchers.
- Implement Programmable Logic Controller (PLC) programming and design system interfaces to bridge high-level autonomous logic with industrial physical hardware and sensors.
- Build robust device drivers, communication protocols, and APIs to ensure seamless software interoperability and execution across diverse robotic platforms.
- Conduct hands-on system testing, debugging, and performance optimization on real physical hardware and simulated environments to ensure reliable operation.
- Document codebase architectures, write system user guides, and present regular project progress updates to team members and project leads.
Qualifications - US Citizens preferred.
- Education: Bachelor's degree or Master's degree in Computer Science, Robotics, Computer Engineering, Electrical Engineering, Software Engineering, or a related field.
- Hands-on experience developing software applications within the ROS 2 ecosystem.
- Understanding of robotic nodes, topics, services, actions, and custom message types.
- Strong proficiency in C++ and/or Java.
- Proficiency or working experience with C# and Python.
- Experience with PLC programming (e.g., Ladder Logic, Structured Text, or Function Block Diagrams) for industrial automation.
- Experience interfacing high-level controllers with industrial hardware (e.g., actuators, relays, safety systems, fieldbus protocols).
- Proficient with version control systems and workflows (e.g., Git, GitHub, GitLab, or Bitbucket).
- Experience working in Linux/Unix (Ubuntu) environments as well as Windows.
- Solid grounding in object-oriented programming (OOP), software testing, and debugging strategies.