25#include <VirtualRobot/CollisionDetection/CollisionModel.h>
26#include <VirtualRobot/ManipulationObject.h>
27#include <VirtualRobot/SceneObjectSet.h>
28#include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
29#include <VirtualRobot/Visualization/TriMeshModel.h>
38 VirtualRobot::ManipulationObjectPtr
43 const VirtualRobot::SceneObjectSetPtr sceneObjects(
new VirtualRobot::SceneObjectSet);
54 VirtualRobot::SceneObjectSetPtr
59 VirtualRobot::SceneObjectSetPtr sceneObjects(
new VirtualRobot::SceneObjectSet);
60 for (
const auto& objectPose : objectPoses)
64 obstacle->setGlobalPose(objectPose.objectPoseGlobal);
65 obstacle->setName(objectPose.objectID.str());
66 sceneObjects->addSceneObject(obstacle);
73 VirtualRobot::SceneObjectSetPtr
78 const auto obstacles = ocHelper.
obstacles();
80 const float boxSize = occupancyGrid.
resolution;
81 const float resolution = occupancyGrid.
resolution;
83 VirtualRobot::SceneObjectSetPtr sceneObjects(
new VirtualRobot::SceneObjectSet);
86 <<
"Only occupancy grid in global frame supported.";
88 VirtualRobot::CoinVisualizationFactory factory;
90 const auto& world_T_map = occupancyGrid.
pose;
92 for (
int x = 0;
x < obstacles.rows();
x++)
94 for (
int y = 0; y < obstacles.cols(); y++)
98 const Eigen::Vector3f pos{
99 static_cast<float>(
x) * resolution,
static_cast<float>(y) * resolution, 0};
102 Eigen::Affine3f map_T_obj = Eigen::Affine3f::Identity();
103 map_T_obj.translation() = pos;
105 Eigen::Affine3f world_T_obj = world_T_map * map_T_obj;
108 auto cube = factory.createBox(boxSize, boxSize, boxSize);
110 const VirtualRobot::CollisionModelPtr collisionModel(
111 new VirtualRobot::CollisionModel(cube));
113 const VirtualRobot::SceneObjectPtr sceneObject(
new VirtualRobot::SceneObject(
114 "box_" + std::to_string(sceneObjects->getSize()), cube, collisionModel));
115 sceneObject->setGlobalPose(world_T_obj.matrix());
117 sceneObjects->addSceneObject(sceneObject);
126 objectPoseClient_(client)
130 VirtualRobot::SceneObjectSetPtr
149 for (
const auto& pose : objectPoses)
154 return std::make_shared<ManipulationObjectSet>(set);
162 auto faces = model->getTriMeshModel()->faces;
163 std::vector<armarx::viz::data::Face> viz_faces;
167 std::back_inserter(viz_faces),
170 return armarx::viz::data::Face(
171 face.id1, face.id2, face.id3, face.idColor1, face.idColor2, face.idColor3);
173 mesh.
vertices(model->getTriMeshModel()->vertices)
175 .
pose(model->getGlobalPose());
Used to find objects in the ArmarX objects repository [1] (formerly [2]).
static VirtualRobot::ManipulationObjectPtr loadManipulationObject(const std::optional< ObjectInfo > &ts, VirtualRobot::ObjectIO::ObjectDescription loadMode=VirtualRobot::ObjectIO::ObjectDescription::eFull)
BinaryArray obstacles() const
detail::OccupancyGridHelperParams Params
Provides access to the armarx::objpose::ObjectPoseStorageInterface (aka the object memory).
static VirtualRobot::ManipulationObjectPtr asManipulationObject(const objpose::ObjectPose &objectPose)
VirtualRobot::SceneObjectSetPtr fetchSceneObjects()
static ManipulationObjectSetPtr asManipulationObjects(const objpose::ObjectPoseSeq &objectPoses)
std::vector< VirtualRobot::ManipulationObject > ManipulationObjectSet
std::shared_ptr< ManipulationObjectSet > ManipulationObjectSetPtr
ManipulationObjectSetPtr fetchManipulationObjects()
static VirtualRobot::SceneObjectSetPtr asSceneObjects(const objpose::ObjectPoseSeq &objectPoses)
CollisionModelHelper(const objpose::ObjectPoseClient &client)
static void visualizeCollisionModel(const VirtualRobot::CollisionModelPtr &model, viz::Client &arviz)
void commitLayerContaining(std::string const &name)
DerivedT & pose(Eigen::Matrix4f const &pose)
Mesh & vertices(const Eigen::Vector3f *vs, std::size_t size)
Mesh & faces(const data::Face *fs, std::size_t size)
#define ARMARX_CHECK_EQUAL(lhs, rhs)
This macro evaluates whether lhs is equal (==) rhs and if it turns out to be false it will throw an E...
#define ARMARX_WARNING
The logging level for unexpected behaviour, but not a serious problem.
std::string const GlobalFrame
Variable of the global coordinate system.
std::vector< ObjectPose > ObjectPoseSeq
This file offers overloads of toIce() and fromIce() functions for STL container types.
An object pose as stored by the ObjectPoseStorage.
armarx::ObjectID objectID
The object ID, i.e. dataset, class name and instance name.
Eigen::Matrix4f objectPoseGlobal
The object pose in the global frame.