Skip to content

Commit 328e780

Browse files
author
hpcdgrie
committed
Added attach/detach for workpiece
1 parent 147782b commit 328e780

4 files changed

Lines changed: 24 additions & 2 deletions

File tree

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,13 +191,18 @@ bool FlexCell::update()
191191
if(m_variant != -1)
192192
{
193193
vrmlNode->switchWorkpiece(m_variant);
194-
m_variant = -1;
194+
m_variantChanged = false;
195195
}
196196
if(m_bendAnimation > 0)
197197
{
198198
vrmlNode->bendAnimation(m_bendAnimation);
199199
m_bendAnimation = -1;
200200
}
201+
if(m_partAttachedToRobot > 0)
202+
{
203+
m_partAttachedToRobot ? vrmlNode->attachPartToRobot(m_variant) : vrmlNode->detachPartToRobot(m_variant);
204+
m_partAttachedToRobot = -1;
205+
}
201206
}
202207
else if (m_isReplaying)
203208
{
@@ -300,6 +305,7 @@ size_t FlexCell::sseWriteCallback(char* ptr, size_t size, size_t nmemb, void* us
300305
if (j.contains("partState") && j["partState"].is_number_integer())
301306
{
302307
self->m_variant = j["partState"].get<int>();
308+
self->m_variantChanged = true;
303309
}
304310
if (j.contains("bendAnimation") && j["bendAnimation"].is_number_integer())
305311
{

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ class FlexCell : public opencover::coVRPlugin
5656
std::deque<RobotPosition> m_livePositions;
5757
bool m_bend = false;
5858
int m_variant = -1;
59+
bool m_variantChanged = false;
5960
int m_bendAnimation = -1;
60-
bool m_partAttachedToRobot = false;
61+
int m_partAttachedToRobot = -1;
6162
};
6263

6364
#endif // COVER_PLUGIN_FLEX_CELL_H

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ void FlexCellNode::initFields(FlexCellNode *node, vrml::VrmlNodeType *t) {
1515
t->addEventOut("pinch", vrml::VrmlField::SFBOOL);
1616
t->addEventOut("bend", vrml::VrmlField::SFBOOL);
1717
t->addEventOut("loosen", vrml::VrmlField::SFBOOL);
18+
t->addEventOut("attachPartToRobot", vrml::VrmlField::SFBOOL);
1819
}
1920

2021
FlexCellNode::FlexCellNode(vrml::VrmlScene *scene)
@@ -48,6 +49,18 @@ void FlexCellNode::switchWorkpiece(int variant)
4849
eventOut(opencover::cover->frameTime(), "Variant", vrmlValue);
4950
}
5051

52+
void FlexCellNode::attachPartToRobot(int variant)
53+
{
54+
vrml::VrmlSFInt vrmlValue(variant);
55+
eventOut(opencover::cover->frameTime(), "attachPartToRobot", vrmlValue);
56+
}
57+
58+
void FlexCellNode::detachPartToRobot(int variant)
59+
{
60+
vrml::VrmlSFInt vrmlValue(variant);
61+
eventOut(opencover::cover->frameTime(), "detachPartToRobot", vrmlValue);
62+
}
63+
5164
void FlexCellNode::bendAnimation(int animation)
5265
{
5366
switch (animation)

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 attachPartToRobot(int variant);
21+
void detachPartToRobot(int variant);
2022
void bendAnimation(int animation);
2123

2224
// std::array<vrml::VrmlSFFloat, 7> axisNames;

0 commit comments

Comments
 (0)