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

Ivan Dryanovski's profile - activity

2020-04-01 09:13:30 -0500 received badge  Great Question (source)
2019-12-21 08:20:49 -0500 received badge  Necromancer (source)
2019-09-13 04:40:16 -0500 received badge  Great Answer (source)
2019-04-11 11:00:55 -0500 received badge  Good Answer (source)
2017-11-13 08:03:45 -0500 received badge  Good Answer (source)
2017-09-22 15:38:28 -0500 received badge  Good Answer (source)
2017-09-22 15:38:16 -0500 received badge  Good Answer (source)
2017-03-04 18:54:30 -0500 received badge  Great Answer (source)
2016-12-03 17:09:10 -0500 received badge  Good Answer (source)
2016-10-12 09:51:10 -0500 received badge  Great Answer (source)
2016-04-12 09:31:43 -0500 received badge  Great Answer (source)
2016-04-12 09:31:43 -0500 received badge  Guru (source)
2016-04-11 02:51:27 -0500 received badge  Guru (source)
2016-04-11 02:51:27 -0500 received badge  Great Answer (source)
2016-03-17 13:55:03 -0500 marked best answer Bullet library roadmap

The ROS bullet wiki states the following:

The version of bullet distributed with ROS currently has patches against the official version of bullet. Our hope is to move towards the official version so that it can be a standard system install.

As far as I can tell, this has been there for a long while. Is there any development with this issue?

I wrote a package in ROS which uses tf::Transform math. I am trying to separate it into a standalone library which can be used outside of ROS. I am not certain what math library to use. I assume there might be problems if I link it to non-ROS bullet, if the library is then used with a ROS wrapper which uses the patched ROS bullet.

2016-03-07 22:43:25 -0500 received badge  Good Answer (source)
2016-01-14 14:35:56 -0500 received badge  Nice Answer (source)
2015-12-26 04:27:50 -0500 received badge  Great Question (source)
2015-12-16 19:06:39 -0500 received badge  Stellar Question (source)
2015-08-14 11:48:34 -0500 received badge  Nice Question (source)
2015-06-19 14:29:11 -0500 received badge  Favorite Question (source)
2015-04-26 23:00:03 -0500 received badge  Famous Question (source)
2015-01-27 08:43:04 -0500 received badge  Good Answer (source)
2015-01-15 13:34:25 -0500 received badge  Famous Question (source)
2014-12-30 00:41:18 -0500 received badge  Good Answer (source)
2014-10-30 07:36:50 -0500 received badge  Nice Answer (source)
2014-10-14 08:24:16 -0500 received badge  Good Question (source)
2014-10-02 02:53:55 -0500 received badge  Guru (source)
2014-08-21 08:07:57 -0500 received badge  Nice Answer (source)
2014-08-18 16:18:03 -0500 received badge  Good Answer (source)
2014-04-20 13:29:07 -0500 marked best answer rviz goal topic: fuerte vs groovy

Did the default 2D Nav Goal topic advertised by rviz change from fuerte to groovy? It appears the new default is move_base_simple/goal, and the old one was just goal.

Is this intentional? I think it's cleaner if the default topic is just the generic goal, and the user can remap this using launch files, or vcg files. It seems the change broke our launch files between fuerte and groovy.

2014-04-20 13:24:53 -0500 marked best answer rosdoc generation for wiki

I use the following command to generate a package's documentation:

rosdoc_lite [name-of-pkg]

When inspecting the resulting offline documentation, I noticed that it's different from the one autogenerated for the ros wiki under the Code API tab:

http://ros.org/doc/groovy/api/[name-of-pkg]/html/index.html

In particular, the online version has all the auxiliary srv:: and cfg:: namespaces (and possibly others) hidden.

Two questions:

  • Is there a way to generate documentation offline which is the same as the online one?
  • If not, what exactly are the differences between the two?
2014-04-20 13:13:02 -0500 marked best answer rosdep stack dependencies

I am trying to use rosdep to install the dependencies to a package on ROS fuerte, and I am getting an error. Perhaps someone could help me out.

Suppose I have a stack foo which depends on stack bar, with manifest:

<stack>
  <description brief="foo"> foo </description>
  <depend stack="bar" />
</stack>

Suppose I don't have ros-fuerte-bar installed on my system. Will

$ rosdep install foo

prompt me to install ros-fuerte-bar? Or is it just supposed to produce an error and fail?

2014-04-20 12:53:22 -0500 marked best answer Accuracy / resolution of ROS time

I was doing some quick profiling of the execution time of a piece of code, and noticed that I was getting different answers depending on what method I use to get the current time.

EDIT: original test removed, added test as per Eric's suggestion.

I am running on: Ubuntu, 3.0.0-17-generic

The following code is inserted in a callback function, which is called asynchronously.

struct timeval s_get, e_get;
timespec s_crt, e_crt;
ros::Time s_ros, e_ros;

gettimeofday(&s_get, NULL);
clock_gettime(CLOCK_REALTIME,  &s_crt);
s_ros = ros::Time::now();

// **** do something here... ****

gettimeofday(&e_get, NULL);
clock_gettime(CLOCK_REALTIME,  &e_crt);
e_ros = ros::Time::now();

// print results
double dur_get = ((e_get.tv_sec * 10e6 + e_get.tv_usec) -
                  (s_get.tv_sec * 10e6 + s_get.tv_usec)) * 1e-3;
double dur_crt = ((e_crt.tv_sec * 10e9 + e_crt.tv_nsec) - 
                  (s_crt.tv_sec * 10e9 + s_crt.tv_nsec)) * 1e-6;
double dur_ros = (e_ros - s_ros).toNSec() * 1e-6;

printf("Dur [ms]: %.1f \t %.1f \t %.1f \n", dur_get, dur_crt, dur_ros);

Output:

Dur [ms]: 8.5     8.5      0.0 
Dur [ms]: 6.7     6.7     10.1 
Dur [ms]: 15.9     15.9     10.1 
Dur [ms]: 6.2     6.2      0.0 
Dur [ms]: 13.6  13.6     10.1 
Dur [ms]: 15.2  15.2     20.2 
Dur [ms]: 13.0  13.0     20.2 
Dur [ms]: 10.5  10.5     10.1 
Dur [ms]: 14.2  14.2     20.2 
Dur [ms]: 11.2  11.2     10.1 
Dur [ms]: 10.5  10.5     10.2 
Dur [ms]: 10.4  10.4     10.1 
Dur [ms]: 16.4  16.4     20.1 
Dur [ms]: 11.0  11.0     10.1 
Dur [ms]: 17.6  17.6     20.2 
Dur [ms]: 12.6  12.6     20.1 
Dur [ms]: 18.5  18.5     20.1 
Dur [ms]: 18.1  18.1     20.1 
Dur [ms]: 14.8  14.8     10.1 
Dur [ms]: 5.5     5.5      0.0 
Dur [ms]: 8.5     8.5     10.1 
Dur [ms]: 11.4  11.4     10.1 
Dur [ms]: 18.4  18.4     20.2 
Dur [ms]: 14.3  14.3     10.1 
Dur [ms]: 10.8  10.8     10.1 
Dur [ms]: 7.9     7.8      0.0 
Dur [ms]: 17.2  17.2     20.2

Consclusion

gettimeofday and clock_gettime result in similar durations, but ros::Time::now() durations are different.

I noticed that if I insert the example above in a loop at startup (instead of asynchronously inside a function), and tell it to sleep a certain time each iteration, I get 0.0 ms reported duration by ROS, and the correct duration with the other 2 methods. My only explanation is that ros::spinOnce() hasn't been called, and this is interfering with ros::Time::now().

This has very little impact on my profiling. However, I sometimes use the ros time to calculate velocities or other quantities in the form x/dt. In this case, poor temporal resolution like this would make a huge difference.

Could anyone comment on this? Am I doing something wrong?

EDIT 2

I was running using ... (more)

2014-04-20 12:40:27 -0500 marked best answer Dynamic reconfigure default parameters

I am writing a node which accepts certain parameters. I would like to be able to pass them through a launch file, as well as make them dynamically reconfigurable.

What are the best practices regarding this? In particular:

  • What happens if the value in the launch file is not the same as the default value in the .cfg file?
  • Does it matter whether I register the dynamic reconfigure services before or after getting the parameters from the nodehandle using getParam()?
2014-04-20 12:24:39 -0500 marked best answer Auto white balance with OpenNI

Is it possible to disable the auto white balance of the Kinect camera using the openni_kinect driver?

2014-04-20 12:22:57 -0500 marked best answer Augmenting Octomap nodes with additional info

I'm interested in doing the following things with Octomap. I'm not sure whether they can be accomplished by using the templated classes, or by rewriting the Octomap source. What is the best solution, and which parts of the code do I need to look into?

  1. Adding additional information to the nodes in the Octomap tree - for example, color.

  2. Being able to query the value at different resolution levels. So I'd need a function which returns which returns the mean (or mode, or min/max etc) of the value from all the children nodes.

  3. Visualizing the voxels based on their value - preferably in rviz

Thanks for the help!

2014-04-20 12:21:46 -0500 marked best answer PointCloud subscriber/publisher types

Hi,

When working with PointClouds, I usually subscribe to a sensor_msgs::PointCloud2 topic, and convert to a pcl::PointCloud inside my code. Then, once I'm done mainpulating the cloud, I convert it back to a sensor_msgs::PointCloud2 to publish it, using these functions:

pcl::fromROSMsg
pcl::toROSMsg

My first question is: what is the cost of using these functions? I am assuming there's a memcpy involved, which (when dealing with kinect data) is probably not negligible.

Second: is there a way to avoid this, by directly subscribing/publishing pcl::PointCloud types? I believe that there is a publisher/subscriber for pcl types, but I'm not sure whether it actually saves time, or does the same conversion/memcpy behind the scenes.

Thanks, Ivan

2014-04-20 12:21:32 -0500 marked best answer Passing large data messages

Hi,

I would like some suggestions or guidelines for the following design problem. I have a ROS node which maintains a fairly large data structure (a 3D map). I would like to publish it efficiently, so I can create independent packages that visualize or process the data. I can publish ROS messages as shared pointers using the nodelet architecture, but that still leaves the problem of converting the map structure to a ROS message. Translating the map structure to a ROS message is undesirable for two reasons

  • I need to spend time copying data out of the structure and into the ROS message
  • The native map is built using some data structures not available to the ROS message, which can only use vectors.

An alternative I can think of is to directly maintain the map data in my program as a ROS message, so no translation would be required. However, again I have the problem that the ROS messages only allow for vectors, so I'd be restricted in how I design the structure.

Is my reasoning correct? Does anyone have a good solution to this problem?