本文整理汇总了C++中physics::ModelPtr::GetLinks方法的典型用法代码示例。如果您正苦于以下问题:C++ ModelPtr::GetLinks方法的具体用法?C++ ModelPtr::GetLinks怎么用?C++ ModelPtr::GetLinks使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类physics::ModelPtr
的用法示例。
在下文中一共展示了ModelPtr::GetLinks方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
gazebo::physics::LinkPtr Mps::getLinkEndingWith(physics::ModelPtr model, std::string ending) {
std::vector<gazebo::physics::LinkPtr> links = model->GetLinks();
for (unsigned int i=0; i<links.size(); i++) {
if (ends_with(links[i]->GetName(), ending))
return links[i];
}
return gazebo::physics::LinkPtr();
}
示例2: Load
////////////////////////////////////////////////////////////////////////////////
// Load the controller
void GazeboRosVacuumGripper::Load(physics::ModelPtr _model, sdf::ElementPtr _sdf)
{
ROS_INFO("Loading gazebo_ros_vacuum_gripper");
// Set attached model;
parent_ = _model;
// Get the world name.
world_ = _model->GetWorld();
// load parameters
robot_namespace_ = "";
if (_sdf->HasElement("robotNamespace"))
robot_namespace_ = _sdf->GetElement("robotNamespace")->Get<std::string>() + "/";
if (!_sdf->HasElement("bodyName"))
{
ROS_FATAL("vacuum_gripper plugin missing <bodyName>, cannot proceed");
return;
}
else
link_name_ = _sdf->GetElement("bodyName")->Get<std::string>();
link_ = _model->GetLink(link_name_);
if (!link_)
{
std::string found;
physics::Link_V links = _model->GetLinks();
for (size_t i = 0; i < links.size(); i++) {
found += std::string(" ") + links[i]->GetName();
}
ROS_FATAL("gazebo_ros_vacuum_gripper plugin error: link named: %s does not exist", link_name_.c_str());
ROS_FATAL("gazebo_ros_vacuum_gripper plugin error: You should check it exists and is not connected with fixed joint");
ROS_FATAL("gazebo_ros_vacuum_gripper plugin error: Found links are: %s", found.c_str());
return;
}
if (!_sdf->HasElement("topicName"))
{
ROS_FATAL("vacuum_gripper plugin missing <serviceName>, cannot proceed");
return;
}
else
topic_name_ = _sdf->GetElement("topicName")->Get<std::string>();
// Make sure the ROS node for Gazebo has already been initialized
if (!ros::isInitialized())
{
ROS_FATAL_STREAM("A ROS node for Gazebo has not been initialized, unable to load plugin. "
<< "Load the Gazebo system plugin 'libgazebo_ros_api_plugin.so' in the gazebo_ros package)");
return;
}
rosnode_ = new ros::NodeHandle(robot_namespace_);
// Custom Callback Queue
ros::AdvertiseOptions ao = ros::AdvertiseOptions::create<std_msgs::Bool>(
topic_name_, 1,
boost::bind(&GazeboRosVacuumGripper::Connect, this),
boost::bind(&GazeboRosVacuumGripper::Disconnect, this),
ros::VoidPtr(), &queue_);
pub_ = rosnode_->advertise(ao);
// Custom Callback Queue
ros::AdvertiseServiceOptions aso1 =
ros::AdvertiseServiceOptions::create<std_srvs::Empty>(
"on", boost::bind(&GazeboRosVacuumGripper::OnServiceCallback,
this, _1, _2), ros::VoidPtr(), &queue_);
srv1_ = rosnode_->advertiseService(aso1);
ros::AdvertiseServiceOptions aso2 =
ros::AdvertiseServiceOptions::create<std_srvs::Empty>(
"off", boost::bind(&GazeboRosVacuumGripper::OffServiceCallback,
this, _1, _2), ros::VoidPtr(), &queue_);
srv2_ = rosnode_->advertiseService(aso2);
// Custom Callback Queue
callback_queue_thread_ = boost::thread( boost::bind( &GazeboRosVacuumGripper::QueueThread,this ) );
// New Mechanism for Updating every World Cycle
// Listen to the update event. This event is broadcast every
// simulation iteration.
update_connection_ = event::Events::ConnectWorldUpdateBegin(
boost::bind(&GazeboRosVacuumGripper::UpdateChild, this));
ROS_INFO("Loaded gazebo_ros_vacuum_gripper");
}