Mountain View, California
Knightscope is seeking an exceptionally strong software engineer focused on robotics to expand the functionality of Knightscope’s Autonomous Data Machines. You will have end-to-end responsibility to develop robust solutions for real-world robotic applications. Starting with a strong theoretical framework you will develop complex algorithms, integrate your code in a production level collaborative software environment, and verify functionalities with our robots and user interfaces. Your work will impact what we will deliver to our customers. We are a fast-paced environment - your personal drive and abilities will define execution speed and results.
- Implement algorithms that run on our robots, both internal to the software system and client facing.
- Software development will include improving localization, improving obstacle avoidance, identifying root cause of software node crashes, developing new techniques for mapping/navigation etc.
- Ensure implementation is carefully thought through, keeping in mind readability, compute, scalability, maintainability, testing and other best practice considerations.
- Be proactive in figuring out bottlenecks and issues with the existing setup.
- Use software design skills to pick the best solution for solving a given problem.
- Stay up-to-date on changes and improvements happening in software.
- Bachelors or higher degree in Computer science.
- 3+ years experience in writing production level software.
- Working knowledge of multi-threading and object oriented programming.
- Proficiency in data structures and algorithms, particularly graph based concepts.
- Excellent coding skills in C++, Python and Bash.
- Experience working with Linux systems.
- General understanding of writing tests and testable code.
- Strong written & verbal communication skills.
- Experience developing software for robots or autonomous systems.
- Good understanding of robotics concepts such as sensor fusion, localization, path planning, FSMs etc.
Nice to have
- Contributions to open source projects or code that we can review is a big plus.
- Experience with PCL, Boost and/or ROS would be great.
- Familiarity with version control tools such as Git.
- Experience with networking and interprocess communication concepts – such as xmlrpc, rabbitmq would be nice.
- Experience with dealing with / triaging / debugging OS related issues such as with – drivers, installations, package control, file descriptors etc.
- Experience in a startup environment