Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
test_utils.h
1#ifndef VP_RB_TEST_UTILS_H
2#define VP_RB_TEST_UTILS_H
3
4#include <visp3/ar/vpPanda3DRendererSet.h>
5#include <visp3/ar/vpPanda3DGeometryRenderer.h>
6#include <visp3/ar/vpPanda3DRGBRenderer.h>
7
8#include <visp3/gui/vpDisplayFactory.h>
9
10#include <vector>
11
12#ifdef ENABLE_VISP_NAMESPACE
13using namespace VISP_NAMESPACE_NAME;
14#endif
15
17{
18 std::vector<vpImage<vpRGBa>> rgb;
19 std::vector<vpImage<float>> depth;
20 std::vector<vpHomogeneousMatrix> cTo;
21};
22
23TrajectoryData generateTrajectory(const vpPanda3DRenderParameters &renderingParams,
24 const std::function<void(vpPanda3DRendererSet &)> &makeScene,
25 std::vector<vpHomogeneousMatrix> &cTw, std::vector<vpHomogeneousMatrix> &oTw)
26{
27 vpPanda3DRendererSet renderer;
28 renderer.setRenderParameters(renderingParams);
29 auto depthRenderer = std::make_shared<vpPanda3DGeometryRenderer>(vpPanda3DGeometryRenderer::OBJECT_NORMALS);
30 auto rgbRenderer = std::make_shared<vpPanda3DRGBRenderer>(true);
31 renderer.addSubRenderer(rgbRenderer);
32 renderer.addSubRenderer(depthRenderer);
33 renderer.initFramework();
34 makeScene(renderer);
35
36 if (cTw.size() != oTw.size()) {
37 throw vpException(vpException::dimensionError, "Number of poses don't match");
38 }
40 res.rgb.resize(cTw.size());
41 res.depth.resize(cTw.size());
42 res.cTo.resize(cTw.size());
43
44 for (unsigned int i = 0; i < cTw.size(); ++i) {
45 res.rgb[i].resize(renderingParams.getImageHeight(), renderingParams.getImageWidth());
46 res.depth[i].resize(renderingParams.getImageHeight(), renderingParams.getImageWidth());
47 renderer.setNodePose("object", oTw[i].inverse());
48 renderer.setCameraPose(cTw[i].inverse());
49
50 float nearV = 0.01, farV = 1.0;
51 depthRenderer->computeNearAndFarPlanesFromNode("object", nearV, farV, true);
52 vpPanda3DRenderParameters renderingParamsFrame = renderingParams;
53 renderingParamsFrame.setClippingDistance(nearV, farV);
54 renderer.setRenderParameters(renderingParamsFrame);
55 renderer.renderFrame();
56 renderer.getRenderer<vpPanda3DRGBRenderer>()->getRender(res.rgb[i]);
57 renderer.getRenderer<vpPanda3DGeometryRenderer>()->getRender(res.depth[i]);
58 res.cTo[i] = cTw[i] * oTw[i].inverse();
59 // std::shared_ptr<vpDisplay> d = vpDisplayFactory::createDisplay(res.rgb[i]);
60 // vpDisplay::display(res.rgb[i]);
61 // vpDisplay::flush(res.rgb[i]);
62 // vpDisplay::getKeyboardEvent(res.rgb[i], true);
63
64 }
65
66 return res;
67}
68
69#endif
error that can be emitted by ViSP classes.
Definition vpException.h:60
@ dimensionError
Bad dimension.
Definition vpException.h:71
Renderer that outputs object geometric information.
Implementation of a traditional RGB renderer in Panda3D.
Rendering parameters for a panda3D simulation.
void setClippingDistance(double nearV, double farV)
Set the clipping distance. When a panda camera uses these render parameters, objects that are closer ...
Class that renders multiple datatypes, in a single pass. A renderer set contains multiple subrenderer...
void initFramework() VP_OVERRIDE
Initialize the framework and propagate the created panda3D framework to the subrenderers.
virtual void setRenderParameters(const vpPanda3DRenderParameters &params) VP_OVERRIDE
Set new rendering parameters. If the scene has already been initialized, the renderer camera is updat...
void addSubRenderer(std::shared_ptr< vpPanda3DBaseRenderer > renderer)
Add a new subrenderer: This subrenderer should have a unique name, not present in the set.
std::shared_ptr< RendererType > getRenderer()
Retrieve the first subrenderer with the specified template type.
void setNodePose(const std::string &name, const vpHomogeneousMatrix &wTo) VP_OVERRIDE
Set the pose of an object for all the subrenderers. The pose is specified using the ViSP convention T...
void setCameraPose(const vpHomogeneousMatrix &wTc) VP_OVERRIDE
Set the pose of the camera, using the ViSP convention. This change is propagated to all subrenderers.
std::vector< vpHomogeneousMatrix > cTo
Definition test_utils.h:20
std::vector< vpImage< float > > depth
Definition test_utils.h:19
std::vector< vpImage< vpRGBa > > rgb
Definition test_utils.h:18