diff --git a/CMakeLists.txt b/CMakeLists.txt index cd15ab478ba627b71a3eea5fa1159e6d5cbf9619..a0f73bd4fe3434516a9528fe308fe8c2c25ce29f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,10 +16,15 @@ depends_on_armarx_package(ArmarXGui "OPTIONAL") set(ArmarX_Simox_VERSION 2.3.16) +find_package(Simox ${ArmarX_Simox_VERSION} QUIET) +if (Simox_FOUND) + setupSimoxExternalLibraries() +endif() + add_subdirectory(source) list(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS "simox") install_project() -add_subdirectory(scenarios) \ No newline at end of file +add_subdirectory(scenarios) diff --git a/source/RobotAPI/components/DebugDrawer/CMakeLists.txt b/source/RobotAPI/components/DebugDrawer/CMakeLists.txt index 0b1f1c08e388326ead4f3b1eab0deea6e7d00817..80523e46f0dff7b0804e34279b300b3316e165ec 100644 --- a/source/RobotAPI/components/DebugDrawer/CMakeLists.txt +++ b/source/RobotAPI/components/DebugDrawer/CMakeLists.txt @@ -7,7 +7,7 @@ armarx_build_if(Eigen3_FOUND "Eigen3 not available") armarx_build_if(Simox_FOUND "Simox-VirtualRobot not available") if (Eigen3_FOUND AND Simox_FOUND) - + setupSimoxExternalLibraries() include_directories( ${Eigen3_INCLUDE_DIR} ${Simox_INCLUDE_DIRS} diff --git a/source/RobotAPI/components/DebugDrawer/DebugDrawerComponent.cpp b/source/RobotAPI/components/DebugDrawer/DebugDrawerComponent.cpp index 7b109f0b52970e87ffa614756e9a5d9ab8d9c847..e3d50b64c1652f5ec1ccb8e706f0a3c3ea59f76e 100644 --- a/source/RobotAPI/components/DebugDrawer/DebugDrawerComponent.cpp +++ b/source/RobotAPI/components/DebugDrawer/DebugDrawerComponent.cpp @@ -23,6 +23,8 @@ #include "DebugDrawerComponent.h" + +#include <VirtualRobot/VirtualRobot.h> #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h> #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualization.h> #include <Inventor/nodes/SoUnits.h> @@ -1387,7 +1389,7 @@ namespace armarx d.layerName = layerName; d.name = robotName; - for (auto & it : configuration) + for (auto& it : configuration) { d.configuration[it.first] = it.second; } @@ -1434,7 +1436,7 @@ namespace armarx void DebugDrawerComponent::clearAll(const Ice::Current&) { - for (auto & i : layers) + for (auto& i : layers) { clearLayer(i.first); } @@ -1467,57 +1469,57 @@ namespace armarx auto& layer = layers.at(layerName); - for (const auto & i : layer.addedCoordVisualizations) + for (const auto& i : layer.addedCoordVisualizations) { removePoseVisu(layerName, i.first); } - for (const auto & i : layer.addedLineVisualizations) + for (const auto& i : layer.addedLineVisualizations) { removeLineVisu(layerName, i.first); } - for (const auto & i : layer.addedBoxVisualizations) + for (const auto& i : layer.addedBoxVisualizations) { removeBoxVisu(layerName, i.first); } - for (const auto & i : layer.addedTextVisualizations) + for (const auto& i : layer.addedTextVisualizations) { removeTextVisu(layerName, i.first); } - for (const auto & i : layer.addedSphereVisualizations) + for (const auto& i : layer.addedSphereVisualizations) { removeSphereVisu(layerName, i.first); } - for (const auto & i : layer.addedCylinderVisualizations) + for (const auto& i : layer.addedCylinderVisualizations) { removeCylinderVisu(layerName, i.first); } - for (const auto & i : layer.addedPointCloudVisualizations) + for (const auto& i : layer.addedPointCloudVisualizations) { removePointCloudVisu(layerName, i.first); } - for (const auto & i : layer.addedPolygonVisualizations) + for (const auto& i : layer.addedPolygonVisualizations) { removePolygonVisu(layerName, i.first); } - for (const auto & i : layer.addedArrowVisualizations) + for (const auto& i : layer.addedArrowVisualizations) { removeArrowVisu(layerName, i.first); } - for (const auto & i : layer.addedRobotVisualizations) + for (const auto& i : layer.addedRobotVisualizations) { removeRobotVisu(layerName, i.first); } - for (const auto & i : layer.addedCustomVisualizations) + for (const auto& i : layer.addedCustomVisualizations) { removeCustomVisu(layerName, i.first); } @@ -1894,7 +1896,7 @@ namespace armarx ScopedRecursiveLockPtr l = getScopedVisuLock(); StringSequence seq {}; - for (const auto & layer : layers) + for (const auto& layer : layers) { seq.push_back(layer.first); } @@ -1907,7 +1909,7 @@ namespace armarx ::armarx::LayerInformationSequence seq {}; ScopedRecursiveLockPtr l = getScopedVisuLock(); - for (const auto & layer : layers) + for (const auto& layer : layers) { int count = layer.second.addedCoordVisualizations.size() + layer.second.addedLineVisualizations.size() + @@ -2030,4 +2032,4 @@ namespace armarx removeColoredPointCloudVisu(DEBUG_LAYER_NAME, pointCloudName); } -}//namespace armarx \ No newline at end of file +}//namespace armarx diff --git a/source/RobotAPI/components/RobotState/CMakeLists.txt b/source/RobotAPI/components/RobotState/CMakeLists.txt index fa39860ac77df6f7e32fd8d86392cd06ba2537b6..246213dd5994fd1a196ebbcb087962382581b6b3 100644 --- a/source/RobotAPI/components/RobotState/CMakeLists.txt +++ b/source/RobotAPI/components/RobotState/CMakeLists.txt @@ -1,8 +1,7 @@ -armarx_set_target("Core Library: ArmarXCoreRobotStateComponent") +armarx_set_target("RobotAPI Library: RobotStateComponent") find_package(Eigen3 QUIET) find_package(Simox ${ArmarX_Simox_VERSION} QUIET) - armarx_build_if(Eigen3_FOUND "Eigen3 not available") armarx_build_if(Simox_FOUND "Simox-VirtualRobot not available") diff --git a/source/RobotAPI/components/units/HapticObserver.cpp b/source/RobotAPI/components/units/HapticObserver.cpp index ed10cc0355424c71e974b67d624b754d92991d7d..2ad4e48737c6b673804c79d5b6e90b0fd8e02d8b 100644 --- a/source/RobotAPI/components/units/HapticObserver.cpp +++ b/source/RobotAPI/components/units/HapticObserver.cpp @@ -39,7 +39,6 @@ void HapticObserver::onInitObserver() offerConditionCheck("larger", new ConditionCheckLarger()); offerConditionCheck("equals", new ConditionCheckEquals()); offerConditionCheck("smaller", new ConditionCheckSmaller()); - } void HapticObserver::onConnectObserver() @@ -55,7 +54,14 @@ void HapticObserver::onExitObserver() void HapticObserver::reportSensorValues(const std::string& device, const std::string& name, const armarx::MatrixFloatBasePtr& values, const armarx::TimestampBasePtr& timestamp, const Ice::Current&) { ScopedLock lock(dataMutex); + MatrixFloatPtr matrix = MatrixFloatPtr::dynamicCast(values); + if (matrix->cols == 0) + { + // Empty matrix received, silently ignore + return; + } + TimestampVariantPtr timestampPtr = TimestampVariantPtr::dynamicCast(timestamp); Eigen::MatrixXf eigenMatrix = matrix->toEigen(); float max = eigenMatrix.maxCoeff();