Robotics StackExchange | Archived questions

I can see some gazebo topics, but not all of them...

I'm writing a matlab interface to gazebo. I have code that, when run from the command line, sees all of the gazebo topics I'm expecting, eg

gazebo::transport::get_master_uri(_master_host, _master_port);
std::cout << "Host: " << _master_host << "\tport: " << _master_port <<"\n";

topics_list = gazebo::transport::getAdvertisedTopics("");
for(std::list<std::string>::iterator topic=topics_list.begin(); topic!=topics_list.end(); topic++) {
    std::cout << (*topic) << "\n";
}

gives the expected result, which is around fifty different topics. But that same code, when copied into a mex file (a specialized C++ plugin format for Matlab), and executed as a Matlab plugin, only returns a subset of the topics:

Host: localhost port: 11345
/gazebo/default/pose/local/info
/gazebo/default/pose/info
/gazebo/default/gui
/gazebo/default/response
/gazebo/default/world_stats
/gazebo/default/model/info
/gazebo/default/light/modify
/gazebo/default/physics/contacts
/gazebo/default/visual
/gazebo/default/request
/gazebo/default/joint
/gazebo/default/user_cmd_stats
/gazebo/default/world_control
/gazebo/default/model/modify
/gazebo/world/modify
/gazebo/default/diagnostics
/gazebo/default/log/status
/gazebo/default/undo_redo
/gazebo/default/factory
/gazebo/default/factory/light
/gazebo/default/selection
/gazebo/default/scene
/gazebo/default/physics
/gazebo/default/user_camera/pose
/gazebo/default/user_cmd
/gazebo/default/playback_control
/gazebo/default/log/control
/gazebo/server/control

Topics that do not show up include

/gazebo/default/user_camera/joy_pose
/gazebo/default/user_camera/joy_twist
/gazebo/default/ground_plane/link/wrench
/gazebo/default/gzclient_camera/cmd
/gazebo/default/skeleton_pose/info
/gazebo/default/sky
/gazebo/default/light
/gazebo/default/model/modify

I'm kind of at a loss. Is there anything special about these particular topics that would cause partially functioning code, or code that was being executed in a strange environment or with misconfigured environmental variables, to see them but not others?

Asked by GlenH on 2016-12-22 16:43:42 UTC

Comments

Can you add the topics which are missing to your question? (at least a few of them)

Asked by chapulina on 2016-12-22 16:48:55 UTC

None of the topics created by my robot plugin show up, eg

/gazebo/default/my_robot/joint_cmd

But there are others that don't show up either, including:

/gazebo/default/user_camera/joy_pose /gazebo/default/user_camera/joy_twist /gazebo/default/ground_plane/link/wrench /gazebo/default/gzclient_camera/cmd /gazebo/default/skeleton_pose/info /gazebo/default/sky /gazebo/default/light /gazebo/default/model/modify

Asked by GlenH on 2016-12-22 18:20:23 UTC

Mysterious... When you check on the command line with gz topic -l, do all of them show?

Asked by chapulina on 2016-12-22 18:41:58 UTC

Yep. Every last one of them. I can also issue a "system" command inside Matlab, which issues a shell command, eg

system('\usr\local\bin\gz topic -l')

and that also returns all of the topics.

Asked by GlenH on 2016-12-22 18:44:22 UTC

One potentially pertinent fact: Matlab links against a bunch of the same libraries gazebo does, including boost and protobuf. But Matlab's versions are typically a couple of versions older than gazebo's. When building my MEX file I have tried both dynamically linking to dylibs and statically linking to .a files.

Neither one seems to make any difference, but it's possible that I'm not seeing a dependency somewhere.

Asked by GlenH on 2016-12-22 18:48:13 UTC

Answers