Description
We are looking for a Software Engineer to take ownership of the software for our unmanned ground vehicles (UGV), covering both the operator control station and the onboard vehicle systems. You will develop the software that allows operators to drive, monitor, and diagnose the vehicle reliably. Working closely with electronics and mechanical engineers, you will be responsible for software architecture, implementation, hardware integration, testing, and deployment.
Responsibilities
•Design and maintain the overall UGV software architecture, including communication between the control station, onboard computer, and vehicle controllers.
•Develop the operator control application, including driving controls, live camera views, telemetry, system status, alarms, and configuration tools.
•Develop onboard software for vehicle operation, command processing, subsystem coordination, and health monitoring.
•Integrate motor controllers and implement vehicle motion control, including steering, speed and torque commands, acceleration and deceleration profiles, and braking coordination.
•Read and process motor feedback, encoder data, battery/BMS information, and other vehicle sensors.
•Implement reliable command and telemetry communication, including connection monitoring and recovery after interruptions.
•Develop software safety functions, including command validation, watchdogs, communication-loss behavior, and coordination with hardware emergency-stop and protection systems.
•Integrate cameras and video streaming between the vehicle and control station.
•Build logging, diagnostics, fault reporting, and software update tools.
•Conduct bench tests and vehicle field tests; investigate faults and improve system performance.
•Maintain source code, interface specifications, test procedures, and deployment documentation.
Requirements
•Strong programming skills in C++ and Python.
•Experience developing software for Linux-based systems.
•Practical experience with robotics, embedded systems, industrial automation, or vehicle control.
•Understanding of motor control concepts, feedback control, and communication with motor drives.
•Experience with interfaces such as CAN bus, UART/RS-232, and Ethernet.
•Understanding of network protocols, asynchronous communication, and multithreaded software.
•Ability to debug software interacting with physical hardware and diagnose problems across software, communication, and electrical interfaces.
•Experience with Git, structured testing, and technical documentation.
•Ability to independently carry software features from requirements through implementation and validation.
Nice to have
•ROS 2 and robotic middleware
•Wheeled robot kinematics, skid steering, and closed-loop motion control
•Qt/QML or another framework for operator control interfaces
•Camera integration, video encoding, and low-latency streaming
•Embedded microcontrollers and real-time control systems
•Wireless communication under limited bandwidth or intermittent connectivity
•Hardware-in-the-loop testing and robotic system simulation
Conditions
No conditions stated in the posting.