OVERVIEW OF ROLE As Advanced Navigation enters a new phase of Growth and International expansion. The Data Fusion Team is on a mission to develop navigation algorithms that ensure our products are the most reliable, high performance navigation products in the world. As a Senior Software Engineer you will be instrumental in realising this ambition, developing software to solve real world problems with real world impact. ROLES & RESPONSIBILITIES Mathematical Translation & Optimisation : Port cutting-edge navigation, sensor fusion, and calibration algorithms from high-level MATLAB prototypes into highly efficient, numerically stable C/C++ implementations using the Eigen library. Manage Embedded Compute Constraints: Optimise ported mathematical code to run deterministically within strict real-time execution budgets (e.g., 100Hz–2000Hz loops) and tight memory (SRAM/Flash) footprints on target microcontroller/processor architectures. Own the API Boundary: Design and maintain clean, modular C/C++ header interfaces and software libraries that seamlessly integrate core mathematical filters into the broader software platform firmware. Drive Algorithmic Test & Validation: Develop comprehensive unit tests, software-in-the-loop (SIL) simulations, and automated regression testing suites using real-world sensor logs to ensure the C/C++ implementation mathematically mirrors the reference MATLAB models. Troubleshoot Complex Edge Cases: Investigate and resolve complex algorithmic and embedded software defects, including numerical drift, floating-point overflows, or timing jitter, uncovered during Hardware-in-the-Loop (HIL) testing or field trials. Cross-Functional Collaboration: Serve as the technical bridge between algorithm research scientists and core systems/firmware engineers, ensuring design requirements, data definitions, and performance constraints are aligned across teams. Modern Workflow Innovation: Proactively adopt and utilise modern AI-assistance tools to optimise coding workflows, code profiling, and technical problem-solving. QUALIFICATIONS, EXPERIENCE & SKILLS Degree qualified Engineer with specialisation in computer systems, software, mechatronics or similar Algorithm Translation & Optimisation: A proven track record of translating complex mathematical models (specifically from MATLAB/Python environments) into highly optimised, production-ready C/C++ code. Embedded Matrix Operations: Hands-on experience implementing high-frequency linear algebra, matrix manipulations, or coordinate transformations on resource-constrained embedded targets (e.g., ARM Cortex-M/R/A or DSPs). Numerical Stability Management: Demonstrated experience handling numerical precision constraints (e.g., managing fixed-point vs. floating-point tradeoffs, preventing underflow/overflow in matrix inversions). Production Embedded Systems: 5 years of engineering experience developing, debugging, and releasing production-quality embedded software running on RTOS or bare-metal platforms. Skills: Mandatory C/C++ Expert Proficiency: 5 years of experience writing clean, optimised, and safe code. Strong Linear Algebra Foundations: Deep comfort with matrix mathematics, coordinate transformations (ECEF, NED, body frames), and rotation representations (quaternions, Euler angles). Eigen Library Proficiency: Proven experience utilising the Eigen C++ template library for high-performance linear algebra operations. MATLAB Literacy: Ability to read, interpret, and reverse-engineer complex mathematical prototypes and simulations natively written in MATLAB. Nice to have State Estimation: Practical experience with Kalman Filtering (EKF, UKF) or complementary filters used in sensor fusion. Physics/Kinematics: A background in rigid-body dynamics or inertial sensor error modeling (gyroscopes and accelerometers).