Quantcast
Channel: Gazebo: Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 7017

Toggle visibility of a link?

$
0
0
Ideally I could publish a message from ROS that would set the transparency of a specified link to any value. Would I have to write a custom plugin? ---- **Pursuing the gazebojs approach:** This is using Gazebo 2.2.3 I've gone through [http://gazebosim.org/tutorials?tut=gazebojs_install&cat=gazebojs](http://gazebosim.org/tutorials?tut=gazebojs_install&cat=gazebojs) One note is that npm install installs node_modules to the current directory, I moved it to a better location and the require below is the relative path to it:: var gazebojs = require('./npm/node_modules/gazebojs') var gazebo = new gazebojs.Gazebo() msg = { "parent_name" : "sensor_head", "name" : "sensor_head_rotation_link", "visible":false }; gazebo.publish('gazebo.msgs.Visual', '~/Visual', msg); But the link stays visible. Am I missing something else required to turn the visibility off? I assume leaving out all the optional fields except 'visible' in the protobuf is fine. If I put garbage into the parent_name or name fields there are no errors. Am I using those fields incorrectly? In the World tab I see `Model | sensor_head | sensor_head_rotation_link`, the Property for clicking on that shows the name as `sensor_head::sensor_head_rotation_link` (I have it correct above but if the msg has a problem it mostly results in an error that crashes node like:: terminate called after throwing an instance of 'j2pb_error' what(): Unknown field: visibility Aborted (core dumped) ) --- **Pursuing the C++ Approach:** If I use the following code, launch gazebo and create a box called unit_box_1, running `./visibility unit_box_1 link` still doesn't produce any visual changes. visibility.cpp: int main(int argn, char** argv) { gazebo::setupClient(argn, argv); std::string name = "sensor_head_rotation_link"; std::string parent_name = "sensor_head"; if (argn >= 3) { parent_name = argv[1]; name = argv[2]; } gazebo::transport::NodePtr node(new gazebo::transport::Node()); node->Init(); // gztopic echo /gazebo/default/visual shows this gazebo::transport::PublisherPtr pub = node->Advertise("~/visual"); std::cout << "waiting for connection" << std::endl; pub->WaitForConnection(); double transparency = 1.0; bool visible = true; gazebo::msgs::Visual msg; msg.set_parent_name(parent_name); msg.set_name(name); std::cout << "parent " << parent_name << ", name " << name << std::endl; while (true) { msg.set_transparency(transparency); msg.set_visible(visible); //std::cout << "transparency " << transparency << std::endl; pub->Publish(msg); visible = !visible; transparency = 1.0 - transparency; sleep(2.0); } gazebo::shutdown(); return 0; }

Viewing all articles
Browse latest Browse all 7017

Trending Articles