Problem with RobotBase Exceptions

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Problem with RobotBase Exceptions

Okal Billy
Dear Openrave users,

So I just defined a problem instance for my prm planners so that I can easily use python for scripting.
I have defined a bunch of commands for the interface like BuildRoadMap, RunQuery... I keep getting the following error when I send this commands;

makokal@nyumbani-labs:~/host/Projects/prob-planning/trunk/examples$ python 
OpenGL Warning: Failed to connect to host. Make sure 3D acceleration is enabled for this VM.
[openravepy_int.cpp:2799] viewer qtcoin successfully attached
[bprmproblem.h:63] PRM Manipulation Planning: using visibilityprm planner
[environment.h:184] Environment destructor
[environment.h:192] resetting raveviewer
[environment.h:219] destroy problems
Traceback (most recent call last):
 File "", line 80, in <module>
 File "", line 68, in run
 File "", line 34, in plan_and_move
   success = self.prob.SendCommand('RunQuery '+self.Serialize(T))
RuntimeError: OpenRAVE: [/usr/include/boost/smart_ptr/shared_ptr.hpp:418] -> T* boost::shared_ptr< <template-parameter-1-1> >::operator->() const [with T = OpenRAVE::RobotBase], expr: px != 0
terminate called after throwing an instance of 'OpenRAVE::openrave_exception'
 what():  OpenRAVE: [/usr/include/boost/thread/pthread/recursive_mutex.hpp:67] -> void boost::recursive_mutex::lock(), expr: !pthread_mutex_lock(&m)

I have defined the buildRoadMap command as follows, it seems to me that the RobotBasePtr robot is what is causing this, but I can't figure out why;

bool buildRoadMap(ostream& sout, istream& sinput) {
   bExecute = true;
   PlannerBase::PlannerParametersPtr pparams(new PlannerBase::PlannerParameters());
   params = pparams;
   params->_nMaxIterations = 4000; // max iterations before failure

   string cmd;
   while(!sinput.eof()) {
     sinput >> cmd;
     if( !sinput )
     std::transform(cmd.begin(), cmd.end(), cmd.begin(), ::tolower);

     if( cmd == "goal" ) {
FOREACH(it, params->vgoalconfig)
  sinput >> *it;
     else if( cmd == "outputtraj" )
pOutputTrajStream = boost::shared_ptr<ostream>(&sout,null_deleter());
     else if( cmd == "maxiter" )
sinput >> params->_nMaxIterations;
     else if( cmd == "execute" )
sinput >> bExecute;
     else if( cmd == "writetraj" )
sinput >> strtrajfilename;
     else {
RAVELOG_WARNA(str(boost::format("unrecognized command: %s\n")%cmd));

     if( !sinput ) {
RAVELOG_ERRORA(str(boost::format("failed processing command %s\n")%cmd));
return false;

   RAVELOG_DEBUGA("Checked commands, validating goal config\n");

   if( (int)params->vgoalconfig.size() != robot->GetActiveDOF() )
     return false;

   RobotBase::RobotStateSaver saver(robot);

   // restore

   //set to initial config again before initializing the constraint fn

   // now initialize and build the roadmap
   planner = GetEnv()->CreatePlanner(_plannerName);

   if( !planner ) {
     RAVELOG_ERRORA("failed to create VisibilityPRM Planner\n");
     return false;

   RAVELOG_DEBUGA("starting planning\n");

   if( !planner->InitPlan(robot, params) ) {
     RAVELOG_INFOA("InitPlan failed\n");
     return false;

   return true;



Best Regards,
Billy Okal.
"sure vi is user friendly, its just particular about who to be friends with"

This email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit --
Openrave-users mailing list
[hidden email]