All Projects → glumb → Kinematics

glumb / Kinematics

Licence: mit
🤖 JavaScript 6DOF robot kinematics library

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Kinematics

Handeye calib camodocal
Easy to use and accurate hand eye calibration which has been working reliably for years (2016-present) with kinect, kinectv2, rgbd cameras, optical trackers, and several robots including the ur5 and kuka iiwa.
Stars: ✭ 364 (+94.65%)
Mutual labels:  robotics, robot, kinematics
Pybotics
The Python Toolbox for Robotics
Stars: ✭ 192 (+2.67%)
Mutual labels:  robotics, robot, kinematics
Hexapod
Blazing fast hexapod robot simulator for the web.
Stars: ✭ 370 (+97.86%)
Mutual labels:  robotics, robot, kinematics
kinpy
Simple kinematics calculation toolkit for robotics
Stars: ✭ 48 (-74.33%)
Mutual labels:  robot, robotics, kinematics
Hexapod Robot Simulator
A hexapod robot simulator built from first principles
Stars: ✭ 577 (+208.56%)
Mutual labels:  robotics, robot, kinematics
Robot Gui
A three.js based 3D robot interface.
Stars: ✭ 181 (-3.21%)
Mutual labels:  robotics, robot
Robotics setup
Setup Ubuntu 18.04, 16.04 and 14.04 with machine learning and robotics software plus user configuration. Includes ceres tensorflow ros caffe vrep eigen cudnn and cuda plus many more.
Stars: ✭ 110 (-41.18%)
Mutual labels:  robotics, robot
Robopy
Robopy is a python port for Robotics Toolbox in Matlab created by Peter Corke
Stars: ✭ 186 (-0.53%)
Mutual labels:  robotics, kinematics
Makelangelo Firmware
CNC firmware for many different control boards and kinematic systems. Originally the brain of the Makelangelo art robot.
Stars: ✭ 116 (-37.97%)
Mutual labels:  robot, kinematics
Webots
Webots Robot Simulator
Stars: ✭ 1,324 (+608.02%)
Mutual labels:  robotics, robot
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+903.21%)
Mutual labels:  robotics, robot
Invisible Highway
Invisible Highway is an experiment in controlling physical things in the real world by drawing in AR. Simply make a pathway along the floor on your phone and the robot car will follow that path on the actual floor in your room. A custom highway with scenery is generated along the path to make the robots a little more scenic on your phone screen.
Stars: ✭ 118 (-36.9%)
Mutual labels:  robotics, robot
List of robot electronics
A curated list of awesome open source electronic resources for robotics
Stars: ✭ 106 (-43.32%)
Mutual labels:  robotics, robot
Grl
Robotics tools in C++11. Implements soft real time arm drivers for Kuka LBR iiwa plus V-REP, ROS, Constrained Optimization based planning, Hand Eye Calibration and Inverse Kinematics integration.
Stars: ✭ 105 (-43.85%)
Mutual labels:  robotics, robot
Iros20 6d Pose Tracking
[IROS 2020] se(3)-TrackNet: Data-driven 6D Pose Tracking by Calibrating Image Residuals in Synthetic Domains
Stars: ✭ 113 (-39.57%)
Mutual labels:  robotics, robot
Ikbt
A python package to solve robot arm inverse kinematics in symbolic form
Stars: ✭ 97 (-48.13%)
Mutual labels:  robotics, kinematics
Dolly
🤖🐑 It's a sheep, it's a dolly, it's a following robot. Dolly was born to be cloned.
Stars: ✭ 113 (-39.57%)
Mutual labels:  robotics, robot
Venom
All Terrain Autonomous Quadruped
Stars: ✭ 145 (-22.46%)
Mutual labels:  robot, kinematics
Articulations Robot Demo
Stars: ✭ 145 (-22.46%)
Mutual labels:  robotics, robot
Rosnodejs
Client library for writing ROS nodes in JavaScript with nodejs
Stars: ✭ 145 (-22.46%)
Mutual labels:  robotics, robot

kinematics.js

GitHub license Travis npm Codecov

6DOF robot kinematics in JavaScript.

Install

npm install kinematics --save

Use

const Kinematics = require('kinematics').default

const geometry = [
      [1,  1,  0], // V0: 1x 1y
      [0, 10,  0], // V1: 10y
      [5,  0,  0], // V2: 5x
      [3,  0,  0], // V3: 3x
      [0, -3,  0], // V4: -3y
    ]

const RobotKin = new Kinematics(geometry)

let angles = [1.57, 1.2, 0, 0.3, 2.2, 1.1]

const pose = RobotKin.forward(...angles)[5]

angles = RobotKin.inverse(...pose)

Geometry

The geometry array consists of 5 entries describing the links V0-V5. Each Vn is a tuple of 3 coordinates from Jn to Jn+1. One constraint: The y,z of V3 and x,z of V4 must be 0 for the kinematics to work.

API

forward

RobotKin.forward(R0, R1, R2, R3, R4, R5)

returns

[ 
  [  0,      0,     0 ], //J0
  [  0.5,    1,  -0.8 ], //J1
  [ -0.2, -8.8,   0.3 ], //J2
  [  1.8, -5.6,  -2.8 ], //J3
  [  3.0, -3.6,  -4.7 ], //J4
  [  4.7, -1.3,  -5.5,  1,  6,  -2.8 ] //J5 + TCP Euler angles
]

inverse

X,Y,Z coordinates, A,B,C Euler angles in order 'abc'.

RobotKin.inverse(X, Y, Z, A, B, C)

returns

[  2, 1.6,  2.1, -3.5,  1, -1.5 ] //array of angles
[  1, 2.3,  3.1,  NaN, NaN, NaN ] //NaN for out of reach angles

kinematic coupling

kinematics.js assumes a robot with a series of joints. Some robots may have different kinematics. The depicted robot has a hinge at J1 and R1/R2 are at the same kinematic position. Therefore moving R1 also changes the angle at J2. To account for that, R2 has to move the same amount.

sr_geometry_kinematic_coupling

Using that information, you can use kinematics.js to calculate the initial angles and correct them according to your kinematics.

let angles = RobotKin.inverse(...pose)
angles[2] += angles[1]
//set angles, do stuff 🤖

TODO

  • robot configuration
  • comply with DH for TCP orientation?
  • more kinematic chains

Demo

See the kinematics in action: http://robot.glumb.de (Use Chrome or FF due to ES6 features) robot-gui The gui is available in this repo:https://github.com/glumb/robot-gui

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].