Post-baccalaureate
Robotics Programmer
Project PREP0005093 · NIST sponsor Anthony Downs
Overview
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.
Qualifications
- 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.
Research Proposal
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.