General purpose visualization primitives that can be used for a variety of visualization tasks.
The radius of spheres, cylinders and circles is 1 m, unless scaled otherwise. The height of cylinders and the sides of cubes are also 1 m by default.
Spheres, cylinders and circles are equipped with automatic level-of-detail (LOD) handling to yield better performance without lost aesthetics.
Currently, polygons are always filled and circles always non-filled. If you need an unfilled polygon, use a polyline.
Point and line clouds are used to represent one or more points or lines respectively. All points/lines contained in the cloud share the common properties such as color, opacity and in which coordinate system they are specifiecd.
A typical usage scenario is to use point/line clouds to visualize particle fitlers or sensor measurements.
The cloud primitives are very efficient at representing large sets, but to achieve the best performance, clusters that are very disjoint in space should be represented by separate clouds. For example, if you have 100 robots doing localization using particle filters in a huge environment you'd benefit from visualizing their particles using one point cloud per robot, rather than just one.
Tri-meshes are triangle analogue to the point and line clouds. Tri-meshes are useful for efficient visualization of complex shapes or many small objects, e.g. all the walls extracted from a SLAM filter.
The tri-meshes is represented by a sequence of vertices and a sequence of index triplets specifying which vertices form triangles.
Currently, there is no support for per-vertex coloring or texturing of tri-meshes. The opacity is shared by all triangles in the tri-mesh.
There are three different kind of grids: regular, radial and angular grids, all depicted above. Although there are three types of grids, there's only one grid primitive, which has a setting for configuring the type.
For radial and regular grids, the size of the segments in the grid is determined by the object's scale.
Every view in the peekabot server is rendered through a camera object, and different views can use different cameras. Having cameras as first class objects allows cameras to be attached to e.g. robots and move around with them as they are moved.
The FOV of the camera is depicted by the pyramid, and the focus point of the camera is shown by the dashed line.
Models provide a way to show complex objects that aren't easy to represent using any other type of primitive. Models are currently the only primitive that can be textured.
See the section on Model conversion for documentation on which file formats are supported and how to convert your models into a suitable format.
The occupancy grid primitive provides a convinient and efficient way for visualizing 2D occupancy grids. The storage is sparse: unused cells require no memory and adjacent cells with the same occupancy value are merged and stored as big cells.
Cells about which nothing is known are drawn transparent. The color used to draw other cells is linearly interpolated between a per instance configurable unoccupied and occupied color.
If your robot is equipped with a manipulator or similar device, peekabot's joint constructs provide a nice interface for updating its degrees of freedoms (DOFs). Translating and rotating the manipulator's parts manually is normally both harder and more error prone than delegating the task to peekabot.
A joint object affects all of its children according to its set joint value, either by rotating (hinge) or translating (slider) them.
Text labels provide orientable, scalable text annotations. Useful for annotating maps etc.
Currently only one font is supported, a serif font.
1.7.1