ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Daniel Canelhas's profile - activity

2016-01-03 16:26:38 -0500 received badge  Great Answer (source)
2016-01-03 16:26:38 -0500 received badge  Guru (source)
2014-01-28 17:23:13 -0500 marked best answer Using openCL in ROS

Hi,

I've been using openMP to get some multi-core parallelism going in ROS but I'd like to try to use the GPU for this instead. Can someone please instruct me on how to edit my CMakeLists.txt to get ROS to compile a node so that it can use openCL? Typically, I'd go about compiling an openCL program is like this:

gcc -c -I /path-to-the-include-dir-with-cl.h/ main.c -o main.o
gcc -L /path-to-the-lib-folder-with-OpenCL-libfile/ -l OpenCL main.o -o host

I know there is a CUDA package somewhere, but it's not an option due to the ATI hardware (plus, cross-platform is nice, right?)

2014-01-28 17:22:55 -0500 marked best answer Initializing and manipulating OctoMaps with more than just occupancy

Hi, Sorry if this is too much of a C++ question, but I'm having trouble understanding how to initialize and update an octree in which the nodes can store a data value.

There is a nice example online showing how to make an octree such as

OcTree tree (0.1); //0.1 is the spatial resolution in m.

and then setting the occupancy of the nodes to true, using

tree.updateNode(point_in_3d,true)

Where point_in_3d is an octomath::Vector3.

So far so good. However, reading the documentation, I've come across an

octomap::OcTreeDataNode< T >

that I'd much rather use. With a data container of arbitrary type T in every leaf, I could presumably store additional information about the geometry there, such as the estimated surface normal, or color, or measurement uncertainty, etc.

What I'd like to know (and haven't been able to understand from the docs) is, how to create such an octree (suppose we want T to be a 3-element vector of type float), and how to update the data.

The reason I'm not using pcl octrees is because octomap provides a way of doing ray casting into the tree, and also because of octovis (neat!).

Thanks

2013-02-14 08:47:25 -0500 received badge  Great Answer (source)
2013-01-16 11:44:04 -0500 received badge  Notable Question (source)
2013-01-16 11:44:04 -0500 received badge  Famous Question (source)
2012-08-23 19:40:24 -0500 received badge  Nice Answer (source)
2012-08-23 01:38:51 -0500 received badge  Notable Question (source)
2012-08-23 01:38:51 -0500 received badge  Famous Question (source)
2012-08-23 01:38:51 -0500 received badge  Popular Question (source)
2012-08-22 23:13:02 -0500 received badge  Popular Question (source)
2012-08-22 23:13:02 -0500 received badge  Notable Question (source)
2012-08-22 23:13:02 -0500 received badge  Famous Question (source)
2012-08-18 01:32:07 -0500 received badge  Notable Question (source)
2012-08-18 01:32:07 -0500 received badge  Famous Question (source)
2012-08-03 01:26:28 -0500 received badge  Necromancer (source)
2012-07-31 11:39:44 -0500 answered a question Fuerte + Ubuntu 12.04 + Kinect errors

The first two errors are not really fatal, so I'm ignoring them on my system.

the third one seems similar to what I experience on a fresh install of lubuntu 12.04 64 bit and ros fuerte.

I solved it by reverting to older versions of openni-dev and ps-engine. Using binaries for newer versions that were posted here on answers only caused more problems (ie. my camera wasn't detected at all).

step 1:

sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl

step 2:

sudo apt-get update

step 3:

Open synaptic (install it if you have to) then search for openni and remove openni-dev completely. You'll probably see version 1.5.2.23 installed.

Now select openni-dev and choose the menu item Package, Force version. Select version 1.3.2.1-4+precise1 from the menu (provided by the ppa you just added).

Install it.

Then go to Package and Lock version. You should see a red bar over the now installed openni-dev.

Then choose ps-engine (it should appear when you search for openni). Force the version for this package to 5.0.3.3-3+precise1.

install it and lock the version.

You can now install the packages ros-fuerte-openni-launch and ros-fuerte-openni-camera. The functionality should be the same as what you used to have in electric.

Now let's just hope that whatever is causing the problem gets fixed soon.

2012-07-31 08:34:12 -0500 received badge  Popular Question (source)
2012-07-17 22:04:19 -0500 received badge  Good Answer (source)
2012-07-03 00:16:56 -0500 received badge  Popular Question (source)
2012-04-30 15:16:17 -0500 marked best answer callback needs access to multiple topics - how?

I'm trying to do some processing on images published by a kinect but this is a general camera-related question.

I would like to use the image_geometry functions contained in the PinholeCameraModel for converting 3d rays to pixels and 2d pixels to 3d rays, while making use of the calibration parameters published under /camera/rgb/camera_info.

The documentation gives an example like this:

image_geometry::PinholeCameraModel model_;

void imageCb(const sensor_msgs::ImageConstPtr& raw_image,
             const sensor_msgs::CameraInfoConstPtr& cam_info)
{
  // Update the camera model (usually a no-op)
  model_.fromCameraInfo(cam_info);

  // Do processing...
}

Defining a subscriber like this doesn't work though:

ros::Subscriber sub = n.subscribe("/camera/rgb/image_rect /camera/rgb/camera_info", 1, &imageCb);

I'm guessing that I have to do something to group the image with the camera_info into one single message, perhaps with image_transport(?), but I don't have any idea how to do this. I suppose i could create a separate callback for the camera info and update some global variable that the other callback could access but I think that's a less than ideal solution in general (in this case I'm sure it works, since the calibration parameters are constant).

2012-04-30 15:16:17 -0500 received badge  Good Answer (source)
2012-04-16 05:09:35 -0500 answered a question cv::bilateralFilter segfaults on image from cv_bridge

Apparently what seems to cause the error is the presence of NaN's in the image.

2012-04-16 03:15:02 -0500 asked a question cv::bilateralFilter segfaults on image from cv_bridge

I have a ROS node that takes in a depth image and converts it to an openCV compatible format. However it doesn't seem to be compatible with all openCV functions.

cv_bridge::CvImagePtr bridge;
try
{
    bridge = cv_bridge::toCvCopy(msg, "32FC1");
}
catch (cv_bridge::Exception& e)
{
    ROS_ERROR("Failed to transform depth image.");
    return;
}
depthImage = bridge->image;
cv::Mat depthImageFiltered(480,640,CV_32F);
cv::bilateralFilter( depthImage, depthImageFiltered, -1, 0.45, 3.0 );

This produces a segmentation fault on the last line whereas

cv::blur( depthImage, depthImageFiltered, cv::Size(5,5));

works without error. I see no reason why these two should behave differently. Weirder still, the bilateralFilter works fine with floating-point images loaded through cv::imread(). What am I doing wrong?

2012-03-19 08:56:20 -0500 received badge  Nice Answer (source)
2012-03-06 10:52:41 -0500 received badge  Nice Answer (source)
2012-03-06 10:47:19 -0500 received badge  Guru (source)
2012-03-06 10:47:18 -0500 received badge  Great Answer (source)
2012-02-18 15:54:09 -0500 received badge  Nice Answer (source)
2012-01-30 19:14:43 -0500 received badge  Enlightened (source)