Updated rgbd_mapping_kinect2.launch with latest version of kinect2_bridge

This commit is contained in:
matlabbe
2015-06-16 19:27:04 -04:00
parent c52c326655
commit 831ec5a1a2
5 changed files with 42 additions and 31 deletions
+24 -22
View File
@@ -5,19 +5,21 @@
Install Kinect2 : Follow ALL directives at https://github.com/code-iai/iai_kinect2 Install Kinect2 : Follow ALL directives at https://github.com/code-iai/iai_kinect2
Make sure it is calibrated! Make sure it is calibrated!
Run: Run:
$ roslaunch kinect2_bridge kinect2_bridge.launch publish_tf:=true
$ roslaunch rtabmap_ros rgbd_mapping_kinect2.launch $ roslaunch rtabmap_ros rgbd_mapping_kinect2.launch
$ rosrun kinect2_bridge kinect2_bridge _publish_tf:=true
Prefixes:
sd: rgb_lowres / depth_lowres
hd: rgb_rect / depth_highres
ir: ir_rect / depth_rect
--> -->
<arg name="rgb_prefix" default="rgb_lowres" />
<arg name="depth_prefix" default="depth_lowres" /> <!-- Which image resolution to process in rtabmap: sd, qhd, hd -->
<arg name="resolution" default="qhd" />
<!-- Fixed frame id, you may set "base_link" or "base_footprint" if they are published --> <!-- Fixed frame id, you may set "base_link" or "base_footprint" if they are published -->
<arg name="frame_id" default="kinect2_link"/> <arg name="frame_id" default="kinect2_base_link"/>
<!-- Rotate the camera -->
<arg name="pi/2" value="1.5707963267948966"/>
<arg name="optical_rotate" value="0 0 0 -$(arg pi/2) 0 -$(arg pi/2)" />
<node pkg="tf" type="static_transform_publisher" name="kinect2_base_link"
args="$(arg optical_rotate) kinect2_base_link kinect2_link 100" />
<!-- Choose visualization --> <!-- Choose visualization -->
<arg name="rviz" default="false" /> <arg name="rviz" default="false" />
@@ -38,7 +40,7 @@
<arg name="strategy" default="0" /> <arg name="strategy" default="0" />
<arg name="feature" default="6" /> <arg name="feature" default="6" />
<arg name="nn" default="3" /> <arg name="nn" default="3" />
<arg name="max_depth" default="8.0" /> <arg name="max_depth" default="10.0" />
<arg name="min_inliers" default="20" /> <arg name="min_inliers" default="20" />
<arg name="inlier_distance" default="0.02" /> <arg name="inlier_distance" default="0.02" />
<arg name="local_map" default="1000" /> <arg name="local_map" default="1000" />
@@ -49,9 +51,9 @@
<!-- Odometry --> <!-- Odometry -->
<node pkg="rtabmap_ros" type="rgbd_odometry" name="visual_odometry" output="screen"> <node pkg="rtabmap_ros" type="rgbd_odometry" name="visual_odometry" output="screen">
<remap from="rgb/image" to="/kinect2/$(arg rgb_prefix)/image"/> <remap from="rgb/image" to="/kinect2/$(arg resolution)/image_mono_rect"/>
<remap from="depth/image" to="/kinect2/$(arg depth_prefix)/image"/> <remap from="depth/image" to="/kinect2/$(arg resolution)/image_depth_rect"/>
<remap from="rgb/camera_info" to="/kinect2/$(arg rgb_prefix)/camera_info"/> <remap from="rgb/camera_info" to="/kinect2/$(arg resolution)/camera_info"/>
<param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="frame_id" type="string" value="$(arg frame_id)"/>
<param name="approx_sync" type="bool" value="true"/> <param name="approx_sync" type="bool" value="true"/>
@@ -74,9 +76,9 @@
<param name="subscribe_depth" type="bool" value="true"/> <param name="subscribe_depth" type="bool" value="true"/>
<param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="frame_id" type="string" value="$(arg frame_id)"/>
<remap from="rgb/image" to="/kinect2/$(arg rgb_prefix)/image"/> <remap from="rgb/image" to="/kinect2/$(arg resolution)/image_color_rect"/>
<remap from="depth/image" to="/kinect2/$(arg depth_prefix)/image"/> <remap from="depth/image" to="/kinect2/$(arg resolution)/image_depth_rect"/>
<remap from="rgb/camera_info" to="/kinect2/$(arg rgb_prefix)/camera_info"/> <remap from="rgb/camera_info" to="/kinect2/$(arg resolution)/camera_info"/>
<param name="approx_sync" type="bool" value="true"/> <param name="approx_sync" type="bool" value="true"/>
@@ -91,9 +93,9 @@
<param name="approx_sync" type="bool" value="true"/> <param name="approx_sync" type="bool" value="true"/>
<param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="frame_id" type="string" value="$(arg frame_id)"/>
<remap from="rgb/image" to="/kinect2/$(arg rgb_prefix)/image"/> <remap from="rgb/image" to="/kinect2/$(arg resolution)/image_color_rect"/>
<remap from="depth/image" to="/kinect2/$(arg depth_prefix)/image"/> <remap from="depth/image" to="/kinect2/$(arg resolution)/image_depth_rect"/>
<remap from="rgb/camera_info" to="/kinect2/$(arg rgb_prefix)/camera_info"/> <remap from="rgb/camera_info" to="/kinect2/$(arg resolution)/camera_info"/>
</node> </node>
</group> </group>
@@ -103,9 +105,9 @@
<!-- sync cloud with odometry and voxelize the point cloud (for fast visualization in rviz) --> <!-- sync cloud with odometry and voxelize the point cloud (for fast visualization in rviz) -->
<node if="$(arg rviz)" pkg="nodelet" type="nodelet" name="standalone_nodelet" args="manager" output="screen"/> <node if="$(arg rviz)" pkg="nodelet" type="nodelet" name="standalone_nodelet" args="manager" output="screen"/>
<node if="$(arg rviz)" pkg="nodelet" type="nodelet" name="data_odom_sync" args="load rtabmap_ros/data_odom_sync standalone_nodelet"> <node if="$(arg rviz)" pkg="nodelet" type="nodelet" name="data_odom_sync" args="load rtabmap_ros/data_odom_sync standalone_nodelet">
<remap from="rgb/image_in" to="/kinect2/$(arg rgb_prefix)/image"/> <remap from="rgb/image_in" to="/kinect2/$(arg resolution)/image_color_rect"/>
<remap from="depth/image_in" to="/kinect2/$(arg depth_prefix)/image"/> <remap from="depth/image_in" to="/kinect2/$(arg resolution)/image_depth_rect"/>
<remap from="rgb/camera_info_in" to="/kinect2/$(arg rgb_prefix)/camera_info"/> <remap from="rgb/camera_info_in" to="/kinect2/$(arg resolution)/camera_info"/>
<remap from="odom_in" to="rtabmap/odom"/> <remap from="odom_in" to="rtabmap/odom"/>
+7 -2
View File
@@ -672,7 +672,8 @@ void CoreWrapper::commonDepthCallback(
const sensor_msgs::CameraInfoConstPtr& cameraInfoMsg, const sensor_msgs::CameraInfoConstPtr& cameraInfoMsg,
const sensor_msgs::LaserScanConstPtr& scanMsg) const sensor_msgs::LaserScanConstPtr& scanMsg)
{ {
if(!(imageMsg->encoding.compare(sensor_msgs::image_encodings::MONO8) ==0 || if(!(imageMsg->encoding.compare(sensor_msgs::image_encodings::TYPE_8UC1) == 0 ||
imageMsg->encoding.compare(sensor_msgs::image_encodings::MONO8) ==0 ||
imageMsg->encoding.compare(sensor_msgs::image_encodings::MONO16) ==0 || imageMsg->encoding.compare(sensor_msgs::image_encodings::MONO16) ==0 ||
imageMsg->encoding.compare(sensor_msgs::image_encodings::BGR8) == 0 || imageMsg->encoding.compare(sensor_msgs::image_encodings::BGR8) == 0 ||
imageMsg->encoding.compare(sensor_msgs::image_encodings::RGB8) == 0) || imageMsg->encoding.compare(sensor_msgs::image_encodings::RGB8) == 0) ||
@@ -753,7 +754,11 @@ void CoreWrapper::commonDepthCallback(
} }
cv_bridge::CvImageConstPtr ptrImage; cv_bridge::CvImageConstPtr ptrImage;
if(imageMsg->encoding.compare(sensor_msgs::image_encodings::MONO8) == 0 || if(imageMsg, imageMsg->encoding.compare(sensor_msgs::image_encodings::TYPE_8UC1)==0)
{
ptrImage = cv_bridge::toCvShare(imageMsg);
}
else if(imageMsg->encoding.compare(sensor_msgs::image_encodings::MONO8) == 0 ||
imageMsg->encoding.compare(sensor_msgs::image_encodings::MONO16) == 0) imageMsg->encoding.compare(sensor_msgs::image_encodings::MONO16) == 0)
{ {
ptrImage = cv_bridge::toCvShare(imageMsg, "mono8"); ptrImage = cv_bridge::toCvShare(imageMsg, "mono8");
+3 -3
View File
@@ -434,7 +434,7 @@ void GuiWrapper::depthCallback(
return; return;
} }
cv_bridge::CvImageConstPtr ptrImage = cv_bridge::toCvShare(imageMsg, "bgr8"); cv_bridge::CvImageConstPtr ptrImage = cv_bridge::toCvShare(imageMsg, imageMsg->encoding.compare(sensor_msgs::image_encodings::TYPE_8UC1)==0?"":"mono8");
cv_bridge::CvImageConstPtr ptrDepth = cv_bridge::toCvShare(depthMsg); cv_bridge::CvImageConstPtr ptrDepth = cv_bridge::toCvShare(depthMsg);
image_geometry::PinholeCameraModel model; image_geometry::PinholeCameraModel model;
@@ -502,7 +502,7 @@ void GuiWrapper::depthOdomInfoCallback(
return; return;
} }
cv_bridge::CvImageConstPtr ptrImage = cv_bridge::toCvShare(imageMsg, "bgr8"); cv_bridge::CvImageConstPtr ptrImage = cv_bridge::toCvShare(imageMsg, imageMsg->encoding.compare(sensor_msgs::image_encodings::TYPE_8UC1)==0?"":"mono8");
cv_bridge::CvImageConstPtr ptrDepth = cv_bridge::toCvShare(depthMsg); cv_bridge::CvImageConstPtr ptrDepth = cv_bridge::toCvShare(depthMsg);
image_geometry::PinholeCameraModel model; image_geometry::PinholeCameraModel model;
@@ -579,7 +579,7 @@ void GuiWrapper::depthScanCallback(
pcl::fromROSMsg(scanOut, pclScan); pcl::fromROSMsg(scanOut, pclScan);
cv::Mat scan = util3d::laserScanFromPointCloud(pclScan); cv::Mat scan = util3d::laserScanFromPointCloud(pclScan);
cv_bridge::CvImageConstPtr ptrImage = cv_bridge::toCvShare(imageMsg, "bgr8"); cv_bridge::CvImageConstPtr ptrImage = cv_bridge::toCvShare(imageMsg, imageMsg->encoding.compare(sensor_msgs::image_encodings::TYPE_8UC1)==0?"":"mono8");
cv_bridge::CvImageConstPtr ptrDepth = cv_bridge::toCvShare(depthMsg); cv_bridge::CvImageConstPtr ptrDepth = cv_bridge::toCvShare(depthMsg);
image_geometry::PinholeCameraModel model; image_geometry::PinholeCameraModel model;
+6 -3
View File
@@ -93,7 +93,8 @@ public:
{ {
if(!this->isPaused()) if(!this->isPaused())
{ {
if(!(image->encoding.compare(sensor_msgs::image_encodings::MONO8) ==0 || if(!(image->encoding.compare(sensor_msgs::image_encodings::TYPE_8UC1) ==0 ||
image->encoding.compare(sensor_msgs::image_encodings::MONO8) ==0 ||
image->encoding.compare(sensor_msgs::image_encodings::MONO16) ==0 || image->encoding.compare(sensor_msgs::image_encodings::MONO16) ==0 ||
image->encoding.compare(sensor_msgs::image_encodings::BGR8) == 0 || image->encoding.compare(sensor_msgs::image_encodings::BGR8) == 0 ||
image->encoding.compare(sensor_msgs::image_encodings::RGB8) == 0) || image->encoding.compare(sensor_msgs::image_encodings::RGB8) == 0) ||
@@ -101,7 +102,9 @@ public:
depth->encoding.compare(sensor_msgs::image_encodings::TYPE_32FC1)==0 || depth->encoding.compare(sensor_msgs::image_encodings::TYPE_32FC1)==0 ||
depth->encoding.compare(sensor_msgs::image_encodings::MONO16)==0)) depth->encoding.compare(sensor_msgs::image_encodings::MONO16)==0))
{ {
ROS_ERROR("Input type must be image=mono8,mono16,rgb8,bgr8 (mono8 recommended) and image_depth=16UC1,32FC1,mono16"); ROS_ERROR("Input type must be image=mono8,mono16,rgb8,bgr8 (mono8 "
"recommended) and image_depth=16UC1,32FC1,mono16. Types detected: %s %s",
image->encoding.c_str(), depth->encoding.c_str());
return; return;
} }
else if(depth->encoding.compare(sensor_msgs::image_encodings::TYPE_32FC1)==0) else if(depth->encoding.compare(sensor_msgs::image_encodings::TYPE_32FC1)==0)
@@ -142,7 +145,7 @@ public:
float fy = model.fy(); float fy = model.fy();
float cx = model.cx(); float cx = model.cx();
float cy = model.cy(); float cy = model.cy();
cv_bridge::CvImageConstPtr ptrImage = cv_bridge::toCvShare(image, "mono8"); cv_bridge::CvImageConstPtr ptrImage = cv_bridge::toCvShare(image, image->encoding.compare(sensor_msgs::image_encodings::TYPE_8UC1)==0?"":"mono8");
cv_bridge::CvImageConstPtr ptrDepth = cv_bridge::toCvShare(depth); cv_bridge::CvImageConstPtr ptrDepth = cv_bridge::toCvShare(depth);
rtabmap::SensorData data( rtabmap::SensorData data(
+2 -1
View File
@@ -156,7 +156,8 @@ private:
const sensor_msgs::ImageConstPtr& imageDepth, const sensor_msgs::ImageConstPtr& imageDepth,
const sensor_msgs::CameraInfoConstPtr& cameraInfo) const sensor_msgs::CameraInfoConstPtr& cameraInfo)
{ {
if(!(image->encoding.compare(sensor_msgs::image_encodings::MONO8) ==0 || if(!(image->encoding.compare(sensor_msgs::image_encodings::TYPE_8UC1) ==0 ||
image->encoding.compare(sensor_msgs::image_encodings::MONO8) ==0 ||
image->encoding.compare(sensor_msgs::image_encodings::MONO16) ==0 || image->encoding.compare(sensor_msgs::image_encodings::MONO16) ==0 ||
image->encoding.compare(sensor_msgs::image_encodings::BGR8) == 0 || image->encoding.compare(sensor_msgs::image_encodings::BGR8) == 0 ||
image->encoding.compare(sensor_msgs::image_encodings::RGB8) == 0) && image->encoding.compare(sensor_msgs::image_encodings::RGB8) == 0) &&