Skip to content
Snippets Groups Projects
Commit d30fa2d2 authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Add visu settings in Remotegui

parent a6ee2a8d
No related branches found
No related tags found
1 merge request!73Updates to Object pose observer
......@@ -55,7 +55,6 @@ namespace armarx
return defs;
}
std::string ObjectPoseObserver::getDefaultName() const
{
return "ObjectPoseObserver";
......@@ -69,6 +68,9 @@ namespace armarx
void ObjectPoseObserver::onConnectObserver()
{
this->robot = RobotState::addRobot("robot", VirtualRobot::RobotIO::RobotDescription::eStructure);
createRemoteGuiTab();
RemoteGui_startRunningTask();
}
void ObjectPoseObserver::onDisconnectComponent()
......@@ -80,8 +82,86 @@ namespace armarx
}
void ObjectPoseObserver::createRemoteGuiTab()
{
using namespace armarx::RemoteGui::Client;
tab.visuEnabled.setValue(visu.enabled);
tab.visuInGlobalFrame.setValue(visu.inGlobalFrame);
tab.visuAlpha.setRange(0, 1.0);
tab.visuAlpha.setValue(visu.alpha);
GroupBox visuGroup;
{
GridLayout grid;
int row = 0;
grid.add(Label("Enabled"), {row, 0}).add(tab.visuEnabled, {row, 1});
row++;
grid.add(Label("Global Frame"), {row, 0}).add(tab.visuInGlobalFrame, {row, 1});
row++;
grid.add(Label("Alpha"), {row, 0}).add(tab.visuAlpha, {row, 1});
row++;
visuGroup.setLabel("Visualization");
visuGroup.addChild(grid);
}
VBoxLayout root = {visuGroup, VSpacer()};
RemoteGui_createTab(getName(), root, &tab);
}
void ObjectPoseObserver::RemoteGui_update()
{
visu.enabled = tab.visuEnabled.getValue();
visu.inGlobalFrame = tab.visuInGlobalFrame.getValue();
visu.alpha = tab.visuAlpha.getValue();
}
void ObjectPoseObserver::reportProviderAvailable(const std::string& providerName, const Ice::Current&)
{
static const bool refresh = true;
fetchProviderInfo(providerName, refresh);
}
void ObjectPoseObserver::reportObjectPoses(
const std::string& providerName, const objpose::data::ProvidedObjectPoseSeq& providedPoses, const Ice::Current&)
{
ARMARX_VERBOSE << "Received object poses from '" << providerName << "'.";
static const bool refresh = false;
fetchProviderInfo(providerName, refresh);
objpose::ObjectPoseSeq objectPoses;
{
std::scoped_lock lock(dataMutex);
RobotState::synchronizeLocalClone("robot");
for (const auto& provided : providedPoses)
{
objpose::ObjectPose& pose = objectPoses.emplace_back();
pose.fromProvidedPose(provided, robot);
}
}
{
std::scoped_lock lock(dataMutex);
this->objectPoses[providerName] = objectPoses;
handleProviderUpdate(providerName);
}
}
void ObjectPoseObserver::fetchProviderInfo(const std::string& providerName, bool refresh)
{
{
std::scoped_lock lock(dataMutex);
if (!refresh && providers.count(providerName) > 0)
{
return; // Do nothing.
}
}
objpose::ObjectPoseProviderPrx provider = getProviderProxy(providerName);
if (!provider)
{
......@@ -118,30 +198,6 @@ namespace armarx
offerOrUpdateDataField(providerName, "objectType", objpose::ObjectTypeEnumNames.to_name(info.objectType), "");
}
void ObjectPoseObserver::reportObjectPoses(
const std::string& providerName, const objpose::data::ProvidedObjectPoseSeq& providedPoses, const Ice::Current&)
{
ARMARX_VERBOSE << "Received object poses from '" << providerName << "'.";
objpose::ObjectPoseSeq objectPoses;
{
std::scoped_lock lock(dataMutex);
RobotState::synchronizeLocalClone("robot");
for (const auto& provided : providedPoses)
{
objpose::ObjectPose& pose = objectPoses.emplace_back();
pose.fromProvidedPose(provided, robot);
}
}
{
std::scoped_lock lock(dataMutex);
this->objectPoses[providerName] = objectPoses;
handleProviderUpdate(providerName);
}
}
objpose::data::ObjectPoseSeq ObjectPoseObserver::getObjectPoses(const Ice::Current&)
{
......@@ -245,20 +301,6 @@ namespace armarx
}
void ObjectPoseObserver::createRemoteGuiTab()
{
using namespace armarx::RemoteGui::Client;
VBoxLayout root = {};
RemoteGui_createTab(getName(), root, &tab);
}
void ObjectPoseObserver::RemoteGui_update()
{
}
void ObjectPoseObserver::handleProviderUpdate(const std::string& providerName)
{
// Initialized to 0 on first access.
......
......@@ -120,6 +120,7 @@ namespace armarx
private:
void fetchProviderInfo(const std::string& providerName, bool refresh = false);
void handleProviderUpdate(const std::string& providerName);
void visProviderUpdate(const std::string& providerName);
......@@ -153,7 +154,9 @@ namespace armarx
struct RemoteGuiTab : RemoteGui::Client::Tab
{
RemoteGui::Client::CheckBox visuEnabled;
RemoteGui::Client::CheckBox visuInGlobalFrame;
RemoteGui::Client::FloatSlider visuAlpha;
};
RemoteGuiTab tab;
};
......
......@@ -15,6 +15,11 @@
namespace armarx
{
std::string objpose::getID(const ObjectID& id)
{
return id.dataset + "/" + id.name;
}
std::ostream& objpose::operator<<(std::ostream& os, const ObjectID& id)
{
return os << "'" << id.dataset << "/" << id.name << "'";
......@@ -49,3 +54,5 @@ namespace armarx
......@@ -19,6 +19,7 @@ namespace simox
namespace armarx::objpose
{
std::string getID(const ObjectID& id);
std::ostream& operator<<(std::ostream& os, const ObjectID& id);
extern const simox::meta::EnumNames<objpose::ObjectTypeEnum> ObjectTypeEnumNames;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment