Example #1
0
    KUKADU_SHARED_PTR<Dmp> GeneralDmpLearner::fitTrajectories() {

        int dataPointsNum = joints.n_rows;

        vec g(degFreedom);
        vec y0(degFreedom);
        vec dy0(degFreedom);
        vec ddy0(degFreedom);

        vector<vec> dmpCoeffs;
        vector<vec> sampleYs;
        vector<vec> fitYs;

        vector<mat> designMatrices;
        vec timeVec = joints.col(0);

        mat all_y;
        mat all_dy;
        mat all_ddy;

        // retrieve all columns for different degrees of freedom
        vector<vec> trajectories;
        for(int i = 1; i <= degFreedom; ++i) {

            vec trajectory = joints.col(i);
            trajectories.push_back(trajectory);

            vec vec_dy = computeDiscreteDerivatives(timeVec, trajectory);
            vec vec_ddy = computeDiscreteDerivatives(timeVec, vec_dy);

            all_y = join_rows(all_y, trajectory);
            all_dy = join_rows(all_dy, vec_dy);
            all_ddy = join_rows(all_ddy, vec_ddy);

        }

        vector<trajectory_learner_internal> dmpResAll = fitTrajectory(timeVec, all_y, all_dy, all_ddy);

        for(int i = 0; i < dmpResAll.size(); ++i) {

            trajectory_learner_internal dmpRes = dmpResAll.at(i);
            vec dmpCoeff = dmpRes.coeff;
            vec fity = dmpRes.fity;

            g(i) = (all_y.col(i))(dataPointsNum - 1);
            y0(i) = all_y.col(i)(0);
            dy0(i) = all_dy.col(i)(0);
            ddy0(i) = all_ddy.col(i)(0);
            dmpCoeffs.push_back(dmpCoeff);

            fitYs.push_back(fity);
            designMatrices.push_back(dmpRes.desMat);

        }

        for (int i = 0; i < all_y.n_cols; ++i) sampleYs.push_back(all_y.col(i));
        return createDmpInstance(timeVec, sampleYs, fitYs, dmpCoeffs, dmpBase, designMatrices, tau, az, bz, ax);

    }
Example #2
0
void Skel_OPB_Comp::calc_buf(INT ** output,U_INT1 *** input)
{
     if (first_line_in_pack())
     {
         for (INT d =0; d < dim_in() ; d++)
         {
            U_INT1  **  l = input[d];

            for (int y = y0Buf() ; y < y1Buf() ; y++)
                 convert
                 (
                      _im_init[y-y0Buf()],
                      l[y]+x0Buf(),
                      x1Buf()-x0Buf()
                 );

            Skeleton
            (
                  _skel[d],
                  _im_init,
                  _sz.x,
                  _sz.y,
                  _larg
            );
         }
     }

     for (INT d =0; d < dim_in() ; d++)
         convert
         (
              output[d]+x0(),
              _skel[d][y_in_pack()-dy0()]-dx0(),
              tx()
         );

     if (_AvecDist)
         convert
         (
              output[1]+x0(),
              _im_init[y_in_pack()-dy0()]-dx0(),
              tx()
         );

}
Example #3
0
scalar liform_surf(int n, double *wt, Func<scalar> *u_ext[], Func<double> *v, Geom<double> *e, ExtData<scalar> *ext)
{
  cplx ii = cplx(0.0, 1.0);
  scalar result = 0;
  for (int i = 0; i < n; i++) {
    scalar3 dx0(0, 0, 0), dy0(0, 0, 0), dz0(0, 0, 0);
    scalar3 ev0(0.0, 0.0, 0.0);
    ev0 = exact(e->x[i], e->y[i], e->z[i], dx0, dy0, dz0);

    scalar curl_e[3];
    scalar dx[3], dy[3], dz[3];
    dx[0] = dx0[0]; dx[1] = dx0[1]; dx[2] = dx0[2]; 
    dy[0] = dy0[0]; dy[1] = dy0[1]; dy[2] = dy0[2]; 
    dz[0] = dz0[0]; dz[1] = dz0[1]; dz[2] = dz0[2]; 
    calc_curl(dx, dy, dz, curl_e);
    scalar tpe[3];
    scalar ev[3];
    ev[0] = ev0[0]; ev[1] = ev0[1]; ev[2] = ev0[2];
    calc_tan_proj(e->nx[i], e->ny[i], e->nz[i], ev, tpe);

    scalar g[3] = {
      (e->nz[i] * curl_e[1] - e->ny[i] * curl_e[2]) - ii * kappa * tpe[0],
      (e->nx[i] * curl_e[2] - e->nz[i] * curl_e[0]) - ii * kappa * tpe[1],
      (e->ny[i] * curl_e[0] - e->nx[i] * curl_e[1]) - ii * kappa * tpe[2],
    };

    // tpv is tangencial projection of v (test function)
    scalar vv[3] = { v->val0[i], v->val1[i], v->val2[i] };
    scalar tpv[3];
    calc_tan_proj(e->nx[i], e->ny[i], e->nz[i], vv, tpv);

    result += wt[i] * (g[0] * tpv[0] + g[1] * tpv[1] + g[2] * tpv[2]);
  }

  return result;
}