Our Software Engineers are focused on creating the ideal software environment and infrastructure to support research and our robotic and AI applications. We use cutting edge technologies and high performance computing platforms to make our software infrastructure both on our robots and in the cloud fast and easy to use.
The work we do presents interesting and unique engineering challenges. As a Software Engineer at Ascent's Autonomous Vehicles team, you can work on several different areas such as real time systems, AI integration, sensor integration and robotic middleware development. You will develop both internal software tools and products that ship to our industry partners. We have several openings for this role, you'll have flexibility to chose between development areas.
As a member of the Engineering Team, you’ll be part of a highly collaborative team who can work closely together and help each other on different tasks. Together, you’ll provide our researchers with the tools to fully utilize computing resources, enabling research to progress at a faster pace. This will involve developing, testing and enhancing software solutions based on requirements from a multitude of stakeholders including researchers, team leads and program managers.
- You will be working with the Engineering team to develop our robotic software and back-end for large data sets
- Provide software design and programming support to research projects
- Report and present software development including status and results clearly and efficiently, verbally and in writing
- Architect and implement software libraries and internal tools
- Write and maintain documentation for the code you write
- Integrate our software, build APIs and databases
- Conduct field tests of robotic software if needed
- Try new technologies that may make things better. We are not constrained by legacy code
- Bachelor’s degree in Computer Science, Computer Engineering or a related technical field, or equivalent experience.
- Strong software engineer experienced with large-scale software systems
- Strong experience in C++ with a desire to learn new programming languages
- Programming experience in at least one script language such as Lua, Python or Matlab
- Familiarity with software collaboration tools (git, Jira, etc.)
- Good Linux knowledge
- Experience working with two or more of the following
- desktop application development
- distributed/parallel computing systems (cloud or in-house)
- robotic or control systems
- computer vision or perception
- machine learning algorithms or platforms
- firmware/embedded systems engineering
- Good understanding of math and ability to interpret research papers
Plus points for any of these
- Master’s or further education
- Experience with GPU Programming (CUDA, OpenCL)
- Experience with ROS
- Interest in machine learning and AI
- Experience using machine learning platforms, tools and libraries (such as Tensorflow, Caffe, Kubernetes, Docker, Chainer, Ansible, Logstash, Amazon AWS, Google Cloud, etc.)
- Knowledge of Ethernet, Serial, CAN, FlexRay and other network protocols and their usage
- Experience with Unity or Unreal Engine or OpenGL
- Experience with AR/VR
- Contributions to Open Source projects
Self-development support, expenses for trips to industry events, Japanese lessons and gym membership will be provided as benefits.