Agility Robotics

Software Engineer - Embedded Linux

Job description

Agility Robotics is a pioneer. Our robot, Digit, is the first to be sold into workplaces across the globe. Our team is differentiated by its expertise in imagining, engineering, and delivering robots with advanced mobility, dexterity, intelligence, and efficiency -- robots specifically designed to work alongside people, in spaces built for people. Every day, we break through engineering challenges and invent new solutions and capabilities that will one day make robots commonplace and approachable. This work is our passion and our responsibility: our mission is to make businesses more productive and people’s lives more fulfilling.

About The Role

Our software team is growing rapidly and we are looking for talented engineers to join our small, agile, world-class team. In this position you will be developing the low-level software that powers our state-of-the art humanoid robots, working as the bridge between hardware and high-level control algorithms.

About The Work

  • Contribute to the C++ software stack that powers our robots, interfacing with OS drivers and hardware to enable high-bandwidth, low-latency control
  • Work with cross-disciplinary teams to solve complex problems dealing with the integration of software and hardware and the design of our next-gen compute stack
  • Maintain and improve a fieldbus implementation (EtherCAT) for a humanoid platform
  • Design a Linux OS implementation for real-time/low-latency execution of autonomy software on modern x86 8-12 core CPUs
  • Write and optimize Linux drivers for hardware peripherals, including cameras, GPU, ethernet, PCIE, NVMe, Serial USART
  • Design and implement automatic, over-the-air updates for embedded systems
  • Write performant, well-tested, maintainable, and well-documented C++/C software

About You

  • BS or MS in robotics, computer science or related field
  • 5+ years industry experience developing C code for a Linux environment
  • Experience with best practices for writing performant and maintainable software
  • Experience implementing industrial fieldbuses and real-time network programming
  • Experience with network programming in Linux: raw sockets, UDP, TCP/IP, websockets, etc…
  • Experience configuring Linux based operating systems (e.g. buildroot, μClinux, bitbake, driver setup, kernel configuration)
  • Experience programming and supporting Linux kernel drivers such as USB, networking, video, storage, etc…
  • Ability to communicate technical information effectively both orally and in writing with other team members
  • Authorization to work in the USA

Bonus Points

  • Experience with EtherCAT and CANopen protocols
  • Experience writing modern C++ (17, 20)
  • Proficiency in Python (3.6+)
  • Strong debugging skills in both the hardware and software domain
  • Familiarity with standard agile and software development processes (issue tracking tools (Jira), feature branching, version control (Git), continuous integration and deployment)
  • Experience with OS security features such as secure boot, ARM trustzone, secure updates, etc…

Benefits

  • Competitive compensation package
  • Industry leading employer-matched retirement plan
  • High-quality health, dental and vision insurance - 100% Employer paid for single coverage
  • 100% Company paid Short and Long-term disability insurance
  • 100% Company paid Life Insurance
  • Five weeks of paid time off (3 discretionary weeks and 2 company-wide shutdowns)
  • Paid sick leave
  • Paid parental leave
  • A culture that encourages flexible work schedules
  • A culture that embraces individuality and authenticity
  • Relocation assistance provided when necessary
Agility Robotics

Developing technical breakthroughs in robotic legged mobility.