Bachelor's or Master's degree in Computer Science, Robotics, Electrical Engineering, Math, Physics, or related STEM fields, or equivalent experience.
Minimum of 2 years in production software development.
Proficiency in modern C++ and Python programming.
Experience with software on real hardware like robots, vehicles, or embedded devices.
Strong problem-solving and debugging skills.
Daily use of Linux, including networking basics.
Responsibilities
Design and maintain low-latency device drivers for various sensors.
Develop algorithms for preprocessing sensor data to enhance accuracy.
Create data analysis pipelines for monitoring sensor health.
Write userspace C++ and Python software for embedded Linux systems.
Collaborate with cross-functional teams to integrate sensors into the vehicle platform.
Act as a sensor domain expert, guiding team members on optimal solutions.
Troubleshoot and resolve issues across software, network, and hardware.
Benefits
Opportunity to work on cutting-edge autonomous vehicle technology.
Collaborative environment with cross-functional teams.
Hands-on experience with diverse sensor technologies.
Professional growth in a fast-paced, dynamic setting.
On-site work in Austin, fostering team collaboration.
Full Job Description
Software Engineer, Sensors and System Software (C++, Linux)
About the Role: 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.
You will:
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.
Required Qualifications:
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.
Able to work on site in Austin five days a week; the work is on hardware.
Understanding fundamentals of automotive Cameras (GMSL/FPD-Link), LiDAR, Radar, IMU, GNSS, and other sensor technologies, including their principles of operation, pros/cons, limitations, and calibration techniques.
Familiarity with ROS or similar frameworks and related communication protocols.
Experience with developing drivers and/or processing software for radars and camera data or expertise in sensor development.
Experience with real-time embedded systems, including working in an asynchronous environment with multiple real-time, low-latency, safety-critical systems processes, threads, timers, interrupts.
Experience in working with the custom Linux based systems for the embedded devices, and understanding of the kernelspace parts of the senors data pipelines.
Understanding the electronic engineering fundamentals to be able to perform supporting functions like reviewing schematics and designs of embedded devices and performing the bring-up and debugging of the hardware.
Experience with common automotive hardware interfaces like CAN, SPI, I2C, PCIe, Ethernet.
Candidates are required to be authorized to work in the U.S. The employer is not offering relocation, sponsorship, and remote work options are not available.