Software Engineer, Robotics

Tennant CompanyMinneapolis, MN
Onsite

About The Position

Tennant Company is seeking an Experienced Software Engineer to join their robotics team. This role involves developing embedded and connected software systems for robotic cleaning platforms. The engineer will work closely with cross-disciplinary teams, including systems, electrical, mechanical, and test engineers, to ensure product reliability, performance, scalability, and customer experience. This is an opportunity for a hands-on engineer interested in debugging complex systems and growing towards senior or technical-lead responsibilities.

Requirements

  • BS in Electrical Engineering, Software Engineering, Computer Engineering, or related field.
  • 3–5 years of professional software engineering experience, including embedded or systems-adjacent work.
  • Hands-on development experience using C/C++.
  • Familiarity with Linux and/or RTOS environments.
  • Experience using requirements, configuration management, and defect tracking tools.
  • Demonstrated strength in debugging and system-level problem solving.
  • Proven ability to work effectively on cross-functional engineering teams.

Nice To Haves

  • Background in robotics, autonomous systems, or complex electro-mechanical products.
  • Exposure to IoT or connected systems.
  • Experience with Python, C#, or other higher-level languages.
  • Familiarity with CAN, CANOpen, or similar communication protocols.
  • Experience with unit testing, integration testing, or system verification.
  • Strong interest in growing technical scope and responsibility over time.

Responsibilities

  • Design, develop, test, and maintain embedded software in C/C++ running on Linux and/or RTOS platforms.
  • Contribute software for machine controllers and companion processing units.
  • Support key low-level activities such as board bring-up, hardware/software integration, and driver configuration or modification.
  • Debug complex software and hardware interface issues.
  • Ensure clean integration with electrical, controls, and mechanical subsystems.
  • Develop and support software for distributed and connected systems, including controller-to-controller communication (CAN, CANOpen) and Ethernet- and USB-based interfaces.
  • Support implementation of IoT-enabled features such as data exchange, monitoring, and diagnostics.
  • Apply best practices for secure, reliable, and maintainable communication.
  • Define and refine functional requirements and performance targets for assigned features or subsystems.
  • Create and maintain clear software documentation, including interface definitions, diagrams, and design descriptions.
  • Participate in software and system design reviews.
  • Ensure designs align with product, safety, and regulatory requirements.
  • Write software with a strong focus on quality, robustness, and long-term maintainability.
  • Perform debugging, fault isolation, and root-cause analysis across software and system boundaries.
  • Participate in unit-level and system-level testing to verify software behavior.
  • Follow coding standards and actively participate in peer reviews.
  • Execute development tasks throughout the New Product Development (NPD) lifecycle.
  • Work within Agile or iterative development processes.
  • Use modern engineering tools for version control, task tracking, and requirements management.
  • Contribute ideas to improve software processes, tooling, and documentation.
  • Work closely with Systems, Electrical, Mechanical, Test, Manufacturing, and external partners.
  • Support product launches and address issues found during integration, validation, or early production.
  • Clearly communicate technical status, risks, and recommendations within the team.

Benefits

  • health insurance
  • 401(k)
  • disability
  • life insurance
  • paid time off
  • voluntary benefits
© 2026 Teal Labs, Inc
Privacy PolicyTerms of Service