Robotics and Firmware Intern
Job Purpose
Support senior engineers in developing, integrating, and testing embedded firmware and ROS 2 software for remotely operated underwater vehicles (ROVs) and peripheral payloads. Work under direct mentorship to complete structured coding tasks, set up hardware-in-the-loop test benches, write hardware drivers, and develop practical skills in marine robotics software and firmware integration.
Key Responsibilities
Develop and modify foundational C++ and Python ROS 2 nodes, topics, services, and launch configurations under technical guidance.
Assist in writing embedded C/C++ for microcontrollers (e.g., STM32, ESP32) covering basic peripheral setup, GPIO control, timers, interrupts, PWM generation, and watchdog routines.
Support hardware integration and sensor/actuator testing over serial communication protocols such as UART, SPI, I2C, and CAN.
Help construct simple hardware simulators and diagnostic Python test scripts to verify firmware protocols and ROS 2 serial bridges.
Assist in bench testing and signal debugging using lab tools such as logic analyzers, oscilloscopes, and digital multimeters.
Maintain clean code using Git version control, follow CMake and colcon build procedures, respond to code review feedback, and document setup steps and test results.
Required Qualifications and Experience
Current student or recent graduate in Robotics, Electronics, Electrical, Mechatronics, Computer Science, or a related engineering field.
No prior full-time industry work experience required. Practical experience through academic, personal, or competition projects (e.g., RoboSub, Formula Student, university robotics teams) is highly valued.
Demonstrable ability to explain personally written C/C++ or Python code and basic electronic schematics.
Skills and Competencies
Must-have technical skills
Basic C/C++ and Python programming, with the ability to explain logic, memory usage, and basic state management.
Microcontroller fundamentals: familiarity with platforms like STM32, ESP32, or Arduino, including basic understanding of GPIOs, timers, interrupts, PWM, and watchdogs.
Foundational ROS 2 knowledge: understanding of nodes, topics, publishers, subscribers, services, and basic workspace management.
- Development environment
- basic Linux command line navigation, Git repository usage, and familiarity with build tools (CMake, colcon).
Behavioral competencies: eagerness to learn, willingness to ask questions, careful attention to technical details, and proactive communication regarding progress or blockers.
Good-to-have technical skills
Understanding of serial communication buses (UART, SPI, I2C, CAN) and protocol parsing.
Basic hands-on lab instrument experience using oscilloscopes or logic analyzers for signal verification.
Exposure to Real-Time Operating Systems (RTOS concepts like tasks, queues, or mutexes).
Familiarity with ROS 2 actions, lifecycle nodes, TF2, or simulation tools like Gazebo/RViz.
Key Performance Indicators
Evaluated through periodic discussions with the assigned mentor and hiring manager
- Execution
- timely completion of assigned software, firmware, and test-bench setup tasks.
- Technical growth
- progress in understanding ROS 2 architecture, embedded peripheral drivers, and hardware debugging techniques.
Code quality: submission of well-structured code modifications through reviewed pull requests with appropriate comments and documentation.
- Problem solving
- systematic troubleshooting approach, effective utilization of documentation, and prompt escalation of blockers.
Never pay to get work. If a listing asks for a fee, it is a scam. The ten signs →