VisualContactDetectionObserver.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * Copyright (C) 2011-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5  *
6  * ArmarX is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * ArmarX is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * @package
19  * @author
20  * @date
21  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22  * GNU General Public License
23  */
25 
28 
29 namespace visionx
30 {
32  {
33  usingTopic("VisualContactDetection");
34 
35 
38  }
39 
40 
41 
43  {
44  offerChannel("collisionDetector", "Indicates whether the robot hand is colliding with an object.");
45  armarx::Variant defaultValue(0);
46  offerDataFieldWithDefault("collisionDetector", "collisionDetected", defaultValue, "Is 1 when a collision between hand and object was detected, 0 if not.");
47 
48  }
49 
50 
51 
52  void VisualContactDetectionObserver::reportContactDetected(bool collisionDetected, const Ice::Current&)
53  {
54  if (collisionDetected)
55  {
56  setDataField("collisionDetector", "collisionDetected", 1);
57  ARMARX_IMPORTANT << "Collision detected!";
58  }
59  else
60  {
61  setDataField("collisionDetector", "collisionDetected", 0);
62  }
63 
64  updateChannel("collisionDetector");
65  }
66 }
armarx::Observer::updateChannel
void updateChannel(const std::string &channelName, const std::set< std::string > &updatedDatafields=std::set< std::string >())
Update all conditions for a channel.
Definition: Observer.cpp:715
armarx::Variant
The Variant class is described here: Variants.
Definition: Variant.h:224
ARMARX_IMPORTANT
#define ARMARX_IMPORTANT
Definition: Logging.h:183
visionx
ArmarX headers.
Definition: OpenPoseStressTest.h:38
ConditionCheckEquals.h
visionx::VisualContactDetectionObserver::onInitObserver
void onInitObserver() override
Framework hook.
Definition: VisualContactDetectionObserver.cpp:31
visionx::VisualContactDetectionObserver::reportContactDetected
void reportContactDetected(bool collisionDetected, const Ice::Current &) override
Definition: VisualContactDetectionObserver.cpp:52
visionx::VisualContactDetectionObserver::onConnectObserver
void onConnectObserver() override
Framework hook.
Definition: VisualContactDetectionObserver.cpp:42
armarx::ConditionCheckUpdated
Definition: ConditionCheckUpdated.h:41
VisualContactDetectionObserver.h
armarx::Observer::setDataField
void setDataField(const std::string &channelName, const std::string &datafieldName, const Variant &value, bool triggerFilterUpdate=true)
set datafield with datafieldName and in channel channelName
Definition: Observer.cpp:465
armarx::ManagedIceObject::usingTopic
void usingTopic(const std::string &name, bool orderedPublishing=false)
Registers a proxy for subscription after initialization.
Definition: ManagedIceObject.cpp:248
armarx::ConditionCheckEquals
Definition: ConditionCheckEquals.h:46
armarx::Observer::offerConditionCheck
void offerConditionCheck(std::string checkName, ConditionCheck *conditionCheck)
Offer a condition check.
Definition: Observer.cpp:273
armarx::Observer::offerDataFieldWithDefault
void offerDataFieldWithDefault(std::string channelName, std::string datafieldName, const Variant &defaultValue, std::string description)
Offer a datafield with default value.
Definition: Observer.cpp:152
ConditionCheckUpdated.h
armarx::Observer::offerChannel
void offerChannel(std::string channelName, std::string description)
Offer a channel.
Definition: Observer.cpp:126