diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleBase.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleBase.cpp index 354d1638df57ac5d16d44fa414eeed036c51084f..94036a4dcb7918c7e2069ec4cfbec1f7cd37080f 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleBase.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleBase.cpp @@ -116,6 +116,7 @@ namespace armarx auto guard = getGuard(); throwIfStateIsNot(RobotUnitState::InitializingComponent, __FUNCTION__); + cast_to_and_call(::armarx::RobotUnitModule::RobotData, _initVirtualRobot(), true); #define call_module_hook(Type) cast_to_and_call(::armarx::RobotUnitModule::Type, _preOnInitRobotUnit(), true) for_each_module(call_module_hook) diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.cpp index 7434e8d6106a7e78a0bb967dda713225bc3c48ef..08816b35aa02412acfa416d69f10916834f54152 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.cpp @@ -506,7 +506,7 @@ namespace armarx controlThreadId = std::this_thread::get_id(); } - void ControlThread::_postOnInitRobotUnit() + void ControlThread::_preOnInitRobotUnit() { try { diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.h b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.h index c732eb4828cb51a158f5b4a20027af1f958e710d..665f17f1c0416622cad7b412133b648acd35833e 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.h +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.h @@ -61,8 +61,8 @@ namespace armarx private: ///@see \ref ModuleBase::_preFinishControlThreadInitialization void _preFinishControlThreadInitialization(); - ///@see \ref ModuleBase::_postOnInitRobotUnit - void _postOnInitRobotUnit(); + ///@see \ref ModuleBase::_preOnInitRobotUnit + void _preOnInitRobotUnit(); // //////////////////////////////////////////////////////////////////////////////////////// // // ///////////////////////////////////// ice interface //////////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////////////// // diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControllerManagement.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControllerManagement.cpp index 6d5e841a5aa9befa7835f3110872e80c15894312..3b5e3bb28512b5d242a074db32cc6bcf84b97eb4 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControllerManagement.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControllerManagement.cpp @@ -677,7 +677,7 @@ namespace armarx nJointControllers.clear(); } - void ControllerManagement::_postOnInitRobotUnit() + void ControllerManagement::_preOnInitRobotUnit() { controllerCreateRobot = _module<RobotData>().cloneRobot(); } diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControllerManagement.h b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControllerManagement.h index 91300315ab9586e675a1535a1c79fa6ac8fe0ca0..08d197d027d251d6df530cf2ba1d44f8c3367d5f 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControllerManagement.h +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControllerManagement.h @@ -53,8 +53,8 @@ namespace armarx // ///////////////////////////////// RobotUnitModule hooks //////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////////////// // private: - /// @see ModuleBase::_postOnInitRobotUnit - void _postOnInitRobotUnit(); + /// @see ModuleBase::_preOnInitRobotUnit + void _preOnInitRobotUnit(); /// @see ModuleBase::_preFinishRunning void _preFinishRunning(); /// @see ModuleBase::_postFinishRunning diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleRobotData.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleRobotData.cpp index dc91877a6b095c9abb245cc3702e518bf72c079a..ab976c3e49eedc7e6c8ba5aebe6594b73f28609d 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleRobotData.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleRobotData.cpp @@ -74,8 +74,10 @@ namespace armarx return clone; } - void armarx::RobotUnitModule::RobotData::_preOnInitRobotUnit() + void armarx::RobotUnitModule::RobotData::_initVirtualRobot() { + std::lock_guard<std::mutex> guard {robotMutex}; + ARMARX_CHECK_IS_NULL(robot); robotNodeSetName = getProperty<std::string>("RobotNodeSetName").getValue(); robotProjectName = getProperty<std::string>("RobotFileNameProject").getValue(); robotFileName = getProperty<std::string>("RobotFileName").getValue(); diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleRobotData.h b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleRobotData.h index 35a474f1e93736b456f516f017af4a0af204fc4f..ad3f31798bd6f05e57f42681a0145eec23ee0798 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleRobotData.h +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleRobotData.h @@ -76,7 +76,7 @@ namespace armarx // //////////////////////////////////////////////////////////////////////////////////////// // private: /// @see ModuleBase::_preOnInitRobotUnit - void _preOnInitRobotUnit(); + void _initVirtualRobot(); // //////////////////////////////////////////////////////////////////////////////////////// // // /////////////////////////////////// Module interface /////////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////////////// // diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleSelfCollisionChecker.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleSelfCollisionChecker.cpp index 017015656ac4801422a8483058c0bee45f693bc1..4c345629add68e52cccad9b56b2b2db13167309d 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleSelfCollisionChecker.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleSelfCollisionChecker.cpp @@ -111,10 +111,6 @@ namespace armarx } } setSelfCollisionAvoidanceFrequency(getProperty<float>("SelfCollisionCheckFrequency").getValue()); - } - - void SelfCollisionChecker::_postOnInitRobotUnit() - { setSelfCollisionAvoidanceDistance(getProperty<float>("MinSelfDistance").getValue()); } diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleSelfCollisionChecker.h b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleSelfCollisionChecker.h index 7645cf87e3297e9e3087d44c44e52c2b187fd2bd..2ac3d7d1d07892403ada0a0d83320312109f2aa8 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleSelfCollisionChecker.h +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleSelfCollisionChecker.h @@ -82,8 +82,6 @@ namespace armarx private: /// @see ModuleBase::_preOnInitRobotUnit void _preOnInitRobotUnit(); - /// @see ModuleBase::_postOnInitRobotUnit - void _postOnInitRobotUnit(); /// @see ModuleBase::_postFinishControlThreadInitialization void _postFinishControlThreadInitialization(); /// @see ModuleBase::_preFinishRunning diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp index 9a963cd85985ab1533810ef145b254898809584a..8dd4ea34bbde1b5c3385b53f9b367792381410b4 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp @@ -485,6 +485,7 @@ namespace armarx void Units::_preOnInitRobotUnit() { + unitCreateRobot = _module<RobotData>().cloneRobot(); ARMARX_DEBUG << "add emergency stop master"; { emergencyStopMaster = new RobotUnitEmergencyStopMaster {&_module<ControlThread>(), getProperty<std::string>("EmergencyStopTopic").getValue()}; @@ -508,11 +509,6 @@ namespace armarx ARMARX_DEBUG << "add emergency stop master...done!"; } - void Units::_postOnInitRobotUnit() - { - unitCreateRobot = _module<RobotData>().cloneRobot(); - } - void Units::_postOnExitRobotUnit() { ARMARX_DEBUG << "remove EmergencyStopMaster"; diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.h b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.h index 692f2aa43a240686076e09a2b823f7b13a41edfb..f6667acfd771da85d6597307dba7f7a77399b1cb 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.h +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.h @@ -109,8 +109,6 @@ namespace armarx private: /// @see ModuleBase::_preOnInitRobotUnit void _preOnInitRobotUnit(); - /// @see ModuleBase::_postOnInitRobotUnit - void _postOnInitRobotUnit(); /// @see ModuleBase::_icePropertiesInitialized void _icePropertiesInitialized(); /// @see ModuleBase::_preFinishRunning