diff --git a/.gitignore b/.gitignore index c53649ddde0067e3c77aa3809a2cbc482b67d4ab..36b9b1d57de5e45d1cf4ca22dac09aa0619b02fc 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,5 @@ data/dbdump/ # Generated Scenario Files scenarios/*/startScenario.sh scenarios/*/stopScenario.sh +scenarios/*/startGui.sh diff --git a/interface/slice/units/HapticUnit.ice b/interface/slice/units/HapticUnit.ice index 51be7139e96ae67cf2b48bd62d14094a4d851967..adcba86504049b042850b8b419368cfbe33f03ca 100644 --- a/interface/slice/units/HapticUnit.ice +++ b/interface/slice/units/HapticUnit.ice @@ -29,6 +29,7 @@ #include <core/BasicTypes.ice> #include <observers/VariantBase.ice> #include <observers/Matrix.ice> +#include <observers/Timestamp.ice> #include <observers/ObserverInterface.ice> #include <robotstate/RobotState.ice> @@ -40,7 +41,7 @@ module armarx interface HapticUnitListener { - void reportSensorValues(string type, MatrixFloatBase values); + void reportSensorValues(string device, string name, MatrixFloatBase values, TimestampBase timestamp); }; interface HapticUnitObserverInterface extends ObserverInterface, HapticUnitListener diff --git a/source/RobotAPI/armarx-objects/WeissHapticSensorListener/WeissHapticSensorListener.cpp b/source/RobotAPI/armarx-objects/WeissHapticSensorListener/WeissHapticSensorListener.cpp index 80bd04d05aa08ddb997ca632f329781b27a60ff1..5e2ddaeb4920ebc0175c3a451f28f11b7f5ee5e2 100644 --- a/source/RobotAPI/armarx-objects/WeissHapticSensorListener/WeissHapticSensorListener.cpp +++ b/source/RobotAPI/armarx-objects/WeissHapticSensorListener/WeissHapticSensorListener.cpp @@ -57,7 +57,7 @@ PropertyDefinitionsPtr WeissHapticSensorListener::createPropertyDefinitions() getConfigIdentifier())); } -void armarx::WeissHapticSensorListener::reportSensorValues(const std::string& type, const armarx::MatrixFloatBasePtr& values, const Ice::Current&) +void armarx::WeissHapticSensorListener::reportSensorValues(const std::string& device, const std::string& name, const armarx::MatrixFloatBasePtr& values, const armarx::TimestampBasePtr& timestamp, const Ice::Current&) { ARMARX_LOG << deactivateSpam(1) << "WeissHapticSensorListener::reportSensorValues" << MatrixFloatPtr::dynamicCast(values)->toEigen(); diff --git a/source/RobotAPI/armarx-objects/WeissHapticSensorListener/WeissHapticSensorListener.h b/source/RobotAPI/armarx-objects/WeissHapticSensorListener/WeissHapticSensorListener.h index 2287e9060a7aecbad51b90976a7b0f15b7b931c6..11b773cb28684d48825035af867ec7feeca92b53 100644 --- a/source/RobotAPI/armarx-objects/WeissHapticSensorListener/WeissHapticSensorListener.h +++ b/source/RobotAPI/armarx-objects/WeissHapticSensorListener/WeissHapticSensorListener.h @@ -30,6 +30,7 @@ #include <Core/util/variants/eigen3/MatrixVariant.h> #include <Core/util/variants/eigen3/VariantObjectFactories.h> + namespace armarx { /** @@ -68,7 +69,7 @@ namespace armarx return "WeissHapticSensorListener"; } - virtual void reportSensorValues(const ::std::string& type, const ::armarx::MatrixFloatBasePtr& values, const ::Ice::Current& = ::Ice::Current()); + virtual void reportSensorValues(const ::std::string& device, const ::std::string& name, const ::armarx::MatrixFloatBasePtr& values, const ::armarx::TimestampBasePtr& timestamp, const ::Ice::Current& = ::Ice::Current()); protected: /** diff --git a/source/RobotAPI/drivers/WeissHapticSensor/WeissHapticSensor.cpp b/source/RobotAPI/drivers/WeissHapticSensor/WeissHapticSensor.cpp index e366018681ebe62e2ebce4c61e64f6f7eb49217a..35af9bd41ab8ccc0dcf3485d92c18446ca855f32 100644 --- a/source/RobotAPI/drivers/WeissHapticSensor/WeissHapticSensor.cpp +++ b/source/RobotAPI/drivers/WeissHapticSensor/WeissHapticSensor.cpp @@ -1,5 +1,6 @@ #include "WeissHapticSensor.h" #include <Core/util/variants/eigen3/MatrixVariant.h> +#include <Core/observers/variant/TimestampVariant.h> using namespace armarx; @@ -85,7 +86,8 @@ void WeissHapticSensor::readAndReportSensorValues() (*matrix)(y, x) = val; } } - listenerPrx->reportSensorValues(tag, matrix); + TimestampVariantPtr timestamp = new TimestampVariant(0); + listenerPrx->reportSensorValues(device, tag, matrix, timestamp); } cout << this << ": stopPeriodicFrameAcquisition" << endl; diff --git a/source/RobotAPI/units/HapticObserver.cpp b/source/RobotAPI/units/HapticObserver.cpp index 2867e505aa29cecf074cc6ca842781c281165203..2964cb2ff0ee9461d2369793e6faeeef83fedf87 100644 --- a/source/RobotAPI/units/HapticObserver.cpp +++ b/source/RobotAPI/units/HapticObserver.cpp @@ -40,28 +40,29 @@ void HapticObserver::onConnectObserver() { } -void HapticObserver::reportSensorValues(const std::string &type, const MatrixFloatBasePtr &values, const Ice::Current &) +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); Eigen::MatrixXf eigenMatrix = matrix->toEigen(); float max = eigenMatrix.maxCoeff(); float mean = eigenMatrix.mean(); - if(!existsChannel(type)) + if(!existsChannel(device)) { - offerChannel(type, "Force and Torque vectors on specific parts of the robot."); - offerDataFieldWithDefault(type, "matrix", matrix, "Raw tactile matrix data"); - offerDataFieldWithDefault(type, "max", Variant(max), "Maximum value"); - offerDataFieldWithDefault(type, "mean", Variant(mean), "Mean value"); + offerChannel(device, "Haptic data"); + offerDataFieldWithDefault(device, "name", Variant(name), "Name of the tactile sensor"); + offerDataFieldWithDefault(device, "matrix", matrix, "Raw tactile matrix data"); + offerDataFieldWithDefault(device, "max", Variant(max), "Maximum value"); + offerDataFieldWithDefault(device, "mean", Variant(mean), "Mean value"); } else { - setDataField(type, "matrix", matrix); - setDataField(type, "max", Variant(max)); - setDataField(type, "mean", Variant(mean)); + setDataField(device, "matrix", matrix); + setDataField(device, "max", Variant(max)); + setDataField(device, "mean", Variant(mean)); } - updateChannel(type); + updateChannel(device); } PropertyDefinitionsPtr HapticObserver::createPropertyDefinitions() diff --git a/source/RobotAPI/units/HapticObserver.h b/source/RobotAPI/units/HapticObserver.h index f3cbc18ebccfbc39ec975745e29c17be2d87b341..9eb13fcf4403edc25091bc3da7ad8482a079e18c 100644 --- a/source/RobotAPI/units/HapticObserver.h +++ b/source/RobotAPI/units/HapticObserver.h @@ -56,7 +56,7 @@ namespace armarx void onInitObserver(); void onConnectObserver(); - void reportSensorValues(const std::string &type, const ::armarx::MatrixFloatBasePtr &values, const ::Ice::Current& = ::Ice::Current()); + void reportSensorValues(const ::std::string& device, const ::std::string& name, const ::armarx::MatrixFloatBasePtr& values, const ::armarx::TimestampBasePtr& timestamp, const ::Ice::Current& = ::Ice::Current()); /** * @see PropertyUser::createPropertyDefinitions()