Interactive Robot Kinematics: Hands-On with ImGui and ImGuizmo
This is a remake of my previous demonstration of robot arm kinematics. The whole demo is written in C++. It contain a kinematic library of aritculated robot arm and a simple trajectory planning. The user interface is build with ImGui, ImGuizmo, and Implot. I complie this app with WebAssembly, so you can test it directly on your browser.
Here is the link. The whole source code is here.
Here are some detail:
Initialize Robot arm
The widgets on the upper right side are for setting/initialize robot arm. This part of the application allows users to define and configure a robot’s DH parameters, initialize the robot with a predefined configuration, reset the configuration, calculate forward and inverse kinematics (by input TCP values).
It also contains a solution table to show all 8 possible solutions/configurations for a 6-axis robot arm. Additionally, it provides feedback on the result of inverse kinematics calculations and the option to show or hide the 3D transformation gizmo window.
Robot movements and joint trajectories
The widgets on the lower right side provides a control interface for planning and executing robot movements. It allows users to specify joint angles or Cartesian positions, plan trajectories, and visualize the motion of the robot in real-time. The trajectory planning can be customized with options for duration, and the trajectory history is adjustable to observe the robot’s past movements.
3D visualization of robot arm
The widget onthe upper left side offers a real-time visualization of the robot’s movements. It calculates forward and inverse kinematics, updates joint configurations, and allows you to visualize the robot’s motions. The graphics make it easier to understand how the robot is positioned and oriented in 3D space and how its joints move.
Here is the demo video: