void ColorizeRandomForest::onInit(void)
{
    // not implemented yet
    PCLNodelet::onInit();
    sub_input_ = pnh_->subscribe("input", 1, &ColorizeRandomForest::extract, this);

    pub_ = pnh_->advertise<sensor_msgs::PointCloud2>("cloth_result", 1);
    pub2_ = pnh_->advertise<sensor_msgs::PointCloud2>("noncloth_result", 1);

    srand(time(NULL));

    double tmp_radius = 0.03, tmp_pass = 0.03, tmp_pass2 = 0.06;
    sum_num_ = 100;
    if (!pnh_->getParam("rs", tmp_radius))
    {
        JSK_ROS_WARN("~rs is not specified, set 1");
    }
    if (!pnh_->getParam("po", tmp_pass))
    {
        JSK_ROS_WARN("~po is not specified, set 1");
    }
    if (!pnh_->getParam("po2", tmp_pass2))
    {
        JSK_ROS_WARN("~po is not specified, set 1");
    }
    if (!pnh_->getParam("sum_num", sum_num_))
    {
        JSK_ROS_WARN("~sum_num is not specified, set 1");
    }

    radius_search_ = tmp_radius;
    pass_offset_ = tmp_pass;
    pass_offset2_ = tmp_pass2;
}
Пример #2
0
 void RGBDecomposer::decompose(
   const sensor_msgs::Image::ConstPtr& image_msg)
 {
   if ((image_msg->width == 0) && (image_msg->height == 0)) {
       JSK_ROS_WARN("invalid image input");
       return;
   }
   cv_bridge::CvImagePtr cv_ptr = cv_bridge::toCvCopy(
     image_msg, image_msg->encoding);
   cv::Mat image = cv_ptr->image;
   if (image_msg->encoding == sensor_msgs::image_encodings::RGB8) {
     cv::cvtColor(image, image, CV_RGB2BGR);
   }
   std::vector<cv::Mat> bgr_planes;
   cv::split(image, bgr_planes);
   cv::Mat red = bgr_planes[2];
   cv::Mat blue = bgr_planes[0];
   cv::Mat green = bgr_planes[1];
   pub_r_.publish(cv_bridge::CvImage(
                    image_msg->header,
                    sensor_msgs::image_encodings::MONO8,
                    red).toImageMsg());
   pub_g_.publish(cv_bridge::CvImage(
                    image_msg->header,
                    sensor_msgs::image_encodings::MONO8,
                    green).toImageMsg());
   pub_b_.publish(cv_bridge::CvImage(
                    image_msg->header,
                    sensor_msgs::image_encodings::MONO8,
                    blue).toImageMsg());
 }
Пример #3
0
TEST(LogUtils, testJSKROSXXX){
  JSK_ROS_DEBUG("Testing JSK_ROS_DEBUG: %ld", ros::Time::now().toNSec());
  JSK_ROS_INFO("Testing JSK_ROS_INFO: %ld", ros::Time::now().toNSec());
  JSK_ROS_WARN("Testing JSK_ROS_WARN: %ld", ros::Time::now().toNSec());
  JSK_ROS_ERROR("Testing JSK_ROS_ERROR: %ld", ros::Time::now().toNSec());
  JSK_ROS_FATAL("Testing JSK_ROS_FATAL: %ld", ros::Time::now().toNSec());

  JSK_ROS_DEBUG_STREAM("Testing " << "JSK_ROS_DEBUG_STREAM: " << ros::Time::now().toNSec());
  JSK_ROS_INFO_STREAM("Testing " << "JSK_ROS_INFO_STREAM: " << ros::Time::now().toNSec());
  JSK_ROS_WARN_STREAM("Testing " << "JSK_ROS_WARN_STREAM: " << ros::Time::now().toNSec());
  JSK_ROS_ERROR_STREAM("Testing " << "JSK_ROS_ERROR_STREAM: " << ros::Time::now().toNSec());
  JSK_ROS_FATAL_STREAM("Testing " << "JSK_ROS_FATAL_STREAM: " << ros::Time::now().toNSec());

  JSK_ROS_DEBUG_THROTTLE(1, "Testing JSK_ROS_DEBUG_THROTTLE: %ld", ros::Time::now().toNSec());
  JSK_ROS_INFO_THROTTLE(1, "Testing JSK_ROS_INFO_THROTTLE: %ld", ros::Time::now().toNSec());
  JSK_ROS_WARN_THROTTLE(1, "Testing JSK_ROS_WARN_THROTTLE: %ld", ros::Time::now().toNSec());
  JSK_ROS_ERROR_THROTTLE(1, "Testing JSK_ROS_ERROR_THROTTLE: %ld", ros::Time::now().toNSec());
  JSK_ROS_FATAL_THROTTLE(1, "Testing JSK_ROS_FATAL_THROTTLE: %ld", ros::Time::now().toNSec());

  JSK_ROS_DEBUG_STREAM_THROTTLE(1, "Testing " << "JSK_ROS_DEBUG_STREAM_THROTTLE: " << ros::Time::now().toNSec());
  JSK_ROS_INFO_STREAM_THROTTLE(1, "Testing " << "JSK_ROS_INFO_STREAM_THROTTLE: " << ros::Time::now().toNSec());
  JSK_ROS_WARN_STREAM_THROTTLE(1, "Testing " << "JSK_ROS_WARN_STREAM_THROTTLE: " << ros::Time::now().toNSec());
  JSK_ROS_ERROR_STREAM_THROTTLE(1, "Testing " << "JSK_ROS_ERROR_STREAM_THROTTLE: " << ros::Time::now().toNSec());
  JSK_ROS_FATAL_STREAM_THROTTLE(1, "Testing " << "JSK_ROS_FATAL_STREAM_THROTTLE: " << ros::Time::now().toNSec());
}
 void TfTransformCloud::onInit(void)
 {
   DiagnosticNodelet::onInit();
   
   if (!pnh_->getParam("target_frame_id", target_frame_id_))
   {
     JSK_ROS_WARN("~target_frame_id is not specified, using %s", "/base_footprint");
   }
   pnh_->param("duration", duration_, 1.0);
   pnh_->param("use_latest_tf", use_latest_tf_, false);
   pnh_->param("tf_queue_size", tf_queue_size_, 10);
   tf_listener_ = TfListenerSingleton::getInstance();
   pub_cloud_ = advertise<sensor_msgs::PointCloud2>(*pnh_, "output", 1);
 }
Пример #5
0
 void GaussianBlur::apply(
   const sensor_msgs::Image::ConstPtr& image_msg)
 {
   if ((image_msg->width == 0) && (image_msg->height == 0)) {
       JSK_ROS_WARN("invalid image input");
       return;
   }
   cv_bridge::CvImagePtr cv_ptr = cv_bridge::toCvCopy(
     image_msg, image_msg->encoding);
   cv::Mat image = cv_ptr->image;
   cv::Mat applied_image;
   if (kernel_size_ % 2 == 1) {
     cv::GaussianBlur(image, applied_image, cv::Size(kernel_size_, kernel_size_), sigma_x_, sigma_y_);
   } else {
     cv::GaussianBlur(image, applied_image, cv::Size(kernel_size_+1, kernel_size_+1), sigma_x_, sigma_y_);
   }
   pub_.publish(cv_bridge::CvImage(
                    image_msg->header,
                    image_msg->encoding,
                    applied_image).toImageMsg());
 }
Пример #6
0
  void KMeans::apply(
    const sensor_msgs::Image::ConstPtr& image_msg)
  {
    if ((image_msg->width == 0) && (image_msg->height == 0)) {
        JSK_ROS_WARN("invalid image input");
        return;
    }
    cv_bridge::CvImagePtr cv_ptr = cv_bridge::toCvCopy(
      image_msg, image_msg->encoding);
    cv::Mat image = cv_ptr->image;

    cv::Mat reshaped_img = image.reshape(1, image.cols * image.rows);
    cv::Mat reshaped_img32f;
    reshaped_img.convertTo(reshaped_img32f, CV_32FC1, 1.0 / 255.0);
    cv::Mat labels;
    cv::TermCriteria criteria = cv::TermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0);
    cv::Mat centers;
    cv::kmeans(reshaped_img32f, n_clusters_, labels, criteria, /*attempts=*/1, /*flags=*/cv::KMEANS_PP_CENTERS, centers);

    cv::Mat rgb_image(image.rows, image.cols, CV_8UC3);
    cv::MatIterator_<cv::Vec3b> rgb_first = rgb_image.begin<cv::Vec3b>();
    cv::MatIterator_<cv::Vec3b> rgb_last = rgb_image.end<cv::Vec3b>();
    cv::MatConstIterator_<int> label_first = labels.begin<int>();

    cv::Mat centers_u8;
    centers.convertTo(centers_u8, CV_8UC1, 255.0);
    cv::Mat centers_u8c3 = centers_u8.reshape(3);

    while ( rgb_first != rgb_last ) {
      const cv::Vec3b& rgb = centers_u8c3.ptr<cv::Vec3b>(*label_first)[0];
      *rgb_first = rgb;
      ++rgb_first;
      ++label_first;
    }

    pub_.publish(cv_bridge::CvImage(
                  image_msg->header,
                  image_msg->encoding,
                  rgb_image).toImageMsg());
  }
bool jsk_pcl_ros::PointcloudScreenpoint::extract_point (pcl::PointCloud< pcl::PointXYZ > &in_pts, int reqx, int reqy,
                                                        float &resx, float &resy, float &resz) {
  int x, y;

  x = reqx < 0.0 ? ceil(reqx - 0.5) : floor(reqx + 0.5);
  y = reqy < 0.0 ? ceil(reqy - 0.5) : floor(reqy + 0.5);
  JSK_ROS_WARN("Request : %d %d", x, y);

  if (checkpoint (in_pts, x, y, resx, resy, resz)) {
    return true;
  } else {
    for (int n = 1; n < crop_size_; n++) {
      for (int y2 = 0; y2 <= n; y2++) {
        int x2 = n - y2;
        if (checkpoint (in_pts, x + x2, y + y2, resx, resy, resz)) {
          return true;
        }
        if (x2 != 0 && y2 != 0) {
          if (checkpoint (in_pts, x - x2, y - y2, resx, resy, resz)) {
            return true;
          }
        }
        if (x2 != 0) {
          if (checkpoint (in_pts, x - x2, y + y2, resx, resy, resz)) {
            return true;
          }
        }
        if (y2 != 0) {
          if (checkpoint (in_pts, x + x2, y - y2, resx, resy, resz)) {
            return true;
          }
        }
      }
    }
  }
  return false;
}