semio_ros  0.10.6
humanoid_source_ros.cpp
Go to the documentation of this file.
2 
3 semio::ros::HumanoidSourceROS::HumanoidSourceROS( ::ros::NodeHandle const & nh_rel, std::string const & topic )
4 :
5  _nh_rel( nh_rel ),
6  _humanoids_sub( _nh_rel.subscribe( topic, 10, &HumanoidSourceROS::humanoidsCB, this ) )
7 {
8  //
9 }
10 
12 {
14  {
16  _last_humanoids_msg.reset();
17  }
18 
19  return HumanoidArray();
20 }
21 
23 {
24  return semio::HumanoidJoint(
25  static_cast<semio::HumanoidJoint::JointType>( msg.type ),
26  Eigen::Vector3d( msg.position.x, msg.position.y, msg.position.z ),
27  Eigen::Quaterniond( msg.orientation.w, msg.orientation.x, msg.orientation.y, msg.orientation.z ),
28  msg.position_confidence,
29  msg.orientation_confidence );
30 }
31 
33 {
35 
36  for( auto const & joint_msg : msg.joints )
37  {
38  joints.emplace( std::make_pair(
39  static_cast<semio::HumanoidJoint::JointType>( joint_msg.type ),
40  std::move( HumanoidSourceROS::fromROSMsg( joint_msg ) ) ) );
41  }
42 
43  return semio::Humanoid( msg.id, static_cast<semio::Humanoid::TrackingState>( msg.tracking_state ), std::move( joints ) );
44 }
45 
47 {
48  semio::HumanoidArray humanoids;
49  humanoids.reserve( msg.humanoids.size() );
50 
51  for( auto const & humanoid_msg : msg.humanoids )
52  {
53  humanoids.emplace_back( std::move( HumanoidSourceROS::fromROSMsg( humanoid_msg ) ) );
54  }
55 
56  return humanoids;
57 }
58 
59 void semio::ros::HumanoidSourceROS::humanoidsCB( _HumanoidsMsg::ConstPtr const & msg )
60 {
61  _last_humanoids_msg = msg;
62 }
std::map< HumanoidJoint::JointType, HumanoidJoint > _JointArray
semio_msgs_ros::HumanoidJoint _HumanoidJointMsg
ROS message for a humanoid joint.
HumanoidSourceROS(::ros::NodeHandle const &nh_rel, std::string const &topic="humanoids")
void humanoidsCB(_HumanoidsMsg::ConstPtr const &msg)
ROS callback for humanoids messages.
semio_msgs_ros::Humanoids _HumanoidsMsg
ROS message for a vector of humanoids.
static HumanoidJoint fromROSMsg(_HumanoidJointMsg const &msg)
Create a semio::HumanoidJoint from a humanoid joint message.
_HumanoidsMsg::ConstPtr _last_humanoids_msg
ConstPtr to the last message received from ROS.
semio::HumanoidSource to source humanoids from ROS
HumanoidArray updateFromSource()
Convert _last_humanoids_msg to a semio::HumanoidArray.
std::vector< semio::Humanoid > HumanoidArray
semio_msgs_ros::Humanoid _HumanoidMsg
ROS message for a single humanoid.