目录

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. 第15.46节、PyQt显示部件:OpenGL Widget部件功能简介及使用案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 OpenGL Widget部件是一个Op ...

  2. 第11.20节 Python 中正则表达式的扩展功能:后视断言、后视取反

    一. 引言 在<第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反>中老猿介绍了前视断言和前视取反,与二者对应的还有后视断言和后视取反. 二. (?<=-)后视 ...

  3. 写了一个类似与豆瓣的电影的flask小demo

    先展示页面 基本的功能是都已经实现了,更多那个地方是可以点的.只不过视频上面还用的宏,哎呀,感觉麻烦.有多麻烦呢,需要先定义一个宏,然后进行引用.我们才能是用,以我的观点,还不如直接是一个循环完事.. ...

  4. 归并排序(c++,递归)

    放上c++代码模板(但是该版本中,还可以再进一步优化成原地算法,即不开辟新的空间:本代码中空间复杂度为n,不是1) 1 #include <iostream> 2 #include< ...

  5. 网络层-network layer(下):网络互连、子网掩码计算方法、Ipv4报头解析

    第五章 网络层-Network Layer(下) 上一章讲了网络层的任务.提供的两种服务.五个重要的路由算法.以及网络层的拥塞控制和服务质量问题.这一部分主要讲一讲网络互连问题和Internet的网络 ...

  6. 题解-Quantifier Question

    Quantifier Question 有长度为 \(n\) 的序列 \(x\{n\}\),有 \(m\) 个条件 \((j_i,k_i)\).有 \(n\) 个待定的条件符 \(Q_i\in\{\f ...

  7. day013|python之模块02&目录01

    1 from...import 1.1 概念 1.1.1 首次导入模块会发生的事 会触发模块的运行,产生一个模块的名称空间 将运行模块文件过程中产生的名字丢到模块额名称空间 在当前名称空间产生一个名字 ...

  8. 代理ip知识

    一.没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP      HTTP_VIA = 没数值或不显示      HTTP_X_FORWARDED_FOR = 没数值或不显示 二.使用 ...

  9. Docker(五):Docker安装Elasticsearch

    查找ElasticSearch镜像 镜像仓库 https://hub.docker.com/ 下拉镜像 docker pull elasticsearch:7.7.0 查看镜像 docker imag ...

  10. css 13-CSS3属性:Flex布局图文详解

    13-CSS3属性:Flex布局图文详解 #前言 CSS3中的 flex 属性,在布局方面做了非常大的改进,使得我们对多个元素之间的布局排列变得十分灵活,适应性非常强.其强大的伸缩性和自适应性,在网页 ...