Overview

This project was conducted under the supervision of Dr. Mehrdad Raji Kermani as part of the University of Western’s Applied Robotics Lab. The goal was to enhance the functionality of a magnetological clutch-driven 5-degree-of-freedom robotic arm that had previously been developed by Sergey Pisetskiy. This project aimed to increase the functionality of the arm in terms of providing a more accessible interface capable of providing end-effector position in either joint space or Cartesian space, with path planning from start to end position. In addition to this new method of controlling the arm, a test suite was developed to help debug the firmware.

Interface

A new interface was developed using PySide6, ROS 2, and RVIZ 2. It consists of two windows. It consists of a custom PySide6 application which can be used to send manual commands to the firmware, a console printout of communication sent and received, and graphs of position or MRC duty signal vs. time. The second window is the RVIZ 2 Standard layout with MoveIt for inverse-kinematics functionality.

Custom PySide6 Interface

Firmware Debugging

NVIDIA’s Isaac Sim

Github:

RViz 2 and Isaac Sim

To debug the firmware, Renode was used to emulate all 5 microcontrollers. This allowed peripheral- and register-level monitoring. This microcontroller emulation receives instructions via a TCP socket bridge directly from the control interface, allowing development of the interface without requiring the hardware to run the firmware. It is also connected to NVIDIA’s Isaac Sim to run a simulation of the robotic arm and confirm the output. Renode runs asynchronously relative to the host PC clock and slows its internal speed to ensure deterministic emulation of firmware. While useful, this may limit its ability to drive the Isaac Sim simulation due to the slow speed at which it updates clutch duty cycles and processes the encoder data. Currently, I am troubleshooting the integration of these two simulations to ensure proper response. The PID control of the arm seems to be failing, and I am in the process of debugging the root cause, whether it is a time sync issue, a PID mathematics issue or something else. The Undergraduate Summer Research Internship ended as I was working to optimize Renode to run at a usable speed alongside Isaac Sim. This is a project I will continue to improve as time permits.

Custom PySide6 Interface

Custom PySide6 Interface

Isaac Sim was implemented to provide feedback to the firmware control loops. Positional data is pulled from Isaac Sim, converted to encoder values, and written to the memory location in the Renode emulation so the PID control loop calculations can take place. While a lighter program such as Gazebo would suffice for this purpose, Isaac Sim provides features such as ray tracing to implement computer vision systems in the future.

What I Did Vs. What Came Before

The work completed is not all my own. The mechanical design of the arm, along with the firmware controlling it, was done by the Applied Mechatronic and Robotics Lab. My contribution is solely the construction of this simulation platform. Consisting of the Renode emulation of the microcontrollers, the PySide6 interface, the setup of RViz 2 and the setup of Isaac Sim to simulate the physical arm. I also developed the connection between these systems using TCP sockets; however, some protocols are determined by protocols already established by the firmware. All code other than some debugging within the STM32 folder is not my work. #if QEMU SIMULATION #endif outlines additions made for the purpose of debugging or enabling proper simulation of this firmware.