Senior Software Engineer

About the Role

An established company operating in robotics, automation, logistics, and intelligent material-handling systems is looking for a Senior Software Engineer with a focus on robotic manipulation.

The position involves developing software that allows robots to carry out complex physical tasks in real-world production environments. A significant part of the role centers on manipulation algorithms, motion planning, kinematics, control, motion execution, and coordination of robotic systems.

You will contribute to production robotics software while working closely with engineers across software, hardware, and product development.

Responsibilities

  • Develop and maintain software that enables robotic manipulation in production environments.
  • Implement algorithms and software related to motion planning, robot kinematics, motion execution, control, and multi-arm coordination.
  • Improve the performance, reliability, and robustness of robotic systems performing complex physical tasks.
  • Develop software capable of interacting with and coordinating physical robotic hardware.
  • Develop, extend, and use simulation environments to validate manipulation algorithms before and during deployment.
  • Integrate robotics capabilities with larger software and hardware systems.
  • Develop services and interfaces used by robotics applications and supporting systems.
  • Participate in architectural and system-design decisions for robotics software.
  • Help establish technical direction and provide mentorship to less-experienced engineers.
  • Communicate engineering plans, technical trade-offs, priorities, and progress across teams.

Required Background

  • Bachelor’s degree in Robotics, Computer Science, or a closely related field.
  • At least 4 years of professional software engineering experience, preferably involving production systems.
  • Strong practical experience developing software in Python.
  • Experience with asynchronous, concurrent, parallel, or distributed systems.
  • Experience implementing robotics software or algorithms involving areas such as motion planning, motion execution, robotic kinematics, manipulation, multi-robot or multi-arm coordination, and environment representation.
  • Experience creating or working with service interfaces, including REST APIs, gRPC services, or similar technologies.
  • Familiarity with software architecture, system design methodologies, and established design patterns.
  • Ability to take loosely defined engineering problems, determine an appropriate approach, and deliver a complete implementation.
  • Experience developing software that is maintainable, reliable, and thoroughly tested.
  • Familiarity with Git, code reviews, issue tracking, and automated testing.
  • Experience with unit, integration, and/or hardware-in-the-loop testing.
  • Strong communication and collaboration skills when working with technical and non-technical stakeholders.

Preferred Background

  • Master’s degree in Robotics, Computer Science, or a related technical discipline.
  • 6+ years of professional software development experience.
  • Experience using ROS or ROS2.
  • Experience integrating software with robotic hardware, particularly robotic arms.
  • Familiarity with robotics simulation platforms and test environments.
  • Familiarity with Linux-based development.
  • Experience with Python asynchronous programming, including asyncio.
  • Programming experience in C++.
  • Experience with NoSQL databases such as MongoDB.