/yart

Yet Another Robotics Toolbox

Primary LanguageMATLABMIT LicenseMIT

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)