Embedded Software Engineer
Work Week: 5 days Working Hours: 9 am to 6 pm
Key Responsibilities Participate in the development, debugging, and maintenance of embedded control software for underwater robots, unmanned surface vessels (USVs), and other robotic platforms. Develop and adapt peripheral drivers for commonly used microcontroller (MCU) platforms, including GPIO, ADC, PWM, timers, interrupts, and other peripherals. Develop and debug communication interface drivers and protocols, including UART, I2C, SPI, CAN, and related interfaces. Contribute to motion and attitude control development, including PID parameter tuning, control logic implementation, state machine design, and enhancement of system protection and safety mechanisms. Support sensor integration and data processing for IMU, GPS, pressure sensors, sonar, DVL, USBL, and other sensors, including data acquisition, calibration, time synchronization, and integration with data-fusion interfaces. Participate in modular system integration based on Robot Operating System (ROS), including interfacing with host computers, node communication, message interfaces, and end-to-end data-link integration and debugging. Participate in simulation testing, logging, troubleshooting, and root-cause analysis, supporting algorithm validation and regression testing. Participate in field deployment and commissioning activities in underwater and marine environments, ensuring issue resolution and closure, and preparing test reports and post-incident reviews. Collaborate closely with hardware and mechanical engineering teams on system integration, troubleshooting, and fault diagnosis. Prepare and maintain technical documentation, including driver specifications, interface protocols, debugging guides, test cases, and version records. Qualifications Bachelor’s degree or above in Computer Science, Electronic Information Engineering, Automation, Robotics, Naval Architecture & Ocean Engineering, or a related discipline. Typically 1–3 years of relevant work experience; outstanding fresh graduates or candidates with strong internship experience may also be considered. Proficiency in C/C++, with strong coding standards and good version control practices. Familiarity with embedded software development processes and hands-on experience developing and debugging on at least one MCU platform. Solid understanding of common communication interfaces and protocol development/debugging, including UART, SPI, I2C, and CAN. Basic understanding of control theory, with the ability to implement and debug fundamental control algorithms and a working knowledge of common control and filtering techniques. Proficiency in Linux development and command-line tools. Ability to read basic electronic schematics and demonstrate a practical understanding of hardware-software integration and debugging. Experience using test and debugging equipment such as oscilloscopes and logic analyzers is a plus