We are seeking a Software Developer II to support the development, integration, testing, and fielding of software for unmanned aerial systems. This role is ideal for a mid-level software engineer with experience in embedded systems, robotics, autonomy, computer vision, real-time processing, or flight software who wants to work directly on operational UAS platforms.
The Software Developer II will contribute to software running on airborne and ground-based systems, including embedded compute platforms, sensor payloads, flight-control interfaces, autonomy modules, data-processing tools, and test infrastructure. The role requires strong hands-on debugging skills, disciplined software development practices, and the ability to work across software, hardware, sensors, and field-test environments.
Responsibilities
Develop, test, and maintain software for unmanned aerial systems, payloads, ground tools, and supporting test equipment.
Implement software modules in C++, Python, and/or related languages for embedded Linux, robotics, autonomy, computer vision, sensor processing, or command-and-control applications.
Integrate cameras, GPS/GNSS, IMUs, autopilots, radios, storage devices, and other UAS hardware into software systems.
Support real-time image, video, telemetry, and sensor-processing pipelines.
Work with MAVLink, PX4, ArduPilot, ROS/ROS2, GStreamer, OpenCV, or similar UAS and robotics software frameworks where applicable.
Debug software issues in lab, bench-test, flight-test, and field environments.
Support data collection, log analysis, replay tools, simulation, and hardware-in-the-loop or software-in-the-loop testing.
Assist with performance optimization for latency, throughput, CPU/GPU utilization, memory use, and system reliability.
Develop unit tests, integration tests, scripts, tools, and documentation to support repeatable software development and fielding.
Work closely with electrical, mechanical, systems, flight-test, and program teams to troubleshoot and resolve issues.
Participate in design reviews, code reviews, sprint planning, release preparation, and technical documentation.
Support occasional travel for flight tests, customer demonstrations, integration events, or field exercises.
Required Qualifications
Bachelor’s degree in Computer Science, Computer Engineering, Electrical Engineering, Robotics, Aerospace Engineering, or a related technical field, or equivalent professional experience.
3–6 years of software development experience.
Proficiency in C++ and/or Python.
Experience developing software on Linux.
Experience with embedded systems, robotics, drones, autonomy, sensors, computer vision, or real-time software systems.
Ability to debug complex software issues using logs, command-line tools, debuggers, profilers, and test equipment.
Familiarity with Git-based version control and collaborative software development workflows.
Ability to work hands-on with hardware in a lab or field-test environment.
Strong communication skills and ability to document technical work clearly.
U.S. person status may be required depending on program needs.
Preferred Qualifications
Experience with unmanned aerial systems, drones, robotics, or autonomous vehicles.
Experience with PX4, ArduPilot, MAVLink, QGroundControl, Mission Planner, ROS, or ROS2.
Experience with OpenCV, GStreamer, CUDA, TensorRT, ONNX, or real-time video-processing pipelines.
Experience with NVIDIA Jetson, Qualcomm QRB/QCS platforms, Raspberry Pi, x86 edge computers, or other embedded compute hardware.
Experience integrating EO/IR cameras, global-shutter cameras, LWIR/MWIR sensors, IMUs, GPS/GNSS, radios, or datalogging systems.
Experience with flight testing, field debugging, log analysis, telemetry review, or hardware-in-the-loop testing.
Experience with Docker, CMake, CI/CD, automated testing, simulation tools, or software release processes.
Experience in aerospace, defense, robotics, or another high-reliability engineering environment.
Active or prior security clearance is a plus but not required unless program needs dictate.
Desired Attributes
Hands-on engineer who enjoys making systems work in the real world.
Comfortable debugging across software, hardware, sensors, networks, and operating systems.
Able to move between development, integration, test, and field support.
Practical, organized, and disciplined about writing maintainable software.
Comfortable in a fast-moving environment where prototypes are matured into fieldable products.