diff --git a/CMakeLists.txt b/CMakeLists.txt index 16f96a2c6044708e2e941d4bbb41d10614ca41ae..22991513c66cc410187dc37d04317adeef2c16b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,7 @@ ADD_REQUIRED_DEPENDENCY("hpp-rbprm >= 4.3") ADD_REQUIRED_DEPENDENCY("omniORB4 >= 4.1.4") ADD_REQUIRED_DEPENDENCY("hpp-affordance-corba") ADD_REQUIRED_DEPENDENCY("hpp-util >= 3") +ADD_REQUIRED_DEPENDENCY("hpp-pinocchio >= 4.3") set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/find-external/CDD") find_package(CDD REQUIRED) diff --git a/cmake b/cmake index 5c8c19f491f2c6f8488f5f37ff81d711d69dbb3f..61e5574a0615706aab06986f6aecf665ddc31141 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 5c8c19f491f2c6f8488f5f37ff81d711d69dbb3f +Subproject commit 61e5574a0615706aab06986f6aecf665ddc31141 diff --git a/idl/hpp/corbaserver/rbprm/rbprmbuilder.idl b/idl/hpp/corbaserver/rbprm/rbprmbuilder.idl index a339420f497a4b07a1f1211a288597dd4d98a3e8..82210bf73b437e2dc629ef9a2cd779ca8865dbc4 100644 --- a/idl/hpp/corbaserver/rbprm/rbprmbuilder.idl +++ b/idl/hpp/corbaserver/rbprm/rbprmbuilder.idl @@ -18,7 +18,7 @@ #ifndef HPP_RBPRM_CORBA_BUILDER_IDL # define HPP_RBPRM_CORBA_BUILDER_IDL -# include <hpp/corbaserver/common.idl> +# include <hpp/common.idl> module hpp { @@ -106,6 +106,10 @@ module hpp void setReferenceConfig(in floatSeq referenceConfig) raises (Error); + /// set the weights used when computing a postural task + void setPostureWeights(in floatSeq postureWeights) + raises (Error); + /// set a reference position of the end effector for the given ROM void setReferenceEndEffector(in string romName, in floatSeq ref) raises (Error); diff --git a/script/scenarios/demos/run.sh b/script/scenarios/demos/run.sh index c249455bcb37f8e2ae1c60795925cc6660ab54f3..6c19fae83f59f6c36f9314521e7fd7def6090e51 100755 --- a/script/scenarios/demos/run.sh +++ b/script/scenarios/demos/run.sh @@ -1,8 +1,8 @@ #!/bin/bash -gepetto-viewer-server & +gepetto-gui & hpp-rbprm-server & ipython -i --no-confirm-exit ./$1 -pkill -f 'gepetto-viewer-server' +pkill -f 'gepetto-gui' pkill -f 'hpp-rbprm-server' diff --git a/script/scenarios/demos/rund.sh b/script/scenarios/demos/rund.sh index eab7645220a9bb27f8fee067d65204a90e897868..bd7311a825b4b075321eafaadd5d31522f8f5c0c 100755 --- a/script/scenarios/demos/rund.sh +++ b/script/scenarios/demos/rund.sh @@ -1,6 +1,6 @@ #!/bin/bash -gepetto-viewer-server & +gepetto-gui & ipython -i --no-confirm-exit ./$1 -pkill -f 'gepetto-viewer-server' +pkill -f 'gepetto-gui' diff --git a/script/scenarios/sandbox/dynamic/tools.py b/script/scenarios/sandbox/dynamic/tools.py deleted file mode 100644 index 7205cd367cd5cb3d0e29226ef7416d807afdd0d6..0000000000000000000000000000000000000000 --- a/script/scenarios/sandbox/dynamic/tools.py +++ /dev/null @@ -1,43 +0,0 @@ - -def addSphere(viewer,color, pos,rotation = None,name=None,radius=0.01): - gui = viewer.client.gui - if name==None: - i=0 - name='sphere_'+str(i) - while name in gui.getNodeList(): - i=i+1 - name='sphere_'+str(i) - gui.addSphere(name,radius,color) - gui.setVisibility(name,"ALWAYS_ON_TOP") - gui.addToGroup(name,viewer.sceneName) - if len(pos)==7: - rotation=pos[3:7] - pos=pos[0:3] - if rotation==None: - rotation=[1,0,0,0] - else: - viewer.addLandmark(name,0.1) - gui.applyConfiguration(name,pos+rotation) - gui.refresh() - -def moveObject(viewer,pos,rotation=[1,0,0,0]): - viewer.client.gui.applyConfiguration(name,pos+rotation) - viewer.client.gui.refresh() - -def addVector(viewer,rbprmBuilder,color,v,name=None): - gui = viewer.client.gui - if name==None: - i=0 - name='vector_'+str(i) - while name in gui.getNodeList(): - i=i+1 - name='sphere_'+str(i) - quat = rbprmBuilder.quaternionFromVector(v[3:6]) - v[3:7] = quat[::] - gui.addArrow(name,0.02,1,color) - gui.addToGroup(name,viewer.sceneName) - gui.setVisibility(name,"ON") - gui.applyConfiguration(name,v) - gui.refresh() - - diff --git a/script/tools/constraint_to_dae.py b/script/tools/constraint_to_dae.py index 2776f71cee59e893d6576c493083408fadc3702d..985024b377d4d898090d01a788ad279e688c4424 100644 --- a/script/tools/constraint_to_dae.py +++ b/script/tools/constraint_to_dae.py @@ -1,6 +1,6 @@ import subprocess import os -DIR = "/local/fernbac/bench_iros18/constraints_obj/" +DIR = "/local/fernbach/qhull/constraints_obj/" STAB_NAME = "stability" CONS_NAME = "constraints" KIN_NAME = "kinematics" @@ -10,8 +10,9 @@ BEZIER_NAME = "bezier_wp" def generate_off_file(name): os.remove(DIR+name+"_.off") if os.path.isfile(DIR+name+"_.off") else None os.remove(DIR+name+".off") if os.path.isfile(DIR+name+".off") else None - - cmd = "cat "+DIR+name+".txt | qhalf Fp | qconvex o >> "+DIR+name+"_.off" + + #cmd = "cat "+DIR+name+".txt | qhalf Fp | qconvex o >> "+DIR+name+"_.off" + cmd = "cat "+DIR+name+".txt | qhalf FP | qconvex Ft >> "+DIR+name+"_.off" try : subprocess.check_output(cmd,shell=True) print "qHull OK for file : "+name+".txt" diff --git a/script/tools/createActionDRP.py b/script/tools/createActionDRP.py new file mode 100644 index 0000000000000000000000000000000000000000..36d5cb2bbd0d368fe96b69320a95b93a13411e96 --- /dev/null +++ b/script/tools/createActionDRP.py @@ -0,0 +1,138 @@ +# Create actions YAML file + +import yaml +#import anymal_darpa_Asil as drp + +def autoBaseFootstep(configs,fullbody,filename): + initial = """\ +steps: + + - step: + - base_auto: + height: + average_linear_velocity: 0.5 + + - step: + - base_auto: + average_linear_velocity: 0.5 + - footstep: + name: RF_LEG + target: + frame: odom + position: + + - step: + - base_auto: + average_linear_velocity: 0.5 + + - step: + - base_auto: + average_linear_velocity: 0.5 + - footstep: + name: LH_LEG + target: + frame: odom + position: + + - step: + - base_auto: + average_linear_velocity: 0.5 + - step: + - base_auto: + average_linear_velocity: 0.5 + - footstep: + name: LF_LEG + target: + frame: odom + position: + + - step: + - base_auto: + average_linear_velocity: 0.5 + + - step: + - base_auto: + average_linear_velocity: 0.5 + - footstep: + name: RH_LEG + target: + frame: odom + position: + + - step: + - base_auto: + average_linear_velocity: 0.5 + """ + data = yaml.load(initial) + + LF_footPos = fullbody.getEffectorPosition("LFleg", configs[0]) + LH_footPos = fullbody.getEffectorPosition("LHleg", configs[0]) + RF_footPos = fullbody.getEffectorPosition("RFleg", configs[0]) + RH_footPos = fullbody.getEffectorPosition("RHleg", configs[0]) + + data['steps'][0]['step'][0]['base_auto']['height'] = configs[0][2] + data['steps'][1]['step'][1]['footstep']['target']['position'] = RF_footPos[0] + data['steps'][3]['step'][1]['footstep']['target']['position'] = LH_footPos[0] + data['steps'][5]['step'][1]['footstep']['target']['position'] = LF_footPos[0] + data['steps'][7]['step'][1]['footstep']['target']['position'] = RH_footPos[0] + + + for i in range(1, len(configs)): + step = """\ + - step: + - base_auto: + average_linear_velocity: 0.5 + - footstep: + name: + target: + frame: odom + position: + + - step: + - base_auto: + average_linear_velocity: 0.5 + """ + step_data = yaml.load(step) + + if i == (len(configs)-1): + footPos = fullbody.getEffectorPosition("RFleg", configs[i]) + step_data[0]['step'][1]['footstep']['name'] = 'RF_LEG' + step_data[0]['step'][1]['footstep']['target']['position'] = footPos[0] + + footPos = fullbody.getEffectorPosition("LHleg", configs[i]) + step_data[0]['step'][1]['footstep']['name'] = 'LH_LEG' + step_data[0]['step'][1]['footstep']['target']['position'] = footPos[0] + + footPos = fullbody.getEffectorPosition("LFleg", configs[i]) + step_data[0]['step'][1]['footstep']['name'] = 'LF_LEG' + step_data[0]['step'][1]['footstep']['target']['position'] = footPos[0] + + footPos = fullbody.getEffectorPosition("RHleg", configs[i]) + step_data[0]['step'][1]['footstep']['name'] = 'RH_LEG' + step_data[0]['step'][1]['footstep']['target']['position'] = footPos[0] + + movedLeg = fullbody.getContactsVariations(i-1, i) + if movedLeg[0] == 'LFleg': + footPos = fullbody.getEffectorPosition("LFleg", configs[i]) + step_data[0]['step'][1]['footstep']['name'] = 'LF_LEG' + step_data[0]['step'][1]['footstep']['target']['position'] = footPos[0] + elif movedLeg[0] == 'LHleg': + footPos = fullbody.getEffectorPosition("LHleg", configs[i]) + step_data[0]['step'][1]['footstep']['name'] = 'LH_LEG' + step_data[0]['step'][1]['footstep']['target']['position'] = footPos[0] + elif movedLeg[0] == 'RFleg': + footPos = fullbody.getEffectorPosition("RFleg", configs[i]) + step_data[0]['step'][1]['footstep']['name'] = 'RF_LEG' + step_data[0]['step'][1]['footstep']['target']['position'] = footPos[0] + elif movedLeg[0] == 'RHleg': + footPos = fullbody.getEffectorPosition("RHleg", configs[i]) + step_data[0]['step'][1]['footstep']['name'] = 'RH_LEG' + step_data[0]['step'][1]['footstep']['target']['position'] = footPos[0] + + + + data['steps'].extend(step_data) + stream = file(filename+'.yaml', 'w') + yaml.dump(data, stream, default_flow_style=False) + print('saved .yaml file as '+filename+'.yaml') + diff --git a/script/tools/display_tools.py b/script/tools/display_tools.py index 0dac0b5bcf00bddebbb289c12237c0a8ce916179..918ceaecf09e2404aca3a35e781d1ad8ac0d867d 100644 --- a/script/tools/display_tools.py +++ b/script/tools/display_tools.py @@ -16,3 +16,25 @@ def displayContactSequence(r,configs,pause=1.): for i in range(0,len(configs)): r(configs[i]) time.sleep(pause) + +def moveObject(viewer,pos,rotation=[1,0,0,0]): + viewer.client.gui.applyConfiguration(name,pos+rotation) + viewer.client.gui.refresh() + +def addVector(viewer,rbprmBuilder,color,v,name=None): + gui = viewer.client.gui + if name==None: + i=0 + name='vector_'+str(i) + while name in gui.getNodeList(): + i=i+1 + name='sphere_'+str(i) + quat = rbprmBuilder.quaternionFromVector(v[3:6]) + v[3:7] = quat[::] + gui.addArrow(name,0.02,1,color) + gui.addToGroup(name,viewer.sceneName) + gui.setVisibility(name,"ON") + gui.applyConfiguration(name,v) + gui.refresh() + + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 786dbdbf630ca66a74043fff6ea3651060801e40..e92f9596c1697ef24ed5f30d9b53f8eb55d9b342 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,10 +20,6 @@ SET(IDL_SOURCES rbprmbuilder ) -SET(HPP_CORBASERVER_IDL_SOURCES - common -) - OMNIIDL_INCLUDE_DIRECTORIES( ${HPP_CORBASERVER_DATAROOTDIR}/idl ${CMAKE_SOURCE_DIR}/idl ) @@ -33,46 +29,33 @@ FINDPYTHON(2.7 EXACT REQUIRED) INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/src) FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hpp/corbaserver/rbprm) -FOREACH(IDL ${IDL_SOURCES}) - GENERATE_IDL_CPP (${IDL} - ${CMAKE_SOURCE_DIR}/idl/hpp/corbaserver/rbprm - ) - GENERATE_IDL_PYTHON (${IDL} - ${CMAKE_SOURCE_DIR}/idl/hpp/corbaserver/rbprm - ) -ENDFOREACH() FOREACH(IDL ${IDL_SOURCES}) GENERATE_IDL_CPP (hpp/corbaserver/rbprm/${IDL} - ${CMAKE_SOURCE_DIR}/idl/hpp/corbaserver/rbprm) - GENERATE_IDL_PYTHON (hpp/corbaserver/rbprm/${IDL} - ${CMAKE_SOURCE_DIR}/idl/hpp/corbaserver/rbprm) + ${CMAKE_SOURCE_DIR}/idl/hpp/corbaserver/rbprm + HEADER_SUFFIX -idl.hh) + GENERATE_IDL_PYTHON (${IDL} + ${CMAKE_SOURCE_DIR}/idl/hpp/corbaserver/rbprm + ENABLE_DOCSTRING + STUBS hpp_stubs.rbprm + ARGUMENTS + -Wbmodules=hpp_idl + -Wbextern=common:hpp_stubs + ) INSTALL( - FILES ${CMAKE_CURRENT_BINARY_DIR}/hpp/corbaserver/rbprm/${IDL}.hh + FILES ${CMAKE_CURRENT_BINARY_DIR}/hpp/corbaserver/rbprm/${IDL}-idl.hh DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hpp/corbaserver/rbprm) - INSTALL( - FILES ${CMAKE_CURRENT_BINARY_DIR}/hpp/corbaserver/rbprm/${IDL}_idl.py - DESTINATION ${PYTHON_SITELIB}/hpp/corbaserver/rbprm) -ENDFOREACH() - -FOREACH(IDL ${HPP_CORBASERVER_IDL_SOURCES}) - GENERATE_IDL_CPP (${IDL} - ${HPP_CORBASERVER_DATAROOTDIR}/idl/hpp/corbaserver - ) - GENERATE_IDL_PYTHON (${IDL} - ${HPP_CORBASERVER_DATAROOTDIR}/idl/hpp/corbaserver - ) - INSTALL(FILES - ${CMAKE_CURRENT_BINARY_DIR}/${IDL}_idl.py - DESTINATION ${PYTHON_SITELIB}/hpp/corbaserver/rbprm) ENDFOREACH() +INSTALL( + DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hpp_idl/hpp/corbaserver/rbprm + DESTINATION ${PYTHON_SITELIB}/hpp_idl/hpp/corbaserver) +INSTALL( + DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hpp_stubs/rbprm + DESTINATION ${PYTHON_SITELIB}/hpp_stubs) ADD_LIBRARY(${LIBRARY_NAME} SHARED - common.hh - commonSK.cc - ${CMAKE_CURRENT_BINARY_DIR}/hpp/corbaserver/rbprm/rbprmbuilder.hh - ${CMAKE_CURRENT_BINARY_DIR}/hpp/corbaserver/rbprm/rbprmbuilderSK.cc + ${ALL_IDL_CPP_STUBS} rbprmbuilder.impl.cc rbprmbuilder.impl.hh server.cc @@ -123,5 +106,6 @@ INSTALL( # Stand alone corba server ADD_EXECUTABLE (hpp-rbprm-server hpp-rbprm-corba.cc) TARGET_LINK_LIBRARIES (hpp-rbprm-server ${LIBRARY_NAME} hpp-rbprm) +PKG_CONFIG_USE_DEPENDENCY(hpp-rbprm-server hpp-pinocchio) INSTALL (TARGETS hpp-rbprm-server DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/src/hpp/corbaserver/rbprm/__init__.py b/src/hpp/corbaserver/rbprm/__init__.py index 5191ae20a4eaabf4ef102cf57bff1d81ffb0d5f4..32c1be5fec19deb386b588745a7a265145f5e529 100644 --- a/src/hpp/corbaserver/rbprm/__init__.py +++ b/src/hpp/corbaserver/rbprm/__init__.py @@ -1,7 +1 @@ -import omniORB -omniORB.updateModule("hpp.corbaserver.rbprm") - -import rbprmbuilder_idl - from client import Client - diff --git a/src/hpp/corbaserver/rbprm/client.py b/src/hpp/corbaserver/rbprm/client.py index eb3dd49d4fa17b8a06446a53f7627b89835c711d..1e0fc144ffeefb42d8c955ee9cf23d11bb32767a 100755 --- a/src/hpp/corbaserver/rbprm/client.py +++ b/src/hpp/corbaserver/rbprm/client.py @@ -17,51 +17,29 @@ # hpp-manipulation-corba. If not, see # <http://www.gnu.org/licenses/>. -from omniORB import CORBA -import CosNaming +from hpp.corbaserver.client import Client as _Parent +from hpp_idl.hpp.corbaserver.rbprm import RbprmBuilder -from hpp.corbaserver.rbprm import RbprmBuilder - -class CorbaError(Exception): - """ - Raised when a CORBA error occurs. - """ - def __init__(self, value): - self.value = value - def __str__(self): - return repr(self.value) - -class Client: +class Client (_Parent): """ Connect and create clients for hpp-rbprm library. """ - def __init__(self): + + defaultClients = { + 'rbprmbuilder' : RbprmBuilder, + } + + def __init__(self, url = None, context = "corbaserver"): """ Initialize CORBA and create default clients. + :param url: URL in the IOR, corbaloc, corbalocs, and corbanames formats. + For a remote corba server, use + url = "corbaloc:iiop:<host>:<port>/NameService" """ - import sys - self.orb = CORBA.ORB_init (sys.argv, CORBA.ORB_ID) - obj = self.orb.resolve_initial_references("NameService") - self.rootContext = obj._narrow(CosNaming.NamingContext) - if self.rootContext is None: - raise CorbaError ('failed to narrow the root context') - - # client of Rbprm interface - name = [CosNaming.NameComponent ("hpp", "corbaserver"), - CosNaming.NameComponent ("rbprm", "rbprmbuilder")] - - try: - obj = self.rootContext.resolve (name) - except CosNaming.NamingContext.NotFound, ex: - raise CorbaError ('failed to find rbprm service.') - try: - client = obj._narrow (RbprmBuilder) - except KeyError: - raise CorbaError ('invalid service name rbprm') - - if client is None: - # This happens when stubs from client and server are not synchronized. - raise CorbaError ( - 'failed to narrow client for service rbprm') - self.rbprm = client + self._initOrb (url) + self._makeClients ("rbprm", self.defaultClients, context) + # self.rbprmbuilder is created by self._makeClients + # The old code stored the object as self.rbprm + # Make it backward compatible. + self.rbprm = self.rbprmbuilder diff --git a/src/hpp/corbaserver/rbprm/rbprmfullbody.py b/src/hpp/corbaserver/rbprm/rbprmfullbody.py index 7a177f30dee9f8bbea94f238889542325e75a53e..10b07a8782ab946892feaff16a2e213f2e84cfb1 100755 --- a/src/hpp/corbaserver/rbprm/rbprmfullbody.py +++ b/src/hpp/corbaserver/rbprm/rbprmfullbody.py @@ -18,7 +18,6 @@ from hpp.corbaserver.rbprm import Client as RbprmClient from hpp.corbaserver.robot import Robot -import hpp.gepetto.blender.exportmotion as em from numpy import array, matrix from hpp_spline import bezier @@ -817,6 +816,7 @@ class FullBody (Robot): # \param configurations list of configurations to save # \param filename outputfile where to export the motion def exportMotion(self, viewer, configurations, filename): + import hpp.gepetto.blender.exportmotion as em em.exportStates(viewer, self.client.robot, configurations, filename) ## Export motion to a format readable by the blender @@ -843,6 +843,11 @@ class FullBody (Robot): def setReferenceConfig(self,referenceConfig): return self.clientRbprm.rbprm.setReferenceConfig(referenceConfig) + ## set the weights used when computing a postural task + # \param postureWeights dofArray, must be of same size as device->numberDof + def setPostureWeights(self,postureWeights): + return self.clientRbprm.rbprm.setPostureWeights(postureWeights) + ## return the time at the given state index (in the path computed during the first phase) # \param stateId : index of the state def getTimeAtState(self,stateId): diff --git a/src/rbprmbuilder.impl.cc b/src/rbprmbuilder.impl.cc index b82a0a66a9ab0afeef0834642922e01bf732dc72..7d8406fb1c0e5b3debf97158ad65c5d99f5385d8 100644 --- a/src/rbprmbuilder.impl.cc +++ b/src/rbprmbuilder.impl.cc @@ -17,7 +17,7 @@ //#include <hpp/fcl/math/transform.h> #include <hpp/util/debug.hh> -#include <hpp/corbaserver/rbprm/rbprmbuilder.hh> +#include <hpp/corbaserver/rbprm/rbprmbuilder-idl.hh> #include "rbprmbuilder.impl.hh" #include "hpp/rbprm/rbprm-device.hh" #include "hpp/rbprm/rbprm-validation.hh" @@ -633,6 +633,13 @@ namespace hpp { fullBody()->referenceConfig(config); } + void RbprmBuilder::setPostureWeights(const hpp::floatSeq& postureWeights) throw (hpp::Error){ + if(!fullBodyLoaded_) + throw Error ("No full body robot was loaded"); + Configuration_t config(dofArrayToConfig (fullBody()->device_->numberDof(), postureWeights)); + fullBody()->postureWeights(config); + } + void RbprmBuilder::setReferenceEndEffector(const char* romName, const hpp::floatSeq &ref) throw(hpp::Error){ std::string name (romName); hpp::pinocchio::RbPrmDevicePtr_t device = boost::dynamic_pointer_cast<hpp::pinocchio::RbPrmDevice>(problemSolver()->robot ()); @@ -2552,20 +2559,21 @@ namespace hpp { State s2 = lastStatesComputed_[size_t(state2)]; hppDout(notice,"state1 = r(["<<pinocchio::displayConfig(s1.configuration_)<<")]"); hppDout(notice,"state2 = r(["<<pinocchio::displayConfig(s2.configuration_)<<")]"); - core::PathVectorPtr_t resPath = core::PathVector::create(fullBody()->device_->configSize(), fullBody()->device_->numberDof()); + //core::PathVectorPtr_t resPath = core::PathVector::create(fullBody()->device_->configSize(), fullBody()->device_->numberDof()); std::vector<CORBA::Short> pathsIds; core::PathPtr_t p1 = (*functor)(fullBody(),problemSolver(), paths[comTraj], - s1,s2, numOptimizations,true); + s1,s2, numOptimizations,false); hppDout(notice,"effectorRRT done."); // reduce path to remove extradof - core::segment_t interval(0, p1->initial().rows()-1); + /*core::segment_t interval(0, p1->initial().rows()-1); core::segments_t intervals; intervals.push_back(interval); core::segments_t velIntervals (1, core::segment_t (0, fullBody()->device_->numberDof())); PathPtr_t reducedPath = core::SubchainPath::create(p1,intervals, velIntervals); resPath->appendPath(reducedPath); - pathsIds.push_back((CORBA::Short)problemSolver()->addPath(resPath)); + */ + pathsIds.push_back((CORBA::Short)AddPath(p1,problemSolver())); hpp::floatSeq* dofArray = new hpp::floatSeq(); dofArray->length((_CORBA_ULong)pathsIds.size()); diff --git a/src/rbprmbuilder.impl.hh b/src/rbprmbuilder.impl.hh index 9e9ff7b3e93036aad80766a16f18ea47984945e9..25d2ca5b23ab5e3dc848cff02273fffff4531063 100644 --- a/src/rbprmbuilder.impl.hh +++ b/src/rbprmbuilder.impl.hh @@ -20,7 +20,7 @@ # include <hpp/core/problem-solver.hh> # include <hpp/core/path.hh> -# include "rbprmbuilder.hh" +# include "hpp/corbaserver/rbprm/rbprmbuilder-idl.hh" # include <hpp/rbprm/rbprm-device.hh> # include <hpp/rbprm/rbprm-fullbody.hh> # include <hpp/rbprm/rbprm-shooter.hh> @@ -196,6 +196,7 @@ namespace hpp { void setStaticStability(const bool staticStability) throw (hpp::Error); void setReferenceConfig(const hpp::floatSeq &referenceConfig) throw (hpp::Error); + void setPostureWeights(const hpp::floatSeq &postureWeights) throw (hpp::Error); void setReferenceEndEffector(const char* romName, const hpp::floatSeq &ref) throw(hpp::Error); virtual void setFilter(const hpp::Names_t& roms) throw (hpp::Error);