Gazebo | Ignition | Community
Ask Your Question

amptrofa's profile - activity

2015-10-15 01:42:51 -0600 received badge  Taxonomist
2014-12-02 14:16:10 -0600 received badge  Good Question (source)
2014-11-26 21:23:37 -0600 received badge  Nice Question (source)
2014-07-30 10:21:51 -0600 received badge  Famous Question (source)
2014-05-06 16:31:25 -0600 received badge  Famous Question (source)
2014-05-01 20:38:46 -0600 received badge  Notable Question (source)
2014-05-01 20:38:46 -0600 received badge  Popular Question (source)
2014-01-13 23:21:40 -0600 received badge  Notable Question (source)
2014-01-13 23:21:40 -0600 received badge  Popular Question (source)
2013-12-15 14:53:51 -0600 answered a question Symbol Lookup Error in Example Plugin

I tried to compile and run the presentation example plugin and realized that the entire gazebo::gui namespace was giving undefined symbol errors.

Then I saw this pull request, which reportedly fixes the issue and was merged into Gazebo 2.0.

I will update this post shortly when I upgrade to Gazebo 2.0 2.1 and confirm that everything is working.

UPDATE: The wiki-sourced plugin linked in the original question is out-of-date for Gazebo 2.0+, but the one in examples/plugins/systemguiplugin compiles and doesn't generate any symbol errors. However, it does result in an error:

gazebo: /usr/include/boost/smart_ptr/shared_ptr.hpp:418: T* boost::shared_ptr<T>::operator->()
const [with T = gazebo::rendering::UserCamera]: Assertion `px != 0' failed.

From what I can tell this is due to the fact that the SystemPlugin's Init() function is called before the scene is created, so this->userCam is NULL when

this->userCam->EnableSaveFrame(true);

is executed. I have not found a way around this.

Much more important to me, the undefined symbol error in the presentation example plugin persists. The original question is essentially unchanged, so I'm updating the question with further details.

2013-12-14 18:24:42 -0600 asked a question Symbol Lookup Error in Example Plugin

I have compiled the tutorial plugin from http://gazebosim.org/wiki/Tutorials/1.4/plugins/systemguiplugin.

When I run Gazebo with the plugin, I get the following symbol lookup error:

gazebo: symbol lookup error: /<...>/build/libsystem_gui.so: undefined symbol:
_ZN6gazebo3gui17get_active_cameraEv

I am using the CMakeLists.txt from the tutorial linked above. I have removed all other Gazebo installations from my system. I have upgraded to the most recent version of Gazebo for my system: 1.9.2-1~precise.

The same error appears in this question, but I am not using ROS, as this user appears to be.

Any suggestions?

UPDATE: I upgraded to Gazebo 2.1.0-1~precise, and using the updated plugin from examples/plugins/system_gui_plugin, I no longer get the undefined symbol error (although the plugin doesn't work for other reasons)

However, in the presentation example plugin, after making a few changes to compile the plugin, I still get the following undefined symbol error:

Error [Plugin.hh:141] Failed to load plugin <...>/presentation/build/libpresentation.so:
<...>/presentation/build/libpresentation.so: undefined symbol:
_ZN6gazebo3gui6Events8keyPressE

Commenting out the gui::Events::ConnectKeyPress line gets rid of the error. gazebo::gui::Events::keyPress is never accessed explicitly in this plugin.

Key presses are what I'm really after here. This looks to me like something wrong within Gazebo, as compiled, and not in the plugin itself. Am I right about that? Is there anything I can do about it?

P.S. If I have organized my updates to this post in a sub-optimal way, please let me know and I will try to reorganize it. I put things where I thought it made sense to.

Also, for reference, the necessary changes to get the presentation.cc plugin to compile:

  1. Change the Load() function declaration to public: void Load(int /*_argc*/, char ** /*_argv*/)
  2. Line 135 rendering::Scene* becomes rendering::ScenePtr
  3. Line 144 inputs to userCam->MoveToPosition must be reorganized into 2 arguments: a pose and duration.
2013-12-04 08:09:47 -0600 received badge  Organizer (source)
2013-12-03 08:08:36 -0600 received badge  Student (source)
2013-12-03 08:05:17 -0600 received badge  Teacher (source)
2013-12-03 07:33:08 -0600 received badge  Editor (source)
2013-12-02 21:14:18 -0600 answered a question Accesing Qt events using a System/GUI plugin

For new windows/widgets/buttons, GUIOverlays should allow you to put GUI elements like this on top of the World View (example 1,2). I think you're looking to add GUI elements to the main window, but I suspect this cannot be done with plugins.

Edit: For key presses, I just found gui::Events::ConnectKeyPress in /examples/plugins/presentation.cc that looks like it does what you need.

2013-12-02 21:09:35 -0600 asked a question Get mouse click location and event

I would like to put a callback on any mouse clicks in the World View. The callback requires the location of the mouse click.

Is this possible without modifying gazebo (system plugin?)? This question and answer is probably very similar to this question, although I am focused on mouse clicks, not key presses.

One idea I have is capturing clicks on a transparent GUIOverlay, but CEGUI is completely new to me so I'm not sure if this is viable. I'm also hoping there's a better solution I haven't been able to find yet.

Thanks