Robot End Effector

Robot End Effector

Client – Who are they/what do they do


Multi-decade Silicon Fen based science and technology innovator.

Challenge – What did they need us to do


The client required collaboration on the rapid prototype of a medical robotic arm end effector controlled by an embedded microcontroller with the following key features and functionality:

  • UART communication interface to an external system controller
  • Compliant with a MODBUS protocol stack allowing control of:
    • Motors
    • IO
    • ADC
    • PWM
    • Sequencing of Operations
  • Driver Implementation for hardware peripherals
  • Bare-Metal implementation with no RTOS

The client required the full software architecture and design of the microcontroller, along with the establishment of a development environment compatible with their tooling. The software needed to be developed in a manner compatible with productionisation under an ISO 13485 and IEC 62304 process.

The project required us to integrate with the clients R&D team, augmenting their skill set and helping to deliver on an ambitious timescale. This required close collaboration between the teams, and effective project management, in order to deliver on schedule, whilst remaining within budget.

Solution – How did we solve it for the client


The development began by designing a componentised and layered software architecture. The system was broken down into key components based on their logical features and interfaces were established for inter component communication and execution. The software was layered in a manner to hide platform specific functionality from the application layer, creating a platform agnostic application. The use of component interfaces allowed for test driven design and parallel independent development with minimal integration risk.

The application was designed to use a hard real-time deterministic control loop (“Super Loop”) with minimal interrupts. This minimised any potential delays in operations when requested by the system controller.

The C++ language was chosen as the best fit to support the architecture choices, this included abstraction Interface patterns for each component with access control and isolation of functionality. The C++ feature set was restricted to comply with medical coding standards like Misra C++ 2008 and AUTOSAR C++ 14, anticipated to be used during production.

Due to a lack of system controller availability, testing was carried out using a command line based python script running on a Windows based PC. Modbus commands and responses were sent and received across the UART. This allowed atomic and sequenced operations to be executed on the unit under test to verify and validate the system for both “sunny” and “non-sunny” scenarios. The project was of short duration. Weekly reports and status calls were used to communicate progress and any upcoming dependencies on the client to minimise potential risks of delay against the planned delivery schedule.