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, you can work on several different areas such as 3D simulation, machine learning frameworks and robotic systems. 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, some of which are research oriented.

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.

Responsibilities

  • 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 systems such as building API's, working with databases
  • Work with the Infrastructure and Embedded teams to provide access to large data sets from various front-ends and embedded systems
  • Try out new technologies. We are not constrained by legacy code


Requirements

Minimum Qualifications

  • 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 Python
  • Familiarity with software collaboration tools (git, Jira, etc.)
  • Good Linux knowledge
  • Experience working with two or more of the following
    • Experience with a robotic middleware (ROS, ROS2, OpenRTM, Orocos, etc.)
    • 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
  • AGILE / SCRUM experience


Plus points for any of these

  • Master’s or further education
  • Experience with GPU Programming (CUDA, OpenCL)
  • 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 and other network protocols and their usage
  • Experience with GAZEBO robot simulation
  • Experience with AR/VR
  • Contributions to Open Source projects
  • Experience with embedded microcontrollers and device interfacing