TurtleBot3使用课程-第四节(北京智能佳)
目录
1.2机器学习二 6
1.机器学习
1.1 机器学习一:object_detector_3d
1.1.1目标
使用链式机(机器学习框架之一)识别一个对象,并使用深度相机计算到对象的距离。(Link : chainer)
1.1.2操作环境

1.1.3设置
1.ROS动能装置:参考wiki.ros.org
2.RealSense D435 ROS包安装

3.依赖包装安装python-pip包

4.object_detector_3D安装


1.1.4运行(它需要超过几秒取决于PC)
1.Realsense&object_detector_3d节点

2.Rviz

1.1.5运行屏幕

左到图:显示由rostopicecho/object_detection_3d输出。
图的右上角:/object_detection_3d/result_image通过rviz显示。
如果你看右上屏幕,你可以看到一个键盘,一个杯子,一个瓶子和两个显示器从前面检测到。 每个检测都有一个标题,显示以下信息。
对象名称
检测得分。值在[0,1]范围内,随着值接近1,检测的可靠性增加。
对象中心点的三维坐标(稍后介绍)。的起源坐标系是相机的中心。x、y和z轴方向是以米为单位,分别指向右、下和向内。
如果你看z值,它是在深度方向上五个元素之间的距离检测结果,可以看到值随着对象的位置而增加再往里走。
1.1.6 ROS节点
1.主题
订阅主题
相机/颜色/image_raw[sensor_msgs/图像]彩色图像,用于二维物体检测
/相机/深度/颜色/点[sensor_msgs/点云2]
3D点云,用于计算3D坐标,需要与上面的相机图像进行时间同步
出版的主题
/object_detection_3d[object_detector_3d/第3条]

本主题由检测对象(num_detections)和检测信息(检测)的数量组成)。 检测信息Detection3D由以下信息组成。

class_id和class_name是检测对象的分类编号和名称。 得分意味着检测的可靠性。 y_min、x_min、y_max和x_max是被检测对象的包围框的左上角和右下角的坐标。 最后,位置是物体的三维坐标位置。
△ object_detection_3d/result_image[sensor_msgs/图像]
这是一个结果图像,其中包括用于检测的图像中检测到的对象的信息。 这是一个像上面右边的图像。
其他
△ sensor_msgs的内部参数。 相机信息:/相机/颜色/image_raw
△ realsense2_camera。 外部参数:从点组坐标系转换为彩色摄像机坐标系的外部参数。
1.1.7 ROS节点
1.输入数据
输入
二维摄像机图像
三维云
摄像机内部参数
外部参数,指示摄影机在点云中的位置坐标系。
输出
对象在点云坐标系中的中心点坐标。
对象的类型
检测的可靠性
2.算法概述
1.按照下面的步骤提取对象的3D坐标。
2.使用对象检测器检测图像中的多个对象,并从摄像机获得的图像中输入。
3.提取视图截锥中包含的每个点对应的子集。
4.找到每个点子集组的中心点坐标。
5.将二维检测结果和三维中心点坐标集成到三维中检测结果。
3.每种算法的描述
2D对象检测2D对象检测是指预先定义好的检测包含在图像中的对象。当您输入二维图像进行搜索时显示以下信息。以下是多个对象对应的预测值。
对象周围的框(轴对齐边界框,bbox)
对象的类型
检测可靠性
具体地说,目标探测器使用COCO和can学习的SSD300利用CNN检测80种物体。有关详细的检测列表,请参阅该列表显示在链接中。python的深度学习框架chainer用于实现和chainerv专门用于图像处理。
提取检测对象的点子集时,使用bbox上一步骤中的信息。对于每个bbox,仅限进入bbox的点从摄像机的视角提取点云中的点云作为部分点云。
部分点云中的中心点计算部分点云包括从目标、背景和屏蔽对象获得的点。这个表示这些点的集中点称为中心点。虽然对中心点有不同的定义,但中心点是从软件角度定义为点云的中心。然而,这种方法使用点数据而不区分提取的对象和非对象部分。这可能会导致根据对象形状或差异bbox。将中心点定义为计算中心似乎更好在从部分点云中移除未提取的部分后。
二维检测与三维中心点坐标的集成省略,因为它很简单。
1.2 机器学习二:YOLO
1.2.1 目标
使用YOLO练习在ROS环境中识别对象。 YOLO(您只看一次)是一个实时的目标检测系统,比其他检测系统具有更快的速度。 YOLO由darknet提供动力,darknet是一种神经网络框架,它教育和运行DNN(深度神经网络)。

1.2.2 操作环境

1.2.3 设置
ROS动能装置:参考。wiki.ros.org
RealSense D435 ROS包安装

darknet_ros安装转到catkin工作区

1.2.4运行(使用预先训练的模型)

1.2.5运行屏幕

与上面的图像一样,多个对象同时被识别。 在对象的边界创建一个框,对象的名称显示在框的左上方。
1.2.6 ROS节点
1.主题
订阅的主题
/照相机/颜色/图像_raw[传感器图像/图像]彩色图像,用于目标检测外部参数,指示摄影机在点云中的位置坐标系。
已发布主题
/暗色/边框本主题包含已识别对象的信息。如下图所示由消息头、用于检测的图像头组成,边界盒是检测到的目标信息。

显示对象信息的边界框如下所示。(BoundingBox.msg)

它由表示探测精度的概率x和y组成检测对象图像上边界框的坐标,id号以及指示对象类型的类。/暗色/探测图像[传感器图像]包含图像中检测到的对象信息的结果图像用于检测。/暗色/找到目标[标准消息/国际标准]显示检测到的对象数。
2.行动
摄像头读数[传感器图像]发送包含图像和结果值的操作(的边界框检测到的对象)。
3.参数
设置与检测相关的参数可以在与 
图像查看/启用打开CV(bool)打开/关闭打开cv查看器,其中显示包含边界框。图像查看/等待按键延迟(int)打开cv查看器中的等待键延迟(毫秒)yolo_model/config_file/name(字符串)用于检测的网络的cgf名称。加载具有相应名称的cfg从darknet_ros/yolo_network_config/cfg中使用该程序。yolo_型号/重量_文件/名称(字符串)用于检测的网络的权重文件名。加载权重文件来自darknet_ros/yolo_network_config/weights的相应名称以使用程序。yolo_型号/阈值/值(浮动)检测算法的阈值。范围在0到1之间。yolo_模型/检测_类/名称(字符串数组)网络可检测到的对象的名称。
1.2.7 GPU Acceleration
如果你有NVdia GPU,使用CUDA可以比只使用快几倍中央处理器。如果安装了CUDA,则会在中自动识别CMakeLists.txt文件文件和编译时以GPU模式编译(catkin_make)
CUDA Toolkit
1.2.8 参考站点
darknet
darknet_ros
TurtleBot3使用课程-第四节(北京智能佳)的更多相关文章
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第四节:3D公告板
<使用Cocos2d-x 开发3D游戏>系列在线课程 第四节:3D公告板 视频地址:http://edu.csdn.net/course/attend/1330/20804 交流论坛:mo ...
- 第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表、课程章节表、课程视频表、课程资源表
第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表.课程章节表.课程视频表.课程资源表 创建名称为app_courses的 ...
- 第三百九十四节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置2,以及目录结构说明
第三百九十四节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置2,以及目录结构说明 设置后台列表页面可以直接修改字段内容 在当前APP里的adminx.py文件里的 ...
- 《Linux内核分析》 第四节 扒开系统调用的三层皮(上)
<Linux内核分析> 第四节 扒开系统调用的三层皮(上) 张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com ...
- 第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册
第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册 基于类的路由映射 from django.conf.urls import url, incl ...
- 第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理
第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字 ...
- android内部培训视频_第四节(1)_异步网络操作
第四节(1):异步网络操作 一.结合asyncTask下载网络图片 1.定义下载类,继承自asyncTask,参数分别为:String(url地址),Integer(刻度,本例没有用到),BitMa ...
- Centos7 install Openstack - (第四节)添加计算服务(Nova)
Centos7 install Openstack - (第四节)添加计算服务(Nova) 我的blog地址:http://www.cnblogs.com/caoguo 该文根据openstack官方 ...
- 第四节,Linux基础命令
第四节,Linux基础命令 命令是系统操作员对系统传入的指令,传入指令后回车,系统接收到指令做出相应的行为 1.查看用户位于系统什么位置 [pmd]检查操作用户位于系统的什么位置 命令 ...
随机推荐
- 第15.26节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QListWidget详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 列表部件(List Widget)对应类QListWidget,是从QListView派生 ...
- 第15.17节 PyQt(Python+Qt)入门学习:PyQt图形界面应用程序的事件捕获方法大全及对比分析
老猿Python博文目录 老猿Python博客地址 按照老猿规划的章节安排,信号和槽之后应该介绍事件,但事件在前面的随笔<PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法 ...
- pytorch实战(一)hw1——李宏毅老师作业1
任务描述:利用前9小时数据,预测第10小时的pm2.5的数值,回归任务 kaggle地址:https://www.kaggle.com/c/ml2020spring-hw1 训练集为: 12个月*20 ...
- Oracle批量新增数据最佳实践
一.需求描述 现在的项目改造过程中,从国产的Gbase数据库改造为Oracle数据库,遇到一个问题有的业务操作需要批量新增数据. 这也是一个比较常规的操作,有很多地方确实需要一次性新增多条数据.Gba ...
- 【Azure Developer】VS Code运行Java 版Azure Storage SDK操作Blob (新建Container, 上传Blob文件,下载及清理)
问题描述 是否可以用Java代码来管理Azure blob? 可以.在代码中加入azure-storage-blob依赖.即可使用以下类操作Azure Storage Blob. BlobServic ...
- 使用Binlog日志恢复误删的MySQL数据
解到: MySQL的binlog日志是什么?通常是用来干什么的? 模拟一次误删数据的操作,并且使用binlog日志恢复误删的数据. 写这篇文章的初衷,是有一次我真的险些把测试数据库的一张表给删除了,当 ...
- Linux文件被删除后恢复
当ext4中的文件被删除后,进行文件恢复:http://www.360doc.com/content/18/0320/08/51898798_738625260.shtml上面的博客是恢复删除的文件, ...
- STL——容器(Set & multiset)的删除 erase
set.clear(); //清除所有元素 set.erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器. set.erase(beg,end ...
- 写一个为await自动加上catch的loader逐渐了解AST以及babel
为什么要写这个loader 我们在日常开发中经常用到async await去请求接口,解决异步.可async await语法的缺点就是若await后的Promise抛出错误不能捕获,整段代码区就会卡住 ...
- postgresql 运行sql文件
方法一: [postgres@node01 ~]$ psql -Upostgres postgres=# \l List of databases Name | Owner | Encoding | ...