[ros-users] PropagationDistanceField usage?

Mrinal Kalakrishnan mail at mrinal.net
Mon Nov 22 05:50:49 UTC 2010


Hi Matthew,

On Sun, Nov 21, 2010 at 8:28 PM, Matthew Jacob Klingensmith
<matthewk1989 at aol.com> wrote:
> I should expect to get a distance field which has a line of zeroes along
> the y axis, with increasing distances from there. However, the distance
> field I actually get has a line of zeroes along a line roughly where y=0,
> and both x and z are set to what should be y.

I'm not sure how you're calling the visualization function. I just
wrote a test similar to what you described and it seems to work
correctly. The visualize function publishes markers for points that
are in between a min and max distance field value. The way I would use
it is to set the min and max close to each other, so that you see an
iso-surface of points that are a certain distance away.

I'm including a test that you can try by putting it into
test/test_distance_field.cpp (or use within your program). It
publishes an animation of iso-surfaces of increasing distances from
the y axis. I tested this on all three axes and got the intended
results. Let me know if you have further troubles.

Hope this helps,
Mrinal

TEST(TestPropDistanceField, VisualizeAxes)
{
  PropagationDistanceField df(5.0,5.0,5.0,0.05,-2.5,-2.5,-2.5,10.0);
  df.reset();

  ros::Duration(2.0).sleep(); // hack: wait for rviz to subscribe

  std::vector<btVector3> points;
  for (double y=-2.5; y<2.5; y+=0.05)
  {
    points.push_back(btVector3(0.0,y,0.0));
  }

  df.addPointsToField(points);

  btTransform cur = btTransform::getIdentity();
  for (double d=0.00; d<2.5; d+=0.05)
  {
    df.visualize(d, d+0.04, "/BASE", cur, ros::Time::now());
    ros::Duration(0.1).sleep();
  }
}



More information about the ros-users mailing list