Home | Tutorials | Wiki | Issues
Ask Your Question

Boris's profile - activity

2018-12-11 15:40:22 -0500 received badge  Nice Answer (source)
2017-01-23 20:24:18 -0500 received badge  Favorite Question (source)
2017-01-23 20:24:11 -0500 received badge  Nice Question (source)
2015-11-10 09:06:17 -0500 received badge  Great Question (source)
2015-10-31 12:31:02 -0500 marked best answer Gazebo 1.4: model.config vs manifest.xml

In the tutorial Make a Mobile Robot for version 1.4 instead of creating manifest.xml for a model it is suggested to make model.config. However Gazebo 1.4.0 (built from source) does not see the model in this case. Everything works fine when I use manifest.xml.

Do I have an odd build or there is a mistake in tutorial?

Thanks,

Boris

2015-10-31 12:30:49 -0500 marked best answer Passing parameters to included SDF

For example I have a bunch of identical cameras in a world. The model of a camera includes the gazebo_ros_camera plugin with parameters such as topic name etc. Obviously every camera should publish to the topic with unique name. So, is it possible to pass such parameters from within <include> tag? If not, are there any workarounds? Duplicating the camera model with modified parameters is not a nice option.

Something similar to <arg> tag in ROS' launch files would suffice, but I was unable to find anything like this in SDF specification.

EDIT:

Let's say I have a Gazebo model of camera:

<sdf version="1.3">
  <model name="camera">
    <link name="link">
      ...
      <sensor name="camera" type="camera">
        ...
        <plugin name="camera_plugin" filename="libgazebo_ros_camera.so">
          ...
          <!-- PROBLEMS ARE HERE -->
          <imageTopicName>image_raw</imageTopicName>
          <cameraName>camera</cameraName>
          ...
          <frameName>camera_frame</frameName>
          ...
        </plugin>
      </sensor>
    </link>
  </model>
</sdf>

Now, if I include several of these to a world:

<sdf version="1.3">
  <world name="cameras_world">
    ...
    <include>
      <uri>model://camera</uri>
      <name>camera_1</name>
      <pose>1 0 1 0 0 0</pose>
    </include>

    <include>
      <uri>model://camera</uri>
      <name>camera_2</name>
      <pose>2 0 1 0 0 0</pose>
    </include>

    <include>
      <uri>model://camera</uri>
      <name>camera_3</name>
      <pose>3 0 1 0 0 0</pose>
    </include>
</sdf>

All three cameras will publish to exactly same ROS topic: /camera/image_raw as well as with exactly same frame ID: camera_frame. Because there is no way on SDF level to pass down custom parameters to included models.

So I need a workaround for this and looking for your kind suggestions.

I hope now my question is clear :-)

Thanks,

Boris

2015-10-31 12:30:36 -0500 marked best answer How to control publish rate in ROS-enabled plugins?

Are there any standard option for this? It used to be <updateRate> parameter, but it seems not to work anymore. Although there is <update_rate>, it works only for sensor plugins.

At the moment my model plugin publishes data in OnUpdate() function without any additional time control.

Should I publish the data in parallel thread and achieve necessary rate with something like ros::Rate::sleep() or there is a better option?

Thanks

2015-10-31 12:30:30 -0500 marked best answer No contact information returned

As can be seen from the picture below there is obviously a collision. However no contact information is returned.

At the beginning of collision a lot of data returned, but after the system gets to equilibrium contact information is not longer available.

Is it a bug or I have to tune some simulation parameters? Is there any workaround for this?

Thanks,

Boris

image description


EDIT: Here are model and world SDFs.

I just noticed that there is a solver of type quick in my world. Can it be the cause?

EDIT #2: Tried Solver type world, but now I am unable to spawn any objects from gui - Gazebo simply dies.

2015-10-31 12:30:25 -0500 marked best answer Access to a world from GUI system plugin for gzclient

I have a GUI system plugin that is loaded by gzclient in the following manner:

gzclient -g libgazebo_plugin.so

After gzclient starts I can see my world with simulation running. However I am unable to get access to that world from the plugin - physics::get_world() generates exception:

Error [Physics.cc:71] Unable to find world by name in physics::get_world[default]

Here how it is invoked:

void Init() {
  ...
  this->world_name_ = gui::get_world(); // returns "default"
  this->world_ = physics::get_world(this->world_name_);
  ...
}

physics::get_world() without arguments gives error "no worlds".

Any thoughts?

P.S. I actually just need to get simulation time (world_->GetSimTime()), so maybe there is another way?

Thanks

2015-10-31 12:30:21 -0500 marked best answer Confusion with common::Time::SecToNano()

As the description of the function says it converts seconds to nanoseconds, but the actual code doing the opposite. So, instead of multiplying seconds with 1e9, it multiplying it with 1e-9.

Similar applies to MilToNano() and MicToNano().

What I am missing?

2015-10-31 12:12:56 -0500 marked best answer Interfacing standard Gazebo sensors with ROS

It seems to be a trivial task, but I can't find an answer so far.

I need to interface standard sensors like (camera, laser scanner etc.) with ROS. This page mentions all the plugins I need, but there is no further information on this.

Gazebo Wiki is silent about this as well. The only thing there is how to write your own plugin.

What did I miss?

Thanks,

Boris

2015-10-21 18:33:33 -0500 received badge  Good Question (source)
2015-02-03 08:39:17 -0500 received badge  Famous Question (source)
2014-07-18 01:45:37 -0500 marked best answer How to visualize contact forces?

Is there anything in API that can visualize the contact forces from contact sensor? If not then how it can be implemented? Basically all I need is to show an axis similar to the ones used with joints.

Also, would it be possible to extend context menu with system GUI plugin to toggle such visualization?

Thanks in advance,

Boris

2014-03-26 09:48:11 -0500 received badge  Famous Question (source)
2013-11-28 16:15:15 -0500 received badge  Famous Question (source)
2013-08-02 03:06:46 -0500 received badge  Nice Question (source)
2013-08-02 03:06:38 -0500 marked best answer A correct way to implement "fixed" joint?

Am I right that there is no fixed joint type in SDF similar to one in URDF? So how should I implement one?

In one of the tutorials Hokuyo laser is attached to a mobile platform with revolute joint, but with zero limits:

<joint name="hokuyo_joint" type="revolute">
  <child>hokuyo::link</child>
  <parent>chassis</parent>
  <axis>
    <xyz>0 0 1</xyz>
    <limit>
      <upper>0</upper>
      <lower>0</lower>
    </limit>
  </axis>
</joint>

Same approach is used in Simple Arm model, to attach it to the ground.

Although it seems ok, but there is an extra joint control on Joints pane which of course does not control anything. Also there is an extra coordinate frame marker in scene.

So is it the only way to implement fixed joints?

2013-07-18 14:23:45 -0500 commented answer libraries in eclipse

Glad it helped. The last resort is usually to delete `build` directory and start over, and it is usually the way for catkin packages in ROS. Sorry, didn't get any notification of your comments before.

2013-07-18 06:32:29 -0500 received badge  Nice Answer (source)
2013-07-11 06:23:57 -0500 answered a question libraries in eclipse

If you followed Gazebo tutorials you should have a CMake project. Thus, you can generate Eclipse project with all necessary paths and symbols automagically by:

$ cd build
$ cmake -G"Eclipse CDT4 - Unix Makefiles" ../

As a result you will get .project and .cproject files in the build directory. Just import the project into Eclipse workspace (File -> Import -> Existing Projects into Workspace -> Select root directory (choose build directory in dialog)).

However, sometimes for code completion to work it is necessary to add additional symbols and paths. That can be done by the following sequence: Project -> Properties -> C/C++ Include Paths and Symbols -> Add Contributed... -> Discovered scanner configuration container, Next -> Next -> Select everything (yes, by hand) in "C/C++ Container path" -> Finish. It can be tiresome, but eventually it helps.

Also you may need to try to compile project at least once, thus Eclipse gather output information from compiler.

Note: The next problem you may face is "Out of memory" error while sources are indexing. In short, Eclipse allocate 256 Mb of memory (or so) by default. Which seems ridiculously small for Java VM, and you have to give it more to cope with Gazebo sources. Here you can read how to do it. To permanently save these settings edit eclipse.ini appropriately in the root directory of Eclipse.

P.S. That all works for sure on Juno, but should be pretty similar on Indigo.


EDIT:

The libraries can be added by using target_link_libraries in CMakeLists.txt

Note: It is necessary to re-generate Eclipse project files every time you change CMakeLists.txt

EDIT 2:

There is actually a better way to solve indexing problem. Instead of doing "Add Contributed..." as described above, do Project -> Properties -> [C/C++ General] -> Preprocessor Include Paths, Macros etc. -> (Choose tab "Providers"), tick "CDT GCC Built-in Compiler Settings" and, possibly, "CDT GCC Build Output Parser". This one definitely works in Eclipse Kepler, but I'm not sure for previous versions.

2013-06-23 03:47:11 -0500 received badge  Popular Question (source)
2013-06-23 03:47:11 -0500 received badge  Notable Question (source)
2013-06-21 14:13:57 -0500 received badge  Famous Question (source)
2013-06-19 09:53:07 -0500 received badge  Famous Question (source)
2013-06-19 00:04:17 -0500 commented answer Reference paper for gazebo

Thanks for clarifying!

2013-06-18 04:43:51 -0500 commented answer Reference paper for gazebo

Apparently they did write something for ICRA :) You can find it on the conference's CD/USB titled "ICRA'13 Workshops and Tutorials Proceedings". Although it has only 2 pages, there are title, abstract, 5 sections and references. So looks like a paper to me. Again I am not clear about its official status, i.e. can it be treated as a publication.

2013-06-17 20:45:46 -0500 commented question Reference paper for gazebo

P.S. The link you have provided is broken, looks like a missed `http://`.

2013-06-17 20:41:21 -0500 commented question Reference paper for gazebo

Not really canonical, but quite a recent one from ICRA'13 - N. Koenig and J. Hsu, “The many faces of simulation: Use cases for a general purpose simulator,” in ICRA’13 Workshop on Developments of Simulation Tools for Robotics & Biomechanics, 2013. Not sure will it be available online at any point since workshop papers tend to be not included to indices like IEEEXplore. May be Nate or John will upload it later.

2013-06-12 21:43:56 -0500 commented answer Timing / Synchronisation between Gazebo and ROS

@Christoph, it's a bit strange that you had to set up `use_sim_time` in every launch file. This parameter is looked up in the global namespace, thus, it should be sufficient to load it once before the first node starts.

2013-06-12 21:32:53 -0500 answered a question Linking problem when compiling from source

According to ldconfig(8)

ldconfig creates the necessary links and cache to the most recent shared libraries found in the directories specified on the command line, in the file /etc/ld.so.conf, and in the trusted directories (/lib and /usr/lib)

Also on Ubuntu there are no configuration files in /etc/ld.so.conf.d/ for such location as /usr/local/lib, thus it has to be added manually in order dynamic linker to find appropriate libraries.

So, seems there is nothing wrong :)