As a software engineer on the Autopilot Computer Vision and AI team, you will contribute to one of the most advanced and widely-deployed computer vision stacks in the world. Along with top researchers from academia and some of the most experienced autonomous vehicle engineers in the industry, you will marry cutting-edge deep learning algorithms with robust, real-time software, and deliver safety-critical features to hundreds of thousands of customers. You will develop and support a host of different projects, driven first-and-foremost by our mission to deploy the safest and most effective product in the market.
- Develop real-time, embedded C++ software to decode, interpret, and assemble the raw neural network outputs into a form consumable by the planning and control stack.
- You will build and employ a variety of tools for visualizing, debugging, and validating various layers in the vision pipeline.
- You will compose algorithms, primarily in Python, to process massive amounts of fleet data for offline processing.
- You will work closely with clients of the vision stack to ensure API’s are sufficient, signal quality and gaps are well-understood, and future needs are being anticipated.
- BS in Computer Science, Physics, Electrical Engineering or practical software engineering experience in related fields.
- Minimum 3 years of experience writing production-level C/C++; experience with C++11 (and later), real-time systems, and generic programming are highly desirable.
- Mathematical fundamentals, including: linear algebra, vector calculus, probability, and statistics. Experience implementing this math effectively in software (eg Python, numpy, C++/Eigen, etc.).
- Familiarity with core problems in robotics, including state estimation (Kalman filter, particle filter, etc.), SLAM, and signal processing (LTI filtering, outlier rejection, reasoning in both time and frequency domains).
- Familiarity with basic computer vision concepts, including: intrinsic and extrinsic calibrations, homogeneous coordinates, projection matrices, and epipolar geometry. Some additional expertise in more advanced geometric fields, such as 3D reconstruction, structure from motion, visual odometry, etc., is highly desirable.
- Experience working in a Linux environment.
- Basic Git knowledge: creating and merging branches, cherry-picking commits, examining the diff between two hashes. More advanced Git usage is a plus, particularly: development on feature-specific branches, squashing and rebasing commits, and breaking large changes into small, easily-digestible diffs.