mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 08:47:45 +08:00
Updated rgbd_mapping_kinect2.launch with latest version of kinect2_bridge
This commit is contained in:
@@ -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
@@ -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
@@ -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;
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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) &&
|
||||||
|
|||||||
Reference in New Issue
Block a user