Software Engineer Robotics

Tennant Company•Golden Valley, MN
•$85,200 - $127,600

About The Position

Tennant Company is seeking an experienced Software Engineer to join its Robotics Product Development organization. The role develops, integrates, and supports embedded and connected software systems for robotic cleaning machines and related platforms. The engineer works with Systems, Electrical, Mechanical, Test, and Software Engineers to turn product requirements into robust, maintainable software, with success measured by software quality, reliability, integration effectiveness, and timely feature delivery using sound engineering practices. The position involves developing embedded software in C/C++ for Linux and/or RTOS environments, contributing to software on machine controllers and companion processing units, supporting hardware/software integration, and working with connected and distributed systems. The engineer establishes and refines requirements and performance targets, maintains design documentation, participates in design reviews, and supports testing, debugging, fault isolation, and root cause analysis. The engineer carries out software development through the New Product Development lifecycle and contributes to Agile or iterative processes. The role uses established configuration-management, defect-tracking, task-management, and requirements-management tools, and collaborates with internal teams and external partners to resolve integration challenges, support product launches, and address issues found during integration, testing, or early production.

Requirements

  • Bachelor of Science in Electrical, Software, or Computer Engineering.
  • 3–5 years of professional software engineering experience, including embedded or systems-adjacent development.
  • Hands-on experience developing software using C/C++.
  • Familiarity with Linux and/or RTOS environments.
  • Experience working with requirements, configuration-management, and defect-tracking tools.
  • Demonstrated ability to debug software and support system-level troubleshooting.
  • Experience working effectively on cross-functional engineering teams.

Nice To Haves

  • Experience in robotics, autonomous systems, or complex electro-mechanical products.
  • Exposure to IoT or connected systems.
  • Experience with scripting or higher-level languages such as Python or C#.
  • Familiarity with communication protocols such as CAN or CANOpen.
  • Experience with unit testing, integration testing, or system verification.
  • Interest in growing technical scope and responsibility over time.
  • Strong software engineering fundamentals and curiosity.
  • Comfort working in complex systems and learning new technologies.
  • Quality focus, attention to detail, and follow-through.
  • Collaborative approach and clear communication across disciplines.
  • Motivation to grow toward senior or lead software engineering roles.

Responsibilities

  • Design, develop, test, and maintain embedded software using C/C++ on Linux and/or Real-Time Operating Systems (RTOS).
  • Contribute to software running on machine controllers and companion processing units.
  • Support board bring-up and hardware/software integration.
  • Configure or modify drivers under the guidance of senior engineers.
  • Debug software and hardware/software interface issues.
  • Ensure software integrates with electrical, controls, and mechanical subsystems.
  • Develop and support software interfacing with connected and distributed systems, including controller-to-controller communication, Ethernet, and USB-based interfaces.
  • Support implementation of IoT-enabled features under defined architectures, including data exchange and system monitoring.
  • Follow established practices for secure and reliable communications.
  • Establish and refine functional requirements and performance targets for assigned software features or subsystems.
  • Create and maintain software design documentation, including flowcharts, context diagrams, and interface descriptions.
  • Participate in design reviews and incorporate review outcomes into designs.
  • Ensure software designs align with regulatory and product requirements.
  • Perform software debugging, fault isolation, and root cause analysis.
  • Participate in unit-level and system-level testing to support verification of software requirements.
  • Follow coding standards and contribute to peer reviews.
  • Execute software development activities through the New Product Development lifecycle and contribute to Agile or iterative development processes.
  • Use established tools for configuration management, defect tracking, task management, requirements management, and collaboration.
  • Contribute to improvements in software processes and documentation.
  • Collaborate with Systems, Hardware, Test, Manufacturing, and external partners to resolve integration challenges.
  • Support new product launches and help address issues discovered during integration, testing, or early production.
  • Communicate technical status, risks, and recommendations clearly within the team.

Benefits

  • Multiple medical plan options
  • 401(k) with a 100% match up to 6%
  • Paid vacation time
  • 8 paid company holidays and 3 personal holidays
  • Dental coverage
  • Vision coverage
  • Wellness rewards
  • Family support programs
  • Company-paid disability insurance
  • Company-paid life insurance
  • Employee Assistance Program
© 2026 Teal Labs, Inc
Privacy PolicyTerms of Service