Job Title: Embedded Software Engineer, Autonomy
Location: New York
Reports To: Senior Engineering Manager, Autonomy Lead
The Drone Racing League (DRL) is the premier, global drone-racing league, and producer of world-class drone sports content. At once a tech, media, events, and sports company, DRL blends a diverse array of disciplines and industries.
We are seeking an Embedded Software Engineer with great embedded software design and development skills. You will help the Autonomy team in researching, designing, developing, and implementing, the best embedded software for autonomous algorithms implementation for autonomous drone technology. The ideal candidate is highly experienced in writing embedded software in C/C++ in a Unix/Linux environment, and has experience with OpenCL and/or CUDA in FPGA and/or GPU. The ideal candidate will also be able to write low-latency software, real-time software, and have experience with FPGAs, ARM microcontrollers, multithreading, multiprocessing, parallel programming in C/C++, and OpenCV with OpenCL. Furthermore, the ideal candidate must have demonstrable experience in these areas as that can be shown in the form of prior job experience, or extensive school experience through projects and/or academic research papers where a lot of practical experience was acquired, or by showcasing personal projects. Experience with writing embedded software for autonomous UAV projects is not required. You will be responsible for helping the Autonomy team in designing and implementing world class embedded software for DRL’s autonomous drone technology. You will be an integral part of the Autonomy team at DRL.
Required Qualifications and Responsibilities:
- Write embedded software and firmware in C/C++ and OpenCL/CUDA.
- Ability to take an algorithm and implement in highly efficient embedded code.
- Ability to take an algorithm and parallelize for high throughput.
- Demonstrable experience with socket programming, client server programming, TCP, UDP, and writing embedded software to communicate between multiple devices, sensors, applications, modules, etc.
- Experienced in Unix/Linux system calls and concepts such as multithreading, multiprocessing, etc.
- Knowledgeable in any open source distributed messaging library such as ZeroMQ.
- Knowledgeable in communication paradigms such as pub-sub, request-reply, topics, etc.
- Excellent operating systems knowledge.
- Ability to write process schedulers.
- Experienced with writing low-latency software and real-time software.
- Implement parallel algorithms with OpenCL, OpenMP, and/or CUDA.
- Great computer science fundamentals as can be proven by showcasing knowledge or projects on time and space efficient data structures and algorithms.
- Ability to research the best in embedded systems / software and provide great engineering input to the team.
- Bachelor’s Degree in Computer Engineering, Computer Science, Electrical Engineering, or a technically similar field.
- 3-5 years of experience in developing embedded software in C/C++ and OpenCL and/or CUDA.
- Experienced in Embedded Vision; OpenCV and OpenCL/CUDA.
- Familiarity with Nvidia GPU based embedded platforms
- Experienced in OpenCL/CUDA for developing Machine Learning / Computer Vision algorithms for FPGA/GPU.
- Familiarity with robotic navigation in GPS-denied environments.
- Familiarity with implementing SLAM, EKF-SLAM, Visual SLAM or similar in an embedded system.
- Familiarity with distributed computing.
- Familiarity with writing Simulation software in C/C++ using OpenGL or SDL.
- Familiarity with a hardware description language such as VHDL/Verilog.
- Bare-metal software/firmware development in C and ARM Assembly.
- Familiarity with Python.
- Familiarity with GitHub or similar.
- Master’s Degree in Computer Engineering, Computer Science, Electrical Engineering, or a technically similar field.
DRL offers a compensation package that is commensurate with experience and abilities. Please apply to firstname.lastname@example.org