28 #include <Eigen/Geometry>
30 #include <VirtualRobot/CollisionDetection/CollisionModel.h>
31 #include <VirtualRobot/SceneObject.h>
32 #include <VirtualRobot/SceneObjectSet.h>
33 #include <VirtualRobot/VirtualRobot.h>
34 #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h>
45 VirtualRobot::SceneObjectSetPtr
50 const auto obstacles = ocHelper.
obstacles();
52 const float boxSize = occupancyGrid.
resolution;
53 const float resolution = occupancyGrid.
resolution;
55 VirtualRobot::SceneObjectSetPtr sceneObjects(
new VirtualRobot::SceneObjectSet);
58 <<
"Only occupancy grid in global frame supported.";
60 VirtualRobot::CoinVisualizationFactory factory;
62 const Eigen::Isometry3f& world_T_map = occupancyGrid.
pose;
64 for (
int x = 0; x < obstacles.rows(); x++)
66 for (
int y = 0; y < obstacles.cols(); y++)
70 const Eigen::Vector3f pos{
71 static_cast<float>(x * resolution),
static_cast<float>(y * resolution), 0};
74 map_T_obj.translation() = pos;
76 Eigen::Isometry3f world_T_obj = world_T_map * map_T_obj;
78 auto cube = factory.createBox(boxSize, boxSize, boxSize);
80 VirtualRobot::CollisionModelPtr collisionModel(
81 new VirtualRobot::CollisionModel(cube));
84 "box_" +
std::to_string(sceneObjects->getSize()), cube, collisionModel));
85 sceneObject->setGlobalPose(world_T_obj.matrix());
87 sceneObjects->addSceneObject(sceneObject);