Senior Embedded Software Engineer (C/C++) – UAV Automation and Flight Control
Summary
Senior embedded software engineer developing UAV flight-control and autonomy software in C/C++: real-time firmware on STM32, sensor fusion and control algorithms, and integration/customization of flight controllers such as Betaflight, PX4, or ArduPilot.
About the Role
We are looking for an experienced Senior Embedded Software Engineer (C/C++) to join our engineering team and develop advanced UAV automation and flight control solutions.
The ideal candidate has a strong background in embedded systems, excellent C/C++ programming skills, solid mathematical knowledge, and a deep understanding of drone dynamics, flight controllers, and autonomous navigation.
This role involves working close to the hardware, developing real-time software, integrating sensors, and designing reliable algorithms for autonomous UAV operations.
Key Responsibilities
Design, develop, and optimize embedded software for UAV platforms using C/C++.
Develop automation algorithms for autonomous and semi-autonomous drone operations.
Work with flight controllers, onboard computers, sensors, and communication interfaces.
Develop and integrate flight control, stabilization, navigation, and telemetry components.
Implement sensor data processing, calibration, and sensor fusion algorithms.
Integrate and customize existing flight control solutions Betaflight(experience with PX4, ArduPilot also can work).
Work with real-time embedded architectures and optimize software performance, latency, and reliability.
Develop communication protocols between flight controllers, onboard computers, and ground control systems.
Debug complex hardware/software integration issues.
Participate in system architecture, technical design, code reviews, and testing.
Develop simulation and hardware-in-the-loop testing environments for flight control and automation algorithms.
Required Qualifications
Software Engineering
At least 6 years of professional software development experience, with substantial experience in embedded development.
Advanced proficiency in C and C++, including modern C++ (C++14/17/20).
Strong knowledge of embedded architectures, memory management, concurrency, interrupts, and low-level programming.
Experience with ARM-based microcontrollers, particularly STM32.
Experience with embedded Linux and/or real-time operating systems (RTOS).
Strong debugging skills using hardware and software debugging tools.
Experience with UART, SPI, I2C, CAN, and other hardware communication interfaces.
UAV & Flight Control
Strong understanding of multirotor UAV architecture and flight principles.
Understanding of how flight controllers work, including stabilization, control loops, sensor processing, and motor control.
Knowledge of PID controllers, control-loop tuning, and feedback control systems.
Understanding of IMU sensors, gyroscopes, accelerometers, magnetometers and barometers.
Familiarity with UAV navigation, positioning, orientation, and coordinate systems.
Understanding of flight dynamics, thrust, torque, attitude, and angular velocity.
Experience with at least one flight control ecosystem, such as Betaflight, ArduPilot or PX4.
Mathematics & Algorithms
Strong mathematical skills are essential, particularly in:
Linear algebra: vectors, matrices, coordinate transformations.
Calculus and differential equations.
3D geometry, rotations, Euler angles, and quaternions.
Kinematics and rigid-body dynamics.
Control theory: PID, feedback systems, and ideally state-space control.
Signal processing and digital filtering.
Sensor fusion and state estimation, including complementary and Kalman filters.
Mathematical modeling of UAV motion and flight behavior.
The candidate must be comfortable translating mathematical models into efficient, production-quality C/C++ code.
Nice to Have
Experience developing custom flight controllers or modifying flight controller firmware.
Experience with Betaflight, ArduPilot, PX4, or INAV internals.
Knowledge of Extended Kalman Filters (EKF), advanced control theory, or Model Predictive Control (MPC).
Experience with autonomous navigation, trajectory planning, and obstacle avoidance.
Experience with ROS 2.
Experience with Raspberry Pi, NVIDIA Jetson, or similar onboard computing platforms.
Knowledge of computer vision, OpenCV, or visual odometry.
Experience with SITL/HITL simulation, Gazebo, or AirSim.
Understanding of wireless communication technologies used in UAV systems.
Experience in robotics, aerospace engineering, or autonomous vehicles.