Software Engineer Robotics
Listed on 2026-10-20
-
Software Development
Software Engineer
Location: United States - Minneapolis, MN
Pay: $85,200 - $127,600
With more than $1B in revenue, Tennant Company is a globally recognized leader in the cleaning equipment industry. For the past 150 years, we have been passionate about developing and manufacturing innovative and sustainable solutions for our customers. At Tennant Company, we are committed to stewardship and creating a cleaner, safer and healthier world. With manufacturing, operations and sales, service, and support functions across the globe, your journey at Tennant can take you places you never expected.
We are seeking an Experienced Software Engineer to join the Tennant Company (TNC) Robotics Product Development organization. This role focuses on the development, integration, and support of embedded and connected software systems that power robotic cleaning machines and related platforms.
The Software Engineer works closely with Systems, Electrical, Mechanical, Test, and other Software Engineers to translate product requirements into robust, maintainable software solutions. Success in this role is measured by software quality, reliability, integration effectiveness, and the ability to deliver features on schedule while adhering to sound engineering practices.
Key Responsibilities Embedded & Platform Software Development- 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.
- Board bringup and hardware/software integration
- Driver configuration or modification under guidance of senior engineers
- Debugging software and hardware/software interface issues
- Ensure software integrates cleanly with electrical, controls, and mechanical subsystems.
- Develop and support software that interfaces with connected and distributed systems, including:
- Controllertocontroller communication (CAN, CANO
pen) - Ethernet and USBbased interfaces
- Support implementation of IoTenabled 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, providing constructive feedback and incorporating review outcomes into designs.
- Ensure software designs align with regulatory and product requirements.
- Develop software with a strong focus on quality and maintainability.
- Perform software debugging, fault isolation, and root cause analysis.
- Participate in unitlevel and system level testing, supporting verification of software requirements.
- Follow coding standards and contribute to peer reviews.
- Execute software development activities through the New Product Development (NPD) lifecycle.
- Participate as a contributing team member in Agile or iterative development processes.
- Configuration management (Bitbucket or similar)
- Defect tracking and task management (Jira)
- Requirements management and collaboration (Visure or similar)
- Contribute to improving software processes and documentation over time.
- Work closely 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.
(If this job is in fact in your jurisdiction, then you may be using a Proxy or VPN to access this site, and to progress further, you should change your connectivity to another mobile device or PC).