Gazebo | Ignition | Community
Ask Your Question
0

Translating heighmap creates offset between collision and visual

asked 2017-03-06 14:14:01 -0600

bybee.taylor gravatar image

When using the <pos> tag inside the <heightmap> to get my heightmap aligned with my coordinate system of choice, it appears to be translating correctly when I open the client, but when I place an object on the heightmap, it is as if the collision frame did not translate.

This portion of the world file looks as follows. There appears to have been a similar issue that was resolved a few years ago (http://answers.gazebosim.org/question..., https://bitbucket.org/osrf/gazebo/com...), but I still seem to be exhibiting the problem.

Any ideas? I am on Gazebo 7.5, installed from binaries.

 <model name="heightmap">
      <static>true</static>
      <link name="height">
        <collision name="collision">
          <geometry>
            <heightmap>
              <uri>file://media/heightmaps/terrain.png</uri>
              <size> 540 540 60 </size>
              <pos> -55 -72 0 </pos>
            </heightmap>
          </geometry>
          <surface>
            <friction>
              <ode>
                <mu>100000</mu>
                <mu2>500000</mu2>
              </ode>
            </friction>
            <bounce/>
            <contact>
              <ode/>
            </contact>
          </surface>
          <max_contacts>10</max_contacts>
        </collision>
        <visual name="visual_abcedf">
          <geometry>
            <heightmap>
              <use_terrain_paging>false</use_terrain_paging>
              <texture>
                <diffuse>file://media/heightmaps/terrain_tex.png</diffuse>
                <normal>file://media/materials/textures/flat_normal.png</normal>
                <size> 540 </size>
              </texture>
              <uri>file://media/heightmaps/terrain.png</uri>
              <size> 540 540 60 </size>
              <pos> -55 -72 0 </pos>
            </heightmap>
          </geometry>
        </visual>
      </link>
    </model>
edit retag flag offensive close merge delete

Comments

I am wondering if what you're experiencing is related to this issue: https://bitbucket.org/osrf/gazebo/issues/245/heightmap-visual-is-offset-from-collision

iche033 gravatar imageiche033 ( 2017-03-06 15:48:09 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2021-01-11 10:08:56 -0600

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

Assuming that you use default physics engine (ODE), one possible way to solve this problem is, write a model plugin for your heightmap terrain, extract its collision pointer (type casted to ODECollision type) and use ODE function dGeomSetPosition( ODECollisionPtr->ODECollisionId(), x, y, z). The offset you see is because, translation happens in rendering component (in x, y, z) but not in physics component (happens only in z) ( check gazebo-7/gazebo-9 source code ODEHeightmapShape.cc ).

This worked for me!!!

check the below link for proper syntax: ODE API Docs

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2017-03-06 14:14:01 -0600

Seen: 11,186 times

Last updated: Jan 11 '21