28 #include <VirtualRobot/CollisionDetection/CollisionModel.h>
29 #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
30 #include <VirtualRobot/Visualization/TriMeshUtils.h>
31 #include <VirtualRobot/Visualization/VisualizationFactory.h>
35 #include <ArmarXCore/interface/core/BasicVectorTypes.h>
39 VoxelGridCSpace::VoxelGridCSpace(visionx::VoxelGridProviderInterfacePrx voxelGridProvider,
40 memoryx::CommonStorageInterfacePrx cs,
41 bool loadVisualizationModel,
42 float stationaryObjectMargin) :
43 SimoxCSpace(cs, loadVisualizationModel, stationaryObjectMargin)
45 this->voxelGridProvider = voxelGridProvider;
53 +[](armarx::Vector3f
const&
data) {
return Eigen::Vector3f(
data.e0,
data.e1,
data.e2); });
56 auto gridMesh = VirtualRobot::TriMeshUtils::CreateSparseBoxGrid(
62 VirtualRobot::VisualizationFactory::Color::Blue());
63 gridMesh->mergeVertices(10);
64 gridMesh->fattenShrink(stationaryObjectMargin);
67 VirtualRobot::CoinVisualizationFactory().createTriMeshModelVisualization(gridMesh,
id);
71 VirtualRobot::CollisionModelPtr(
new VirtualRobot::CollisionModel(
72 visu,
"PointCloudMeshGridCollisionModel",
agentSceneObj->getCollisionChecker())),
73 VirtualRobot::SceneObject::Physics(),
74 const_cast<VirtualRobot::CDManager*
>(&
cd)->getCollisionChecker()));
88 if (gridPositions.empty())
90 gridPositions = voxelGridProvider->getFilledGridPositions();
91 ARMARX_INFO <<
"Got grid with size: " << gridPositions.size();
92 gridSize = voxelGridProvider->getGridSize();
95 ARMARX_INFO <<
"Adding scene object with grid element count: " << gridPositions.size();
115 new VoxelGridCSpace(voxelGridProvider, commonStorage, loadVisualizationModel);
116 cloned->gridPositions = gridPositions;
117 cloned->gridSize = gridSize;
118 cloned->stationaryObjectMargin = stationaryObjectMargin;
119 for (
const auto& obj : stationaryObjects)
121 cloned->addStationaryObject(obj);
123 cloned->agentInfo = agentInfo;