Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

There is (likely) nothing wrong.

There is no concept of "ground" in RViz. Nor of "touching".

RViz is a pure visualisation tool. It does not simulate any physics, does not do any modelling, nor does it even "know" what it is rendering.

All robot models are floating in a 3D space in RViz. Only if other meshes or surfaces are rendered in the vicinity of your robot model will it appear robots are "on the ground" or "touching a wall". But in reality, it's all 3D models floating in space that happen to get rendered close to each other.

As to what you observe: the render engine in RViz must be told what the "root" of the scene graph is, as everything else it wants to render (ie: place in the virtual 3D space) will be placed relative to that root.

You configure that root using the Fixed Frame setting of the Global Options (on the left side of the window typically).

It's possible you have that set to base_link.

For most robot models, base_link is located in "a logical place in the robot's body". Unfortunately that does not always mean it's going to be "on the bottom", or "between its feet" (in this case).

If the base_link for your robot model is actually somewhere inside its body, then RViz will make that link the root of the tree and place it in the middle of your screen. Other objects are rendered relative to that, so the (cost?) map display you have in the screenshot will be rendered at z==0 metres offset from base_link. Result: robot appears to be stuck in the groundplane (but again: there is no ground).