Skip to content
Snippets Groups Projects
Commit 0c6cc092 authored by Fabian Reister's avatar Fabian Reister
Browse files

armem_vision: adding laser scanner features type (will be used by navigation and RobotComponents)

parent d298bc93
No related branches found
No related tags found
1 merge request!240armem vision: laser scanner features
......@@ -34,6 +34,7 @@ armarx_enable_aron_file_generation_for_target(
"${LIB_NAME}"
ARON_FILES
aron/LaserScan.xml
aron/LaserScannerFeatures.xml
aron/OccupancyGrid.xml
)
......
......@@ -2,14 +2,14 @@
#include <Eigen/Core>
namespace armarx::armem
namespace armarx::armem::vision
{
struct OccupancyGrid;
}
namespace armarx
{
using armarx::armem::OccupancyGrid;
using armarx::armem::vision::OccupancyGrid;
namespace detail
{
......
......@@ -8,7 +8,7 @@
<GenerateTypes>
<Object name='armarx::armem::arondto::LaserScannerInfo'>
<Object name='armarx::armem::vision::arondto::LaserScannerInfo'>
<ObjectChild key='device'>
<string />
</ObjectChild>
......@@ -26,7 +26,7 @@
</ObjectChild>
</Object>
<Object name="armarx::armem::arondto::SensorHeader">
<Object name="armarx::armem::vision::arondto::SensorHeader">
<ObjectChild key="agent">
<string/>
</ObjectChild>
......@@ -39,9 +39,9 @@
</Object>
<Object name='armarx::armem::arondto::LaserScanStamped'>
<Object name='armarx::armem::vision::arondto::LaserScanStamped'>
<ObjectChild key="header">
<armarx::armem::arondto::SensorHeader />
<armarx::armem::vision::arondto::SensorHeader />
</ObjectChild>
<!--
......@@ -51,4 +51,4 @@
</Object>
</GenerateTypes>
</AronTypeDefinition>
\ No newline at end of file
</AronTypeDefinition>
<!--Some fancy comment -->
<?xml version="1.0" encoding="UTF-8" ?>
<AronTypeDefinition>
<CodeIncludes>
</CodeIncludes>
<AronIncludes>
</AronIncludes>
<GenerateTypes>
<Object name='armarx::armem::vision::arondto::Ellipsoid'>
<ObjectChild key='globalPose'>
<Pose />
</ObjectChild>
<ObjectChild key='radii'>
<Matrix rows="2" cols="1" type="float32" />
</ObjectChild>
</Object>
<Object name='armarx::armem::vision::arondto::Circle'>
<ObjectChild key='globalPose'>
<Pose />
</ObjectChild>
<ObjectChild key='radius'>
<float />
</ObjectChild>
</Object>
<Object name="armarx::armem::vision::arondto::LaserScannerFeatures">
<ObjectChild key="convexHull">
<List>
<Matrix rows="2" cols="1" type="float32" />
</List>
</ObjectChild>
<ObjectChild key="circle">
<armarx::armem::vision::arondto::Circle/>
</ObjectChild>
<ObjectChild key="ellipsoid">
<armarx::armem::vision::arondto::Ellipsoid/>
</ObjectChild>
<!-- <ObjectChild key="chain">
<armarx::armem::vision::arondto::Chain/>
</ObjectChild> -->
<ObjectChild key="points">
<List>
<Matrix rows="2" cols="1" type="float32" />
</List>
</ObjectChild>
</Object>
</GenerateTypes>
</AronTypeDefinition>
......@@ -8,7 +8,7 @@
<GenerateTypes>
<Object name='armarx::armem::arondto::OccupancyGrid'>
<Object name='armarx::armem::vision::arondto::OccupancyGrid'>
<ObjectChild key='resolution'>
<float />
</ObjectChild>
......@@ -27,4 +27,4 @@
</GenerateTypes>
</AronTypeDefinition>
\ No newline at end of file
</AronTypeDefinition>
......@@ -14,7 +14,7 @@
#include "types.h"
namespace armarx::armem
namespace armarx::armem::vision
{
/************ fromAron ************/
......
......@@ -21,15 +21,16 @@
#pragma once
#include <RobotAPI/libraries/armem_vision/types.h>
#include <RobotAPI/interface/units/LaserScannerUnit.h>
#include <RobotAPI/libraries/armem/core/Time.h>
#include <RobotAPI/libraries/armem_vision/aron/LaserScannerFeatures.aron.generated.h>
#include <RobotAPI/libraries/armem_vision/aron/OccupancyGrid.aron.generated.h>
#include <RobotAPI/libraries/armem_vision/types.h>
#include <RobotAPI/libraries/aron/converter/common/VectorConverter.h>
#include <RobotAPI/libraries/aron/converter/eigen/EigenConverter.h>
#include <RobotAPI/libraries/aron/core/data/variant/complex/NDArray.h>
namespace armarx::armem
namespace armarx::armem::vision
{
namespace arondto
......@@ -47,14 +48,13 @@ namespace armarx::armem
std::string& agentName);
template <typename T>
auto fromAron(const aron::data::NDArrayPtr& navigator)
auto
fromAron(const aron::data::NDArrayPtr& navigator)
{
return aron::converter::AronVectorConverter::ConvertToVector<T>(
navigator);
return aron::converter::AronVectorConverter::ConvertToVector<T>(navigator);
}
void fromAron(const arondto::LaserScanStamped& aronLaserScan,
LaserScanStamped& laserScan);
void fromAron(const arondto::LaserScanStamped& aronLaserScan, LaserScanStamped& laserScan);
void toAron(const LaserScan& laserScan,
const armem::Time& timestamp,
......@@ -79,4 +79,8 @@ namespace armarx::armem
return aron::converter::AronEigenConverter::ConvertFromArray(grid);
}
} // namespace armarx::armem
// LaserScannerFeatures
void toAron(arondto::LaserScannerFeatures& dto, const LaserScannerFeatures& bo);
void fromAron(const arondto::LaserScannerFeatures& dto, LaserScannerFeatures& bo);
} // namespace armarx::armem::vision
......@@ -131,7 +131,7 @@ namespace armarx::armem::vision::laser_scans::client
}
const auto convert =
[](const arondto::LaserScanStamped & aronLaserScanStamped,
[](const auto& aronLaserScanStamped,
const wm::EntityInstance & ei) -> LaserScanStamped
{
LaserScanStamped laserScanStamped;
......
......@@ -22,11 +22,12 @@
#pragma once
#include <vector>
#include <VirtualRobot/MathTools.h>
#include <RobotAPI/interface/units/LaserScannerUnit.h>
#include <RobotAPI/libraries/armem/core/Time.h>
namespace armarx::armem
namespace armarx::armem::vision
{
struct SensorHeader
......@@ -57,5 +58,35 @@ namespace armarx::armem
Grid grid;
};
struct Ellipsoid
{
Eigen::Vector2f center;
float angle;
Eigen::Vector2f radii;
};
struct Circle
{
Eigen::Vector2f center;
float radius;
};
struct LaserScannerFeatures
{
using Points = std::vector<Eigen::Vector2f>;
using Chain = Points;
std::optional<VirtualRobot::MathTools::ConvexHull2D> convexHull;
std::optional<Circle> circle;
std::optional<Ellipsoid> ellipsoid;
std::optional<Chain> chain;
Points points;
// std::vector<Ellipsoid> linesAsEllipsoids(float axisLength) const;
};
} // namespace armarx::armem
} // namespace armarx::armem::vision
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