Skip to content

Commit 147782b

Browse files
author
hpcdgrie
committed
FlexCell events for bending
1 parent 2d4672d commit 147782b

4 files changed

Lines changed: 38 additions & 6 deletions

File tree

src/OpenCOVER/plugins/hlrs/FlexCell/FlexCell.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,15 @@ bool FlexCell::update()
188188
vrmlNode->bend();
189189
m_bend = false;
190190
}
191-
if(m_variantChanged)
191+
if(m_variant != -1)
192192
{
193193
vrmlNode->switchWorkpiece(m_variant);
194-
m_variantChanged = false;
194+
m_variant = -1;
195+
}
196+
if(m_bendAnimation > 0)
197+
{
198+
vrmlNode->bendAnimation(m_bendAnimation);
199+
m_bendAnimation = -1;
195200
}
196201
}
197202
else if (m_isReplaying)
@@ -295,7 +300,10 @@ size_t FlexCell::sseWriteCallback(char* ptr, size_t size, size_t nmemb, void* us
295300
if (j.contains("partState") && j["partState"].is_number_integer())
296301
{
297302
self->m_variant = j["partState"].get<int>();
298-
self->m_variantChanged = true;
303+
}
304+
if (j.contains("bendAnimation") && j["bendAnimation"].is_number_integer())
305+
{
306+
self->m_bendAnimation = j["bendAnimation"].get<int>();
299307
}
300308
if (j.contains("partAttachedToRobot") && j["partAttachedToRobot"].is_boolean())
301309
{

src/OpenCOVER/plugins/hlrs/FlexCell/FlexCell.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ class FlexCell : public opencover::coVRPlugin
5555
mutable std::mutex m_rabbitMutex;
5656
std::deque<RobotPosition> m_livePositions;
5757
bool m_bend = false;
58-
int m_variant = 0;
58+
int m_variant = -1;
59+
int m_bendAnimation = -1;
5960
bool m_partAttachedToRobot = false;
60-
bool m_variantChanged = false;
6161
};
6262

6363
#endif // COVER_PLUGIN_FLEX_CELL_H

src/OpenCOVER/plugins/hlrs/FlexCell/VrmlNodes.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ void FlexCellNode::initFields(FlexCellNode *node, vrml::VrmlNodeType *t) {
1111
constexpr int numAxes = 7;
1212
for(size_t i = 0; i < numAxes; ++i)
1313
t->addEventOut(("Achse" + std::to_string(i+1)).c_str(), vrml::VrmlField::SFFLOAT);
14-
t->addEventOut("Bend", vrml::VrmlField::SFTIME);
1514
t->addEventOut("Variant", vrml::VrmlField::SFINT32);
15+
t->addEventOut("pinch", vrml::VrmlField::SFBOOL);
16+
t->addEventOut("bend", vrml::VrmlField::SFBOOL);
17+
t->addEventOut("loosen", vrml::VrmlField::SFBOOL);
1618
}
1719

1820
FlexCellNode::FlexCellNode(vrml::VrmlScene *scene)
@@ -44,4 +46,24 @@ void FlexCellNode::switchWorkpiece(int variant)
4446
{
4547
vrml::VrmlSFInt vrmlValue(variant);
4648
eventOut(opencover::cover->frameTime(), "Variant", vrmlValue);
49+
}
50+
51+
void FlexCellNode::bendAnimation(int animation)
52+
{
53+
switch (animation)
54+
{
55+
case 0: //nothing
56+
break;
57+
case 1: // pinch
58+
eventOut(opencover::cover->frameTime(), "pinch", vrml::VrmlSFBool(true));
59+
break;
60+
case 2: // bend
61+
eventOut(opencover::cover->frameTime(), "bend", vrml::VrmlSFBool(true));
62+
break;
63+
case 3: // loosen
64+
eventOut(opencover::cover->frameTime(), "loosen", vrml::VrmlSFBool(true));
65+
break;
66+
default:
67+
break;
68+
}
4769
}

src/OpenCOVER/plugins/hlrs/FlexCell/VrmlNodes.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ class FlexCellNode : public vrml::VrmlNodeChild {
1717
void send(size_t axis, float value);
1818
void bend();
1919
void switchWorkpiece(int variant);
20+
void bendAnimation(int animation);
21+
2022
// std::array<vrml::VrmlSFFloat, 7> axisNames;
2123
};
2224

0 commit comments

Comments
 (0)