基于ROS平台的移动机器人-6-使用Kinect2获取激光数据
2017-02-23 09:43
579 查看
基于ROS平台的移动机器人-6-使用Kinect2获取激光数据
ready
此教程我们将利用KinectV2在ROS平台上将KinectV2获得的深度图片转化为激光数据,以便我们下面的建图和导航。go
1.我们这里需要一个将深度图转为激光数据的包(1)cd ~/catkin_ws/src (2)git clone https://github.com/ros-perception/depthimage_to_laserscan.git
2.我这里新建了一个 bringup 的包来专门存放 launch 文件
(1)cd ~/catkin_ws/src (2)catkin_create_pkg bringup roscpp
3.在 bringup 包内我们新建一个 launch 文件夹 ,然后 在launch文件夹里添加
kinect2_depthimage_to_laserscan_rviz_view.launch文件
<launch> <!-- start sensor--> <include file="$(find kinect2_bridge)/launch/kinect2_bridge.launch"> <arg name="base_name" value="kinect2"/> <arg name="sensor" value=""/> <arg name="publish_tf" value="true"/> <arg name="base_name_tf" value="kinect2"/> <arg name="fps_limit" value="-1.0"/> <arg name="calib_path" value="$(find kinect2_bridge)/data/"/> <arg name="use_png" value="false"/> <arg name="jpeg_quality" value="90"/> <arg name="png_level" value="1"/> <arg name="depth_method" value="default"/> <arg name="depth_device" value="-1"/> <arg name="reg_method" value="default"/> <arg name="reg_device" value="-1"/> <arg name="max_depth" value="12.0"/> <arg name="min_depth" value="0.1"/> <arg name="queue_size" value="5"/> <arg name="bilateral_filter" value="true"/> <arg name="edge_aware_filter" value="true"/> <arg name="worker_threads" value="4"/> </include> <!-- Run the depthimage_to_laserscan node --> <node pkg="depthimage_to_laserscan" type="depthimage_to_laserscan" name="depthimage_to_laserscan" output="screen"> <!--输入图像--> <remap from="image" to="/kinect2/qhd/image_depth_rect"/> <!--相关图像的相机信息。通常不需要重新变形,因为camera_info将从与图像相同的命名空间订阅。--> <remap from="camera_info" to="/kinect2/qhd/camera_info" /> <!--输出激光数据的话题--> <remap from="scan" to="/scan" /> <!--激光扫描的帧id。对于来自具有Z向前的“光学”帧的点云,该值应该被设置为具有X向前和Z向上的相应帧。--> <param name="output_frame_id" value="/kinect2_depth_frame"/> <!--用于生成激光扫描的像素行数。对于每一列,扫描将返回在图像中垂直居中的那些像素的最小值。--> <param name="scan_height" value="30"/> <!--返回的最小范围(以米为单位)。小于该范围的输出将作为-Inf输出。--> <param name="range_min" value="0.45"/> <!--返回的最大范围(以米为单位)。大于此范围将输出为+ Inf。--> <param name="range_max" value="8.00"/> </node> <!-- static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms --> <node pkg="tf" type="static_transform_publisher" name="base_footprint_to_base_link" args="0 0 0.5 0 0 0 base_footprint base_link 50" /> <node pkg="tf" type="static_transform_publisher" name="base_link_to_laser" args="0 0 0.5 0 0 0 base_link laser 50" /> <node pkg="tf" type="static_transform_publisher" name="base_link_to_kinect2laser" args="0 0 0.5 0 0 0 base_link kinect2_depth_frame 50" /> <node pkg="tf" type="static_transform_publisher" name="base_link_to_kinect2_link" args="0 0 0.5 -1.57 0 -1.57 base_link kinect2_link 50" /> <!--start rviz view --> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find bringup)/rviz/kinect2_depthimage_to_laserscan_view.rviz" /> </launch>
4.在 bringup 包里新建 rviz 文件夹,然后在 rviz 文件夹里添加
kinect2_depthimage_to_laserscan_view.rviz文件
Panels: - Class: rviz/Displays Help Height: 78 Name: Displays Property Tree Widget: Expanded: - /Global Options1 - /Status1 - /LaserScan1 Splitter Ratio: 0.5 Tree Height: 566 - Class: rviz/Selection Name: Selection - Class: rviz/Tool Properties Expanded: - /2D Pose Estimate1 - /2D Nav Goal1 - /Publish Point1 Name: Tool Properties Splitter Ratio: 0.588679 - Class: rviz/Views Expanded: - /Current View1 Name: Views Splitter Ratio: 0.5 - Class: rviz/Time Experimental: false Name: Time SyncMode: 0 SyncSource: LaserScan Visualization Manager: Class: "" Displays: - Alpha: 0.5 Cell Size: 1 Class: rviz/Grid Color: 160; 160; 164 Enabled: true Line Style: Line Width: 0.03 Value: Lines Name: Grid Normal Cell Count: 0 Offset: X: 0 Y: 0 Z: 0 Plane: XY Plane Cell Count: 10 Reference Frame: <Fixed Frame> Value: true - Alpha: 1 Autocompute Intensity Bounds: true Autocompute Value Bounds: Max Value: 0 Min Value: 0 Value: true Axis: Z Channel Name: intensity Class: rviz/LaserScan Color: 255; 255; 255 Color Transformer: AxisColor Decay Time: 0 Enabled: true Invert Rainbow: false Max Color: 255; 255; 255 Max Intensity: 4096 Min Color: 0; 0; 0 Min Intensity: 0 Name: LaserScan Position Transformer: XYZ Queue Size: 10 Selectable: true Size (Pixels): 3 Size (m): 0.01 Style: Points Topic: /scan Unreliable: false Use Fixed Frame: true Use rainbow: true Value: true - Class: rviz/TF Enabled: true Frame Timeout: 15 Frames: All Enabled: true base_footprint: Value: true kinect2_depth_frame: Value: true kinect2_ir_optical_frame: Value: true kinect2_link: Value: true kinect2_rgb_optical_frame: Value: true laser: Value: true Marker Scale: 1 Name: TF Show Arrows: true Show Axes: true Show Names: true Tree: base_footprint: kinect2_depth_frame: {} kinect2_link: kinect2_rgb_optical_frame: kinect2_ir_optical_frame: {} laser: {} Update Interval: 0 Value: true Enabled: true Global Options: Background Color: 48; 48; 48 Fixed Frame: laser Frame Rate: 30 Name: root Tools: - Class: rviz/Interact Hide Inactive Objects: true - Class: rviz/MoveCamera - Class: rviz/Select - Class: rviz/FocusCamera - Class: rviz/Measure - Class: rviz/SetInitialPose Topic: /initialpose - Class: rviz/SetGoal Topic: /move_base_simple/goal - Class: rviz/PublishPoint Single click: true Topic: /clicked_point Value: true Views: Current: Class: rviz/Orbit Distance: 10 Enable Stereo Rendering: Stereo Eye Separation: 0.06 Stereo Focal Distance: 1 Swap Stereo Eyes: false Value: false Focal Point: X: 0 Y: 0 Z: 0 Name: Current View Near Clip Distance: 0.01 Pitch: 0.810398 Target Frame: <Fixed Frame> Value: Orbit (rviz) Yaw: 3.2504 Saved: ~ Window Geometry: Displays: collapsed: false Height: 846 Hide Left Dock: false Hide Right Dock: true QMainWindow State: 000000ff00000000fd00000004000000000000016a000002c4fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c0061007900730100000028000002c4000000d600fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000002c4fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730000000028000002c4000000ac00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004b00000003efc0100000002fb0000000800540069006d00650100000000000004b0000002f600fffffffb0000000800540069006d0065010000000000000450000000000000000000000340000002c400000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: collapsed: false Tool Properties: collapsed: false Views: collapsed: true Width: 1200 X: 50 Y: 45
5.基本工作我们都做完了,现在我们需要编译一下
(1)cd ~/catkin_ws (2)catkin_make (3)rospack profile
6.我们现在可以接上KinectV2(注意!!!接USB3.0口),执行
roslaunch bringup kinect2_depthimage_to_laserscan_rviz_view.launch
没有问题的话我们可以看到一下界面:
![](http://i.imgur.com/YDCmtBe.png)
查看TF树:文件生成在主文件夹
rosrun tf view_frames
这是我的TF树
![](http://i.imgur.com/ygyIKTO.jpg)
相关文章推荐
- 基于ROS平台的移动机器人-8-使用Kinect2导航
- 基于ROS平台的移动机器人-7-使用Kinect2建图
- 基于ROS平台的移动机器人-5-Kinect2驱动的安装和ROS下的测试
- Kinect for windows 开发入门 七:景深数据获取和使用 上
- 使用腾讯开发平台获取QQ用户数据资料
- 基于ROS平台的移动机器人-1-小车底盘的搭建
- 基于ROS平台的移动机器人-4-通过ROS利用键盘控制小车移动
- Kinect for windows 开发入门 八:景深数据获取和使用 下
- RxJava简单使用、模仿访问服务器获取数据更新界面-基于mvp架构
- 基于Bmob平台进行从服务器获取图片数据(url)的操作,并以瀑布流得形式显示图片
- 基于qualcomm平台的kinect教程四之获取骨骼图
- ROS机器人Diego 1#制作(二十二)基于EAI F4激光雷达数据进行定位amcl
- Kinect for windows 开发入门 十:语音数据的获取和使用
- ROS使用openni获取Kinect彩色图像和深度图像
- Kinect for windows 开发入门 九:骨骼数据获取和使用
- ROS链接openni库获取kinect数据(PC端)
- ROS链接openni库获取kinect数据(ARM端)
- 基于C++实现kinect+opencv 获取深度及彩色数据
- 数据平台架构基于AWS的使用总结- Redshift优劣
- 基于ROS平台的移动机器人-3-小车底盘与ROS的通信