Overview

Sr. Software Perception Engineer

Neato Robotics is developing technology at the forefront of robotics & artificial intelligence.

Our products are designed to free people from household chores and will change how we all look at housekeeping tasks.  Our products, the award-winning Neato family of autonomous robotic vacuums, have set new standards for intelligence, ease of use and cleaning effectiveness.  The products have been available in retail and online in the U.S. since 2010, and more recently in Europe and Asia.  And they are only the first few of many new products to come.

Our team consists of roboticists, mechanical, electrical and software engineers and product professionals who have launched brands that are now familiar names in consumer electronics.  Our management team is seasoned in leading startups from early stage to successful multinational enterprises.

We are a wholly owned subsidiary of Vorwerk International and headquartered in San Jose, CA.  For more information on Neato robotics please visit our web site at www.neatorobotics.com

We are looking for a talented and passionate Senior Perception Software Engineer to join our growing team at our headquarters in San Jose, CA.

Responsibilities:

As part of the Robotics Software Development team, you will be responsible for developing novel perception and navigation algorithms, and implementing performance and feature enhancements for Neato’s next generation of autonomous connected robots.  A successful candidate will drive the development and maturity of Neato’s neural net training pipeline and will optimize Neato’s inference models for performance in presence of real-time compute resource constraints used by the obstacle avoidance software stack.  The candidate will also be responsible for development of path planning and navigation around obstacles based on state-of-the-art research in Machine Learning.  You will also be responsible for maintaining existing software codebase, troubleshooting robotic software bugs as they are identified.

You will work with highly skilled cross functional teams with experience in board support package development, cloud and application software development, software quality assurance engineers, continuous integration and test build teams and product owners to deliver robust and reliable software solutions to our extensive customer base.

Minimum Qualifications:

BS/MS in Computer Science, Computer Engineering, Electrical Engineering or related field with emphasis on probabilistic robotics.
At least 5 years of developing robotics system software in POSIX C/C++ (STL C++11 and up)
Two years of Python object-oriented programming.
Experience with Deep Learning Frameworks (Tensor Flow, Caffe, etc.).
Working knowledge of common data structures (trees, stacks, priority queues, heaps hash tables and graphs) and algorithms: (Dijkstra, A*, breadth first search, depth first search, RRT).  Show ability to motivate usage of each by analyzing time and space complexity.
Working knowledge of Inter-Process Communication (IPC) mechanisms.
Working knowledge of thread safety in POSIX based multi-threaded programming.
Linux knowledge: bash scripting, signal/process creation, handling and monitoring.
Working knowledge of Git workflow for individual developer code contributions.
Proficiency in code debugging, tracing and profiling.
Strong communication skills (written and oral).
Desirable Qualifications:

Real-time Operating System Programming, process and daemons priorities and scheduling (FreeRTOS and Embedded Linux with Real-time patch).
Code development based on Test Driven Development, Catch2.
Experience with code deployment on targets running Yocto distribution of Embedded Linux.