Skip to content
Snippets Groups Projects
Commit c668053c authored by Peter Albrecht's avatar Peter Albrecht
Browse files

Merge branch 'master' into feature/skillMemoryGUI

parents a0e81c3d fbac38ee
No related branches found
No related tags found
No related merge requests found
Showing
with 217 additions and 70 deletions
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
#include <ArmarXCore/core/exceptions/local/ExpressionException.h> #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
#include <ArmarXCore/core/logging/Logging.h> #include <ArmarXCore/core/logging/Logging.h>
#include <RobotAPI/libraries/core/json_conversions.h>
namespace armarx::priorknowledge::util namespace armarx::priorknowledge::util
{ {
FramedLocationPtr FramedLocationPtr
...@@ -53,8 +55,18 @@ namespace armarx::priorknowledge::util ...@@ -53,8 +55,18 @@ namespace armarx::priorknowledge::util
pose, pose,
framedPose.at("pose").get<std::vector<std::vector<float>>>()); // load the 4x4 matrix framedPose.at("pose").get<std::vector<std::vector<float>>>()); // load the 4x4 matrix
FramedLocationPtr loc(new FramedLocation( std::optional<Names> names;
LocationId(source, locationName), LocationType::FRAMED_LOCATION, frame, agent, pose)); if (auto it = j.find("names"); it != j.end())
{
it->get_to(names.emplace());
}
FramedLocationPtr loc(new FramedLocation(LocationId(source, locationName),
LocationType::FRAMED_LOCATION,
frame,
agent,
pose,
names));
return loc; return loc;
} }
...@@ -111,12 +123,19 @@ namespace armarx::priorknowledge::util ...@@ -111,12 +123,19 @@ namespace armarx::priorknowledge::util
extents, extents,
framedOrientedBox.at("extents").get<std::vector<float>>()); // load the 4x4 matrix framedOrientedBox.at("extents").get<std::vector<float>>()); // load the 4x4 matrix
std::optional<Names> names;
if (auto it = j.find("names"); it != j.end())
{
it->get_to(names.emplace());
}
FramedBoxedLocationPtr loc(new FramedBoxedLocation(LocationId(source, locationName), FramedBoxedLocationPtr loc(new FramedBoxedLocation(LocationId(source, locationName),
LocationType::FRAMED_BOXED_LOCATION, LocationType::FRAMED_BOXED_LOCATION,
frame, frame,
agent, agent,
pose, pose,
extents)); extents,
names));
return loc; return loc;
} }
...@@ -133,7 +152,7 @@ namespace armarx::priorknowledge::util ...@@ -133,7 +152,7 @@ namespace armarx::priorknowledge::util
} }
for (const auto& [locationName, j] : for (const auto& [locationName, j] :
js["locations"].get<std::map<std::string, nlohmann::json>>()) js.at("locations").get<std::map<std::string, nlohmann::json>>())
{ {
if (j.find("framedPose") != j.end()) if (j.find("framedPose") != j.end())
{ {
......
#pragma once #pragma once
#include <memory> #include <memory>
#include <optional>
#include <string> #include <string>
#include <SimoxUtility/shapes/OrientedBox.h> #include <SimoxUtility/shapes/OrientedBox.h>
#include <RobotAPI/libraries/core/FramedPose.h> #include <RobotAPI/libraries/core/FramedPose.h>
#include <RobotAPI/libraries/core/Names.h>
namespace armarx::priorknowledge::util namespace armarx::priorknowledge::util
{ {
...@@ -31,8 +33,12 @@ namespace armarx::priorknowledge::util ...@@ -31,8 +33,12 @@ namespace armarx::priorknowledge::util
{ {
LocationId id; LocationId id;
LocationType type; LocationType type;
std::optional<Names> names;
Location(const LocationId& i, const LocationType t) : id(i), type(t) Location(const LocationId& i,
const LocationType t,
const std::optional<Names>& names = std::nullopt) :
id(i), type(t), names(names)
{ {
} }
...@@ -45,12 +51,13 @@ namespace armarx::priorknowledge::util ...@@ -45,12 +51,13 @@ namespace armarx::priorknowledge::util
std::string agent; std::string agent;
Eigen::Matrix4f pose; Eigen::Matrix4f pose;
FramedLocation(const LocationId& i, FramedLocation(const LocationId& id,
const LocationType t, const LocationType type,
const std::string& f, const std::string& frame,
const std::string& a, const std::string& agent,
const Eigen::Matrix4f& p) : const Eigen::Matrix4f& pose,
Location(i, t), frame(f), agent(a), pose(p) const std::optional<Names>& names = std::nullopt) :
Location(id, type, names), frame(frame), agent(agent), pose(pose)
{ {
} }
...@@ -63,13 +70,14 @@ namespace armarx::priorknowledge::util ...@@ -63,13 +70,14 @@ namespace armarx::priorknowledge::util
{ {
Eigen::Vector3f extents; Eigen::Vector3f extents;
FramedBoxedLocation(const LocationId& i, FramedBoxedLocation(const LocationId& id,
const LocationType t, const LocationType type,
const std::string& f, const std::string& frame,
const std::string& a, const std::string& agent,
const Eigen::Matrix4f& p, const Eigen::Matrix4f& pose,
const Eigen::Vector3f& e) : const Eigen::Vector3f& extents,
FramedLocation(i, t, f, a, p), extents(e) const std::optional<Names>& names = std::nullopt) :
FramedLocation(id, type, frame, agent, pose, names), extents(extents)
{ {
} }
......
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<AronTypeDefinition> <AronTypeDefinition>
<AronIncludes>
<Include include="RobotAPI/libraries/aron/common/aron/Names.xml" />
</AronIncludes>
<GenerateTypes> <GenerateTypes>
<!--
ToDo: Model regions. Ideas:
- Polygon (convex, non-convex)
-
-->
<Object name='armarx::navigation::location::arondto::Location'> <Object name='armarx::navigation::location::arondto::Location'>
<ObjectChild key='framedPose'> <ObjectChild key='framedPose'>
<FramedPose /> <FramedPose />
</ObjectChild> </ObjectChild>
<ObjectChild key='names'>
<armarx::arondto::Names optional="true" />
</ObjectChild>
</Object> </Object>
</GenerateTypes> </GenerateTypes>
......
...@@ -2,6 +2,17 @@ ...@@ -2,6 +2,17 @@
namespace armarx::armem::obj::clazz namespace armarx::armem::obj::clazz
{ {
ClassWriter::ClassWriter(const std::string& p) :
providerName(p)
{
}
void ClassWriter::setProviderName(const std::string& pName)
{
this->providerName = pName;
}
bool bool
ClassWriter::commitObjectClass(const armarx::armem::clazz::ObjectClass& c, ClassWriter::commitObjectClass(const armarx::armem::clazz::ObjectClass& c,
const armarx::core::time::DateTime& referenceTime) const armarx::core::time::DateTime& referenceTime)
......
...@@ -33,7 +33,10 @@ namespace armarx::armem::obj::clazz ...@@ -33,7 +33,10 @@ namespace armarx::armem::obj::clazz
class ClassWriter : public armem::client::util::SimpleWriterBase class ClassWriter : public armem::client::util::SimpleWriterBase
{ {
public: public:
ClassWriter(const std::string& p) : providerName(p){}; ClassWriter() = default;
ClassWriter(const std::string& p);
void setProviderName(const std::string& pName);
bool commitObjectClass(const armarx::armem::clazz::ObjectClass& c, bool commitObjectClass(const armarx::armem::clazz::ObjectClass& c,
const armarx::core::time::DateTime& referenceTime); const armarx::core::time::DateTime& referenceTime);
...@@ -43,7 +46,7 @@ namespace armarx::armem::obj::clazz ...@@ -43,7 +46,7 @@ namespace armarx::armem::obj::clazz
Properties defaultProperties() const final; Properties defaultProperties() const final;
private: private:
const std::string providerName; std::string providerName;
}; };
......
...@@ -18,14 +18,15 @@ armarx_add_library( ...@@ -18,14 +18,15 @@ armarx_add_library(
forward_declarations.h forward_declarations.h
json_conversions.h json_conversions.h
aron_conversions/armarx.h
aron_conversions/core.h aron_conversions/core.h
aron_conversions/stl.h aron_conversions/eigen.h
aron_conversions/packagepath.h
aron_conversions/framed.h aron_conversions/framed.h
aron_conversions/time.h aron_conversions/names.h
aron_conversions/armarx.h aron_conversions/packagepath.h
aron_conversions/simox.h aron_conversions/simox.h
aron_conversions/eigen.h aron_conversions/stl.h
aron_conversions/time.h
json_conversions/armarx.h json_conversions/armarx.h
json_conversions/framed.h json_conversions/framed.h
...@@ -37,15 +38,15 @@ armarx_add_library( ...@@ -37,15 +38,15 @@ armarx_add_library(
util/object_finders.h util/object_finders.h
SOURCES SOURCES
aron_conversions/armarx.cpp
aron_conversions/core.cpp aron_conversions/core.cpp
aron_conversions/stl.cpp aron_conversions/eigen.cpp
aron_conversions/packagepath.cpp
aron_conversions/framed.cpp aron_conversions/framed.cpp
aron_conversions/time.cpp aron_conversions/names.cpp
aron_conversions/armarx.cpp aron_conversions/packagepath.cpp
aron_conversions/simox.cpp aron_conversions/simox.cpp
aron_conversions/eigen.cpp aron_conversions/stl.cpp
aron_conversions/time.cpp
json_conversions/armarx.cpp json_conversions/armarx.cpp
json_conversions/framed.cpp json_conversions/framed.cpp
......
#pragma once #pragma once
#include <RobotAPI/libraries/aron/common/aron_conversions/armarx.h>
#include <RobotAPI/libraries/aron/common/aron_conversions/eigen.h>
#include <RobotAPI/libraries/aron/common/aron_conversions/framed.h>
#include <RobotAPI/libraries/aron/common/aron_conversions/names.h>
#include <RobotAPI/libraries/aron/common/aron_conversions/packagepath.h>
#include <RobotAPI/libraries/aron/common/aron_conversions/simox.h>
#include <RobotAPI/libraries/aron/common/aron_conversions/stl.h>
#include <RobotAPI/libraries/aron/common/aron_conversions/time.h>
#include <RobotAPI/libraries/aron/core/aron_conversions.h> #include <RobotAPI/libraries/aron/core/aron_conversions.h>
#include "aron_conversions/armarx.h"
#include "aron_conversions/simox.h"
#include "aron_conversions/eigen.h"
#include "names.h"
#include <RobotAPI/libraries/aron/common/aron/Names.aron.generated.h>
#include <RobotAPI/libraries/core/Names.h>
void
armarx::fromAron(const arondto::Names& dto, Names& bo)
{
bo.recognized = dto.recognized;
bo.spoken = dto.spoken;
}
void
armarx::toAron(arondto::Names& dto, const Names& bo)
{
dto.recognized = bo.recognized;
dto.spoken = bo.spoken;
}
#pragma once
#include <SimoxUtility/json/json.h>
#include <RobotAPI/libraries/aron/common/forward_declarations.h>
#include <RobotAPI/libraries/core/forward_declarations.h>
namespace armarx
{
void fromAron(const arondto::Names& dto, armarx::Names& bo);
void toAron(arondto::Names& dto, const armarx::Names& bo);
} // namespace armarx
...@@ -5,10 +5,12 @@ namespace simox::arondto ...@@ -5,10 +5,12 @@ namespace simox::arondto
class AxisAlignedBoundingBox; class AxisAlignedBoundingBox;
class Color; class Color;
class OrientedBox; class OrientedBox;
} // namespace simox::arondto } // namespace simox::arondto
namespace armarx::arondto namespace armarx::arondto
{ {
class Names; class Names;
class FrameID; class FrameID;
} // namespace armarx::arondto } // namespace armarx::arondto
...@@ -20,6 +20,8 @@ set(LIBS RobotAPIInterfaces ArmarXCoreObservers ArmarXCoreStatechart ArmarXCoreE ...@@ -20,6 +20,8 @@ set(LIBS RobotAPIInterfaces ArmarXCoreObservers ArmarXCoreStatechart ArmarXCoreE
) )
set(LIB_FILES set(LIB_FILES
json_conversions.cpp
PIDController.cpp PIDController.cpp
Trajectory.cpp Trajectory.cpp
TrajectoryController.cpp TrajectoryController.cpp
...@@ -51,6 +53,7 @@ set(LIB_FILES ...@@ -51,6 +53,7 @@ set(LIB_FILES
CartesianVelocityControllerWithRamp.cpp CartesianVelocityControllerWithRamp.cpp
CartesianNaturalPositionController.cpp CartesianNaturalPositionController.cpp
#CartesianNaturalVelocityController.cpp #CartesianNaturalVelocityController.cpp
Names.cpp
visualization/DebugDrawerTopic.cpp visualization/DebugDrawerTopic.cpp
visualization/GlasbeyLUT.cpp visualization/GlasbeyLUT.cpp
...@@ -60,6 +63,9 @@ set(LIB_FILES ...@@ -60,6 +63,9 @@ set(LIB_FILES
) )
set(LIB_HEADERS set(LIB_HEADERS
forward_declarations.h
json_conversions.h
PIDController.h PIDController.h
MultiDimPIDController.h MultiDimPIDController.h
Trajectory.h Trajectory.h
...@@ -103,14 +109,13 @@ set(LIB_HEADERS ...@@ -103,14 +109,13 @@ set(LIB_HEADERS
CartesianNaturalPositionController.h CartesianNaturalPositionController.h
#CartesianNaturalVelocityController.h #CartesianNaturalVelocityController.h
EigenHelpers.h EigenHelpers.h
Names.h
visualization/DebugDrawerTopic.h visualization/DebugDrawerTopic.h
visualization/GlasbeyLUT.h visualization/GlasbeyLUT.h
#diffik/NaturalDiffIK.h #diffik/NaturalDiffIK.h
#diffik/SimpleDiffIK.h #diffik/SimpleDiffIK.h
json_conversions.h
) )
add_subdirectory(test) add_subdirectory(test)
......
#include "Names.h"
namespace armarx
{
} // namespace armarx
#pragma once
#include <string>
#include <vector>
namespace armarx
{
struct Names
{
std::vector<std::string> recognized;
std::vector<std::string> spoken;
};
} // namespace armarx
#pragma once
namespace armarx
{
class Names;
class FramedPose;
} // namespace armarx
#include "json_conversions.h"
#include <RobotAPI/libraries/core/FramedPose.h>
#include <RobotAPI/libraries/core/Names.h>
void
armarx::to_json(nlohmann::json& j, const FramedPose& fp)
{
j = nlohmann::json{{"agent", fp.agent},
{"frame", fp.frame},
{"qw", fp.orientation->qw},
{"qx", fp.orientation->qx},
{"qy", fp.orientation->qy},
{"qz", fp.orientation->qz},
{"x", fp.position->x},
{"y", fp.position->y},
{"z", fp.position->z}};
}
void
armarx::from_json(const nlohmann::json& j, FramedPose& fp)
{
j.at("agent").get_to(fp.agent);
j.at("frame").get_to(fp.frame);
j.at("qw").get_to(fp.orientation->qw);
j.at("qx").get_to(fp.orientation->qx);
j.at("qy").get_to(fp.orientation->qy);
j.at("qz").get_to(fp.orientation->qz);
j.at("x").get_to(fp.position->x);
j.at("y").get_to(fp.position->y);
j.at("z").get_to(fp.position->z);
}
void
armarx::to_json(simox::json::json& j, const Names& value)
{
j["recognized"] = value.recognized;
j["spoken"] = value.spoken;
}
void
armarx::from_json(const simox::json::json& j, Names& value)
{
j.at("recognized").get_to(value.recognized);
j.at("spoken").get_to(value.spoken);
}
...@@ -20,45 +20,18 @@ ...@@ -20,45 +20,18 @@
* GNU General Public License * GNU General Public License
*/ */
#pragma once #pragma once
// Simox
#include <SimoxUtility/json.h> #include <SimoxUtility/json.h>
// RobotAPI #include <RobotAPI/libraries/core/forward_declarations.h>
#include <RobotAPI/libraries/core/FramedPose.h>
namespace armarx namespace armarx
{ {
void to_json(nlohmann::json& j, const FramedPose& fp) void to_json(nlohmann::json& j, const FramedPose& fp);
{ void from_json(const nlohmann::json& j, FramedPose& fp);
j = nlohmann::json
{ void to_json(simox::json::json& j, const Names& value);
{"agent", fp.agent}, void from_json(const simox::json::json& j, Names& value);
{"frame", fp.frame},
{"qw", fp.orientation->qw},
{"qx", fp.orientation->qx},
{"qy", fp.orientation->qy},
{"qz", fp.orientation->qz},
{"x", fp.position->x},
{"y", fp.position->y},
{"z", fp.position->z}
};
}
void from_json(const nlohmann::json& j, FramedPose& fp) } // namespace armarx
{
j.at("agent").get_to(fp.agent);
j.at("frame").get_to(fp.frame);
j.at("qw").get_to(fp.orientation->qw);
j.at("qx").get_to(fp.orientation->qx);
j.at("qy").get_to(fp.orientation->qy);
j.at("qz").get_to(fp.orientation->qz);
j.at("x").get_to(fp.position->x);
j.at("y").get_to(fp.position->y);
j.at("z").get_to(fp.position->z);
}
}
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