A GUI for Forward and Inverse Kinematics with the LynxMotion L6 Robotic Arm
About the project
This is an old project for a robotics MS course and it involves a graphical interface designed to control the Lynxmotion L6 Robotics Arm. Info on the robot can be found all over the net; a good place to start is here.
The code is written in C# and it is a single window application that offers the following:
- Physical, real-time RS232/USB interface with the robot.
- A simple, good old wireframe plotting provides a complete 3D representation of the arm on the form without resorting to elabp elaborate 3D software.
- Manual control of the robot by means of rotating each axis individually. This obviously includes forward kinematics being taken care of automatically.
- Inverse Kinematics and Trajectory Planning: The interface can solve for the link angles of the robot for a given position in 3D Euclidean space (in cms) and plan a trajectory to the destination. As a demo, the robot can draw a sinewave on a plane using the inverse kinematics solver to chart its course from one sample to the next in the sinewave plot. The solver will mark a destination as ``unreachable'' if the system of equations is infeasible.
This is a C#-only application, originally written in Visual Studio, but can be directly ported to Mono in Windows or Ubuntu. I regret not adding many comments, but it was written under a very limited time. Still, the code is straightforward and readable, although can be optimized in several ways.
More Details
I included the quick report that I originally submitted with the project in order to provide more details on the code.