深度相机的仿激光数据创建地图--24

原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/

前提:

1.本教程确保你已经成功安装了kinect 或者xtion深度相机的驱动,能够正常使用。驱动安装可参考我的博客http://www.cnblogs.com/zxouxuewei/p/5271939.html

2.你已经具有一台能够手动或者自动移动的平台,将你的深度相机真确安装在移动平台上。(如下图片是我自己制作的移动平台,以后会对接口做详细的描述)

一。使用kinect深度相机将点云数据转换为激光数据

1.下载源码测试源码,pointcloud_to_laserscan:https://github.com/ros-perception/pointcloud_to_laserscan

2.解压到你的ros工作空间路径中。

3.使用catkin_make编译功能包。

4.功能包路径:ROS_PACKAGE_PATH=/root/catkin_rs/src/pointcloud_laserscan:$ROS_PACKAGE_PATH

5.分析launch文件,修改使其在自己的平台上可用。(修改以下提示)

<?xml version="1.0"?>

<launch>

    <arg name="camera" default="camera" />

    <!-- start sensor-->
    <include file="$(find openni_launch)/launch/openni.launch">  #由于我们使用的kinect,openni2已近不支持了。所以用openni
        <arg name="camera" default="$(arg camera)"/>
    </include>

    <!-- run pointcloud_to_laserscan node -->
    <node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">  #节点名称可以更改为自己想要的

        <remap from="cloud_in" to="$(arg camera)/depth_registered/points_processed"/>  #话题名称也可以更改,不过在rviz中要明白该订阅那个话题
        <remap from="scan" to="$(arg camera)/scan"/>
        <rosparam>
            target_frame: camera_link
            transform_tolerance: 0.01
            min_height: 0.0
            max_height: 1.0

            angle_min: -1.5708 # -M_PI/2
            angle_max: 1.5708 # M_PI/2
            angle_increment: 0.087 # M_PI/360.0
            scan_time: 0.3333
            range_min: 0.45
            range_max: 4.0
            use_inf: true

            # Concurrency level, affects number of pointclouds queued for processing and number of threads used
            # 0 : Detect number of cores
            # 1 : Single threaded
            # 2->inf : Parallelism level
            concurrency_level: 1
        </rosparam>

    </node>

</launch>

分析:首先启动openni_launch中的深度相机。定义节点名称为:pointcloud_to_laserscan。发布话题的名称定义等等;

6.运行launch文件 启动深度相机节点:

roslaunch pointcloud_to_laserscan sample_node.launch(如果有如下信息,证明是正常的)
[ INFO] [1458635459.179868847]: Initializing nodelet with 4 worker threads.
[ INFO] [1458635462.234383165]: Number devices connected: 1
[ INFO] [1458635462.234515193]: 1. device on bus 001:28 is a SensorKinect (2ae) from PrimeSense (45e) with serial id ‘A00366803996050A‘
[ INFO] [1458635462.235427900]: Searching for device with index = 1
[ INFO] [1458635462.415296355]: Opened ‘SensorKinect‘ on bus 1:28 with serial number ‘A00366803996050A‘
[ INFO] [1458635462.973510398]: rgb_frame_id = ‘camera_rgb_optical_frame‘
[ INFO] [1458635462.973599301]: depth_frame_id = ‘camera_depth_optical_frame‘

7.在rviz视图中查看点云以及仿的激光数据:

rviz

8.查看节点图

rqt_graph

二.利用深度相机仿激光数据创建地图

1.下载hector_slam_example:下载地址,编译(cmake)好之后,记住需要将这个文件加入ros工作空间路径中。 
2.Install the dependency packages:

rosdep install hector_slam_example

3.在启动之前如果你用的是kinect,那就请你修改一下launch文件吧。

 <include file="$(find openni_launch)/launch/openni.launch">  #由于我们使用的kinect,openni2已近不支持了。所以用openni然后就是oslaunch
roslaunch hector_slam_example hector_openni.launch

只需要让移动平台移动就可以去构建地图了,当然这里面用的生成模拟极光的方法是depthimage_to_laserscan,代码的方法速度更快但是要求摄像头要相对稳定,并且尽量水平放置。

4.查看节点:

rqt_graph

时间: 2025-01-02 19:02:40

深度相机的仿激光数据创建地图--24的相关文章

ros学习笔记 - 深度传感器转换成激光数据(hector_slam)

前提条件:1,确保读者已经安装了kinect或者其他深度摄像头的驱动,如果未安装,可以直接在网盘下载:http://pan.baidu.com/s/1hqHB10w 提取密码:wrmn 利用深度相机仿激光数据创建地图: 所依赖包的下载与安装: 1,安装hector_slam 2,下载hector_slam_example:下载地址,编译好之后,记住需要将这个文件加入ros包中 ROS_PACKAGE_PATH=/home/用户名/catkin_ws/hector_slam_example:$RO

(ros/navigation)how to build a map using logged data 怎样用记录的数据创建地图

1 how to build a map using logged data 怎样用记录的数据创建地图 描述:怎样用记录的转换和激光扫描数据创建二维地图. 创建地图 1.  如果作为源校验(相对于二进制安装),构建gmapping: rosmake gmapping 2. 获取一个包.有两个选择: 1 用机器人创建一个包 2 下载一个现有的包做测试 任何一种方式,都会得到一个包. 3. 启动核心 roscore 4. 在其他节点启动前,确保use_sim_time设置为true <pre nam

在slam_gmapping中使用Log数据创建地图

本文介绍使用机器人记录的tf变换和激光扫描数据来建立2D地图.并在ROS的图形化模拟环境rviz中通过重新回放记录的数据作为机器人真实传感器采集的输入,来观测地图动态创建过程. 1.ROS gmapping工具 ROS提供的gmapping包是用来生成地图的,它是对著名的开源openslam包在ROS框架下的一个实现.这个包提供了对激光设备的slam,根据激光设备的输入和姿态数据从而建立一个基于网格的2D地图.它需要从ROS系统监听许多Topic,并输出一个Topic,即map(nav_msgs

深度相机生成点云数据的原理

深度相机生成点云数据的原理 2019年8月4日 16:26:40 原理 RGB-D 图像中的rgb图片提供了像素坐标系下的x,y坐标,而深度图直接提供了相机坐标系下的$Z$坐标,也就是相机与点的距离. 根据 RGB-D 图像的信息和相机的内参,可以计算出任何一个像素点在相机坐标系下的坐标. 根据 RGB-D 图像的信息和相机的内参与外参,可以计算出任何一个像素点在世界坐标系下的坐标. 相机视野范围内,相机坐标系下的障碍物点的坐标,就是点云传感器数据,也就是相机坐标系下的点云数据.点云传感器数据可

使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)

原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图.下面就来看看本文实现的功能: Silverlight 与服务器利用Socket通讯,实时从服务器获取数据(本文中的数据是地理坐标),由于没有GPS,所以本文在服务器写了一个构造新坐标的函数(本文是一个三角函数),然后利用Timer组件,实时调用,得到新的坐标,并将新的坐标发送给客户端,客户端接收到发

深度相机哪家强?

随着机器视觉.自动驾驶.机器人的火爆,采用深度相机采集环境的深度信息然后进行物体识别.环境建模等越来普遍:相对于传统2D相机,3D相机增加了一维的深息,因而,能够更好的对真实世界进行描述:在许多领域如安防.监控.机器视觉.机器人等,拓展了更多的可能:如自动驾驶中的物体识别和障碍物检测,工业中散乱码放物体的识别.分拣.拆垛.码垛,物流场景中物体的货架抓取等等. 深度相机,顾名思义,指的是可以测量物体到相机距离(深度)的相机,如微软的Kinect, Kinect 2, Intel 的 RealSen

arcgis for flex api version3.7 教程:8.创建地图

地图概述: arcgis for flex api提供了大量的方法来实现地图操作和交互.首先,地图(map)支持添加各种类型的图层或服务.图层数据来源可以是arcgis server.Bing maps.graphics layers等.此外还有可以使用网络公开的其他服务像arcgis.com或自建的.网络地图服务有相似的一面,都通过一定的方法支持各种类型的图层 ,任务和数据(数据可以扩展,例如可以是.csv和.gpx文件作为一个组合).下面我们将对此做详细讨论. 创建地图并设置显示范围和空间参

HTML5结合百度地图API创建地图应用

具体的百度地图API的使用方法查看百度地图API里的DEMO <style> #div1{ width:400px; height:400px; border:1px #000 solid;} </style> <script src="http://api.map.baidu.com/api?v=1.3"></script> <script> window.onload = function(){ var oInput =

Java JSON数据创建和读取

Java  json数据创建 package com.JavaTest; import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class CreatJson { public static void main(String[] args) { JsonObject object = new JsonObject(); object.addProperty("cat", "it&