BaxterArmMvmtDetector::BaxterArmMvmtDetector(ros::NodeHandle& nodeHandle):
     nodeHandler(nodeHandle) {
         publishPointToLookAt = nodeHandler.advertise<geometry_msgs::Point>("/pointToLookAt", 100);            
         ros::Rate loop_rate(5);
         lookupTransform("/head_camera", "/left_hand", ros::Time(0), tfLeftArmPast);
         lookupTransform("/head_camera", "/right_hand", ros::Time(0), tfRightArmPast);
         geometry_msgs::Point msg;
         while (nodeHandler.ok()) {
             lookupTransform("/head_camera", "/left_hand", ros::Time(0), tfLeftArmNow);
             lookupTransform("/head_camera", "/right_hand", ros::Time(0), tfRightArmNow);
             Point originLeftNow = Point(tfLeftArmNow.getOrigin(), 100.0);
             Point originLeftPast = Point(tfLeftArmPast.getOrigin(), 100.0);
             Point originRightNow = Point(tfRightArmNow.getOrigin(), 100.0);
             Point originRightPast = Point(tfRightArmPast.getOrigin(), 100.0);
             msg = Point().toGeometryMessage();
             if (originLeftNow != originLeftPast && originRightNow != originRightPast) {
                 //movement of both arms
             } else if (originLeftNow != originLeftPast) {
                 //movement of left arm
                 msg = originLeftNow.toGeometryMessage();
             } else if (originRightNow != originRightPast) {
                 //movement of right arm
                 msg = originRightNow.toGeometryMessage();
             }
             tfLeftArmPast = tfLeftArmNow;
             tfRightArmPast = tfRightArmNow;
             publishPointToLookAt.publish(msg);
             ros::spinOnce();
             loop_rate.sleep();
         }
     }
Example #2
0
TransformerTF2::FuturePtr TransformerTF2::requestTransform(
		const std::string& target_frame, const std::string& source_frame,
		const boost::posix_time::ptime& time) {

	FuturePtr result(new FutureType());

	boost::mutex::scoped_lock lock(inprogressMutex);
	try {
		Transform t = lookupTransform(target_frame, source_frame, time);
		result->set(t);
		RSCTRACE(this->logger, "Lookup possible before request applies. Take shortcut.");

	} catch (tf2::LookupException &e) {

		RSCTRACE(this->logger, "Lookup NOT possible before request applies. Register request.");

		this->requestsInProgress.insert(
				std::make_pair(Request(target_frame, source_frame, ros::Time().fromBoost(time)),
						result));
	} catch (tf2::ExtrapolationException &e) {

		RSCTRACE(this->logger, "Lookup NOT possible before request applies. Register request.");

		this->requestsInProgress.insert(
				std::make_pair(Request(target_frame, source_frame, ros::Time().fromBoost(time)),
						result));
	}

	return result;
}
Example #3
0
geometry_msgs::TransformStamped 
Buffer::lookupTransform(const std::string& target_frame, const std::string& source_frame,
                        const ros::Time& time, const ros::Duration timeout) const
{
  canTransform(target_frame, source_frame, time, timeout);
  return lookupTransform(target_frame, source_frame, time);
}
Example #4
0
bool ROSKinectBridge::setData(uima::CAS &tcas, uint64_t ts)
{
  if(!newData())
  {
    return false;
  }
  MEASURE_TIME;

  cv::Mat color, depth;
  sensor_msgs::CameraInfo cameraInfo, cameraInfoHD;

  lock.lock();
  color = this->color;
  depth = this->depth;
  cameraInfo = this->cameraInfo;
  cameraInfoHD = this->cameraInfoHD;
  _newData = false;
  lock.unlock();

  rs::SceneCas cas(tcas);
  lookupTransform(tcas, cameraInfo.header.stamp);

  if(color.cols >= 1280)
  {
    cas.set(VIEW_COLOR_IMAGE_HD, color);
  }
  else
  {
    cas.set(VIEW_COLOR_IMAGE, color);
  }

  if(depth.cols >= 1280)
  {
    cas.set(VIEW_DEPTH_IMAGE_HD, depth);
  }
  else
  {
    cas.set(VIEW_DEPTH_IMAGE, depth);
  }

  cas.set(VIEW_CAMERA_INFO, cameraInfo);
  cas.set(VIEW_CAMERA_INFO_HD, cameraInfoHD);

  cas.getScene().timestamp.set(cameraInfo.header.stamp.toNSec());

  return true;
}
Example #5
0
void TfLookup::alGoalCb(AlServer::GoalHandle gh)
{
    if (!gh.getGoal())
    {
        gh.setCanceled(AlServer::Result(), "something went wrong, goal canceled");
        return;
    }
    gh.setAccepted();
    AlServer::GoalConstPtr goal = gh.getGoal();
    AlServer::Result r;

    if (lookupTransform(goal->target_frame, goal->source_frame,
                        ros::Time(0), r.transform))
        gh.setSucceeded(r);
    else
        gh.setAborted(r);
}
Example #6
0
bool TfLookup::srvLookupTransform(tf_lookup::lookupTransformRequest &req,
                                  tf_lookup::lookupTransformResponse &res)
{
    return lookupTransform(req.target_frame, req.source_frame,
                           req.transform_time, res.transform);
}