Skip to content

Commit

Permalink
1.0.3 - Added more clarification in the README file, hopfully this wi…
Browse files Browse the repository at this point in the history
…ll clear up any confusion
  • Loading branch information
henriksod committed May 17, 2019
1 parent df7b2d8 commit a44c3fb
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 9 deletions.
2 changes: 2 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
MIT License

Copyright (c) 2018 Henrik Söderlund

Permission is hereby granted, free of charge, to any person obtaining a copy
Expand Down
23 changes: 19 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ FABRIK based 2D Inverse kinematics solver
=====

***************************************************************
* FABRIK 2D inverse kinematics solver - Version 1.0.1
* FABRIK 2D inverse kinematics solver - Version 1.0.3
* By Henrik Söderlund <[email protected]>
* This Library is licensed under a GPLv3 License
* This Library is licensed under a MIT License
***************************************************************

A FABRIK based inverse kinematics solver for Arduino.
Expand Down Expand Up @@ -52,10 +52,12 @@ void loop() {

// Write to the servos with limits, these will probably not be the same
// for your manipulator and will have to be changed depending on your
// setup.
// setup. Since the library may output negative angles, it is important
// to apply limits before sending the angles to the servos!
shoulder.write(min(180, max(0, shoulderAngle + 180/2)));
elbow.write(min(180, max(0, elbowAngle + 180/2)));

// The following delay is just a part of this example
delay(1000);

// Solve IK, move down to x=150, y=10
Expand All @@ -71,6 +73,7 @@ void loop() {
shoulder.write(min(180, max(0, shoulderAngle + 180/2)));
elbow.write(min(180, max(0, elbowAngle + 180/2)));

// The following delay is just a part of this example
delay(1000);
}
```
Expand All @@ -94,6 +97,18 @@ Five usage examples are included which give more in-depth information:
:------------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------:
![Example3DOFGrippingOffset](https://github.com/henriksod/Fabrik2DArduino/blob/master/examples/example_3DOFGrippingOffset/preview.gif) | ![Example4DOF](https://github.com/henriksod/Fabrik2DArduino/blob/master/examples/example_4DOF/preview.gif)

Robot Arm Configuration
------------
Due to many requests by email, I have decided to provide you with figures illustrating the configuration of the robot arm that is necessary for this library to work as it is supposed to. Remember that these are only examples of how your arm could look like, but the same concept is applied to any arm that you use with this library.

Robot arm configuration in 2D:
![3DOFSetup](https://github.com/henriksod/Fabrik2DArduino/blob/master/setup/3DOFSetup.png)

Robot arm configuration in 3D:
![4DOFSetup](https://github.com/henriksod/Fabrik2DArduino/blob/master/setup/4DOFSetup.png)

What is important, and can be seen in the figures, is that the servos' angles have to be zero when the link is parallel to the previous link. By setting up the servos in this manner, the arm will be pointing straight up when all joint angles are set to zero.

Installation
------------
Clone this repository to your local machine, and place it in your Arduino libraries folder as 'Fabrik2DArduino'.
Expand All @@ -120,4 +135,4 @@ Methods of Fabrik2D class

Notice
------------
It is recommended that you implement your own acceleration and velocity functions to make sure that your manipulator does not snap into the solved positions (which could cause breakage or slipping)! One way of doing this is to just increment the x and y positions and solving inverse kinematics over time until the manipulator has reached it's destination.
It is recommended that you implement your own acceleration and velocity functions to make sure that your manipulator does not snap into the solved positions (which could cause breakage or slipping)! One way of doing this is to interpolate the joint angles over time until the manipulator has reached it's destination. I would reccoment using [RAMP](https://github.com/siteswapjuggler/RAMP), an Arduino interpolation library made by [siteswapjuggler](https://github.com/siteswapjuggler).
6 changes: 3 additions & 3 deletions library.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name=Fabrik2D
version=1.0.2
author=Henrik Söderlund <henrik.a.soderlund@gmail.com>
maintainer=Henrik Söderlund <henrik.a.soderlund@gmail.com>
version=1.0.3
author=Henrik Söderlund <henrik.a.soderlund@hotmail.com>
maintainer=Henrik Söderlund <henrik.a.soderlund@hotmail.com>
sentence=A library for solving inverse kinematics in 2 dimensions using the FABRIK algorithm.
paragraph=FABRIK is an iterative inverse kinematics solver algorithm by Andreas Aristidou, Joan Lasenby. It is optimal for computationally inefficient systems.
category=Data Processing
Expand Down
Binary file added setup/3DOFSetup.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added setup/4DOFSetup.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/FABRIK2D.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**********************************************************************************************
* FABRIK 2D inverse kinematics solver - Version 1.0.0
* FABRIK 2D inverse kinematics solver - Version 1.0.3
* by Henrik Söderlund <[email protected]>
*
* Copyright (c) 2018 Henrik Söderlund
Expand Down
2 changes: 1 addition & 1 deletion src/FABRIK2D.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**********************************************************************************************
* FABRIK 2D inverse kinematics solver - Version 1.0.1
* FABRIK 2D inverse kinematics solver - Version 1.0.3
* by Henrik Söderlund <[email protected]>
*
* Copyright (c) 2018 Henrik Söderlund
Expand Down

0 comments on commit a44c3fb

Please sign in to comment.