4.2冰达机器人:视觉实例-机器人视觉循线、视觉实例-调整循线颜色

4.2.10a视觉实例-机器人视觉循线

本节内容演示一个机器人视觉的视觉循线实例

准备工作:布置一块区域作为循线场所,如下图所示。用蓝色胶带在地面贴一条路线(机器人极限转弯半径0.5m,不要贴得过于曲折),将机器人摄像头调整为倾向地面30度左右,机器人放置到路线上。

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

机器人端启动视觉循线roslaunch robot_vision line_follow.launch

PC用两个终端打开两个rqt_image_view工具,分别订阅/image_raw/compressed和/result_image/compressed

左侧图像是循线的结果,红色点是机器人定位到线的中心位置,右侧为正常摄像头图像。

在右侧窗口改为订阅/mask_image/compressed就可以显示机器人找到的线的位置

机器人端启动底盘roslaunch base_control base_control.launch

机器人就会自动开始沿着线走到线的末端。

4.2.10b视觉实例-调整循线颜色

本节内容介绍循线颜色的调整,在上一节中演示了一个机器人视觉的视觉循线实例,在例程中默认使用的是蓝色线条。接下来介绍如果想用其他颜色的线要如何调整。

首先在蓝色线旁边布置一条其他颜色的线,这里以红色为例

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

机器人端启动循线节点并传入test_mode参数:

roslaunch robot_vision line_follow.launch test_mode:=true

PC端用两个终端打开两个rqt_image_view工具,分别订阅/mask_image/compressed和/result_image/compressed

可以看到左侧图像有一个红色准心,这是整个图像的中心。而右侧图像就是机器人找到的蓝色线。

在启动循线时我们传入了test_mode参数,这个参数会让不断输出左侧图像中红色准心处的HSV色彩空间值。例如现在显示的就是地面的HSV值。

将机器人的位置移动一下,让准心对准红色路线,此时信息已经变成红色线路的HSV值。

PC启动动态调参工具rosrun rqt_reconfigure rqt_reconfigure

HSV参数的上限必须严格限制在检测到的参数范围,因为我这里使用的红线上面还带有白色log,所以下限适当放宽提高获取图像的效果。可以看到现在/mask_image/compressed话题输出的图像就只显示处红色线条的位置了。

因为动态调参的结果是一次性的,只在这一次应用中有效,如果想要持续生效需要直接修改机器人端的launch文件。

roscd robot_vision/launch

vim line_follow.launch

将line_follow.launch文件中的HSV值直接改成红色线路的值

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

机器人端启动视觉循线roslaunch robot_vision line_follow.launch

PC用两个终端打开两个rqt_image_view工具,分别订阅/mask_image/compressed和/result_image/compresse

这里重新循线后就只显示红色线路了。我这里因为光线变化,显示效果受到影响,大家自己操作的时候遇到了可以重新修改参数调节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/561180.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode:438. 找到字符串中所有字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。 示例 1: 输入: s "cbaebabacd", p "…

形态学初步

其实在考虑集合的位移z的时候我发现了个问题,以书上的图9.4为例子。现实中,位移z不需要坐标系,但是实际上,不给出坐标系描述位移量是不方便的。其次,位移的前提是需要一个起始位置,但是起始位置如何建立呢&…

Docker - HelloWorld

原文地址,使用效果更佳! Docker - HelloWorld | CoderMast编程桅杆https://www.codermast.com/dev-tools/docker/docker-helloworld.html 开始之前 在学习本小节之前,你必须确保你正确安装了 Docker,正确安装 Docker 是后续学习的…

.net8系列-02图文并茂手把手教你编写增删改查接口

前情提要 接上篇文章,我们的应用已经创建完毕了,接下来我们编写几个自己的接口 快速开始 新增Controller 复制一份WeatherForecastController.cs,改名为CommonInfoController 设置Class名 将CommonInfoController中的复制过来的class名改成新名 …

.NET .exe .dll 反编译 程序反编译 程序逆向

反编译是对程序进行逆向分析、研究,以推导出软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素。 反编译.NET程序需要使用专门的反编译工具 🧿使用dotPeek进行反编译 1.下载dotPeek dotPeek:JetBrains 出品的免费 .N…

[阅读笔记25][WebArena]A Realistic Web Environment for Building Autonomous Agents

这篇论文提出了WebArena这个环境与测试基准,在24年1月发表。 之前的agent都是在一些简化过的合成环境中测试的,这会导致与现实场景脱节。这篇论文构建了一个高度逼真、可复现的环境。该环境涉及四个领域:电子商务、论坛讨论、软件开发和内容管…

【linux运维】系统常见管理命令

系列综述: 💞目的:本系列是个人整理为了学习基本的shell编程和linux命令,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于b站大学——linux运维课程进行的,…

数据结构 -- 二叉树二叉搜索树

二叉树 二叉树是这么一种树状结构:每个节点最多有两个孩子,左孩子和右孩子 重要的二叉树结构 完全二叉树(complete binary tree)是一种二叉树结构,除最后一层以外,每一层都必须填满,填充时要遵…

自然语言处理基础面试

文章目录 TF-IDFbag-of-wordsBert 讲道理肯定还得有Transformer,我这边先放着,以后再加吧。 TF-IDF TF(全称TermFrequency),中文含义词频,简单理解就是关键词出现在网页当中的频次。 IDF(全称…

【C++初识继承】

博主首页: 有趣的中国人 专栏首页: C进阶 本篇文章主要讲解 继承 的相关内容 目录 1. 继承的概念和定义 1.1 继承的概念 1.2 继承的定义 1.2.1 继承定义格式 1.2.2 继承方式与访问修饰限定符 2. 基类和派生类对象赋值转换 3. 继承中的作用域 …

读天才与算法:人脑与AI的数学思维笔记05_算法的幻觉

1. 自下而上 1.1. 代码在未来可以自主学习、适应并进行自我改进 1.2. 程序员通过编程教会计算机玩游戏,而计算机却会比教它的人玩得更好,这种输入寡而输出众的事情不大可能实现 1.3. 早在20世纪50年代,计算机科学家们就模拟该过程创造了感…

内存概念理解:RANK,BANK,BURST,INTERLEAVING

背景:死磕内存的bank和rank概念的一天。网上的资料都差不多,还是有些地方没理通顺,有什么内存基础知识的书籍可以推荐吗? 物理RANK的概念 当我们给计算机购买内存条时候,上面显示的1RX8, 2RX8,其中R就是r…

【ARM 裸机】I.MX 启动方式之启动头文件 1

接上一节:【ARM 裸机】I.MX 启动方式之启动设备的选择; 2、启动头文件 当 BOOT_MODE1 为 1,BOOT_MODE0 为 0 的时候此内部 BOOT 模式,在此模式下,芯片会执 行内部的 BOOT ROM 代码,这段 BOOT ROM 代码会进…

常见的七种排序

目录 一、插入排序 1、直接插入排序 2、希尔排序(缩小增量排序) 二、选择排序 3、直接选择排序 4、堆排序 三、交换排序 5、冒泡排序 6、快速排序 四、归并排序 7、归并排序 五、总结 一、插入排序 1、直接插入排序 思路: i 用来…

Xamarin.Android中“ADB0020: Android ABI 不匹配。你正将应用支持的“armeabi-v7a;arm64-v8a”异常处理

这里写自定义目录标题 1、问题2、解决 1、问题 在Xamarin.Android中出现ADB0020: Android ABI 不匹配。你正将应用支持的“armeabi-v7a;arm64-v8a”ABI 部署到 ABI“x86_64;x86”的不兼容设备。应创建匹配其中一个应用 ABI 的仿真程序,或将“x86_64”添加到应用生成…

Parade Series - CoreAudio Loopback

Scenario 鉴于业务场景需要, 经过技术路径探索, 发现 comtypes 兼容性过于混乱,故而考虑整合一个 CoreAudio 的轮子dll来解决实际问题!std::StringStream ⇒ std::ios::binary ⇒ std::ofstream Loopback.dll #ifndef _DLL_C…

【nvm最新解决方案】Node.js v16.20.2 is not yet released or available

【nvm最新解决方案】Node.js v16.20.2 is not yet released or available 解决办法:下载想安装的node压缩包,放入nvm对应目录。 2024年最新node压缩包地址:https://nodejs.org/dist/ 1、选择对应的node版本:例如,我选的…

如何创建响应式HTML电子邮件模板

在这个适合初学者的指南中,你将学习如何创建一个响应式电子邮件模板。你将跟随逐步说明以及代码片段设计一个在任何设备上都看起来很棒的电子邮件模板。 这个项目非常适合渴望掌握电子邮件设计基础的新手! (本文视频讲解:java56…

怎么用手机远程控制电脑 远程控制怎么用

怎么用手机远程控制电脑:远程控制怎么用 在这个科技日新月异的时代,远程控制电脑已经成为了很多人的需求。有时,我们可能在外出时突然需要访问家中的电脑,或者在工作中需要远程操控办公室的电脑。这时,如果能用手机远…

Spring 声明式事务控制

1. 编程式事务控制相关对象 1.1 PlatformTransactionManager PlatformTransactionManager 接口是 spring 的事务管理器,它提供了我们常用的操作事务的方法。 PlatformTransactionManager 是接口类型,不同的 Dao 层技术则有不同的实现类。例如:Dao层技…