{"action":"created","comment":{"url":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/comments/48680529","id":48680529,"diff_hunk":"@@ -0,0 +1,139 @@\n+/*********************************************************************\n+* Software License Agreement (BSD License)\n+* \n+*  Copyright (c) 2008, Willow Garage, Inc.\n+*  All rights reserved.\n+* \n+*  Redistribution and use in source and binary forms, with or without\n+*  modification, are permitted provided that the following conditions\n+*  are met:\n+* \n+*   * Redistributions of source code must retain the above copyright\n+*     notice, this list of conditions and the following disclaimer.\n+*   * Redistributions in binary form must reproduce the above\n+*     copyright notice, this list of conditions and the following\n+*     disclaimer in the documentation and/or other materials provided\n+*     with the distribution.\n+*   * Neither the name of the Willow Garage nor the names of its\n+*     contributors may be used to endorse or promote products derived\n+*     from this software without specific prior written permission.\n+* \n+*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+*  \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n+*  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n+*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n+*  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n+*  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n+*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n+*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n+*  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n+*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+*  POSSIBILITY OF SUCH DAMAGE.\n+*********************************************************************/\n+#include <ros/ros.h>\n+#include <nodelet/nodelet.h>\n+#include <image_transport/image_transport.h>\n+#include <sensor_msgs/image_encodings.h>\n+#include <boost/thread.hpp>\n+\n+namespace depth_image_proc {\n+\n+namespace enc = sensor_msgs::image_encodings;\n+\n+class CropForemostNodelet : public nodelet::Nodelet\n+{\n+  // Subscriptions\n+  boost::shared_ptr<image_transport::ImageTransport> it_;\n+  image_transport::Subscriber sub_raw_;\n+\n+  // Publications\n+  boost::mutex connect_mutex_;\n+  image_transport::Publisher pub_depth_;\n+\n+  virtual void onInit();\n+\n+  void connectCb();\n+\n+  void depthCb(const sensor_msgs::ImageConstPtr& raw_msg);\n+\n+  double distance_;\n+};\n+\n+void CropForemostNodelet::onInit()\n+{\n+  ros::NodeHandle& nh = getNodeHandle();\n+  ros::NodeHandle& private_nh = getPrivateNodeHandle();\n+  private_nh.getParam(\"distance\", distance_);\n+  it_.reset(new image_transport::ImageTransport(nh));\n+\n+  // Monitor whether anyone is subscribed to the output\n+  image_transport::SubscriberStatusCallback connect_cb = boost::bind(&CropForemostNodelet::connectCb, this);\n+  // Make sure we don't enter connectCb() between advertising and assigning to pub_depth_\n+  boost::lock_guard<boost::mutex> lock(connect_mutex_);\n+  pub_depth_ = it_->advertise(\"image\", 1, connect_cb, connect_cb);\n+}\n+\n+// Handles (un)subscribing when clients (un)subscribe\n+void CropForemostNodelet::connectCb()\n+{\n+  boost::lock_guard<boost::mutex> lock(connect_mutex_);\n+  if (pub_depth_.getNumSubscribers() == 0)\n+  {\n+    sub_raw_.shutdown();\n+  }\n+  else if (!sub_raw_)\n+  {\n+    image_transport::TransportHints hints(\"raw\", ros::TransportHints(), getPrivateNodeHandle());\n+    sub_raw_ = it_->subscribe(\"image_raw\", 1, &CropForemostNodelet::depthCb, this, hints);\n+  }\n+}\n+\n+void CropForemostNodelet::depthCb(const sensor_msgs::ImageConstPtr& raw_msg)\n+{\n+  if (raw_msg->encoding != enc::TYPE_32FC1)\n+  {\n+    NODELET_ERROR_THROTTLE(2, \"Expected data of type [%s], got [%s]\", enc::TYPE_32FC1.c_str(),\n+                           raw_msg->encoding.c_str());\n+    return;\n+  }\n+\n+  // Allocate new Image message\n+  sensor_msgs::ImagePtr crop_msg( new sensor_msgs::Image );\n+  crop_msg->header   = raw_msg->header;\n+  crop_msg->encoding = raw_msg->encoding;\n+  crop_msg->height   = raw_msg->height;\n+  crop_msg->width    = raw_msg->width;\n+  crop_msg->step     = raw_msg->step;\n+  crop_msg->data.resize( crop_msg->height * crop_msg->step);\n+\n+  float bad_point = std::numeric_limits<float>::quiet_NaN();\n+\n+  // First step: \n+  // Search the foremost distance from the depth camera\n+  const float* raw_data = reinterpret_cast<const float*>(&raw_msg->data[0]);\n+  float* crop_data = reinterpret_cast<float*>(&crop_msg->data[0]);\n+  float min = std::numeric_limits<float>::infinity();\n+  for (unsigned int index=0; index < crop_msg->height * crop_msg->width; ++index)\n+  {\n+    float tmp = raw_data[index];\n+    tmp = (tmp!=0) ? tmp : bad_point;\n+    min = tmp < min ? tmp : min;\n+  }\n+\n+  // Second step:\n+  // Eliminate far data from searched foremost distance\n+  for (unsigned int index=0; index < crop_msg->height * crop_msg->width; ++index)","path":"depth_image_proc/src/nodelets/crop_foremost.cpp","position":126,"original_position":126,"commit_id":"c3ab5b63394cc41811aa7e2030e61dd1b31d91e8","original_commit_id":"c3ab5b63394cc41811aa7e2030e61dd1b31d91e8","user":{"login":"vrabaud","id":700766,"avatar_url":"https://avatars.githubusercontent.com/u/700766?v=3","gravatar_id":"","url":"https://api.github.com/users/vrabaud","html_url":"https://github.com/vrabaud","followers_url":"https://api.github.com/users/vrabaud/followers","following_url":"https://api.github.com/users/vrabaud/following{/other_user}","gists_url":"https://api.github.com/users/vrabaud/gists{/gist_id}","starred_url":"https://api.github.com/users/vrabaud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vrabaud/subscriptions","organizations_url":"https://api.github.com/users/vrabaud/orgs","repos_url":"https://api.github.com/users/vrabaud/repos","events_url":"https://api.github.com/users/vrabaud/events{/privacy}","received_events_url":"https://api.github.com/users/vrabaud/received_events","type":"User","site_admin":false},"body":"same, use OpenCV. This way, you'll be able to handle different image types too.","created_at":"2016-01-01T21:37:19Z","updated_at":"2016-01-01T21:37:19Z","html_url":"https://github.com/ros-perception/image_pipeline/pull/170#discussion_r48680529","pull_request_url":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/170","_links":{"self":{"href":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/comments/48680529"},"html":{"href":"https://github.com/ros-perception/image_pipeline/pull/170#discussion_r48680529"},"pull_request":{"href":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/170"}}},"pull_request":{"url":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/170","id":54592162,"html_url":"https://github.com/ros-perception/image_pipeline/pull/170","diff_url":"https://github.com/ros-perception/image_pipeline/pull/170.diff","patch_url":"https://github.com/ros-perception/image_pipeline/pull/170.patch","issue_url":"https://api.github.com/repos/ros-perception/image_pipeline/issues/170","number":170,"state":"open","locked":false,"title":"Add a feature for a depth image to crop foremost image","user":{"login":"yoneken","id":491710,"avatar_url":"https://avatars.githubusercontent.com/u/491710?v=3","gravatar_id":"","url":"https://api.github.com/users/yoneken","html_url":"https://github.com/yoneken","followers_url":"https://api.github.com/users/yoneken/followers","following_url":"https://api.github.com/users/yoneken/following{/other_user}","gists_url":"https://api.github.com/users/yoneken/gists{/gist_id}","starred_url":"https://api.github.com/users/yoneken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yoneken/subscriptions","organizations_url":"https://api.github.com/users/yoneken/orgs","repos_url":"https://api.github.com/users/yoneken/repos","events_url":"https://api.github.com/users/yoneken/events{/privacy}","received_events_url":"https://api.github.com/users/yoneken/received_events","type":"User","site_admin":false},"body":"I wrote a launch file to test the feature.\r\n\r\n```xml\r\n<launch>\r\n  <node pkg=\"nodelet\" type=\"nodelet\" name=\"standalone_nodelet\" args=\"manager\"/>\r\n\r\n  <arg name=\"manager\" value=\"standalone_nodelet\" />\r\n  <arg name=\"respawn\" default=\"false\" />\r\n\r\n  <arg     if=\"$(arg respawn)\" name=\"bond\" value=\"\" />\r\n  <arg unless=\"$(arg respawn)\" name=\"bond\" value=\"--no-bond\" />\r\n\r\n  <include file=\"$(find openni2_launch)/launch/openni2.launch\" />\r\n\r\n  <!-- Crop depth images -->\r\n  <node pkg=\"nodelet\" type=\"nodelet\" name=\"crop\"\r\n        args=\"load depth_image_proc/crop_foremost $(arg manager) $(arg bond)\"\r\n\trespawn=\"$(arg respawn)\" output=\"screen\" >\r\n    <remap from=\"image_raw\" to=\"/camera/depth/image\" />\r\n    <remap from=\"image\" to=\"/camera/depth/image_crop\" />\r\n    <param name=\"distance\" type=\"double\" value=\"0.2\" />\r\n  </node>\r\n\r\n  <node pkg=\"image_view\" type=\"image_view\" name=\"image_view\">\r\n    <remap from=\"image\" to=\"/camera/depth/image_crop\" />\r\n  </node>\r\n\r\n</launch>\r\n```","created_at":"2015-12-25T18:57:50Z","updated_at":"2016-01-01T21:37:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"937f27b9dcb85142f7059e6e42c155ec71ace4bb","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/170/commits","review_comments_url":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/170/comments","review_comment_url":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ros-perception/image_pipeline/issues/170/comments","statuses_url":"https://api.github.com/repos/ros-perception/image_pipeline/statuses/c3ab5b63394cc41811aa7e2030e61dd1b31d91e8","head":{"label":"yoneken:feature-crop_foremost","ref":"feature-crop_foremost","sha":"c3ab5b63394cc41811aa7e2030e61dd1b31d91e8","user":{"login":"yoneken","id":491710,"avatar_url":"https://avatars.githubusercontent.com/u/491710?v=3","gravatar_id":"","url":"https://api.github.com/users/yoneken","html_url":"https://github.com/yoneken","followers_url":"https://api.github.com/users/yoneken/followers","following_url":"https://api.github.com/users/yoneken/following{/other_user}","gists_url":"https://api.github.com/users/yoneken/gists{/gist_id}","starred_url":"https://api.github.com/users/yoneken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yoneken/subscriptions","organizations_url":"https://api.github.com/users/yoneken/orgs","repos_url":"https://api.github.com/users/yoneken/repos","events_url":"https://api.github.com/users/yoneken/events{/privacy}","received_events_url":"https://api.github.com/users/yoneken/received_events","type":"User","site_admin":false},"repo":{"id":48588460,"name":"image_pipeline","full_name":"yoneken/image_pipeline","owner":{"login":"yoneken","id":491710,"avatar_url":"https://avatars.githubusercontent.com/u/491710?v=3","gravatar_id":"","url":"https://api.github.com/users/yoneken","html_url":"https://github.com/yoneken","followers_url":"https://api.github.com/users/yoneken/followers","following_url":"https://api.github.com/users/yoneken/following{/other_user}","gists_url":"https://api.github.com/users/yoneken/gists{/gist_id}","starred_url":"https://api.github.com/users/yoneken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yoneken/subscriptions","organizations_url":"https://api.github.com/users/yoneken/orgs","repos_url":"https://api.github.com/users/yoneken/repos","events_url":"https://api.github.com/users/yoneken/events{/privacy}","received_events_url":"https://api.github.com/users/yoneken/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/yoneken/image_pipeline","description":"","fork":true,"url":"https://api.github.com/repos/yoneken/image_pipeline","forks_url":"https://api.github.com/repos/yoneken/image_pipeline/forks","keys_url":"https://api.github.com/repos/yoneken/image_pipeline/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yoneken/image_pipeline/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yoneken/image_pipeline/teams","hooks_url":"https://api.github.com/repos/yoneken/image_pipeline/hooks","issue_events_url":"https://api.github.com/repos/yoneken/image_pipeline/issues/events{/number}","events_url":"https://api.github.com/repos/yoneken/image_pipeline/events","assignees_url":"https://api.github.com/repos/yoneken/image_pipeline/assignees{/user}","branches_url":"https://api.github.com/repos/yoneken/image_pipeline/branches{/branch}","tags_url":"https://api.github.com/repos/yoneken/image_pipeline/tags","blobs_url":"https://api.github.com/repos/yoneken/image_pipeline/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yoneken/image_pipeline/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yoneken/image_pipeline/git/refs{/sha}","trees_url":"https://api.github.com/repos/yoneken/image_pipeline/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yoneken/image_pipeline/statuses/{sha}","languages_url":"https://api.github.com/repos/yoneken/image_pipeline/languages","stargazers_url":"https://api.github.com/repos/yoneken/image_pipeline/stargazers","contributors_url":"https://api.github.com/repos/yoneken/image_pipeline/contributors","subscribers_url":"https://api.github.com/repos/yoneken/image_pipeline/subscribers","subscription_url":"https://api.github.com/repos/yoneken/image_pipeline/subscription","commits_url":"https://api.github.com/repos/yoneken/image_pipeline/commits{/sha}","git_commits_url":"https://api.github.com/repos/yoneken/image_pipeline/git/commits{/sha}","comments_url":"https://api.github.com/repos/yoneken/image_pipeline/comments{/number}","issue_comment_url":"https://api.github.com/repos/yoneken/image_pipeline/issues/comments{/number}","contents_url":"https://api.github.com/repos/yoneken/image_pipeline/contents/{+path}","compare_url":"https://api.github.com/repos/yoneken/image_pipeline/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yoneken/image_pipeline/merges","archive_url":"https://api.github.com/repos/yoneken/image_pipeline/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yoneken/image_pipeline/downloads","issues_url":"https://api.github.com/repos/yoneken/image_pipeline/issues{/number}","pulls_url":"https://api.github.com/repos/yoneken/image_pipeline/pulls{/number}","milestones_url":"https://api.github.com/repos/yoneken/image_pipeline/milestones{/number}","notifications_url":"https://api.github.com/repos/yoneken/image_pipeline/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yoneken/image_pipeline/labels{/name}","releases_url":"https://api.github.com/repos/yoneken/image_pipeline/releases{/id}","created_at":"2015-12-25T18:36:25Z","updated_at":"2015-12-25T18:36:28Z","pushed_at":"2015-12-25T18:49:28Z","git_url":"git://github.com/yoneken/image_pipeline.git","ssh_url":"git@github.com:yoneken/image_pipeline.git","clone_url":"https://github.com/yoneken/image_pipeline.git","svn_url":"https://github.com/yoneken/image_pipeline","homepage":null,"size":17800,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"indigo"}},"base":{"label":"ros-perception:indigo","ref":"indigo","sha":"7ce640fccc19cef2bb4aac3e7bce4f9b4b1f3ef1","user":{"login":"ros-perception","id":2328630,"avatar_url":"https://avatars.githubusercontent.com/u/2328630?v=3","gravatar_id":"","url":"https://api.github.com/users/ros-perception","html_url":"https://github.com/ros-perception","followers_url":"https://api.github.com/users/ros-perception/followers","following_url":"https://api.github.com/users/ros-perception/following{/other_user}","gists_url":"https://api.github.com/users/ros-perception/gists{/gist_id}","starred_url":"https://api.github.com/users/ros-perception/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ros-perception/subscriptions","organizations_url":"https://api.github.com/users/ros-perception/orgs","repos_url":"https://api.github.com/users/ros-perception/repos","events_url":"https://api.github.com/users/ros-perception/events{/privacy}","received_events_url":"https://api.github.com/users/ros-perception/received_events","type":"Organization","site_admin":false},"repo":{"id":5592931,"name":"image_pipeline","full_name":"ros-perception/image_pipeline","owner":{"login":"ros-perception","id":2328630,"avatar_url":"https://avatars.githubusercontent.com/u/2328630?v=3","gravatar_id":"","url":"https://api.github.com/users/ros-perception","html_url":"https://github.com/ros-perception","followers_url":"https://api.github.com/users/ros-perception/followers","following_url":"https://api.github.com/users/ros-perception/following{/other_user}","gists_url":"https://api.github.com/users/ros-perception/gists{/gist_id}","starred_url":"https://api.github.com/users/ros-perception/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ros-perception/subscriptions","organizations_url":"https://api.github.com/users/ros-perception/orgs","repos_url":"https://api.github.com/users/ros-perception/repos","events_url":"https://api.github.com/users/ros-perception/events{/privacy}","received_events_url":"https://api.github.com/users/ros-perception/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ros-perception/image_pipeline","description":"","fork":false,"url":"https://api.github.com/repos/ros-perception/image_pipeline","forks_url":"https://api.github.com/repos/ros-perception/image_pipeline/forks","keys_url":"https://api.github.com/repos/ros-perception/image_pipeline/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ros-perception/image_pipeline/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ros-perception/image_pipeline/teams","hooks_url":"https://api.github.com/repos/ros-perception/image_pipeline/hooks","issue_events_url":"https://api.github.com/repos/ros-perception/image_pipeline/issues/events{/number}","events_url":"https://api.github.com/repos/ros-perception/image_pipeline/events","assignees_url":"https://api.github.com/repos/ros-perception/image_pipeline/assignees{/user}","branches_url":"https://api.github.com/repos/ros-perception/image_pipeline/branches{/branch}","tags_url":"https://api.github.com/repos/ros-perception/image_pipeline/tags","blobs_url":"https://api.github.com/repos/ros-perception/image_pipeline/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ros-perception/image_pipeline/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ros-perception/image_pipeline/git/refs{/sha}","trees_url":"https://api.github.com/repos/ros-perception/image_pipeline/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ros-perception/image_pipeline/statuses/{sha}","languages_url":"https://api.github.com/repos/ros-perception/image_pipeline/languages","stargazers_url":"https://api.github.com/repos/ros-perception/image_pipeline/stargazers","contributors_url":"https://api.github.com/repos/ros-perception/image_pipeline/contributors","subscribers_url":"https://api.github.com/repos/ros-perception/image_pipeline/subscribers","subscription_url":"https://api.github.com/repos/ros-perception/image_pipeline/subscription","commits_url":"https://api.github.com/repos/ros-perception/image_pipeline/commits{/sha}","git_commits_url":"https://api.github.com/repos/ros-perception/image_pipeline/git/commits{/sha}","comments_url":"https://api.github.com/repos/ros-perception/image_pipeline/comments{/number}","issue_comment_url":"https://api.github.com/repos/ros-perception/image_pipeline/issues/comments{/number}","contents_url":"https://api.github.com/repos/ros-perception/image_pipeline/contents/{+path}","compare_url":"https://api.github.com/repos/ros-perception/image_pipeline/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ros-perception/image_pipeline/merges","archive_url":"https://api.github.com/repos/ros-perception/image_pipeline/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ros-perception/image_pipeline/downloads","issues_url":"https://api.github.com/repos/ros-perception/image_pipeline/issues{/number}","pulls_url":"https://api.github.com/repos/ros-perception/image_pipeline/pulls{/number}","milestones_url":"https://api.github.com/repos/ros-perception/image_pipeline/milestones{/number}","notifications_url":"https://api.github.com/repos/ros-perception/image_pipeline/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ros-perception/image_pipeline/labels{/name}","releases_url":"https://api.github.com/repos/ros-perception/image_pipeline/releases{/id}","created_at":"2012-08-28T22:15:05Z","updated_at":"2015-12-25T05:45:03Z","pushed_at":"2016-01-01T21:05:42Z","git_url":"git://github.com/ros-perception/image_pipeline.git","ssh_url":"git@github.com:ros-perception/image_pipeline.git","clone_url":"https://github.com/ros-perception/image_pipeline.git","svn_url":"https://github.com/ros-perception/image_pipeline","homepage":null,"size":18858,"stargazers_count":28,"watchers_count":28,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":93,"mirror_url":null,"open_issues_count":33,"forks":93,"open_issues":33,"watchers":28,"default_branch":"indigo"}},"_links":{"self":{"href":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/170"},"html":{"href":"https://github.com/ros-perception/image_pipeline/pull/170"},"issue":{"href":"https://api.github.com/repos/ros-perception/image_pipeline/issues/170"},"comments":{"href":"https://api.github.com/repos/ros-perception/image_pipeline/issues/170/comments"},"review_comments":{"href":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/170/comments"},"review_comment":{"href":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ros-perception/image_pipeline/pulls/170/commits"},"statuses":{"href":"https://api.github.com/repos/ros-perception/image_pipeline/statuses/c3ab5b63394cc41811aa7e2030e61dd1b31d91e8"}}}}