From 55d6cd838c3f33f288344d563d69956695a9ea11 Mon Sep 17 00:00:00 2001 From: Christian Dreher <c.dreher@kit.edu> Date: Thu, 11 May 2023 20:52:50 +0200 Subject: [PATCH] fix: Hotfixes required to run panda --- .../RobotUnitModules/RobotUnitModuleControlThread.cpp | 6 ++++++ .../RobotUnit/RobotUnitModules/RobotUnitModuleDevices.cpp | 4 ++-- .../RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp | 7 ++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.cpp index 5d7d7d01e..71d4b206c 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleControlThread.cpp @@ -513,7 +513,13 @@ namespace armarx::RobotUnitModule rtGetThreadTimingsSensorDevice().rtMarkRtReadSensorDeviceValuesStart(); for (const SensorDevicePtr& device : rtGetSensorDevices()) { + if (device) + { device->rtReadSensorValues(sensorValuesTimestamp, timeSinceLastIteration); + } + else{ + ARMARX_ERROR << "Device is null!"; + } } DevicesAttorneyForControlThread::UpdateRobotWithSensorValues(this, rtRobot, rtRobotNodes); rtPostReadSensorDeviceValues(sensorValuesTimestamp, timeSinceLastIteration); diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleDevices.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleDevices.cpp index c29c7ce2d..d5cb2118a 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleDevices.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleDevices.cpp @@ -469,8 +469,8 @@ namespace armarx::RobotUnitModule // this device will be used by the PlatformUnit to make the robot's global pose // available to e.g. the NJointControllers. - addSensorDevice(std::make_shared<GlobalRobotPoseCorrectionSensorDevice>()); - addSensorDevice(std::make_shared<GlobalRobotLocalizationSensorDevice>()); + //addSensorDevice(std::make_shared<GlobalRobotPoseCorrectionSensorDevice>()); + //addSensorDevice(std::make_shared<GlobalRobotLocalizationSensorDevice>()); } void Devices::_postFinishDeviceInitialization() diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp index 80efce08a..8dce4789a 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp @@ -426,7 +426,7 @@ namespace armarx::RobotUnitModule void Units::initializeLocalizationUnit() { - ARMARX_DEBUG << "initializeLocalizationUnit"; + ARMARX_DEBUG << "initializeLocalizationUnit: " << _module<RobotData>().getRobotPlatformName(); throwIfInControlThread(BOOST_CURRENT_FUNCTION); using UnitT = LocalizationSubUnit; @@ -440,6 +440,11 @@ namespace armarx::RobotUnitModule return; } + if (_module<Devices>().getSensorDevices().count(_module<RobotData>().getRobotPlatformName()) == 0) + { + return; + } + ARMARX_DEBUG << "Getting device SensorValueHolonomicPlatformRelativePosition"; const SensorDevicePtr& sensorDeviceRelativePosition = _module<Devices>().getSensorDevices().at(_module<RobotData>().getRobotPlatformName()); ARMARX_CHECK_EXPRESSION(sensorDeviceRelativePosition->getSensorValue()->asA<SensorValueHolonomicPlatformRelativePosition>()); -- GitLab