This project explores the use of non-linear equations in robotics applications, focusing on inverse kinematic problems. Inverse kinematics involves determining the joint orientations in terms of angles that satisfy a given set of constraints, such as positioning the end-effector (tip of the manipulator) at a specific position. This problem often requires numerical solutions, and in this project, we evaluate Newton's and Broyden's methods for solving non-linear systems of equations in inverse kinematic applications.
The main objectives of this project are:
- Implement and evaluate Newton's and Broyden's methods for non-linear systems of equations.
- Compare the accuracy and efficiency of the analytical Jacobian and finite-difference Jacobian approximations.
- Visualize the manipulator's movement to a desired position using both methods.
This repository contains the following source code files:
evalRobot2D.m
: Evaluates the position and Jacobian of a 2D planar manipulator with two links and two rotational degrees of freedom.fdJacob2D.m
: Computes the Jacobian using finite-difference method with central differences.invKin2D.m
: Solves the inverse kinematic problem using Newton's or Broyden's method.plotRobot2D.m
: Provides a function for visualizing the manipulator's movement.eval2D.m
: Base script for user interaction.
- Run the script
eval2D.m
to interactively evaluate the manipulator's movement to a desired position using user input. - Run the script
evaluateMethods.m
to compare the analytical and finite-difference Jacobian approximations for different values ofh
. - Run the script
comparePerformance.m
to observe and compare the manipulator's movement to a desired position using both Newton's and Broyden's methods.
This project requires MATLAB to run the scripts and visualize the manipulator's movement.
To get started with this project, simply clone the repository and run the provided MATLAB scripts.
git clone https://github.com/your-username/robot-kinematics-solver.git
cd robot-kinematics-solver
matlab
Remember to replace your-username
with your actual GitHub username.