The Role
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.
Responsibilities
- 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.
Requirements
- 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.