Exemplo n.º 1
0
InterfaceBasePtr CreateInterfaceValidated(InterfaceType type, const std::string& interfacename, std::istream& sinput, EnvironmentBasePtr penv)
{
    switch(type) {
    case PT_IkSolver: {
        if( interfacename == "ikfast" ) {
            string ikfastname;
            sinput >> ikfastname;
            if( !!sinput ) {
                // check if ikthreshold parameter exists
                dReal ikthreshold=1e-4;
                vector<dReal> vfreeinc;
                std::string paramname;
                sinput >> paramname;
                if( !!sinput ) {
                    if( paramname == "ikthreshold" ) {
                        sinput >> ikthreshold;
                    }
                    else {
                        // most likely a free inc parameter
                        vfreeinc.push_back(boost::lexical_cast<dReal>(paramname));
                    }
                }
                // have to append any left over numbers
                vector<dReal> vfreeinctemp((istream_iterator<dReal>(sinput)), istream_iterator<dReal>());
                vfreeinc.insert(vfreeinc.end(), vfreeinctemp.begin(), vfreeinctemp.end());
                
                // look at all the ikfast problem solvers
                IkSolverBasePtr psolver = CreateIkSolverFromName(ikfastname, vfreeinc, ikthreshold, penv);
                if( !!psolver ) {
                    return psolver;
                }
            }
Exemplo n.º 2
0
InterfaceBasePtr CreateInterfaceValidated(InterfaceType type, const std::string& interfacename, std::istream& sinput, EnvironmentBasePtr penv)
{
    switch(type) {
    case PT_IkSolver: {
        if( interfacename == "ikfast" ) {
            string ikfastname;
            sinput >> ikfastname;
            if( !!sinput ) {
                vector<dReal> vfreeinc((istream_iterator<dReal>(sinput)), istream_iterator<dReal>());
                // look at all the ikfast problem solvers
                IkSolverBasePtr psolver = CreateIkSolverFromName(ikfastname, vfreeinc, penv);
                if( !!psolver ) {
                    return psolver;
                }
            }
        }
        else {
            vector<dReal> vfreeinc((istream_iterator<dReal>(sinput)), istream_iterator<dReal>());
            if( interfacename == "wam7ikfast" ) {
                return ik_barrettwam::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "pa10ikfast" ) {
                return ik_pa10::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "pumaikfast" ) {
                return ik_puma::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "ikfast_pr2_head" ) {
                return ik_pr2_head::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "ikfast_pr2_head_torso" ) {
                return ik_pr2_head_torso::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "ikfast_pr2_rightarm" ) {
                return ik_pr2_rightarm::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "ikfast_pr2_rightarm_torso" ) {
                return ik_pr2_rightarm_torso::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "ikfast_pr2_leftarm" ) {
                return ik_pr2_leftarm::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "ikfast_pr2_leftarm_torso" ) {
                return ik_pr2_leftarm_torso::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "ikfast_schunk_lwa3" ) {
                return ik_schunk_lwa3::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "ikfast_katana5d" ) {
                return ik_katana5d::CreateIkSolver(penv, sinput, vfreeinc);
            }
            else if( interfacename == "ikfast_katana5d_trans" ) {
                return ik_katana5d_trans::CreateIkSolver(penv, sinput, vfreeinc);
            }
        }
        break;
    }