Avride Software Engineer at Avride responsible for designing, developing, and maintaining low-latency device drivers and software pipelines for autonomous vehicle sensors. Collaborate with cross-functional teams to optimize sensor performance.
Responsibilities
We are seeking a Software Engineer responsible for integrating the diverse array of sensors and various embedded hardware into our software pipelines. In this critical role, you will be responsible for designing, developing, debugging and maintaining the core software stack as well as cultivating deep expertise in the sensor domain, serving as a key resource and guiding other team members towards optimal solutions.
Design, develop, optimize and maintain low-latency, robust device drivers and software pipelines for Camera, LiDAR, Radar, IMU, GNSS, Microphones, and other autonomous vehicle sensors and actuators.
Develop and optimize algorithms for timestamping, filtering and preprocessing sensor data to remove noise, false detections and artifacts before providing synchronized data to the perception and localization subsystems.
Develop and maintain data analysis pipelines to monitor sensor health, provide early detection of out-of-spec behavior and identify performance bottlenecks.
Write userspace C++ and Python software for the embedded Linux computers in our vehicles.
Collaborate with cross-functional teams, including embedded, perception and localization to integrate sensors into the overall autonomous vehicle platform, to ensure optimal sensor performance and debug the hardware and software related issues.
Grow into and act as an expert in the sensor domain by understanding the technical characteristics, features and available parameters of the sensors, as well as their underlying principles of operation and application nuances.
Write and maintain C++ software that reads, timestamps and checks data from cameras, LiDARs, radars, IMUs and GNSS receivers.
Bring new sensors and computers into our software, on the bench and on the vehicle.
Find and fix problems that cross software, network and hardware: dropped packets, wrong timestamps, a device that stops sending.
Write tools and tests in Python to check sensor data and help other teams debug.
Work with the perception, localization, firmware and hardware teams, and take part in the team's support rotation.
Qualification
Everyday use of LinuxDaily use of LinuxA degree in Computer Science
Required
Bachelor's or Master's degree in Computer Science, Robotics, Electrical Engineering, Math, Physics or related STEM fields or equivalent years of experience.
Minimum of 2 years of experience in production software development.
Proficiency in modern C++ and Python programming.
Experience with software running on real hardware: robots, vehicles, drones or embedded devices.
Everyday use of Linux, including basic networking (IP addresses, TCP/UDP, sockets).
Strong problem-solving and debugging skills.
Ability to work in a fast-paced dynamic environment.
1+ years of professional software development in C++ (modern C++: RAII, smart pointers, STL containers, threads).
Daily use of Linux: the command line, building and debugging your own code, basic networking (IP addresses, TCP vs UDP, sockets).
Experience with software that talks to hardware: a robot, vehicle, drone, embedded board or device, at work, in a research lab or in a serious project or competition.
Working knowledge of Python for scripts and data checks.
A degree in Computer Science, Electrical or Computer Engineering, Robotics, Physics or a related field, or equivalent experience.