目录

1.[第3类]LRF(LDS)传感器 2

1.1 传感器包安装 2

1.1.1 传感器端口访问设置 2

1.1.2 运行hlds_laser_publisher节点 2

1.1.3 在RViz中运行hlds_laser_publisher节点 3

1.2 传感器源代码下载 3

1.2.1建筑资料来源守则 4

1.2.2在CLI环境下运行 4

1.2.3 在GUI环境上运行 4

1.2.4运行在嵌入式董事会 5

1.2.4.1 从OpenCR导入LDS传感器 6

2.SLAM 7

2.1. 运行SLAM 7

2.1.1 Turtle Bot3支持各种类型的SLAM。 9

2.2运行远程控制节点 11

2.3调整指南 12

2.3.1最大Urange 12

3.3.2map_update_interval 12

2.3.3 最低得分 13

2.3.4 线性更新 13

2.3.5 角度更新 13

2. 4. 保存地图 14

2. 5. 地图 14

1.[第3类]LRF(LDS)传感器

在TurtleBot3中使用的LDS(LASER距离传感器)是一种传感器,它可以测量二维平面上的360度距离值,并为SLAM和导航提供必要的信息。 该LDS传感器通过USB电缆连接到RaspberryPI到USB2LDS板,但也可以通过UART接口直接连接到OpenCR。

由于传感器的性质,很难在强烈的阳光直射下使用传感器。 因此,该传感器适用于在亮度为10,000勒克斯或以下的室内空间工作的机器人。

TurtleBot3的LDS传感器可以以二进制包格式安装,也可以在下载源代码后构建。

1.1传感器包安装

安装驱动TurtleBot3的LDS传感器所需的驱动程序包。

1.1.1传感器端口访问设置

当使用USB将传感器与Linux连接到PC时,必须正确设置USB端口的权限以访问指定的端口。

上面的命令授予/dev/ttyUSB0端口的读写权限。

1.1.2运行hlds_laser_publisher节点

1.1.3在RViz中运行hlds_laser_publisher节点

1.2传感器源代码下载

支持下载的LDS-01的驱动程序可以在Windows、Linux和MacOS的开发环境中运行。

软件需求如下:

GCC(使用Linux和Mac OS时)、Min GW(使用Window时)Boost库(在v1.66.0上测试)

1.从下面的GitHub地址下载源代码。

或者,您可以通过单击绿色来下载源代码 在下面的网站

https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver

2.安装开发环境所必需的软件和库。 GCC(Linux,Mac OS)或Min

GW(Windows)

启动图书馆

1.2.1建筑资料来源守则

下面的命令使用Linux的makefile集合构建源代码。 对于Windows和MacOS,请适当修改Makefile。

1.2.2在CLI环境下运行

如果源代码成功构建,可以通过运行检查LDS传感器值的 

1.2.3 在GUI环境上运行

为了直观地检查LDS传感器的值,必须另外安装QtCreator和QtLibs。

Qt Creator(在V4.5.0上测试)

Qt Libs(在V5.10.上测试)

  1. 从下面的Qt站点安装开源版本。

https://www.qt.io/download

2.运行Qt创建者。

3.打开 

(hls_lfcd_lds_driver/applications/lds_polar_graph/lds_polar_graph.pro)

4.检查源代码中连接到传感器的端口,如果分配到另一个端口,则更改口号。

5.新闻 来构建代码。

6.当构建成功完成后,按来运行程序

1.2.4运行在嵌入式董事会

LDS-01传感器可以在Open CR或Arduino板上操作。在这种情况下,需要一个液晶面板来可视化传感器数据。

LDS-01传感器的TX和RX电缆与预埋板的UART引脚兼容,可通过连接电源和TX、RX引脚与预埋板连接使用。请务必参考产品数据表,因为实际电缆的颜色可能与下面的图片不同。

1.2.4.1 从OpenCR导入LDS传感器

要从OpenCR板导入传感器值,需要将Arduino示例上传到OpenCR板。

1.在ArduinoIDE中,转到Tools>BoardsManager并搜索Open CR以安装库。

2.在工具>板下选择打开CR。

3.在“工具>端口”下选择连接到打开CR的端口。

4.从文件>示例中选择绘制LDS示例>打开CR>等>并上传到打开CR。

当示例成功上传时,传感器值将显示如下图所示。

2.SLAM

同时定位和映射(SLAM)是指通过从机器人上的传感器获取信息,探索未知区域并创建机器人探索位置的地图。 SLAM是无人驾驶汽车自主导航或自主驾驶不可或缺的重要技术。 用于获取外部信息的传感器包括可以测量距离或获取周围图像的传感器。

红外距离传感器(IR)、声波传感器(Sonar)和激光传感器(LRF)被广泛应用。 最近,图像分析算法的发展也增加了相机的使用。

为了预测机器人的位置,通过使用Dead Reckoning测量连接到机器人车轮上的编码器的值来计算行程距离(里程。 然而,由于车轮与地面之间的摩擦,存在误差。 为了减少实际机器人位置与预测机器人位置之间的误差,可以使用惯性测量传感器(IMU)获得的数据对位置进行校正)。

此外,卡尔曼滤波、马尔可夫定位、蒙特卡罗定位等。 是利用距离传感器的值来减小位置误差的一些方法。

在使用SLAM创建地图时,有一些事情需要记住。

当像大仓库或礼堂那样在传感器范围之外映射一个大面积时,映射将无法正常工作。 如果我们想象传感器的范围是我们手臂的长度,映射一个大面积就像试图用两只手臂找到当前的位置,你的眼睛闭在一个大礼堂的中间。

同样,绘制没有具体特征的走长廊也很困难。这就像在你闭着眼睛走路的时候,通过触摸墙壁来测量走廊的长度,在这种情况下,考虑在地图上防止对象或障碍物,而不是一个特定的模式或对称的形式。

常用的Gmapping和Cartography在生成地图的方式上略有不同。 直接发布地图的Gmapping不同,制图师发布子地图并收集这些子地图来创建一个完整的地图。 由于这个原因,制图师可以帮助创建一个更准确的地图时,映射大地图由较小的互联子地图。

2.1运行SLAM

1.[远程PC]运行roscore。

2.运行Turtle Bot3所需的基本包。

3.[远程PC]打开一个新的终端窗口并运行SLAM。 在下面的命令中,更改${tb3_model} 

2.1.1 Turtle Bot3支持各种类型的SLAM。

Turtle Bot3支持Gmapping和Cartography等几个SLAM,可以通过直接输入的参数值来选择 

例如,如果你想使用Google的制图器而不是gmap,你可以运行SLAM节点通过传递制图器作为SLAM_方法的参数值作为如下所示。

如果您想使用默认提供的Gmapping以外的SLAM,则需要安装相关的包,如下所示。

安装制图员:自2018年以来,最新版本的制图员(v1.0.0)尚未更新,在使用Turtlebot3包进行模拟时可能无法正常运行。 在模拟Turtlebot3的SLAM时使用Gmapping。

以下安装方法仅适用于ROS1动力学。

安装Hector Mapping

安装 Karto

安装 Frontier Exploration

当SLAM节点运行时,应用各种类型SLAM的可视化工具RViz可以单独执行,如下所示。 如果RViz已经在运行,程序可能会崩溃。

2.2运行远程控制节点

[远程PC]要用SLAM创建地图,机器人需要移动到地图的未探索区域。 为此,TurtleBot3可以通过运行下面的节点来远程控制,如下所示。

使用SLAM创建地图时,避免突然移动或方向变化有助于创建准确的地图。 通过将机器人移动到RViz地图中显示的未完成区域来完成地图。

2.3调整指南

映射可以设置几个参数来实现各种环境的优化性能。 映射可以在没有单独设置的情况下使用,并且经常在其中使用默认。有关可配置参数的列表请参阅ROSwiki上的Gmapping参数。

定义了以下参数

2.3.1最大Urange

此参数设置LDS传感器的最大距离。

2.3.2map_update_interval

更新地图的秒数越小,地图更新的频率就越高。 然而,地图计算需要更大的负荷。 把这个弄好

根据环境参数

2.3.3 最低得分

设置确定传感器扫描数据匹配测试成功或失败的最小得分值。 这可以减少机器人在大面积预期位置的误差。 如果参数设置得当,您将看到类似于下面所示的信息。

如果这个值太大,您将看到如下所示的警告。

2.3.4 线性更新

如果机器人转换的距离比这个值长,它将运行扫描过程。

2.3.5 角度更新

如果机器人的旋转超过这个值,它将运行扫描过程。 建议将此值设置为小于线性更新。

2. 4. 保存地图

[远程PC]地图完成后,运行map_saver节点保存创建的地图。 在RViz上完成的通过距离旅行的地图,TF,机器人在运动过程中的扫描数据可以保存为一个文件,下面的命令。

完成的地图分为两个文件;pgm是一个PortableGrayMap类型的图像文件,yaml是一个件,例如地图的分辨率。

2. 5. 地图

ROS中的地图主要使用二维占用网格地图(OGM)。 当“地图”被指定为

${map_name},map.pgm区分了机器人可以去的白色区域,机器人不能去的黑色区域(被识别为障碍),以及机器人还没有探索的灰色区域。 以这种方式生成的地图可以用于下一次导航。

下面的图片是一个使用制图师绘制大面积地图的例子。 大约花了一个小时,通过控制机器人的总距离350米来创建一个像下面的地图。

TurtleBot3使用课程-第二节a(北京智能佳)的更多相关文章

  1. TurtleBot3使用课程-第二节b(北京智能佳)

    目录 1.导航 2 1.1 运行导航节点 3 1.1.1 [远程PC]运行roscore 3 1.1.2 [turtlebot3 SBC]运行提出turtlebot3 3 1.1.3[远程PC]运行导 ...

  2. TurtleBot3使用课程-第一节b(北京智能佳)

    目录 1.模拟运行TurtleBot 2 1.1 ROS安装和设置2 1.1.1 turtlebot3 在Gazebo中模拟 3 1.1.1.1用于Gazebo的ROS包装 3 1.1.1.2 tur ...

  3. TurtleBot3使用课程-第一节a(北京智能佳)

    目录 1.ROS设置(远程PC) 2 1.1 ROS安装和设置 2 1.1.1 设置source.list 2 1.1.2 键设置 2 1.1.3 ROS安装 2 1.1.4安装包构建的依赖关系 2 ...

  4. android内部培训视频_第二节 布局基础

    第二节:布局入门 一.线性布局 需要掌握的属性: 1.orientation:排列方式 vertical:垂直 Horizontal:水平 2.weight:水平布局的权重 3.gravity:子控件 ...

  5. python课程第二周重点记录

    python课程第二周重点记录 1.元组的元素不可被修改,元组的元素的元素可以被修改(字典在元组中,字典的值可以被修改) 2.个人感觉方便做加密解密 3.一些方法的使用 sb = "name ...

  6. seajs第二节,seajs各模块依赖关系

    index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  7. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  8. VUE2.0实现购物车和地址选配功能学习第二节

    第二节 创建VUE实例 购物车项目计划: 1.创建一个vue实例 2.通过v-for指令渲染产品数据 3.使用filter对金额和图片进行格式化 4.使用v-on实现产品金额动态计算 5.综合演示 ① ...

  9. 逆向课程第二讲,寻找main入口点

    逆向课程第二讲,寻找main入口点 一丶识别各个程序的入口点 入门知识,识别各个应用程序的入口点 (举例识别VC 编译器生成,以及VS编译生成的Debug版本以及Release版本) 1.识别VC6. ...

随机推荐

  1. 个人项目作业--WC的实现

     GitHub项目地址 https://github.com/1721819634/WC 1.Word Count 项目要求: wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数. ...

  2. linux关闭在线登录用户

    在使用电脑的时候,发现自己的电脑上有其他的用户登陆.如果其他用户用的是自己的名字,那么就能通过who去查询出来,但是如果登陆的都是root用户,那么肯定不知道是谁,所以需要我们清除他们:另外呢,如果登 ...

  3. MySQL 5.7.29主从安装配置

    一.环境准备(关闭防火墙) 1.清除已安装数据库 [root@mysql01 ~]# rpm -qa | grep mariadb mariadb-libs-5.5.35-3.el7.x86_64 [ ...

  4. 思想无语言边界:以 cglib 介绍 AOP 在 java 的一个实现方式

    0. 前言 上接:基于 Source Generators 做个 AOP 静态编织小实验 作为第三篇,我们基于cglib在java做一个简单的aop例子, 以此简单作为例子说一个思路在什么样的语言里面 ...

  5. v-text、v-html、v-pre

    v-text 用于将数据填充到标签中,作用于插值表达式类似,但是相对于直接插值是没有闪动问题的 v-html 用于将HTML片段填充到标签中,但是可能有安全问题(易被跨域脚本攻击[XSS攻击]) v- ...

  6. BloomFilter中保存的数据量

    结果 /** * @author WeiJiQian * BF_CARDINAL_THRESHOLD BF_FALSE_POSITIVE_RATE 保存的数据量 * 100,0000 0.01 391 ...

  7. 第十章 Seata--分布式事务

    承接上篇 ,终于我们迎来了最后一章 第九章 Nacos Config–服务配置,第十章 Seata–分布式事务,感谢你能学习到这 !废话不多说,撸码 10.1 分布式事务基础 10.1.1 事务 事务 ...

  8. Spring Cloud Alibaba基础教程-Nacos(一)

    2019快结束,也有很久没写博客了,今天我们来谈谈Nacos,如果对您有帮助,麻烦左上角点个关注 ,谢谢 ! 嘻嘻 今天先写第一篇 文章目录 为什么要使用Nacos Eureka 闭源 Nacos的优 ...

  9. python干货:pop()函数的用法 [弹出删除功能]

    什么是弹出功能? 使用pop()删除元素是将元素从列表中删弹出,术语弹出(pop)源自这样的类比:列表像一个栈,而删除列表末尾的元素就相当于弹出栈顶元素 方法pop()删除并返回列表中的最后一个元素. ...

  10. OSPF综合实验

    实验要求: 1.R4为ISP,其上只能配置IP地址,R4与其他所有直连设备间使用共有IP 2.R3--R5/6/7为MGRE环境,R3为中心站点 3.整个OSPF环境IP地址为172.16.0.0/1 ...