From 0cefd1852bb2f6a59506cd501a2d47fed4e17008 Mon Sep 17 00:00:00 2001 From: Mamoun Gharbi <magharbi@laas.fr> Date: Mon, 12 Oct 2015 17:58:58 +0200 Subject: [PATCH] [wip/move3d-studio] Update to version 1.3 - GTP interface (including socket via msgConnector) - MHO interface - Making real time video with theV key(time paramtrized trajectories) - Function to save a FlyCrane traj - Button for determinietic shortcut (remove useless) - New Test buttons in mainWindow.cpp - Directed PRM checbox - Checkboxes for metric and sampling (kinodynamic) --- move3d-studio/Makefile | 2 +- move3d-studio/depend.mk | 2 +- move3d-studio/distinfo | 6 +- move3d-studio/patches/patch-aa | 2647 -------------------------------- 4 files changed, 5 insertions(+), 2652 deletions(-) delete mode 100644 move3d-studio/patches/patch-aa diff --git a/move3d-studio/Makefile b/move3d-studio/Makefile index 5e4e205b..6cdbafc4 100644 --- a/move3d-studio/Makefile +++ b/move3d-studio/Makefile @@ -4,7 +4,7 @@ PKGNAME= move3d-studio-${VERSION} DISTNAME= move3d-studio-${VERSION} -VERSION= 1.2.1 +VERSION= 1.3 PKGREVISION= 3 CATEGORIES= path diff --git a/move3d-studio/depend.mk b/move3d-studio/depend.mk index 207bd40f..1affe28b 100644 --- a/move3d-studio/depend.mk +++ b/move3d-studio/depend.mk @@ -17,7 +17,7 @@ SYSTEM_SEARCH.move3d-studio=\ bin/move3d-qt-studio DEPEND_USE+= move3d-studio -DEPEND_ABI.move3d-studio?=move3d-studio>=1.2.1 +DEPEND_ABI.move3d-studio?=move3d-studio>=1.3 DEPEND_DIR.move3d-studio?=../../wip/move3d-studio endif # MOVE3DSTUDIO_DEPEND_MK ---------------------------------------- diff --git a/move3d-studio/distinfo b/move3d-studio/distinfo index fcb048df..9c5068a5 100644 --- a/move3d-studio/distinfo +++ b/move3d-studio/distinfo @@ -1,4 +1,4 @@ -SHA1 (move3d-studio-1.2.1.tar.gz) = 634504cf962a6cffa4136e91de22395a4667b64d -RMD160 (move3d-studio-1.2.1.tar.gz) = 1968343ae3ed724ca0b9cc31946efd150cdc9638 -Size (move3d-studio-1.2.1.tar.gz) = 1312291 bytes +SHA1 (move3d-studio-1.3.tar.gz) = 2e2e4ae16b0c4bb7a6757e9ec757c0fea4fdabcb +RMD160 (move3d-studio-1.3.tar.gz) = 8f197229cf6c16e9c5da11ccdeb7570742293cf8 +Size (move3d-studio-1.3.tar.gz) = 1381636 bytes SHA1 (patch-aa) = 061bebfc7a04ce479ca8a78b8f82a35f7159d6fe diff --git a/move3d-studio/patches/patch-aa b/move3d-studio/patches/patch-aa deleted file mode 100644 index bfddb880..00000000 --- a/move3d-studio/patches/patch-aa +++ /dev/null @@ -1,2647 +0,0 @@ ---- src/move3d-qt-gui-libs/CMakeLists.txt -+++ src/move3d-qt-gui-libs/CMakeLists.txt -@@ -324,9 +324,6 @@ ENDMACRO(GENERATE_DOCUMENTATION) - # ------------------------------------------------------------------------------- - # Compiler and Compilation flags - # ------------------------------------------------------------------------------- --SET(CMAKE_CXX_COMPILER g++) --SET(CMAKE_C_COMPILER g++) -- - IF(UNIX) - ADD_DEFINITIONS(-DUNIX) - IF(APPLE) ---- src/move3d-qt-gui-libs/src/qtMainInterface/mainwindow.cpp -+++ src/move3d-qt-gui-libs/src/qtMainInterface/mainwindow.cpp -@@ -32,7 +32,7 @@ - // Warning contains boost function that conlicts with Qt - //#include "planner_cxx/API/Trajectory/RoboptimTrajectory.h" - #include "planner/TrajectoryOptim/Classic/costOptimization.hpp" --#include "API/Grids/GridToGraph/gridtograph.hpp" -+//#include "API/Grids/GridToGraph/gridtograph.hpp" - #include "API/Search/GraphState.hpp" - #include "API/Grids/PointCloud.hpp" - #include "API/Grids/BaseGrid.hpp" ---- src/move3d-qt/CMakeLists.txt -+++ src/move3d-qt/CMakeLists.txt -@@ -166,8 +166,6 @@ SET(INCLUDE_DIRS ${INCLUDE_DIRS} ${MOVE3D-QTGUI_INCLUDE_DIR}) - #message(${INCLUDE_DIRS}) - #---------------------------------------------------------------------- - --SET(CMAKE_CXX_COMPILER g++) --SET(CMAKE_C_COMPILER g++) - - IF(UNIX) - ADD_DEFINITIONS(-DUNIX) -@@ -286,9 +284,9 @@ ENDIF(USE_GBM) - - IF(QT_LIBRARY) - QT4_WRAP_CPP(MOC_OUTFILES main.hpp) --ADD_EXECUTABLE(move3d-qt-studio main.cpp move3d.c ${MOC_OUTFILES}) -+ADD_EXECUTABLE(move3d-qt-studio main.cpp move3d.cpp ${MOC_OUTFILES}) - ELSE() --ADD_EXECUTABLE(move3d-qt-studio main.cpp move3d.c) -+ADD_EXECUTABLE(move3d-qt-studio main.cpp move3d.cpp) - ENDIF() - - SET_TARGET_PROPERTIES(move3d-qt-studio PROPERTIES LINKER_LANGUAGE CXX) ---- src/move3d-qt/move3d.c -+++ /dev/null -@@ -1,640 +0,0 @@ --#include <Util-pkg.h> --#include <P3d-pkg.h> -- --#include <move3d-headless.h> -- --#ifdef P3D_PLANNER --#include <Planner-pkg.h> --#endif --#ifdef P3D_COLLISION_CHECKING --#include <Collision-pkg.h> --#endif -- --#include <Bio-pkg.h> --#include <UdpClient.h> -- --#include <locale.h> -- --// TODO --#undef USE_GLUT --#if defined(USE_GLUT) --#if defined(MACOSX) --#include <glut.h> --#else --#include <GL/freeglut.h> --#endif --#endif -- --#if defined( QT_GL ) && defined( CXX_PLANNER ) --#include <project.hpp> --#include <cppToQt.hpp> --#endif -- --#include "planner_handler.hpp" -- --#ifdef LIGHT_PLANNER --#include "../lightPlanner/proto/DlrPlanner.h" --#include "../lightPlanner/proto/DlrParser.h" --#include "../lightPlanner/proto/lightPlannerApi.h" -- --#if defined( MULTILOCALPATH ) && defined( GRASP_PLANNING ) --#include "../lightPlanner/proto/ManipulationTestFunctions.hpp" --#endif --#endif -- --#include "../graphic/proto/g3d_glut.hpp" -- --#if defined( CXX_PLANNER ) || defined( MOVE3D_CORE ) --#include "API/planningAPI.hpp" --#include "planner/cost_space.hpp" --#include <boost/bind.hpp> --#endif --#ifdef BIO_BALL --#include "ball_energy.hpp" --#endif -- --#include <iostream> --using namespace std; -- --// External varialbe handled when compiled with move3d studio --bool move3d_studio_load_settings = false; -- --static int FILTER_TO_BE_SET_ACTIVE = FALSE; --//extern void g3d_create_main_form(void); --//extern void g3d_loop(void); --//extern void p3d_col_set_mode(int); --//extern void kcd_set_user_defined_small_volume(double); --//extern double p3d_get_env_dmax(void); --static void use(void); -- -- -- --int mainMhp(int argc, char ** argv) --{ -- cout << "Main Mhp" << endl; -- -- //int main(int argc, char ** argv) { -- -- -- // modif Pepijn apropos dmax and tol -- int user_dmax_to_be_set = FALSE; /* Modif. Pepijn on dmax */ -- double user_dmax = 0.0; /* Modif. Pepijn on dmax */ -- int user_obj_tol_to_be_set = FALSE; /* Modif. Carl on tolerance */ -- double user_obj_tol = 0.0; -- // end modif Pepijn -- -- double user_volume, user_size; /* Modif. Carl on volume */ --#ifndef BIO -- const char *file; --#endif -- char file_directory[200]; -- char filename[200]; -- char scenario[200]; -- char dlrReadFile[200]; -- char dlrSaveFile[200]; -- int i = 0; -- /* carl: */ -- int seed_set = FALSE; -- int dir_set = FALSE; -- int file_set = FALSE; -- int scenario_set = FALSE; -- int col_det_set = FALSE; -- int col_mode_to_be_set = p3d_col_mode_pqp; /* Nic p3d_col_mode_v_collide;*/ -- int ccntrt_active = TRUE; -- -- // Tests -- int manip_test_run = FALSE; -- int manip_test_id = 0; -- -- // init English C -- if (! setlocale(LC_ALL, "C")) -- fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -- -- int grid_set = FALSE; -- std::string grid_path; -- // modif Brice SALVA -- --#ifdef BIO -- int usrAnswer = FALSE; -- file_name_list* file_list = NULL; -- char name[PSF_MAX_NAME_LENGTH]; -- int is_p3d = FALSE; --#endif -- if (! setlocale(LC_ALL, "C")) fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -- -- // End modif Brice SALVA -- -- /* lecture des arguments */ -- /* carl: */ -- i = 1; -- while (i < argc) { -- if (strcmp(argv[i], "-debug") == 0) { -- basic_alloc_debugon(); -- i++; -- } else if (strcmp(argv[i], "-d") == 0) { -- ++i; -- if ((i < argc)) { -- strcpy(file_directory, argv[i]); -- dir_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-f") == 0) { -- ++i; -- if ((i < argc)) { -- strcpy(filename, argv[i]); -- file_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-sc") == 0) { -- ++i; -- if ((i < argc)) { -- strcpy(scenario, argv[i]); -- scenario_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } -- else if (strcmp(argv[i], "-setgui") == 0) { -- ++i; -- move3d_studio_load_settings = true; -- } -- else if (strcmp(argv[i], "-nogui") == 0) { -- ++i; -- // Nothing to do, fix this in main -- } --#ifdef P3D_COLLISION_CHECKING -- else if (strcmp(argv[i], "-o") == 0) { -- set_collision_by_object(FALSE); -- ++i; -- } else if (strcmp(argv[i], "-x") == 0) { -- FILTER_TO_BE_SET_ACTIVE = TRUE; -- ++i; -- } else if (strcmp(argv[i], "-nkcdd") == 0) { -- set_return_kcd_distance_estimate(FALSE); -- ++i; -- } --#endif -- else if (strcmp(argv[i], "-s") == 0) { -- ++i; -- if ((i < argc)) { -- p3d_init_random_seed(atoi(argv[i])); -- seed_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-v") == 0) { -- ++i; -- if (i < argc) { -- -- user_size = atof(argv[i]); -- user_volume = user_size * user_size * user_size; --#ifdef P3D_COLLISION_CHECKING -- kcd_set_user_defined_small_volume(user_volume); --#endif -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-vol") == 0) { -- ++i; -- if (i < argc) { --#ifdef P3D_COLLISION_CHECKING -- kcd_set_user_defined_small_volume(atof(argv[i])); --#endif -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-tol") == 0) { -- ++i; -- if (i < argc) { -- user_obj_tol = atof(argv[i]) ; -- user_obj_tol_to_be_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-dmax") == 0) { -- ++i; -- if (i < argc) { -- user_dmax = atof(argv[i]) ; -- user_dmax_to_be_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-stat") == 0) { -- ++i; --#ifdef P3D_PLANNER -- enableStats(); --#endif -- } --#if defined(HRI_COSTSPACE) && defined(QT_GL) -- else if (strcmp(argv[i], "-grid") == 0) { -- ++i; -- if ((i < argc)) { -- grid_path = argv[i]; -- //printf("Grid is at : %s\n",gridPath.c_str()); -- grid_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } --#endif -- else if (strcmp(argv[i], "-udp") == 0) { -- } -- --#ifdef LIGHT_PLANNER -- else if (strcmp(argv[i], "-no-ccntrt") == 0) { -- printf("Deactivate ccntrt at startup\n"); -- ccntrt_active = FALSE; -- ++i; -- } -- else if (strcmp(argv[i], "-test") == 0) { -- ++i; -- manip_test_run = TRUE; -- if (i < argc) { -- manip_test_id = atoi(argv[i]) ; -- ++i; -- } else { -- manip_test_run = FALSE; -- use(); -- return 0; -- } -- } --#endif -- -- else if (strcmp(argv[i], "-udp") == 0) { -- std::string serverIp(argv[i+1]); -- int port = 0; -- sscanf(argv[i+2], "%d", &port); -- globalUdpClient = new UdpClient(serverIp, port); -- i += 3; -- } -- else if (strcmp(argv[i], "-dlr") == 0) { -- strcpy(dlrReadFile, argv[i + 1]); -- strcpy(dlrSaveFile, argv[i + 2]); -- i += 3; -- } else if (strcmp(argv[i], "-c") == 0) { -- ++i; -- cout << "Coll mod " << argv[i] << endl; -- if (strcmp(argv[i], "vcollide") == 0) { -- col_mode_to_be_set = p3d_col_mode_v_collide; -- col_det_set = TRUE; -- ++i; -- } --#ifdef P3D_COLLISION_CHECKING -- else if (strcmp(argv[i], "kcd") == 0) { -- col_mode_to_be_set = p3d_col_mode_kcd; -- set_DO_KCD_GJK(TRUE); -- col_det_set = TRUE; -- ++i; -- } --#ifdef PQP -- else if (strcmp(argv[i], "pqp") == 0) { -- printf("Colmod pqp"); -- col_mode_to_be_set= p3d_col_mode_pqp; -- col_det_set = TRUE; -- ++i; -- cout << "Coll mod PQP " << endl; -- } --#endif --#endif -- else if (strcmp(argv[i], "bio") == 0) { -- col_mode_to_be_set = p3d_col_mode_bio; -- col_det_set = TRUE; -- ++i; -- } else if (strcmp(argv[i], "kng") == 0) { -- col_mode_to_be_set = p3d_col_mode_kcd; --#ifdef P3D_COLLISION_CHECKING -- set_DO_KCD_GJK(FALSE); --#endif -- col_det_set = TRUE; -- ++i; -- } else if (strcmp(argv[i], "gjk") == 0) { -- col_mode_to_be_set = p3d_col_mode_gjk; -- col_det_set = TRUE; -- ++i; -- } else if (strcmp(argv[i], "none") == 0) { -- col_mode_to_be_set = p3d_col_mode_none; -- col_det_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else { -- use(); -- return 0; -- } -- } -- -- if (!dir_set) -- strcpy(file_directory, "../../demo"); -- -- if (!seed_set) -- p3d_init_random(); -- -- if (!col_det_set){ -- // modif Juan -- -- //check that the HOME_MOVE3D environment variable exists: -- if(getenv("HOME_MOVE3D")==NULL) { -- printf("%s: %d: main(): The environment variable \"HOME_MOVE3D\" is not defined. This might cause some problems or crashes (e.g. with video capture).\n", __FILE__,__LINE__); -- } -- -- --#ifdef GRASP_PLANNING -- col_mode_to_be_set= p3d_col_mode_pqp; --#ifndef PQP -- printf("%s: %d: main(): GRASP_PLANNING must be compiled with PQP.\n", __FILE__,__LINE__); -- printf("Program must quit.\n"); -- return 1; --#endif --#else -- col_mode_to_be_set = p3d_col_mode_kcd; --#endif -- } --#ifdef P3D_COLLISION_CHECKING -- if (col_mode_to_be_set != p3d_col_mode_v_collide) -- set_collision_by_object(FALSE); -- /* : carl */ -- if (col_mode_to_be_set == p3d_col_mode_v_collide) { -- p3d_filter_switch_filter_mechanism(FILTER_TO_BE_SET_ACTIVE); -- } -- /* begin added KCD FILTER */ -- else if (col_mode_to_be_set == p3d_col_mode_kcd) { -- p3d_filter_switch_filter_mechanism(FILTER_TO_BE_SET_ACTIVE); -- } --#endif -- /* end added KCD FILTER */ -- -- -- /* lecture du fichier environnement */ -- p3d_set_directory(file_directory); -- -- // init English C -- if (! setlocale(LC_ALL, "C")) -- fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -- -- -- while (!p3d_get_desc_number(P3D_ENV)) { -- --#ifdef BIO -- if (file_set == TRUE) { -- // if (!filename) { -- // exit(0); -- // } -- --#ifndef PQP -- p3d_col_set_mode(p3d_col_mode_none); --#else -- p3d_col_set_mode(col_mode_to_be_set); --#endif -- p3d_BB_set_mode_close(); -- -- if (!p3d_read_desc(filename)) -- { -- file_set = FALSE; -- } -- } -- if (file_set == FALSE) { -- -- printf("Error : give a p3d filename as argument, or use the XFORMS module.\n"); -- exit(0); -- } --#else -- -- if (file_set == TRUE) { -- file = filename; -- } else { -- -- } -- if (!file) { -- exit(0); -- } -- --#ifdef P3D_COLLISION_CHECKING -- p3d_col_set_mode(p3d_col_mode_none); -- p3d_BB_set_mode_close(); --#endif -- -- printf("\n"); -- printf(" ----------------------------\n"); -- printf(" -- p3d file parsing start --\n"); -- printf(" ----------------------------\n"); -- printf("\n"); -- -- p3d_read_desc((char *) file); -- --#endif -- if (!p3d_get_desc_number(P3D_ENV)) { -- printf("loading done...\n"); -- } -- } -- -- printf("\n"); -- printf(" ----------------------------\n"); -- printf(" -- p3d file parsing done --\n"); -- printf(" ----------------------------\n"); -- printf("\n"); -- -- MY_ALLOC_INFO("After p3d_read_desc"); -- -- printf("Nb poly : %d\n", p3d_poly_get_nb()); -- -- /* for start-up with currently chosen collision detector: */ -- /* MY_ALLOC_INFO("Before initialization of a collision detector"); */ --#ifdef P3D_COLLISION_CHECKING -- p3d_col_set_mode(col_mode_to_be_set); -- p3d_col_start(col_mode_to_be_set); --#endif -- -- --#if defined( MOVE3D_CORE ) -- if (ENV.getBool(Env::isCostSpace)) -- { -- GlobalCostSpace::initialize(); -- } --#endif -- -- /* modif Pepijn april 2001 -- * this changes have to be made after the initialistion of the collision checker -- * because in p3d_col_start KCD migth be initialised, and during this initialisation -- * there is automaticly calculated a dmax -- * So if the user wants to set his own dmax this most be done after this initialisation -- * INTERNAL NOTE: in this case the users are the developpers of MOVE3D, normally the clients -- * who purchase Move3d don't know that this option exists -- */ -- if (user_dmax_to_be_set) { -- if (user_dmax < EPS4) { -- printf("WARNING: User chose dmax too small --> new value set to 0.0001 (EPS4)\n"); -- user_dmax = EPS4; -- } -- p3d_set_env_dmax(user_dmax); -- } -- if (user_obj_tol_to_be_set) { -- if (user_obj_tol < 0.0) { -- printf("WARNING: Negative tolerance, tolerance is set to 0.0\n"); -- user_obj_tol = 0.0; -- } -- p3d_set_env_object_tolerance(user_obj_tol); -- } -- -- printf("Env dmax = %f\n",p3d_get_env_dmax()); -- printf("Env Object tol = %f\n",p3d_get_env_object_tolerance()); -- /* always set tolerance even if the user didn't specify any options -- * it's possible that Kcd has calculated automaticly a dmax -- */ -- /* Normally p3d_col_set_tolerance(); is called when initialising -- * the sliders, in case the sliders are not used we have to use -- * p3d_col_set_tolerance() -- */ -- -- //printf("MAX_DDLS %d\n", MAX_DDLS); -- -- // modif Juan --#ifdef BIO -- if (col_mode_to_be_set == p3d_col_mode_bio) { -- bio_set_num_subrobot_AA(); -- bio_set_num_subrobot_ligand(); -- bio_set_bio_jnt_types(); -- bio_set_bio_jnt_AAnumbers(); -- bio_set_list_AA_first_jnt(); -- bio_set_AAtotal_number(); -- bio_set_nb_flexible_sc(); -- bio_set_list_firstjnts_flexible_sc(); -- if (XYZ_ROBOT->num_subrobot_ligand != -1) -- bio_set_nb_dof_ligand(); --#ifdef BIO_BALL -- new BallEnergy(XYZ_ENV); -- if(global_costSpace) -- { -- global_costSpace->addCost("BALLmmff94", -- boost::bind(&BallEnergy::computeEnergy, XYZ_ENV->energyComputer, _1)); -- global_costSpace->setCost("BALLmmff94"); -- } --#endif -- } --#endif -- // fmodif Juan -- --#if defined(LIGHT_PLANNER) && defined(FK_CNTRT) -- for(int i=0; i<XYZ_ENV->nr; i++) -- { p3d_create_FK_cntrts(XYZ_ENV->robot[i]); } --#endif -- --#ifdef P3D_CONSTRAINTS -- // Modif Mokhtar Initialisation For Multisolutions constraints -- p3d_init_iksol(XYZ_ROBOT->cntrt_manager); --#endif -- -- /* creation du FORM main */ -- -- /* -- * needs to be run after main form has been created -- */ -- if (scenario_set == TRUE) -- { -- p3d_rw_scenario_init_name(); -- p3d_read_scenario(scenario); -- } -- -- //Set the robots to initial Pos if defined -- for(i = 0; i < XYZ_ENV->nr; i++){ -- if(!p3d_isNullConfig(XYZ_ENV->robot[i], XYZ_ENV->robot[i]->ROBOT_POS)){ -- p3d_set_and_update_this_robot_conf(XYZ_ENV->robot[i], XYZ_ENV->robot[i]->ROBOT_POS); -- } -- } -- //Exection Of Dlr Planner -- // do{ -- // DlrPlanner* planner = new DlrPlanner(dlrSaveFile); -- // DlrParser parser(dlrReadFile, planner); -- // if(parser.parse()){ -- // planner->process(); -- // }else{ -- // sleep(2); -- // } -- // free(planner); -- // }while(1); -- /* go into loop */ -- --#if defined(LIGHT_PLANNER) && defined(PQP) -- if(ENV.getBool(Env::startWithFKCntrt)) -- { -- p3d_rob* MyRobot = p3d_get_robot_by_name_containing ( ( char* ) "ROBOT" ); -- deactivateCcCntrts(MyRobot,-1); -- } --#endif -- --#if defined(HRI_COSTSPACE) && defined(QT_GL) -- if(grid_set) -- { -- std::cout << "Reading HRICS Grid " << grid_path << std::endl; -- qt_load_HRICS_Grid(grid_path); -- } --#endif -- -- // double c, color[4]; -- // srand(time(NULL)); -- // c= rand()/((double)RAND_MAX+1); -- // g3d_rgb_from_hue(c, color); -- // g3d_set_win_floor_color(g3d_get_cur_win(), color[0], color[1], color[2]); -- --#if defined( LIGHT_PLANNER ) && !defined( QT_GL ) -- if (manip_test_run) -- { -- printf("Test functions : ManipulationTestFunctions\n"); -- new qtG3DWindow(); -- --#if defined( MOVE3D_CORE ) -- // Creates the wrapper to the project -- // Be carefull to initialize in the right thread -- global_Project = new Project(new Scene(XYZ_ENV)); --#endif -- -- ManipulationTestFunctions tests; -- -- if(!tests.runTest(manip_test_id)) -- { -- std::cout << "ManipulationTestFunctions::Fail" << std::endl; -- } -- } --#endif -- return 0; --} -- --/* fonction de rappel des formats des arguments */ --static void use(void) { -- -- printf("main : ERROR : wrong arguments !\n move3d -d data_directory -f file -sc scenario -s random_seed -c collision_detector -tol tolerance -dmax dist [-v size | -vol volume] -o -x -nkcdd\n"); -- printf("collision_detector may be: icollide, vcollide, solid, kcd, kng, none\n"); -- printf("(kng == kcd without gjk)\n"); -- printf("-o: consider polyhedrons as objects (only for vcollide)\n"); -- printf("-x: do filtering by robot body (default: don't filter)\n"); -- printf("-v: (only with kcd) minimal relevant size (in 1 dimension) \n"); -- printf("-dmax: for Vcollide & nkcdd => maximum penetration distance \n"); -- printf(" KCD => artificial enlargement of the obstacles \n"); -- printf("-tol: (only with kcd) object tolerance (enlarge objects for the collision checker) \n"); -- printf("-vol: (only with kcd) minimal relevant size (volume) \n"); -- printf("(internal note, kcd: volume of a box around a facet == (surface of box)^(3/2) )\n"); -- printf("-nkcdd: (only with -c kcd) return only boolean reply, don't use distance \n"); -- printf("-no-ccntrt: deactivate closed chain constraint at startup \n"); --} -- ---- /dev/null -+++ src/move3d-qt/move3d.cpp -@@ -0,0 +1,640 @@ -+#include <Util-pkg.h> -+#include <P3d-pkg.h> -+ -+#include <move3d-headless.h> -+ -+#ifdef P3D_PLANNER -+#include <Planner-pkg.h> -+#endif -+#ifdef P3D_COLLISION_CHECKING -+#include <Collision-pkg.h> -+#endif -+ -+#include <Bio-pkg.h> -+#include <UdpClient.h> -+ -+#include <locale.h> -+ -+// TODO -+#undef USE_GLUT -+#if defined(USE_GLUT) -+#if defined(MACOSX) -+#include <glut.h> -+#else -+#include <GL/freeglut.h> -+#endif -+#endif -+ -+#if defined( QT_GL ) && defined( CXX_PLANNER ) -+#include <project.hpp> -+#include <cppToQt.hpp> -+#endif -+ -+#include "planner_handler.hpp" -+ -+#ifdef LIGHT_PLANNER -+#include "../lightPlanner/proto/DlrPlanner.h" -+#include "../lightPlanner/proto/DlrParser.h" -+#include "../lightPlanner/proto/lightPlannerApi.h" -+ -+#if defined( MULTILOCALPATH ) && defined( GRASP_PLANNING ) -+#include "../lightPlanner/proto/ManipulationTestFunctions.hpp" -+#endif -+#endif -+ -+#include "../graphic/proto/g3d_glut.hpp" -+ -+#if defined( CXX_PLANNER ) || defined( MOVE3D_CORE ) -+#include "API/planningAPI.hpp" -+#include "planner/cost_space.hpp" -+#include <boost/bind.hpp> -+#endif -+#ifdef BIO_BALL -+#include "ball_energy.hpp" -+#endif -+ -+#include <iostream> -+using namespace std; -+ -+// External varialbe handled when compiled with move3d studio -+bool move3d_studio_load_settings = false; -+ -+static int FILTER_TO_BE_SET_ACTIVE = FALSE; -+//extern void g3d_create_main_form(void); -+//extern void g3d_loop(void); -+//extern void p3d_col_set_mode(int); -+//extern void kcd_set_user_defined_small_volume(double); -+//extern double p3d_get_env_dmax(void); -+static void use(void); -+ -+ -+ -+int mainMhp(int argc, char ** argv) -+{ -+ cout << "Main Mhp" << endl; -+ -+ //int main(int argc, char ** argv) { -+ -+ -+ // modif Pepijn apropos dmax and tol -+ int user_dmax_to_be_set = FALSE; /* Modif. Pepijn on dmax */ -+ double user_dmax = 0.0; /* Modif. Pepijn on dmax */ -+ int user_obj_tol_to_be_set = FALSE; /* Modif. Carl on tolerance */ -+ double user_obj_tol = 0.0; -+ // end modif Pepijn -+ -+ double user_volume, user_size; /* Modif. Carl on volume */ -+#ifndef BIO -+ const char *file; -+#endif -+ char file_directory[200]; -+ char filename[200]; -+ char scenario[200]; -+ char dlrReadFile[200]; -+ char dlrSaveFile[200]; -+ int i = 0; -+ /* carl: */ -+ int seed_set = FALSE; -+ int dir_set = FALSE; -+ int file_set = FALSE; -+ int scenario_set = FALSE; -+ int col_det_set = FALSE; -+ int col_mode_to_be_set = p3d_col_mode_pqp; /* Nic p3d_col_mode_v_collide;*/ -+ int ccntrt_active = TRUE; -+ -+ // Tests -+ int manip_test_run = FALSE; -+ int manip_test_id = 0; -+ -+ // init English C -+ if (! setlocale(LC_ALL, "C")) -+ fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -+ -+ int grid_set = FALSE; -+ std::string grid_path; -+ // modif Brice SALVA -+ -+#ifdef BIO -+ int usrAnswer = FALSE; -+ file_name_list* file_list = NULL; -+ char name[PSF_MAX_NAME_LENGTH]; -+ int is_p3d = FALSE; -+#endif -+ if (! setlocale(LC_ALL, "C")) fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -+ -+ // End modif Brice SALVA -+ -+ /* lecture des arguments */ -+ /* carl: */ -+ i = 1; -+ while (i < argc) { -+ if (strcmp(argv[i], "-debug") == 0) { -+ basic_alloc_debugon(); -+ i++; -+ } else if (strcmp(argv[i], "-d") == 0) { -+ ++i; -+ if ((i < argc)) { -+ strcpy(file_directory, argv[i]); -+ dir_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-f") == 0) { -+ ++i; -+ if ((i < argc)) { -+ strcpy(filename, argv[i]); -+ file_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-sc") == 0) { -+ ++i; -+ if ((i < argc)) { -+ strcpy(scenario, argv[i]); -+ scenario_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } -+ else if (strcmp(argv[i], "-setgui") == 0) { -+ ++i; -+ move3d_studio_load_settings = true; -+ } -+ else if (strcmp(argv[i], "-nogui") == 0) { -+ ++i; -+ // Nothing to do, fix this in main -+ } -+#ifdef P3D_COLLISION_CHECKING -+ else if (strcmp(argv[i], "-o") == 0) { -+ set_collision_by_object(FALSE); -+ ++i; -+ } else if (strcmp(argv[i], "-x") == 0) { -+ FILTER_TO_BE_SET_ACTIVE = TRUE; -+ ++i; -+ } else if (strcmp(argv[i], "-nkcdd") == 0) { -+ set_return_kcd_distance_estimate(FALSE); -+ ++i; -+ } -+#endif -+ else if (strcmp(argv[i], "-s") == 0) { -+ ++i; -+ if ((i < argc)) { -+ p3d_init_random_seed(atoi(argv[i])); -+ seed_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-v") == 0) { -+ ++i; -+ if (i < argc) { -+ -+ user_size = atof(argv[i]); -+ user_volume = user_size * user_size * user_size; -+#ifdef P3D_COLLISION_CHECKING -+ kcd_set_user_defined_small_volume(user_volume); -+#endif -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-vol") == 0) { -+ ++i; -+ if (i < argc) { -+#ifdef P3D_COLLISION_CHECKING -+ kcd_set_user_defined_small_volume(atof(argv[i])); -+#endif -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-tol") == 0) { -+ ++i; -+ if (i < argc) { -+ user_obj_tol = atof(argv[i]) ; -+ user_obj_tol_to_be_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-dmax") == 0) { -+ ++i; -+ if (i < argc) { -+ user_dmax = atof(argv[i]) ; -+ user_dmax_to_be_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-stat") == 0) { -+ ++i; -+#ifdef P3D_PLANNER -+ enableStats(); -+#endif -+ } -+#if defined(HRI_COSTSPACE) && defined(QT_GL) -+ else if (strcmp(argv[i], "-grid") == 0) { -+ ++i; -+ if ((i < argc)) { -+ grid_path = argv[i]; -+ //printf("Grid is at : %s\n",gridPath.c_str()); -+ grid_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } -+#endif -+ else if (strcmp(argv[i], "-udp") == 0) { -+ } -+ -+#ifdef LIGHT_PLANNER -+ else if (strcmp(argv[i], "-no-ccntrt") == 0) { -+ printf("Deactivate ccntrt at startup\n"); -+ ccntrt_active = FALSE; -+ ++i; -+ } -+ else if (strcmp(argv[i], "-test") == 0) { -+ ++i; -+ manip_test_run = TRUE; -+ if (i < argc) { -+ manip_test_id = atoi(argv[i]) ; -+ ++i; -+ } else { -+ manip_test_run = FALSE; -+ use(); -+ return 0; -+ } -+ } -+#endif -+ -+ else if (strcmp(argv[i], "-udp") == 0) { -+ std::string serverIp(argv[i+1]); -+ int port = 0; -+ sscanf(argv[i+2], "%d", &port); -+ globalUdpClient = new UdpClient(serverIp, port); -+ i += 3; -+ } -+ else if (strcmp(argv[i], "-dlr") == 0) { -+ strcpy(dlrReadFile, argv[i + 1]); -+ strcpy(dlrSaveFile, argv[i + 2]); -+ i += 3; -+ } else if (strcmp(argv[i], "-c") == 0) { -+ ++i; -+ cout << "Coll mod " << argv[i] << endl; -+ if (strcmp(argv[i], "vcollide") == 0) { -+ col_mode_to_be_set = p3d_col_mode_v_collide; -+ col_det_set = TRUE; -+ ++i; -+ } -+#ifdef P3D_COLLISION_CHECKING -+ else if (strcmp(argv[i], "kcd") == 0) { -+ col_mode_to_be_set = p3d_col_mode_kcd; -+ set_DO_KCD_GJK(TRUE); -+ col_det_set = TRUE; -+ ++i; -+ } -+#ifdef PQP -+ else if (strcmp(argv[i], "pqp") == 0) { -+ printf("Colmod pqp"); -+ col_mode_to_be_set= p3d_col_mode_pqp; -+ col_det_set = TRUE; -+ ++i; -+ cout << "Coll mod PQP " << endl; -+ } -+#endif -+#endif -+ else if (strcmp(argv[i], "bio") == 0) { -+ col_mode_to_be_set = p3d_col_mode_bio; -+ col_det_set = TRUE; -+ ++i; -+ } else if (strcmp(argv[i], "kng") == 0) { -+ col_mode_to_be_set = p3d_col_mode_kcd; -+#ifdef P3D_COLLISION_CHECKING -+ set_DO_KCD_GJK(FALSE); -+#endif -+ col_det_set = TRUE; -+ ++i; -+ } else if (strcmp(argv[i], "gjk") == 0) { -+ col_mode_to_be_set = p3d_col_mode_gjk; -+ col_det_set = TRUE; -+ ++i; -+ } else if (strcmp(argv[i], "none") == 0) { -+ col_mode_to_be_set = p3d_col_mode_none; -+ col_det_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else { -+ use(); -+ return 0; -+ } -+ } -+ -+ if (!dir_set) -+ strcpy(file_directory, "../../demo"); -+ -+ if (!seed_set) -+ p3d_init_random(); -+ -+ if (!col_det_set){ -+ // modif Juan -+ -+ //check that the HOME_MOVE3D environment variable exists: -+ if(getenv("HOME_MOVE3D")==NULL) { -+ printf("%s: %d: main(): The environment variable \"HOME_MOVE3D\" is not defined. This might cause some problems or crashes (e.g. with video capture).\n", __FILE__,__LINE__); -+ } -+ -+ -+#ifdef GRASP_PLANNING -+ col_mode_to_be_set= p3d_col_mode_pqp; -+#ifndef PQP -+ printf("%s: %d: main(): GRASP_PLANNING must be compiled with PQP.\n", __FILE__,__LINE__); -+ printf("Program must quit.\n"); -+ return 1; -+#endif -+#else -+ col_mode_to_be_set = p3d_col_mode_kcd; -+#endif -+ } -+#ifdef P3D_COLLISION_CHECKING -+ if (col_mode_to_be_set != p3d_col_mode_v_collide) -+ set_collision_by_object(FALSE); -+ /* : carl */ -+ if (col_mode_to_be_set == p3d_col_mode_v_collide) { -+ p3d_filter_switch_filter_mechanism(FILTER_TO_BE_SET_ACTIVE); -+ } -+ /* begin added KCD FILTER */ -+ else if (col_mode_to_be_set == p3d_col_mode_kcd) { -+ p3d_filter_switch_filter_mechanism(FILTER_TO_BE_SET_ACTIVE); -+ } -+#endif -+ /* end added KCD FILTER */ -+ -+ -+ /* lecture du fichier environnement */ -+ p3d_set_directory(file_directory); -+ -+ // init English C -+ if (! setlocale(LC_ALL, "C")) -+ fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -+ -+ -+ while (!p3d_get_desc_number(P3D_ENV)) { -+ -+#ifdef BIO -+ if (file_set == TRUE) { -+ // if (!filename) { -+ // exit(0); -+ // } -+ -+#ifndef PQP -+ p3d_col_set_mode(p3d_col_mode_none); -+#else -+ p3d_col_set_mode(col_mode_to_be_set); -+#endif -+ p3d_BB_set_mode_close(); -+ -+ if (!p3d_read_desc(filename)) -+ { -+ file_set = FALSE; -+ } -+ } -+ if (file_set == FALSE) { -+ -+ printf("Error : give a p3d filename as argument, or use the XFORMS module.\n"); -+ exit(0); -+ } -+#else -+ -+ if (file_set == TRUE) { -+ file = filename; -+ } else { -+ -+ } -+ if (!file) { -+ exit(0); -+ } -+ -+#ifdef P3D_COLLISION_CHECKING -+ p3d_col_set_mode(p3d_col_mode_none); -+ p3d_BB_set_mode_close(); -+#endif -+ -+ printf("\n"); -+ printf(" ----------------------------\n"); -+ printf(" -- p3d file parsing start --\n"); -+ printf(" ----------------------------\n"); -+ printf("\n"); -+ -+ p3d_read_desc((char *) file); -+ -+#endif -+ if (!p3d_get_desc_number(P3D_ENV)) { -+ printf("loading done...\n"); -+ } -+ } -+ -+ printf("\n"); -+ printf(" ----------------------------\n"); -+ printf(" -- p3d file parsing done --\n"); -+ printf(" ----------------------------\n"); -+ printf("\n"); -+ -+ MY_ALLOC_INFO("After p3d_read_desc"); -+ -+ printf("Nb poly : %d\n", p3d_poly_get_nb()); -+ -+ /* for start-up with currently chosen collision detector: */ -+ /* MY_ALLOC_INFO("Before initialization of a collision detector"); */ -+#ifdef P3D_COLLISION_CHECKING -+ p3d_col_set_mode(col_mode_to_be_set); -+ p3d_col_start(col_mode_to_be_set); -+#endif -+ -+ -+#if defined( MOVE3D_CORE ) -+ if (ENV.getBool(Env::isCostSpace)) -+ { -+ GlobalCostSpace::initialize(); -+ } -+#endif -+ -+ /* modif Pepijn april 2001 -+ * this changes have to be made after the initialistion of the collision checker -+ * because in p3d_col_start KCD migth be initialised, and during this initialisation -+ * there is automaticly calculated a dmax -+ * So if the user wants to set his own dmax this most be done after this initialisation -+ * INTERNAL NOTE: in this case the users are the developpers of MOVE3D, normally the clients -+ * who purchase Move3d don't know that this option exists -+ */ -+ if (user_dmax_to_be_set) { -+ if (user_dmax < EPS4) { -+ printf("WARNING: User chose dmax too small --> new value set to 0.0001 (EPS4)\n"); -+ user_dmax = EPS4; -+ } -+ p3d_set_env_dmax(user_dmax); -+ } -+ if (user_obj_tol_to_be_set) { -+ if (user_obj_tol < 0.0) { -+ printf("WARNING: Negative tolerance, tolerance is set to 0.0\n"); -+ user_obj_tol = 0.0; -+ } -+ p3d_set_env_object_tolerance(user_obj_tol); -+ } -+ -+ printf("Env dmax = %f\n",p3d_get_env_dmax()); -+ printf("Env Object tol = %f\n",p3d_get_env_object_tolerance()); -+ /* always set tolerance even if the user didn't specify any options -+ * it's possible that Kcd has calculated automaticly a dmax -+ */ -+ /* Normally p3d_col_set_tolerance(); is called when initialising -+ * the sliders, in case the sliders are not used we have to use -+ * p3d_col_set_tolerance() -+ */ -+ -+ //printf("MAX_DDLS %d\n", MAX_DDLS); -+ -+ // modif Juan -+#ifdef BIO -+ if (col_mode_to_be_set == p3d_col_mode_bio) { -+ bio_set_num_subrobot_AA(); -+ bio_set_num_subrobot_ligand(); -+ bio_set_bio_jnt_types(); -+ bio_set_bio_jnt_AAnumbers(); -+ bio_set_list_AA_first_jnt(); -+ bio_set_AAtotal_number(); -+ bio_set_nb_flexible_sc(); -+ bio_set_list_firstjnts_flexible_sc(); -+ if (XYZ_ROBOT->num_subrobot_ligand != -1) -+ bio_set_nb_dof_ligand(); -+#ifdef BIO_BALL -+ new BallEnergy(XYZ_ENV); -+ if(global_costSpace) -+ { -+ global_costSpace->addCost("BALLmmff94", -+ boost::bind(&BallEnergy::computeEnergy, XYZ_ENV->energyComputer, _1)); -+ global_costSpace->setCost("BALLmmff94"); -+ } -+#endif -+ } -+#endif -+ // fmodif Juan -+ -+#if defined(LIGHT_PLANNER) && defined(FK_CNTRT) -+ for(int i=0; i<XYZ_ENV->nr; i++) -+ { p3d_create_FK_cntrts(XYZ_ENV->robot[i]); } -+#endif -+ -+#ifdef P3D_CONSTRAINTS -+ // Modif Mokhtar Initialisation For Multisolutions constraints -+ p3d_init_iksol(XYZ_ROBOT->cntrt_manager); -+#endif -+ -+ /* creation du FORM main */ -+ -+ /* -+ * needs to be run after main form has been created -+ */ -+ if (scenario_set == TRUE) -+ { -+ p3d_rw_scenario_init_name(); -+ p3d_read_scenario(scenario); -+ } -+ -+ //Set the robots to initial Pos if defined -+ for(i = 0; i < XYZ_ENV->nr; i++){ -+ if(!p3d_isNullConfig(XYZ_ENV->robot[i], XYZ_ENV->robot[i]->ROBOT_POS)){ -+ p3d_set_and_update_this_robot_conf(XYZ_ENV->robot[i], XYZ_ENV->robot[i]->ROBOT_POS); -+ } -+ } -+ //Exection Of Dlr Planner -+ // do{ -+ // DlrPlanner* planner = new DlrPlanner(dlrSaveFile); -+ // DlrParser parser(dlrReadFile, planner); -+ // if(parser.parse()){ -+ // planner->process(); -+ // }else{ -+ // sleep(2); -+ // } -+ // free(planner); -+ // }while(1); -+ /* go into loop */ -+ -+#if defined(LIGHT_PLANNER) && defined(PQP) -+ if(ENV.getBool(Env::startWithFKCntrt)) -+ { -+ p3d_rob* MyRobot = p3d_get_robot_by_name_containing ( ( char* ) "ROBOT" ); -+ deactivateCcCntrts(MyRobot,-1); -+ } -+#endif -+ -+#if defined(HRI_COSTSPACE) && defined(QT_GL) -+ if(grid_set) -+ { -+ std::cout << "Reading HRICS Grid " << grid_path << std::endl; -+ qt_load_HRICS_Grid(grid_path); -+ } -+#endif -+ -+ // double c, color[4]; -+ // srand(time(NULL)); -+ // c= rand()/((double)RAND_MAX+1); -+ // g3d_rgb_from_hue(c, color); -+ // g3d_set_win_floor_color(g3d_get_cur_win(), color[0], color[1], color[2]); -+ -+#if defined( LIGHT_PLANNER ) && !defined( QT_GL ) -+ if (manip_test_run) -+ { -+ printf("Test functions : ManipulationTestFunctions\n"); -+ new qtG3DWindow(); -+ -+#if defined( MOVE3D_CORE ) -+ // Creates the wrapper to the project -+ // Be carefull to initialize in the right thread -+ global_Project = new Project(new Scene(XYZ_ENV)); -+#endif -+ -+ ManipulationTestFunctions tests; -+ -+ if(!tests.runTest(manip_test_id)) -+ { -+ std::cout << "ManipulationTestFunctions::Fail" << std::endl; -+ } -+ } -+#endif -+ return 0; -+} -+ -+/* fonction de rappel des formats des arguments */ -+static void use(void) { -+ -+ printf("main : ERROR : wrong arguments !\n move3d -d data_directory -f file -sc scenario -s random_seed -c collision_detector -tol tolerance -dmax dist [-v size | -vol volume] -o -x -nkcdd\n"); -+ printf("collision_detector may be: icollide, vcollide, solid, kcd, kng, none\n"); -+ printf("(kng == kcd without gjk)\n"); -+ printf("-o: consider polyhedrons as objects (only for vcollide)\n"); -+ printf("-x: do filtering by robot body (default: don't filter)\n"); -+ printf("-v: (only with kcd) minimal relevant size (in 1 dimension) \n"); -+ printf("-dmax: for Vcollide & nkcdd => maximum penetration distance \n"); -+ printf(" KCD => artificial enlargement of the obstacles \n"); -+ printf("-tol: (only with kcd) object tolerance (enlarge objects for the collision checker) \n"); -+ printf("-vol: (only with kcd) minimal relevant size (volume) \n"); -+ printf("(internal note, kcd: volume of a box around a facet == (surface of box)^(3/2) )\n"); -+ printf("-nkcdd: (only with -c kcd) return only boolean reply, don't use distance \n"); -+ printf("-no-ccntrt: deactivate closed chain constraint at startup \n"); -+} -+ ---- src/move3d-remote/CMakeLists.txt -+++ src/move3d-remote/CMakeLists.txt -@@ -222,7 +222,7 @@ ENDMACRO(SMP_QT_GENERATE_UI_HEADERS) - # ------------------------------------------------------------- - file(GLOB source_files - main-remote.cpp --move3d.c -+move3d.cpp - sparkwidget.cpp - niutwidget.cpp - camerawidget.cpp -@@ -295,8 +295,6 @@ QT4_WRAP_CPP(SMP_QT_MOC ${SMP_QT_FILES_FOR_MOC}) - # ------------------------------------------------------------- - # --- Compiler and Compilation flags -------------------------- - # ------------------------------------------------------------- --SET(CMAKE_CXX_COMPILER g++) --SET(CMAKE_C_COMPILER g++) - - IF(UNIX) - ADD_DEFINITIONS(-DUNIX) ---- src/move3d-remote/move3d.c -+++ /dev/null -@@ -1,643 +0,0 @@ --#include <Util-pkg.h> --#include <P3d-pkg.h> -- --#include <move3d-headless.h> -- --#ifdef P3D_PLANNER --#include <Planner-pkg.h> --#endif --#ifdef P3D_COLLISION_CHECKING --#include <Collision-pkg.h> --#endif -- --#include <Bio-pkg.h> --#include <UdpClient.h> -- --#include <locale.h> -- --// TODO --#undef USE_GLUT --#if defined(USE_GLUT) --#if defined(MACOSX) --#include <glut.h> --#else --#include <GL/freeglut.h> --#endif --#endif -- --#if defined( QT_GL ) && defined( CXX_PLANNER ) --#include <project.hpp> --#include <cppToQt.hpp> --#endif -- --#include "planner_handler.hpp" -- --#ifdef LIGHT_PLANNER --#include "../lightPlanner/proto/DlrPlanner.h" --#include "../lightPlanner/proto/DlrParser.h" --#include "../lightPlanner/proto/lightPlannerApi.h" -- --#if defined( MULTILOCALPATH ) && defined( GRASP_PLANNING ) --#include "../lightPlanner/proto/ManipulationTestFunctions.hpp" --#endif --#endif -- -- -- --#include "../graphic/proto/g3d_glut.hpp" -- --#if defined( CXX_PLANNER ) || defined( MOVE3D_CORE ) --#include "API/planningAPI.hpp" --#include "planner/cost_space.hpp" --#include <boost/bind.hpp> --#endif --#ifdef BIO_BALL --#include "ball_energy.hpp" --#endif -- --#include <iostream> --using namespace std; -- --// External varialbe handled when compiled with move3d studio --bool move3d_studio_load_settings = false; -- --static int FILTER_TO_BE_SET_ACTIVE = FALSE; --//extern void g3d_create_main_form(void); --//extern void g3d_loop(void); --//extern void p3d_col_set_mode(int); --//extern void kcd_set_user_defined_small_volume(double); --//extern double p3d_get_env_dmax(void); --static void use(void); -- --int mainMhp(int argc, char ** argv) { -- -- cout << "Main Mhp" << endl; -- -- //int main(int argc, char ** argv) { -- -- -- // modif Pepijn apropos dmax and tol -- int user_dmax_to_be_set = FALSE; /* Modif. Pepijn on dmax */ -- double user_dmax = 0.0; /* Modif. Pepijn on dmax */ -- int user_obj_tol_to_be_set = FALSE; /* Modif. Carl on tolerance */ -- double user_obj_tol = 0.0; -- // end modif Pepijn -- -- double user_volume, user_size; /* Modif. Carl on volume */ --#ifndef BIO -- const char *file; --#endif -- char file_directory[200]; -- char filename[200]; -- char scenario[200]; -- char dlrReadFile[200]; -- char dlrSaveFile[200]; -- int i = 0; -- /* carl: */ -- int seed_set = FALSE; -- int dir_set = FALSE; -- int file_set = FALSE; -- int scenario_set = FALSE; -- int col_det_set = FALSE; -- int col_mode_to_be_set = p3d_col_mode_kcd; /* Nic p3d_col_mode_v_collide;*/ -- int ccntrt_active = TRUE; -- -- // Tests -- int manip_test_run = FALSE; -- int manip_test_id = 0; -- -- // init English C -- if (! setlocale(LC_ALL, "C")) -- fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -- -- int grid_set = FALSE; -- std::string grid_path; -- // modif Brice SALVA -- --#ifdef BIO -- int usrAnswer = FALSE; -- file_name_list* file_list = NULL; -- char name[PSF_MAX_NAME_LENGTH]; -- int is_p3d = FALSE; --#endif -- if (! setlocale(LC_ALL, "C")) fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -- -- // End modif Brice SALVA -- -- /* lecture des arguments */ -- /* carl: */ -- i = 1; -- while (i < argc) { -- if (strcmp(argv[i], "-debug") == 0) { -- basic_alloc_debugon(); -- i++; -- } else if (strcmp(argv[i], "-d") == 0) { -- ++i; -- if ((i < argc)) { -- strcpy(file_directory, argv[i]); -- dir_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-f") == 0) { -- ++i; -- if ((i < argc)) { -- strcpy(filename, argv[i]); -- file_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-sc") == 0) { -- ++i; -- if ((i < argc)) { -- strcpy(scenario, argv[i]); -- scenario_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } -- else if (strcmp(argv[i], "-setgui") == 0) { -- ++i; -- move3d_studio_load_settings = true; -- } --#ifdef P3D_COLLISION_CHECKING -- else if (strcmp(argv[i], "-o") == 0) { -- set_collision_by_object(FALSE); -- ++i; -- } else if (strcmp(argv[i], "-x") == 0) { -- FILTER_TO_BE_SET_ACTIVE = TRUE; -- ++i; -- } else if (strcmp(argv[i], "-nkcdd") == 0) { -- set_return_kcd_distance_estimate(FALSE); -- ++i; -- } --#endif -- else if (strcmp(argv[i], "-s") == 0) { -- ++i; -- if ((i < argc)) { -- p3d_init_random_seed(atoi(argv[i])); -- seed_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-v") == 0) { -- ++i; -- if (i < argc) { -- -- user_size = atof(argv[i]); -- user_volume = user_size * user_size * user_size; --#ifdef P3D_COLLISION_CHECKING -- kcd_set_user_defined_small_volume(user_volume); --#endif -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-vol") == 0) { -- ++i; -- if (i < argc) { --#ifdef P3D_COLLISION_CHECKING -- kcd_set_user_defined_small_volume(atof(argv[i])); --#endif -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-tol") == 0) { -- ++i; -- if (i < argc) { -- user_obj_tol = atof(argv[i]) ; -- user_obj_tol_to_be_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-dmax") == 0) { -- ++i; -- if (i < argc) { -- user_dmax = atof(argv[i]) ; -- user_dmax_to_be_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else if (strcmp(argv[i], "-stat") == 0) { -- ++i; --#ifdef P3D_PLANNER -- enableStats(); --#endif -- } --#if defined(HRI_COSTSPACE) && defined(QT_GL) -- else if (strcmp(argv[i], "-grid") == 0) { -- ++i; -- if ((i < argc)) { -- grid_path = argv[i]; -- //printf("Grid is at : %s\n",gridPath.c_str()); -- grid_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } --#endif -- else if (strcmp(argv[i], "-udp") == 0) { -- } -- --#ifdef LIGHT_PLANNER -- else if (strcmp(argv[i], "-no-ccntrt") == 0) { -- printf("Deactivate ccntrt at startup\n"); -- ccntrt_active = FALSE; -- ++i; -- } -- else if (strcmp(argv[i], "-test") == 0) { -- ++i; -- manip_test_run = TRUE; -- if (i < argc) { -- manip_test_id = atoi(argv[i]) ; -- ++i; -- } else { -- manip_test_run = FALSE; -- use(); -- return 0; -- } -- } --#endif -- -- else if (strcmp(argv[i], "-udp") == 0) { -- std::string serverIp(argv[i+1]); -- int port = 0; -- sscanf(argv[i+2], "%d", &port); -- globalUdpClient = new UdpClient(serverIp, port); -- i += 3; -- } -- else if (strcmp(argv[i], "-dlr") == 0) { -- strcpy(dlrReadFile, argv[i + 1]); -- strcpy(dlrSaveFile, argv[i + 2]); -- i += 3; -- } else if (strcmp(argv[i], "-c") == 0) { -- ++i; -- cout << "Coll mod " << argv[i] << endl; -- if (strcmp(argv[i], "vcollide") == 0) { -- col_mode_to_be_set = p3d_col_mode_v_collide; -- col_det_set = TRUE; -- ++i; -- } --#ifdef P3D_COLLISION_CHECKING -- else if (strcmp(argv[i], "kcd") == 0) { -- col_mode_to_be_set = p3d_col_mode_kcd; -- set_DO_KCD_GJK(TRUE); -- col_det_set = TRUE; -- ++i; -- } --#ifdef PQP -- else if (strcmp(argv[i], "pqp") == 0) { -- printf("Colmod pqp"); -- col_mode_to_be_set= p3d_col_mode_pqp; -- col_det_set = TRUE; -- ++i; -- cout << "Coll mod PQP " << endl; -- } --#endif --#endif -- -- else if (strcmp(argv[i], "bio") == 0) { -- col_mode_to_be_set = p3d_col_mode_bio; -- col_det_set = TRUE; -- ++i; -- } else if (strcmp(argv[i], "kng") == 0) { -- col_mode_to_be_set = p3d_col_mode_kcd; --#ifdef P3D_COLLISION_CHECKING -- set_DO_KCD_GJK(FALSE); --#endif -- col_det_set = TRUE; -- ++i; -- } else if (strcmp(argv[i], "gjk") == 0) { -- col_mode_to_be_set = p3d_col_mode_gjk; -- col_det_set = TRUE; -- ++i; -- } else if (strcmp(argv[i], "none") == 0) { -- col_mode_to_be_set = p3d_col_mode_none; -- col_det_set = TRUE; -- ++i; -- } else { -- use(); -- return 0; -- } -- } else { -- use(); -- return 0; -- } -- } -- -- if (!dir_set) -- strcpy(file_directory, "../../demo"); -- -- if (!seed_set) -- p3d_init_random(); -- -- if (!col_det_set){ -- // modif Juan -- -- //check that the HOME_MOVE3D environment variable exists: -- if(getenv("HOME_MOVE3D")==NULL) { -- printf("%s: %d: main(): The environment variable \"HOME_MOVE3D\" is not defined. This might cause some problems or crashes (e.g. with video capture).\n", __FILE__,__LINE__); -- } -- -- --#ifdef GRASP_PLANNING -- col_mode_to_be_set= p3d_col_mode_pqp; --#ifndef PQP -- printf("%s: %d: main(): GRASP_PLANNING must be compiled with PQP.\n", __FILE__,__LINE__); -- printf("Program must quit.\n"); -- return 1; --#endif --#else -- col_mode_to_be_set = p3d_col_mode_kcd; --#endif -- } --#ifdef P3D_COLLISION_CHECKING -- if (col_mode_to_be_set != p3d_col_mode_v_collide) -- set_collision_by_object(FALSE); -- /* : carl */ -- if (col_mode_to_be_set == p3d_col_mode_v_collide) { -- p3d_filter_switch_filter_mechanism(FILTER_TO_BE_SET_ACTIVE); -- } -- /* begin added KCD FILTER */ -- else if (col_mode_to_be_set == p3d_col_mode_kcd) { -- p3d_filter_switch_filter_mechanism(FILTER_TO_BE_SET_ACTIVE); -- } --#endif -- /* end added KCD FILTER */ -- -- -- /* lecture du fichier environnement */ -- p3d_set_directory(file_directory); -- -- // init English C -- if (! setlocale(LC_ALL, "C")) -- fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -- -- -- while (!p3d_get_desc_number(P3D_ENV)) { -- --#ifdef BIO -- if (file_set == TRUE) { -- // if (!filename) { -- // exit(0); -- // } -- --#ifndef PQP -- p3d_col_set_mode(p3d_col_mode_none); --#else -- p3d_col_set_mode(col_mode_to_be_set); --#endif -- p3d_BB_set_mode_close(); -- if (!p3d_read_desc(filename)) { -- -- file_set = FALSE; -- -- } -- } -- if (file_set == FALSE) { -- -- printf("Error : give a p3d filename as argument, or use the XFORMS module.\n"); -- exit(0); -- -- } --#else -- -- if (file_set == TRUE) { -- file = filename; -- } else { -- -- } -- if (!file) { -- exit(0); -- } -- --#ifdef P3D_COLLISION_CHECKING -- p3d_col_set_mode(p3d_col_mode_none); -- p3d_BB_set_mode_close(); --#endif -- -- printf("\n"); -- printf(" ----------------------------\n"); -- printf(" -- p3d file parsing start --\n"); -- printf(" ----------------------------\n"); -- printf("\n"); -- -- p3d_read_desc((char *) file); -- --#endif -- if (!p3d_get_desc_number(P3D_ENV)) { -- printf("loading done...\n"); -- -- } -- } -- -- printf("\n"); -- printf(" ----------------------------\n"); -- printf(" -- p3d file parsing done --\n"); -- printf(" ----------------------------\n"); -- printf("\n"); -- -- MY_ALLOC_INFO("After p3d_read_desc"); -- -- printf("Nb poly : %d\n", p3d_poly_get_nb()); -- -- /* for start-up with currently chosen collision detector: */ -- /* MY_ALLOC_INFO("Before initialization of a collision detector"); */ --#ifdef P3D_COLLISION_CHECKING -- p3d_col_set_mode(col_mode_to_be_set); -- p3d_col_start(col_mode_to_be_set); --#endif -- -- --#if defined( MOVE3D_CORE ) -- if (ENV.getBool(Env::isCostSpace)) -- { -- GlobalCostSpace::initialize(); -- } --#endif -- -- /* modif Pepijn april 2001 -- * this changes have to be made after the initialistion of the collision checker -- * because in p3d_col_start KCD migth be initialised, and during this initialisation -- * there is automaticly calculated a dmax -- * So if the user wants to set his own dmax this most be done after this initialisation -- * INTERNAL NOTE: in this case the users are the developpers of MOVE3D, normally the clients -- * who purchase Move3d don't know that this option exists -- */ -- if (user_dmax_to_be_set) { -- if (user_dmax < EPS4) { -- printf("WARNING: User chose dmax too small --> new value set to 0.0001 (EPS4)\n"); -- user_dmax = EPS4; -- } -- p3d_set_env_dmax(user_dmax); -- } -- if (user_obj_tol_to_be_set) { -- if (user_obj_tol < 0.0) { -- printf("WARNING: Negative tolerance, tolerance is set to 0.0\n"); -- user_obj_tol = 0.0; -- } -- p3d_set_env_object_tolerance(user_obj_tol); -- } -- -- printf("Env dmax = %f\n",p3d_get_env_dmax()); -- printf("Env Object tol = %f\n",p3d_get_env_object_tolerance()); -- /* always set tolerance even if the user didn't specify any options -- * it's possible that Kcd has calculated automaticly a dmax -- */ -- /* Normally p3d_col_set_tolerance(); is called when initialising -- * the sliders, in case the sliders are not used we have to use -- * p3d_col_set_tolerance() -- */ -- -- //printf("MAX_DDLS %d\n", MAX_DDLS); -- -- // modif Juan --#ifdef BIO -- if (col_mode_to_be_set == p3d_col_mode_bio) { -- bio_set_num_subrobot_AA(); -- bio_set_num_subrobot_ligand(); -- bio_set_bio_jnt_types(); -- bio_set_bio_jnt_AAnumbers(); -- bio_set_list_AA_first_jnt(); -- bio_set_AAtotal_number(); -- bio_set_nb_flexible_sc(); -- bio_set_list_firstjnts_flexible_sc(); -- if (XYZ_ROBOT->num_subrobot_ligand != -1) -- bio_set_nb_dof_ligand(); --#ifdef BIO_BALL -- new BallEnergy(XYZ_ENV); -- if(global_costSpace) -- { -- global_costSpace->addCost("BALLmmff94", -- boost::bind(&BallEnergy::computeEnergy, XYZ_ENV->energyComputer, _1)); -- global_costSpace->setCost("BALLmmff94"); -- } --#endif -- } --#endif -- // fmodif Juan -- --#if defined(LIGHT_PLANNER) && defined(FK_CNTRT) -- for(int i=0; i<XYZ_ENV->nr; i++) -- { p3d_create_FK_cntrts(XYZ_ENV->robot[i]); } --#endif -- --#ifdef P3D_CONSTRAINTS -- // Modif Mokhtar Initialisation For Multisolutions constraints -- p3d_init_iksol(XYZ_ROBOT->cntrt_manager); --#endif -- -- /* creation du FORM main */ -- -- /* -- * needs to be run after main form has been created -- */ -- if (scenario_set == TRUE) { -- -- p3d_rw_scenario_init_name(); -- p3d_read_scenario(scenario); -- -- } -- -- //Set the robots to initial Pos if defined -- for(i = 0; i < XYZ_ENV->nr; i++){ -- if(!p3d_isNullConfig(XYZ_ENV->robot[i], XYZ_ENV->robot[i]->ROBOT_POS)){ -- p3d_set_and_update_this_robot_conf(XYZ_ENV->robot[i], XYZ_ENV->robot[i]->ROBOT_POS); -- } -- } -- //Exection Of Dlr Planner -- // do{ -- // DlrPlanner* planner = new DlrPlanner(dlrSaveFile); -- // DlrParser parser(dlrReadFile, planner); -- // if(parser.parse()){ -- // planner->process(); -- // }else{ -- // sleep(2); -- // } -- // free(planner); -- // }while(1); -- /* go into loop */ -- --#if defined(LIGHT_PLANNER) && defined(PQP) -- if(ENV.getBool(Env::startWithFKCntrt)) -- { -- p3d_rob* MyRobot = p3d_get_robot_by_name_containing ( ( char* ) "ROBOT" ); -- deactivateCcCntrts(MyRobot,-1); -- } --#endif -- --#if defined(HRI_COSTSPACE) && defined(QT_GL) -- if(grid_set) -- { -- std::cout << "Reading HRICS Grid " << grid_path << std::endl; -- qt_load_HRICS_Grid(grid_path); -- } --#endif --//#ifdef QT_GL --// sem->release(); --//#endif -- -- // double c, color[4]; -- // srand(time(NULL)); -- // c= rand()/((double)RAND_MAX+1); -- // g3d_rgb_from_hue(c, color); -- // g3d_set_win_floor_color(g3d_get_cur_win(), color[0], color[1], color[2]); -- --#if defined( LIGHT_PLANNER ) && !defined( QT_GL ) -- if (manip_test_run) -- { -- printf("Test functions : ManipulationTestFunctions\n"); -- new qtG3DWindow(); -- --#if defined( MOVE3D_CORE ) -- // Creates the wrapper to the project -- // Be carefull to initialize in the right thread -- global_Project = new Project(new Scene(XYZ_ENV)); --#endif -- -- ManipulationTestFunctions tests; -- -- if(!tests.runTest(manip_test_id)) -- { -- std::cout << "ManipulationTestFunctions::Fail" << std::endl; -- } -- } --#endif -- return 0; --} -- --/* fonction de rappel des formats des arguments */ --static void use(void) { -- -- printf("main : ERROR : wrong arguments !\n move3d -d data_directory -f file -sc scenario -s random_seed -c collision_detector -tol tolerance -dmax dist [-v size | -vol volume] -o -x -nkcdd\n"); -- printf("collision_detector may be: icollide, vcollide, solid, kcd, kng, none\n"); -- printf("(kng == kcd without gjk)\n"); -- printf("-o: consider polyhedrons as objects (only for vcollide)\n"); -- printf("-x: do filtering by robot body (default: don't filter)\n"); -- printf("-v: (only with kcd) minimal relevant size (in 1 dimension) \n"); -- printf("-dmax: for Vcollide & nkcdd => maximum penetration distance \n"); -- printf(" KCD => artificial enlargement of the obstacles \n"); -- printf("-tol: (only with kcd) object tolerance (enlarge objects for the collision checker) \n"); -- printf("-vol: (only with kcd) minimal relevant size (volume) \n"); -- printf("(internal note, kcd: volume of a box around a facet == (surface of box)^(3/2) )\n"); -- printf("-nkcdd: (only with -c kcd) return only boolean reply, don't use distance \n"); -- printf("-no-ccntrt: deactivate closed chain constraint at startup \n"); --} -- ---- /dev/null -+++ src/move3d-remote/move3d.cpp -@@ -0,0 +1,643 @@ -+#include <Util-pkg.h> -+#include <P3d-pkg.h> -+ -+#include <move3d-headless.h> -+ -+#ifdef P3D_PLANNER -+#include <Planner-pkg.h> -+#endif -+#ifdef P3D_COLLISION_CHECKING -+#include <Collision-pkg.h> -+#endif -+ -+#include <Bio-pkg.h> -+#include <UdpClient.h> -+ -+#include <locale.h> -+ -+// TODO -+#undef USE_GLUT -+#if defined(USE_GLUT) -+#if defined(MACOSX) -+#include <glut.h> -+#else -+#include <GL/freeglut.h> -+#endif -+#endif -+ -+#if defined( QT_GL ) && defined( CXX_PLANNER ) -+#include <project.hpp> -+#include <cppToQt.hpp> -+#endif -+ -+#include "planner_handler.hpp" -+ -+#ifdef LIGHT_PLANNER -+#include "../lightPlanner/proto/DlrPlanner.h" -+#include "../lightPlanner/proto/DlrParser.h" -+#include "../lightPlanner/proto/lightPlannerApi.h" -+ -+#if defined( MULTILOCALPATH ) && defined( GRASP_PLANNING ) -+#include "../lightPlanner/proto/ManipulationTestFunctions.hpp" -+#endif -+#endif -+ -+ -+ -+#include "../graphic/proto/g3d_glut.hpp" -+ -+#if defined( CXX_PLANNER ) || defined( MOVE3D_CORE ) -+#include "API/planningAPI.hpp" -+#include "planner/cost_space.hpp" -+#include <boost/bind.hpp> -+#endif -+#ifdef BIO_BALL -+#include "ball_energy.hpp" -+#endif -+ -+#include <iostream> -+using namespace std; -+ -+// External varialbe handled when compiled with move3d studio -+bool move3d_studio_load_settings = false; -+ -+static int FILTER_TO_BE_SET_ACTIVE = FALSE; -+//extern void g3d_create_main_form(void); -+//extern void g3d_loop(void); -+//extern void p3d_col_set_mode(int); -+//extern void kcd_set_user_defined_small_volume(double); -+//extern double p3d_get_env_dmax(void); -+static void use(void); -+ -+int mainMhp(int argc, char ** argv) { -+ -+ cout << "Main Mhp" << endl; -+ -+ //int main(int argc, char ** argv) { -+ -+ -+ // modif Pepijn apropos dmax and tol -+ int user_dmax_to_be_set = FALSE; /* Modif. Pepijn on dmax */ -+ double user_dmax = 0.0; /* Modif. Pepijn on dmax */ -+ int user_obj_tol_to_be_set = FALSE; /* Modif. Carl on tolerance */ -+ double user_obj_tol = 0.0; -+ // end modif Pepijn -+ -+ double user_volume, user_size; /* Modif. Carl on volume */ -+#ifndef BIO -+ const char *file; -+#endif -+ char file_directory[200]; -+ char filename[200]; -+ char scenario[200]; -+ char dlrReadFile[200]; -+ char dlrSaveFile[200]; -+ int i = 0; -+ /* carl: */ -+ int seed_set = FALSE; -+ int dir_set = FALSE; -+ int file_set = FALSE; -+ int scenario_set = FALSE; -+ int col_det_set = FALSE; -+ int col_mode_to_be_set = p3d_col_mode_kcd; /* Nic p3d_col_mode_v_collide;*/ -+ int ccntrt_active = TRUE; -+ -+ // Tests -+ int manip_test_run = FALSE; -+ int manip_test_id = 0; -+ -+ // init English C -+ if (! setlocale(LC_ALL, "C")) -+ fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -+ -+ int grid_set = FALSE; -+ std::string grid_path; -+ // modif Brice SALVA -+ -+#ifdef BIO -+ int usrAnswer = FALSE; -+ file_name_list* file_list = NULL; -+ char name[PSF_MAX_NAME_LENGTH]; -+ int is_p3d = FALSE; -+#endif -+ if (! setlocale(LC_ALL, "C")) fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -+ -+ // End modif Brice SALVA -+ -+ /* lecture des arguments */ -+ /* carl: */ -+ i = 1; -+ while (i < argc) { -+ if (strcmp(argv[i], "-debug") == 0) { -+ basic_alloc_debugon(); -+ i++; -+ } else if (strcmp(argv[i], "-d") == 0) { -+ ++i; -+ if ((i < argc)) { -+ strcpy(file_directory, argv[i]); -+ dir_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-f") == 0) { -+ ++i; -+ if ((i < argc)) { -+ strcpy(filename, argv[i]); -+ file_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-sc") == 0) { -+ ++i; -+ if ((i < argc)) { -+ strcpy(scenario, argv[i]); -+ scenario_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } -+ else if (strcmp(argv[i], "-setgui") == 0) { -+ ++i; -+ move3d_studio_load_settings = true; -+ } -+#ifdef P3D_COLLISION_CHECKING -+ else if (strcmp(argv[i], "-o") == 0) { -+ set_collision_by_object(FALSE); -+ ++i; -+ } else if (strcmp(argv[i], "-x") == 0) { -+ FILTER_TO_BE_SET_ACTIVE = TRUE; -+ ++i; -+ } else if (strcmp(argv[i], "-nkcdd") == 0) { -+ set_return_kcd_distance_estimate(FALSE); -+ ++i; -+ } -+#endif -+ else if (strcmp(argv[i], "-s") == 0) { -+ ++i; -+ if ((i < argc)) { -+ p3d_init_random_seed(atoi(argv[i])); -+ seed_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-v") == 0) { -+ ++i; -+ if (i < argc) { -+ -+ user_size = atof(argv[i]); -+ user_volume = user_size * user_size * user_size; -+#ifdef P3D_COLLISION_CHECKING -+ kcd_set_user_defined_small_volume(user_volume); -+#endif -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-vol") == 0) { -+ ++i; -+ if (i < argc) { -+#ifdef P3D_COLLISION_CHECKING -+ kcd_set_user_defined_small_volume(atof(argv[i])); -+#endif -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-tol") == 0) { -+ ++i; -+ if (i < argc) { -+ user_obj_tol = atof(argv[i]) ; -+ user_obj_tol_to_be_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-dmax") == 0) { -+ ++i; -+ if (i < argc) { -+ user_dmax = atof(argv[i]) ; -+ user_dmax_to_be_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else if (strcmp(argv[i], "-stat") == 0) { -+ ++i; -+#ifdef P3D_PLANNER -+ enableStats(); -+#endif -+ } -+#if defined(HRI_COSTSPACE) && defined(QT_GL) -+ else if (strcmp(argv[i], "-grid") == 0) { -+ ++i; -+ if ((i < argc)) { -+ grid_path = argv[i]; -+ //printf("Grid is at : %s\n",gridPath.c_str()); -+ grid_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } -+#endif -+ else if (strcmp(argv[i], "-udp") == 0) { -+ } -+ -+#ifdef LIGHT_PLANNER -+ else if (strcmp(argv[i], "-no-ccntrt") == 0) { -+ printf("Deactivate ccntrt at startup\n"); -+ ccntrt_active = FALSE; -+ ++i; -+ } -+ else if (strcmp(argv[i], "-test") == 0) { -+ ++i; -+ manip_test_run = TRUE; -+ if (i < argc) { -+ manip_test_id = atoi(argv[i]) ; -+ ++i; -+ } else { -+ manip_test_run = FALSE; -+ use(); -+ return 0; -+ } -+ } -+#endif -+ -+ else if (strcmp(argv[i], "-udp") == 0) { -+ std::string serverIp(argv[i+1]); -+ int port = 0; -+ sscanf(argv[i+2], "%d", &port); -+ globalUdpClient = new UdpClient(serverIp, port); -+ i += 3; -+ } -+ else if (strcmp(argv[i], "-dlr") == 0) { -+ strcpy(dlrReadFile, argv[i + 1]); -+ strcpy(dlrSaveFile, argv[i + 2]); -+ i += 3; -+ } else if (strcmp(argv[i], "-c") == 0) { -+ ++i; -+ cout << "Coll mod " << argv[i] << endl; -+ if (strcmp(argv[i], "vcollide") == 0) { -+ col_mode_to_be_set = p3d_col_mode_v_collide; -+ col_det_set = TRUE; -+ ++i; -+ } -+#ifdef P3D_COLLISION_CHECKING -+ else if (strcmp(argv[i], "kcd") == 0) { -+ col_mode_to_be_set = p3d_col_mode_kcd; -+ set_DO_KCD_GJK(TRUE); -+ col_det_set = TRUE; -+ ++i; -+ } -+#ifdef PQP -+ else if (strcmp(argv[i], "pqp") == 0) { -+ printf("Colmod pqp"); -+ col_mode_to_be_set= p3d_col_mode_pqp; -+ col_det_set = TRUE; -+ ++i; -+ cout << "Coll mod PQP " << endl; -+ } -+#endif -+#endif -+ -+ else if (strcmp(argv[i], "bio") == 0) { -+ col_mode_to_be_set = p3d_col_mode_bio; -+ col_det_set = TRUE; -+ ++i; -+ } else if (strcmp(argv[i], "kng") == 0) { -+ col_mode_to_be_set = p3d_col_mode_kcd; -+#ifdef P3D_COLLISION_CHECKING -+ set_DO_KCD_GJK(FALSE); -+#endif -+ col_det_set = TRUE; -+ ++i; -+ } else if (strcmp(argv[i], "gjk") == 0) { -+ col_mode_to_be_set = p3d_col_mode_gjk; -+ col_det_set = TRUE; -+ ++i; -+ } else if (strcmp(argv[i], "none") == 0) { -+ col_mode_to_be_set = p3d_col_mode_none; -+ col_det_set = TRUE; -+ ++i; -+ } else { -+ use(); -+ return 0; -+ } -+ } else { -+ use(); -+ return 0; -+ } -+ } -+ -+ if (!dir_set) -+ strcpy(file_directory, "../../demo"); -+ -+ if (!seed_set) -+ p3d_init_random(); -+ -+ if (!col_det_set){ -+ // modif Juan -+ -+ //check that the HOME_MOVE3D environment variable exists: -+ if(getenv("HOME_MOVE3D")==NULL) { -+ printf("%s: %d: main(): The environment variable \"HOME_MOVE3D\" is not defined. This might cause some problems or crashes (e.g. with video capture).\n", __FILE__,__LINE__); -+ } -+ -+ -+#ifdef GRASP_PLANNING -+ col_mode_to_be_set= p3d_col_mode_pqp; -+#ifndef PQP -+ printf("%s: %d: main(): GRASP_PLANNING must be compiled with PQP.\n", __FILE__,__LINE__); -+ printf("Program must quit.\n"); -+ return 1; -+#endif -+#else -+ col_mode_to_be_set = p3d_col_mode_kcd; -+#endif -+ } -+#ifdef P3D_COLLISION_CHECKING -+ if (col_mode_to_be_set != p3d_col_mode_v_collide) -+ set_collision_by_object(FALSE); -+ /* : carl */ -+ if (col_mode_to_be_set == p3d_col_mode_v_collide) { -+ p3d_filter_switch_filter_mechanism(FILTER_TO_BE_SET_ACTIVE); -+ } -+ /* begin added KCD FILTER */ -+ else if (col_mode_to_be_set == p3d_col_mode_kcd) { -+ p3d_filter_switch_filter_mechanism(FILTER_TO_BE_SET_ACTIVE); -+ } -+#endif -+ /* end added KCD FILTER */ -+ -+ -+ /* lecture du fichier environnement */ -+ p3d_set_directory(file_directory); -+ -+ // init English C -+ if (! setlocale(LC_ALL, "C")) -+ fprintf(stderr, "There was an error while setting the locale to \"C\"\n"); -+ -+ -+ while (!p3d_get_desc_number(P3D_ENV)) { -+ -+#ifdef BIO -+ if (file_set == TRUE) { -+ // if (!filename) { -+ // exit(0); -+ // } -+ -+#ifndef PQP -+ p3d_col_set_mode(p3d_col_mode_none); -+#else -+ p3d_col_set_mode(col_mode_to_be_set); -+#endif -+ p3d_BB_set_mode_close(); -+ if (!p3d_read_desc(filename)) { -+ -+ file_set = FALSE; -+ -+ } -+ } -+ if (file_set == FALSE) { -+ -+ printf("Error : give a p3d filename as argument, or use the XFORMS module.\n"); -+ exit(0); -+ -+ } -+#else -+ -+ if (file_set == TRUE) { -+ file = filename; -+ } else { -+ -+ } -+ if (!file) { -+ exit(0); -+ } -+ -+#ifdef P3D_COLLISION_CHECKING -+ p3d_col_set_mode(p3d_col_mode_none); -+ p3d_BB_set_mode_close(); -+#endif -+ -+ printf("\n"); -+ printf(" ----------------------------\n"); -+ printf(" -- p3d file parsing start --\n"); -+ printf(" ----------------------------\n"); -+ printf("\n"); -+ -+ p3d_read_desc((char *) file); -+ -+#endif -+ if (!p3d_get_desc_number(P3D_ENV)) { -+ printf("loading done...\n"); -+ -+ } -+ } -+ -+ printf("\n"); -+ printf(" ----------------------------\n"); -+ printf(" -- p3d file parsing done --\n"); -+ printf(" ----------------------------\n"); -+ printf("\n"); -+ -+ MY_ALLOC_INFO("After p3d_read_desc"); -+ -+ printf("Nb poly : %d\n", p3d_poly_get_nb()); -+ -+ /* for start-up with currently chosen collision detector: */ -+ /* MY_ALLOC_INFO("Before initialization of a collision detector"); */ -+#ifdef P3D_COLLISION_CHECKING -+ p3d_col_set_mode(col_mode_to_be_set); -+ p3d_col_start(col_mode_to_be_set); -+#endif -+ -+ -+#if defined( MOVE3D_CORE ) -+ if (ENV.getBool(Env::isCostSpace)) -+ { -+ GlobalCostSpace::initialize(); -+ } -+#endif -+ -+ /* modif Pepijn april 2001 -+ * this changes have to be made after the initialistion of the collision checker -+ * because in p3d_col_start KCD migth be initialised, and during this initialisation -+ * there is automaticly calculated a dmax -+ * So if the user wants to set his own dmax this most be done after this initialisation -+ * INTERNAL NOTE: in this case the users are the developpers of MOVE3D, normally the clients -+ * who purchase Move3d don't know that this option exists -+ */ -+ if (user_dmax_to_be_set) { -+ if (user_dmax < EPS4) { -+ printf("WARNING: User chose dmax too small --> new value set to 0.0001 (EPS4)\n"); -+ user_dmax = EPS4; -+ } -+ p3d_set_env_dmax(user_dmax); -+ } -+ if (user_obj_tol_to_be_set) { -+ if (user_obj_tol < 0.0) { -+ printf("WARNING: Negative tolerance, tolerance is set to 0.0\n"); -+ user_obj_tol = 0.0; -+ } -+ p3d_set_env_object_tolerance(user_obj_tol); -+ } -+ -+ printf("Env dmax = %f\n",p3d_get_env_dmax()); -+ printf("Env Object tol = %f\n",p3d_get_env_object_tolerance()); -+ /* always set tolerance even if the user didn't specify any options -+ * it's possible that Kcd has calculated automaticly a dmax -+ */ -+ /* Normally p3d_col_set_tolerance(); is called when initialising -+ * the sliders, in case the sliders are not used we have to use -+ * p3d_col_set_tolerance() -+ */ -+ -+ //printf("MAX_DDLS %d\n", MAX_DDLS); -+ -+ // modif Juan -+#ifdef BIO -+ if (col_mode_to_be_set == p3d_col_mode_bio) { -+ bio_set_num_subrobot_AA(); -+ bio_set_num_subrobot_ligand(); -+ bio_set_bio_jnt_types(); -+ bio_set_bio_jnt_AAnumbers(); -+ bio_set_list_AA_first_jnt(); -+ bio_set_AAtotal_number(); -+ bio_set_nb_flexible_sc(); -+ bio_set_list_firstjnts_flexible_sc(); -+ if (XYZ_ROBOT->num_subrobot_ligand != -1) -+ bio_set_nb_dof_ligand(); -+#ifdef BIO_BALL -+ new BallEnergy(XYZ_ENV); -+ if(global_costSpace) -+ { -+ global_costSpace->addCost("BALLmmff94", -+ boost::bind(&BallEnergy::computeEnergy, XYZ_ENV->energyComputer, _1)); -+ global_costSpace->setCost("BALLmmff94"); -+ } -+#endif -+ } -+#endif -+ // fmodif Juan -+ -+#if defined(LIGHT_PLANNER) && defined(FK_CNTRT) -+ for(int i=0; i<XYZ_ENV->nr; i++) -+ { p3d_create_FK_cntrts(XYZ_ENV->robot[i]); } -+#endif -+ -+#ifdef P3D_CONSTRAINTS -+ // Modif Mokhtar Initialisation For Multisolutions constraints -+ p3d_init_iksol(XYZ_ROBOT->cntrt_manager); -+#endif -+ -+ /* creation du FORM main */ -+ -+ /* -+ * needs to be run after main form has been created -+ */ -+ if (scenario_set == TRUE) { -+ -+ p3d_rw_scenario_init_name(); -+ p3d_read_scenario(scenario); -+ -+ } -+ -+ //Set the robots to initial Pos if defined -+ for(i = 0; i < XYZ_ENV->nr; i++){ -+ if(!p3d_isNullConfig(XYZ_ENV->robot[i], XYZ_ENV->robot[i]->ROBOT_POS)){ -+ p3d_set_and_update_this_robot_conf(XYZ_ENV->robot[i], XYZ_ENV->robot[i]->ROBOT_POS); -+ } -+ } -+ //Exection Of Dlr Planner -+ // do{ -+ // DlrPlanner* planner = new DlrPlanner(dlrSaveFile); -+ // DlrParser parser(dlrReadFile, planner); -+ // if(parser.parse()){ -+ // planner->process(); -+ // }else{ -+ // sleep(2); -+ // } -+ // free(planner); -+ // }while(1); -+ /* go into loop */ -+ -+#if defined(LIGHT_PLANNER) && defined(PQP) -+ if(ENV.getBool(Env::startWithFKCntrt)) -+ { -+ p3d_rob* MyRobot = p3d_get_robot_by_name_containing ( ( char* ) "ROBOT" ); -+ deactivateCcCntrts(MyRobot,-1); -+ } -+#endif -+ -+#if defined(HRI_COSTSPACE) && defined(QT_GL) -+ if(grid_set) -+ { -+ std::cout << "Reading HRICS Grid " << grid_path << std::endl; -+ qt_load_HRICS_Grid(grid_path); -+ } -+#endif -+//#ifdef QT_GL -+// sem->release(); -+//#endif -+ -+ // double c, color[4]; -+ // srand(time(NULL)); -+ // c= rand()/((double)RAND_MAX+1); -+ // g3d_rgb_from_hue(c, color); -+ // g3d_set_win_floor_color(g3d_get_cur_win(), color[0], color[1], color[2]); -+ -+#if defined( LIGHT_PLANNER ) && !defined( QT_GL ) -+ if (manip_test_run) -+ { -+ printf("Test functions : ManipulationTestFunctions\n"); -+ new qtG3DWindow(); -+ -+#if defined( MOVE3D_CORE ) -+ // Creates the wrapper to the project -+ // Be carefull to initialize in the right thread -+ global_Project = new Project(new Scene(XYZ_ENV)); -+#endif -+ -+ ManipulationTestFunctions tests; -+ -+ if(!tests.runTest(manip_test_id)) -+ { -+ std::cout << "ManipulationTestFunctions::Fail" << std::endl; -+ } -+ } -+#endif -+ return 0; -+} -+ -+/* fonction de rappel des formats des arguments */ -+static void use(void) { -+ -+ printf("main : ERROR : wrong arguments !\n move3d -d data_directory -f file -sc scenario -s random_seed -c collision_detector -tol tolerance -dmax dist [-v size | -vol volume] -o -x -nkcdd\n"); -+ printf("collision_detector may be: icollide, vcollide, solid, kcd, kng, none\n"); -+ printf("(kng == kcd without gjk)\n"); -+ printf("-o: consider polyhedrons as objects (only for vcollide)\n"); -+ printf("-x: do filtering by robot body (default: don't filter)\n"); -+ printf("-v: (only with kcd) minimal relevant size (in 1 dimension) \n"); -+ printf("-dmax: for Vcollide & nkcdd => maximum penetration distance \n"); -+ printf(" KCD => artificial enlargement of the obstacles \n"); -+ printf("-tol: (only with kcd) object tolerance (enlarge objects for the collision checker) \n"); -+ printf("-vol: (only with kcd) minimal relevant size (volume) \n"); -+ printf("(internal note, kcd: volume of a box around a facet == (surface of box)^(3/2) )\n"); -+ printf("-nkcdd: (only with -c kcd) return only boolean reply, don't use distance \n"); -+ printf("-no-ccntrt: deactivate closed chain constraint at startup \n"); -+} -+ --- -1.7.9.5 - -- GitLab