2828#include < memory>
2929#include < stdexcept>
3030#include < boost/lexical_cast.hpp>
31- #include < rl/kin/Kinematics.h>
3231#include < rl/math/Unit.h>
32+ #include < rl/mdl/Kinematic.h>
33+ #include < rl/mdl/UrdfFactory.h>
34+ #include < rl/mdl/XmlFactory.h>
3335#include < rl/plan/KdtreeNearestNeighbors.h>
3436#include < rl/plan/Prm.h>
3537#include < rl/plan/RecursiveVerifier.h>
3638#include < rl/plan/SimpleModel.h>
3739#include < rl/plan/UniformSampler.h>
40+ #include < rl/sg/UrdfFactory.h>
3841#include < rl/sg/XmlFactory.h>
3942
4043#if defined(RL_SG_SOLID)
@@ -59,20 +62,42 @@ main(int argc, char** argv)
5962
6063 try
6164 {
62- rl::sg::XmlFactory factory ;
65+ std::string scenefile (argv[ 1 ]) ;
6366#if defined(RL_SG_SOLID)
6467 rl::sg::solid::Scene scene;
6568#elif defined(RL_SG_BULLET)
6669 rl::sg::bullet::Scene scene;
6770#elif defined(RL_SG_ODE)
6871 rl::sg::ode::Scene scene;
6972#endif
70- factory.load (argv[1 ], &scene);
7173
72- std::shared_ptr<rl::kin::Kinematics> kinematics (rl::kin::Kinematics::create (argv[2 ]));
74+ if (" urdf" == scenefile.substr (scenefile.length () - 4 , 4 ))
75+ {
76+ rl::sg::UrdfFactory factory;
77+ factory.load (scenefile, &scene);
78+ }
79+ else
80+ {
81+ rl::sg::XmlFactory factory;
82+ factory.load (scenefile, &scene);
83+ }
84+
85+ std::string kinematicsfile (argv[2 ]);
86+ std::shared_ptr<rl::mdl::Kinematic> kinematic;
87+
88+ if (" urdf" == kinematicsfile.substr (kinematicsfile.length () - 4 , 4 ))
89+ {
90+ rl::mdl::UrdfFactory factory;
91+ kinematic = std::dynamic_pointer_cast<rl::mdl::Kinematic>(factory.create (kinematicsfile));
92+ }
93+ else
94+ {
95+ rl::mdl::XmlFactory factory;
96+ kinematic = std::dynamic_pointer_cast<rl::mdl::Kinematic>(factory.create (kinematicsfile));
97+ }
7398
7499 rl::plan::SimpleModel model;
75- model.kin = kinematics .get ();
100+ model.mdl = kinematic .get ();
76101 model.model = scene.getModel (0 );
77102 model.scene = &scene;
78103
@@ -91,20 +116,20 @@ main(int argc, char** argv)
91116 verifier.delta = 1 * rl::math::DEG2RAD ;
92117 verifier.model = &model;
93118
94- rl::math::Vector start (kinematics-> getDof ());
119+ rl::math::Vector start (kinematic-> getDofPosition ());
95120
96- for (std::size_t i = 0 ; i < kinematics-> getDof (); ++i)
121+ for (std::ptrdiff_t i = 0 ; i < start. size (); ++i)
97122 {
98123 start (i) = boost::lexical_cast<rl::math::Real>(argv[i + 3 ]) * rl::math::DEG2RAD ;
99124 }
100125
101126 planner.start = &start;
102127
103- rl::math::Vector goal (kinematics-> getDof ());
128+ rl::math::Vector goal (kinematic-> getDofPosition ());
104129
105- for (std::size_t i = 0 ; i < kinematics-> getDof (); ++i)
130+ for (std::ptrdiff_t i = 0 ; i < goal. size (); ++i)
106131 {
107- goal (i) = boost::lexical_cast<rl::math::Real>(argv[kinematics-> getDof () + i + 3 ]) * rl::math::DEG2RAD ;
132+ goal (i) = boost::lexical_cast<rl::math::Real>(argv[start. size () + i + 3 ]) * rl::math::DEG2RAD ;
108133 }
109134
110135 planner.goal = &goal;
0 commit comments