sjchoi86 / yart

Yet Another Robotics Toolbox

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Yet Another Robotics Toolbox (YART)

This yet another robotics toolbox written in MATLAB focuses on basic kinematic simulation of the kinematic structures of a rigid body. It support parsing the kinematic chain from a universal robot description format (URDF) file.

Following is an exampled of a chain structure parsed from Sawyer:

                 name: 'sawyer'
              n_joint: 20
          n_rev_joint: 8
          joint_names: {1×20 cell}
      rev_joint_names: {'right_j0'  'head_pan'  'right_j1'  'right_j2'  'right_j3'  'right_j4'  'right_j5'  'right_j6'}
    parent_link_names: {1×20 cell}
     child_link_names: {1×20 cell}
                joint: [1×20 struct]
               n_link: 21
           link_names: {1×21 cell}
                 link: [1×21 struct]
              xyz_min: [3×1 double]
              xyz_max: [3×1 double]
              xyz_len: [3×1 double]
       rev_joint_idxs: [8×1 double]
                   dt: 0.0500

Two important sub-structures, joint and link, look like

>> chain.joint

ans = 

  1×20 struct array with fields:
  
    name
    parent
    childs
    p
    R
    q
    q_prev
    q_diff
    type
    a
    limit
    p_offset
    R_offset
    parent_link
    child_link
    v
    w

and

>> chain.link

ans = 

  1×21 struct array with fields:

    name
    joint_idx
    p_offset
    R_offset
    scale
    mesh_path
    fv
    bcube
    box
    box_scale

It also suppeorts an augmentaed Jacobian methodfor handling multiple IK targets with a straightforward syntax:

% Initial IK
ik = init_ik(chain);
% Add IK Targets 
ik = add_ik(ik,'joint_name','RWrj2',...
    'p',p_trgt1,'R',R_trgt1,'IK_P',1,'IK_R',1);
ik = add_ik(ik,'joint_name','LWrj2',...
    'p',p_trgt2,'R',R_trgt2,'IK_P',1,'IK_R',1);
while true
  ...
  % Run IK in Loop 
  [ik,chain,q] = onestep_ik(ik,chain,q);
  ...
end

It supports joint position limit handling by excluding the next possible violating joints. We tried soft-barrier-based methods but this simple heuristics work bettern in practice, at least in our cases. Handling self-collision will soon be implemented.

To use CMU-mocap

git clone https://github.com/una-dinosauria/cmu-mocap.git the CMU mocap DB in a bvh format outside the yart folder.

├── ...
├── project                 # Project folder 
│   ├── yart                # folder containing the current YART project 
│   ├── cmu-mocap           # folder containing CMU mocaps
│   └── ...                 # etc.
└── ...

Interactive inverse kinematics

Cmputing linear and angular velocities of links

TODO List:

  • Mobile robotics and path planning methods such as rapidly exploring random trees (RRT) and vector field histogram (VFH).
  • Model predictive control (MPC)
  • Trajectory optimization

Contact: Sungjoon Choi (sungjoon-choi@korea.ac.kr)

About

Yet Another Robotics Toolbox

License:MIT License


Languages

Language:MATLAB 100.0%Language:M 0.0%