基于ROS的hector-slam使用Kinect V1建图

2023-05-16

距离值在ROS中被称为scan,并且姿态(位置+方向)信息会根据相对坐标关系而改变,因此被称为tf(transform)



一.建图实际操作

 

  1. 下载源码测试源码,depthimage_to_laserscan,参考https://blog.csdn.net/u010925447/article/details/56494680
  2. 解压到你的ros工作空间路径中。
  3. 使用catkin_make编译功能包。
  4. 分析launch文件,修改使其在自己的平台上可用:参考https://www.jianshu.com/p/429e59d48322
  5. 运行launch文件 启动转换节点:roslaunch depthimage_to_laserscan sample_node.launch(包含主节点和深度相机启动节点)

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

 

  1. 下载hector_slam_example:下载地址 https://github.com/chenxingzhe/hector_slam_example,编译(cmake)(无需里程计即可建图,核心节点hector_mapping订阅/scan话题)
  2. sudo apt-get install ros-indigo-hector-slam
  3. Install the dependency packages:rosdep install hector_slam_example
  4. 在启动之前如果你用的是kinect,那就修改一下launch文件
  5. 然后就是roslaunch hector_slam_example hector_openni.launch
  6. 只需要让移动平台移动就可以去构建地图了,当然这里面用的生成模拟激光的方法是depthimage_to_laserscan节点,但是要求KINECT要相对稳定,并且尽量水平放置。
  7. 在rviz中就可以看到hector_slam的效果了

三.终端操作

  • 启动摄像头 : $ roslaunch freenect_launch freenect.launch
  • 启动深度转scan信息:$ rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/camera/depth/image_raw
  • 启动自己添加的三个launch文件:$ roslaunch hector_slam_launch slam.launch
  • 查看tree图:$ rosrun rqt_tf_tree rqt_tf_tree

 

  • 接下的是我自己通过手柄控制机器人的程序
  • $ rosrun joy joy_node  
  • $ rosrun input_js_control logitech
  • $ rosrun ros_car_py base.py
  • $ python 22-tcp_client_joy.py

 

  • 利用预先准备好的bag文件运行的SLAM
  • $rosbag record -o foo scan tf
  • $rosbag play --clock foo.bag
  • $rosbag info foo.bag

 

  • 创建完成之后,启动地图以及查看地图
  • $ rosrun map_server map_server map.yaml
  • $ rosrun map_server map_server -f map
  • $ roscd ~/maps
  • $ rosrun map_server map_server map.yaml





 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于ROS的hector-slam使用Kinect V1建图 的相关文章

  • ubuntu18.04命令安装ros2

    ROS2官方文档 本教程为apt get命令安装方式 官网教程有点问题 借鉴一下大佬的安装方式 文章目录 1 安装ROS2 1 1 安装秘钥相关指令 1 2 授权秘钥 1 3 添加ROS2软件源 1 4 安装 2 设置环境 可选但是推荐 2
  • roslaunch error: ERROR: cannot launch node of type

    今天在因为github上有个之前的包更新了 重新git clone后出现了一个问题 ERROR cannot launch node of type crazyflie demo controller py can t locate nod
  • 使用来自多个点的多个图像构建 3D 模型 (kinect)

    如果从不同角度收集各种图像和深度数据 是否可以构建静止物体的 3D 模型 我的想法是有一种圆形传送带 其中将放置 kinect 并且传送带同时要在 3D 空间中重建的真实物体位于中间 此后传送带围绕图像旋转一圈 并捕获大量图像 可能每秒 1
  • 什么是 void `std::allocator`?即:`std::allocator`

    自动生成ROS 机器人操作系统 message C 头文件包含如下类型定义 typedef std msgs Header
  • Kinect:如何从一些深度数据获取骨架数据(从kinect获取,但我修改了一些地方)

    我可以从 Kinect 获取深度帧 然后修改帧中的数据 现在我想使用修改后的深度帧来获取骨架数据 我该怎么做 好吧 我发现没有办法用 microsoft kinect sdks 来做到这一点 现在 我发现使用 OpenNI 是可以的 它是
  • 平滑鼠标移动

    我正在开发一个软件 根据我从 kinect 的深度图像获得的某些坐标来移动鼠标 但我有 30 帧 秒 图像 秒 并且这些坐标随着每一帧而变化 因此鼠标不断移动 我的问题是 有没有办法让鼠标的移动平滑 是的 您可以使用一些参数开始跟踪 以使移
  • 如何在 Matlab 中将 Kinect 原始深度信息转换为米?

    我在这里做了一些研究来理解这个主题 但没有取得好的结果 我正在使用 Kinect for Windows 和 Kinect SDK 1 7 我正在使用 matlab 来处理原始深度图信息 首先 我使用这种方法 https stackover
  • Matlab z buffer 用于模拟kinect

    我们正在尝试模拟简单的 kinect 输出 我已经在 Matlab 中渲染了一个三角形网格 现在我想获取渲染形状的图形 轴的深度缓冲区 我如何在 matlab 中做到这一点 即如何访问图形的深度缓冲区 你可以尝试this
  • 无法在 ROS 中使用本地安装的 Protocol Buffer

    我已经安装了协议缓冲区 https developers google com protocol buffers 本地 ROS包的目录结构如下 CMakeLists txt package xml include addressbook p
  • 从给定深度图像生成点云-matlab Computer Vision System Toolbox

    我是matlab初学者 我购买了Computer Vision System Toolbox 我收到了 400 张深度图像 PNG 图像 我想为每个图像创建一个点云 我查看了Computer Vision System Toolbox的文档
  • Kinect 编程的要求

    我希望使用 Kinect ToF 摄像头进行编程 但我不确定这样做的硬件和软件要求 我读过很多涉及这个主题的文章 书籍 但似乎存在一些不一致之处 让我有些困惑 问题 我需要购买什么 Kinect 产品才能确保拥有在计算机上使用它进行软件开发
  • 将 WriteableBitmap 转换为 Bitmap 以在 EmguCV 中使用

    在我的代码中 我从字节数组 依次从 Kinect 接收 WriteableBitmap 我想将它们转换为位图以与 EmguCV 一起使用 目前这是我的代码 Copy the pixel data from the image to a te
  • 高翔博士Faster-LIO论文和算法解析

    说明 题目 Faster LIO 快速激光IMU里程计 参考链接 Faster LIO 快速激光IMU里程计 iVox Faster Lio 智行者高博团队开源的增量式稀疏体素结构 Faster Lio是高翔博士在Fast系列的新作 对标基
  • 在 NITE2 python 绑定中创建 UserTracker 会崩溃

    我正在尝试使用 OpenNI2 和 NITE2python 绑定 http www openni org files python bindings 我在 Windows 7 下 Kinect SDK1 8 OpenNI 2 2 和 NIT
  • 如何使用 PyQT5 连接和分离外部应用程序或对接外部应用程序?

    我正在使用 ROS 为多机器人系统开发 GUI 但我对界面中最不想做的事情感到困惑 在我的应用程序中嵌入 RVIZ GMAPPING 或其他屏幕 我已经在界面中放置了一个终端 但我无法解决如何向我的应用程序添加外部应用程序窗口的问题 我知道
  • 如何订阅“/scan”主题、修改消息并发布到新主题?

    我想通过订阅message ranges来改进turtlebot3的LDS 01传感器 通过应用一些算法修改messange ranges并将其发布到新主题 如下所示 但是当我运行编码时出现错误 错误是 遇到溢出的情况 错误是 运行时警告
  • Kinect 1.8 颜色帧和深度帧不协调

    我的程序存在深度和彩色图像之间协调不佳的问题 玩家面具与人物不在同一位置 见下图 void AllFreamReady object sender AllFramesReadyEventArgs e using ColorImageFram
  • 两个3D点云变换矩阵

    我试图猜测两个 3D 点云之间的刚性变换矩阵是哪个 这两个点云是 来自 kinect 的关键点 kinect keypoints 来自 3D 对象 盒子 的关键点 object keypoints 我尝试过两种选择 1 实现寻找刚性变换的算
  • 使用 CMake 链接 .s 文件

    我有一个我想使用的 c 函数 但它是用Intel编译器而不是gnu C编译器 我在用着cmake构建程序 我实际上正在使用ROS因此rosmake但基础是cmake所以我认为这更多是一个 cmake 问题而不是ROS问题 假设使用构建的文件
  • 在WPF中设置鼠标位置[重复]

    这个问题在这里已经有答案了 我打算用 Kinect 手势替换我的鼠标 但我找不到为 WPF 应用程序设置鼠标位置的方法 无法使用 NET BCL 但是 如果您确实想要它 您可以使用本机SetCursorPos in User32 dll D

随机推荐

  • 广工 AnyviewC C语言习题 第六章

    Anyview 第六章 6 022 n是系统给定的外部变量 编写程序 xff0c 求1到n间的 自然数之和 请定义局部变量s存放求和的结果 xff0c 并用下 列语句输出结果 span class token function printf
  • 广工 AnyviewC C语言习题 第七章

    Anyview 第七章 习题7 010 写一函数求3个整数中最小的数 span class token keyword int span span class token function min span span class token
  • 广工 AnyviewC C语言习题 第十、十一章

    Anyview 第十 十一章 第十章 10 011 请编写一个函数func char s char t int n xff0c 由数组s中长度为n的字符序列构造其逆序列 xff0c 并存储在数组t中 例如 xff0c 由给定字符序列s 61
  • 【测绘专用】 MATLAB 四叉树分割遥感图像

    MATLAB 四叉树分割遥感图像 四叉树是遥感图像处理里面常用的一种算法 xff0c 我这里采用递归的方法来实现 数据处理的思路 对于图像矩阵 xff0c 我是判断它的方差是否小于某个阈值 xff0c 大于就继续分 xff0c 小于就不分
  • VS code配置latex美赛模板

    VS code配置latex美赛模板 首先要知道安装的latex版本是miktex还是texlive Miktex 我的是2 9的 解压模板文件 xff1a 用VScode打开上面红圈里的文件即可进行编辑 Texlive 打开 Tex Li
  • OkHttpUtils (OkHttpUtil工具类)

    public class OkHttpUtil static OkHttpUtil okHttpUtil private OkHttpClient Builder builder private Request Builder reques
  • C++经典类库(C++开发必看)

    现实中 xff0c C 43 43 的库门类繁多 xff0c 解决的问题也是极其广泛 xff0c 库从轻量级到重量级的都有 本文为你介绍了十一种类库 xff0c 有我们常见的 xff0c 也有不常见的 xff0c 一起来看 AD xff1a
  • libcurl第九课 Content-Length的添加机制

    场景 lt DOCTYPE HTML PUBLIC 34 W3C DTD HTML 4 01 EN 34 34 http www w3 org TR html4 strict dtd 34 gt lt HTML gt lt HEAD gt
  • 英伟达NX上使用 Python 硬解码ip摄像头h264视频流

    问题 用另一篇博客rtsp拉流的方法 xff0c 当单独拉流时 xff0c 不会出现任何问题 可是如果将拉流和检测算法结合 xff0c 就会出现断流 xff0c 花屏 xff0c 跳帧 xff0c 播放延迟 xff0c 播放速度卡顿等问题
  • http库

    当我们使用 Go 语言进行 Web 开发时 xff0c 不可避免地要使用到 http 包 该包提供了 HTTP 客户端和服务器的实现 xff0c 可以轻松地编写 HTTP 服务器和客户端 在本节中 xff0c 我们将学习如何使用 Go 语言
  • CMake链接静态库

    set CMAKE CXX STANDARD 14 include directories CMAKE SOURCE DIR include include directories CMAKE SOURCE DIR include rtk
  • 清晰解读C语言中的位域、字节序、比特序、大小端

    一 比特序 位序 比特序表示一个字节中8个比特位 xff08 bit xff09 之间的顺序问题 分为LSB 0 位序和MSB 0 位序 LSB least significant bit xff1a 数据的最低位存放在字节的第0位 MSB
  • swiper轮播图代码实例

    lt span class hljs constant DOCTYPE span html gt lt html gt lt head gt lt meta charset 61 span class hljs string 34 UTF
  • Ubuntu编译安装Node.js

    编译安装nodejs 1 wget c https nodejs org dist v6 9 1 node v6 9 1 tar gz 2 tar zxvf node v6 9 1 tar gz 3 cd node v6 9 1 4 con
  • node.js的post和get简单取值

    span class hljs reserved var span http 61 span class hljs built in require span span class hljs string 39 http 39 span s
  • php 判断是移动端还是pc端访问web页面

    function is mobile span class hljs variable user agent span 61 span class hljs variable SERVER span span class hljs stri
  • mongodb的where条件

    mongodb的where条件 1 比较条件 等于 db tian find span class hljs string 39 name 39 span span class hljs symbol span class hljs str
  • ZED相机的使用

    下面简要说明一下ZED双目相机的使用 1 开发环境搭建 首先zed的相机必须要nvidia显卡支持 xff0c 没有的同学可以洗洗睡了 xff0c 或者你可以拿来当普通相机用 首先安装cuda xff0c 再去zed官网下载对应cuda版本
  • libcurl第十一课 使用以及注意事项

    经验 1 xff09 配合Postman能够快速的生成例子代码 2 xff09 curl global init初始化 如果调用curl库函数的时候 xff0c 没有调用curl global init进行curl全局变量的初始化 xff0
  • 基于ROS的hector-slam使用Kinect V1建图

    距离值在ROS中被称为scan xff0c 并且姿态 xff08 位置 43 方向 xff09 信息会根据相对坐标关系而改变 xff0c 因此被称为tf xff08 transform xff09 一 建图实际操作 下载源码测试源码 xff