Shows how to quickly register a scene and execute a task and get the results. Because the scene is directly used instead of imported.
#include <boost/thread/thread.hpp>
#include <iostream>
using namespace mujinclient;
int main(
int argc,
char ** argv)
{
if( argc < 2 ) {
std::cout << "need username:password. Example: mujinclienttest myuser:mypass [url]\n\nurl - [optional] For example https://controller.mujin.co.jp/" << std::endl;
return 1;
}
try {
if( argc >= 5 ) {
}
if( argc == 4 ) {
}
else if( argc == 3 ) {
}
else {
}
std::cout << "connected to controller v" << controller->GetVersion() << std::endl;
std::string sceneuri = "mujin:/densowave_wincaps_data/vs060a3_test0/test0.WPJ";
std::string scenepk = controller->GetScenePrimaryKeyFromURI_UTF8(sceneuri);
controller->SyncUpload_UTF8("../share/mujincontrollerclient/densowave_wincaps_data/vs060a3_test0/test0.WPJ", "mujin:/densowave_wincaps_data/vs060a3_test0/", "wincaps");
TaskResourcePtr task = scene->GetOrCreateTaskFromName_UTF8(
"task0",
"itlplanning");
set(clearance,40)\n\
move(translation(0,0,20)*p[Work0/2])\n\
movel(p[Work0/2])\n\
movel(translation(0,0,20)*p[Work0/2])\n\
move(translation(0,0,20)*p[Work0/3])\n\
movel(p[Work0/3])\n\
movel(translation(0,0,20)*p[Work0/3])\n\
";
task->SetTaskParameters(info);
controller->CancelAllJobs();
task->Execute();
std::cout << "waiting for task result" << std::endl;
int iterations = 0, maxiterations = 4000;
while (1) {
result = task->GetResult();
if( !!result ) {
break;
}
task->GetRunTimeStatus(status);
std::cout <<
"current job status=" << status.
code <<
": " << status.
message << std::endl;
break;
}
if( iterations > 3 ) {
std::cout << "task won't start for some reason" << std::endl;
return 1;
}
}
std::cout << "task failed execution " << std::endl;
return 1;
}
std::cout << "unexpected job status so quitting " << std::endl;
return 1;
}
boost::this_thread::sleep(boost::posix_time::milliseconds(5000));
++iterations;
if( iterations > maxiterations ) {
controller->CancelAllJobs();
}
}
result->GetPrograms(programs);
std::cout <<
"found " << programs.
programs.size() <<
" programs" << std::endl;
for(std::map<std::string, RobotProgramData>::iterator it = programs.
programs.begin(); it != programs.
programs.end(); ++it ) {
std::cout << "[" << it->first << "]" << std::endl << it->second.programdata << std::endl << std::endl;
}
std::cout << "final task_time is " << result->Get("task_time") << std::endl;
}
std::cout <<
"exception thrown: " << ex.
message() << std::endl;
}
}