ROS智能移动机器人实训

news2024/12/31 3:33:35

0.前言

1.任务

1.1.任务实训任务

1.使用/voice_aiui等语音服务完成基本的语音聊天(需唤醒词“元宝”)。

2.语音多点导航

3.语音单点导航

1.2.智能机器人仿真任务

1.3.智能机器人实物操作任务

2.目的

3.使用环境

4.综合项目实验

任务实训

问题

解决办法

5.仿真实验

1.使用话题控制机器人移动

2.使用ar码的二次定位

实验任务

本实验难点

3.操作虚拟机器人地图构建

实验任务

4.单点导航加二次定位

实验任务

5.机器人多点导航

6.人脸识别

实验任务

本次实验难点

7.语音聊天

实验任务

实验难点

6.实物实验

1.手柄控制机器人移动

实验任务

2.机器人多点导航

3.语音导航

实验问题

8.心得体会

0.前言

本篇记录了我的智能机器人实训。

1.任务

1.1.任务实训任务

1.使用/voice_aiui等语音服务完成基本的语音聊天(需唤醒词“元宝”)。

我:“元宝元宝”

机器人:“哎。什么事”

我:“今天天气怎么样?”其他问题也可

机器人回答:“”

2.语音多点导航

我:“元宝元宝”

机器人:“哎。什么事”

我:“带我参观一圈”其他问题也可

机器人回答:“好的,这就带你去”

Goal_order: 吉林-》北京-》上海-》广州-》深圳

1.需调用二次定位,准确的到达框中,顺序不能错误

2.每到达一个点位等待2s,并打印amcl的定位信息一次

3.正确的语音播报

4.新环境里有障碍物,不能撞墙或者障碍物

5.最后返回起点

3.语音单点导航

我:“我要到广州馆”

机器人:”好的,这就带您去广州馆。”

然后自主行走到广州馆,

二次定位,准确的到达框中,

并语音介绍广州馆。

机器人完成上述任务后返回出发点。

1.2.智能机器人仿真任务

1.使用话题控制机器人移动

2.使用ar码的二次定位

3.操作虚拟机器人地图构建

4.单点导航加二次定位

5.机器人多点导航

6.人脸识别

7.语音聊天

1.3.智能机器人实物操作任务

1.手柄控制机器人移动

2.机器人多点导航

3.语音导航

2.目的

a、深入学习ros编程语法知识;

b、学会运用pycharm工具进行算法编译;

3.使用环境

运行操作系统:ubuntu 20.04操作系统;

开发语言及版本:c++和ros

开发工具:vscode 

4.综合项目实验

任务实训

问题

1.在进行导航和语音播报时,因为新添加了障碍物导致机器人进行二次定位后导致后续的定位会有可能出现机器人的自我矫正(原地转圈)。

2.在主要while循环运行的过程中,既要到达目标点后调用一次回调函数打印消息,又要打印完继续运行while循环。

解决办法

1.我们将局部地图的碰撞阈值进行调低,使机器人可以有更多的空间进行导航选择不需要在狭小缝隙间进行路径规划导航,同时我们将两目的点较长的导航进行分段导航,这有助于导航的路径点寻找。

2.把spin函数改换为spinOnce函数,且把消息长度设置为一条即可满足要求。

5.仿真实验

1.使用话题控制机器人移动

熟悉ros话题通信机制的原理和应用场景,使用订阅者话题订阅/odom话题实现速度打印,通过编写代码实现机器人仿真沿3*2的矩形路径循环移动,并打印当先实际机器人速度;

2.使用ar码的二次定位

实验任务

熟悉服务通讯机制原理和应用场景,使用ros客户端编写机器人AR码跟踪服务,让仿真机器人对准AR码,并不断靠近。本实验使用仿真机器人底部背面的相机模块识别加工台前的ar码,并停留在ar码前方0.3m处。

本实验难点

1.第一使用时容易忘记启动ar码识别的功能包,导致自己的二次定位包无法正常运行;

2.机器人识别ar码的相机模块在仿真机器人的背面,第一次使用ar码识别时容易使用机器人前置相机进行识别导致识别失败。可通过手动对机器人进行旋转来解决。

3.操作虚拟机器人地图构建

实验任务

了解slam的原理,熟悉操作仿真机器人进行地图构建,Gmapping算法是目前基于激光雷达和里程计方案里面比较可靠和成熟的一个算法,它基于粒子滤波,采用RBPF的方法效果稳定,许多基于ROS的机器人都跑的是gmapping_slam,本次实验使用的就是Gmapping算法进行地图构建。

下图为gmapping的原理图:

下图为使用gampping建图图:

4.单点导航加二次定位

实验任务

了解移动机器人导航功能,学会如何编程控制机器人进行目标点导航,自主导航是智能移动机器人最重要也是最基础的功能之一,虽然SLAM是机器人自主移动的关键,但SLAM并不表示自主导航,SLAM仅仅是解决地图构建和即时定位问题,而自主导航则是解决机器人移动时与环境的自主交互,点到点的的自主移动问题。完整的自主导航应该包含SLAM、路径规划和运动控制。

下为导航框架图:

下图为实验图和程序图:

5.机器人多点导航

1.了解移动机器人导航功能;

2.学会如何编程控制机器人进行目标点导航;

3.编程实现控制机器人在五个场馆和出发点的巡航

4.顺序:吉林--》北京--》广州--》上海--》深圳--》原点

(1)、需要使用二次定位准确停到框中;

(2)、每次到达目标场馆后机器人需等待两秒,再次开始下一个点;

(3)、在等待时终端需打印当前机器人的amcl定位坐标,订阅话题为/cl_pose;

(4)、巡航圈数两圈。

6.人脸识别

实验任务

熟悉人脸识别功能包,编写一个节点调用人脸识别服务进行人脸识别,将识别到的人的姓名打印到屏幕,Face_recognition是世界上最简洁的人脸识别库,可以使用Python和命令行工具提取、识别、操作人脸。人脸识别是基于业内领先的C++开源库 dlib中的深度学习模型,用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。

本次实验难点

本实验需下载usb摄像头驱动依赖包,在未下载安装驱动包时,程序正常执行但摄像机无图像显示;同时,在使用虚拟器进行本次实验时会出现因虚拟机usb端口设置错误导致摄像机无法正常使用,正确应将usb端口类型调节未usb3.1.

7.语音聊天

实验任务

进一步熟悉语音采集,语音听写,语音合成等语音功能的使用和开发,学习语意理解服务的综合应用,编写程序实现机器人聊天系统,能语音控制机器人前进、后退、左转和右转,实现语音指令询问“我是谁”,机器人回答“好的,让我看一看”。然后语音播报识别的姓名。

实验难点

在使用aiui节点时不能单独启动该节点否则将无法正常启动该节点,而应该使用launch文件进行启动,同时语音采集和语音转换等节点也不可多次启动将会一直处于服务等待中。

下图为语音播报原理图:

下图为程序图和实验结果图:

6.实物实验

1.手柄控制机器人移动

实验任务

熟悉Bobac3机器人底盘控制接口;熟悉了解手柄话题接口;完成以下任务:通过手柄左摇杆的“上下摇动”控制机器人运动的线速度,通过手柄右摇杆的“左右摇动”控制机器人的角速度。在终端打印底盘的传感器相关数据,比如电机转速,温湿度,超声波(car_data话题数据)

2.机器人多点导航

本次实物实验就是仿真实验当中的多点导航,其程序代码和原理都一致,但在进行实物操作时因为有人员流动导致,实际建图效果和导航效果相较一般,经常需要认为进行机器人的姿态校准。在实物上使用了实体特有的功能包,在仿真情况下无法进行仿真实验。

3.语音导航

本次实体实验是将仿真实验当中的语音识别和定点导航进行了结合。

实验问题

在本次实验当中出现了aiui功能包无法在实物上正常使用,但在仿真情况下可以正常被使用,在进行反复实验和与实验老师的沟通后我们确定问题由语音播报功能包当中的实现语音播报的代码中缺失空格导致:

下图极为问题代码:

正确解决及为在play后添加空格。

8.心得体会

在ROS实训项目中学习了如何结合语音识别和导航系统,让我受益匪浅。通过这次实践,我深入了解了ROS的应用和语音识别技术在导航中的潜力。

首先,我对ROS有了更深入的认识。在实训中,我学会了如何使用ROS构建机器人的软件架构,以及如何通过ROS节点实现不同模块之间的通信。这让我对机器人软件开发有了更清晰的认识,也提升了我的编程能力。

其次,语音识别技术给我留下了深刻的印象。通过学习语音识别的原理和应用,我了解到语音识别在智能机器人中的广泛应用,尤其是在导航系统中的重要性。通过语音指令,机器人可以更加智能地执行任务,为用户提供更便捷的服务。

在设计基于语音识别的导航系统时,我遇到了一些挑战,比如如何准确识别不同人的语音指令,如何将语音指令转化为机器人的行动等。但通过团队合作和不懈努力,我们成功地设计并实现了一个功能完善的导航系统。这个过程让我意识到团队合作的重要性,也锻炼了我的问题解决能力。

最后,通过测试和优化导航系统,我深刻体会到持续改进的重要性。优化系统性能和用户体验是一个不断迭代的过程,需要不断地学习和改进。在这个过程中,我学会了如何通过数据分析和用户反馈来改进系统,提高机器人的自主导航能力。

总的来说,这次ROS实训项目让我收获颇丰。我不仅学会了如何利用ROS和语音识别技术实现智能导航,还锻炼了团队合作和问题解决能力。这些经验将对我的未来发展产生积极的影响,我期待能将这些知识运用到更多的实际项目中,为机器人技术的发展贡献自己的力量。

(加一点,在写这份报告的时候是截止前的凌晨4点35分,整个宿舍都在熬夜干这次的结课实验,甚至枸杞、酸柠檬等各种能提神的东西都用上了,万万没想到阿,本来计划着10点就能干完的事情,愣是干到了凌晨。)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LinuxIO之文件系统的实现

Ext2/3/4 的layout文件系统的一致性: append一个文件的全流程掉电与文件系统的一致性fsck文件系统的日志ext4 mount选项文件系统的debug和dumpCopy On Write 文件系统: btrfs 预备知识:数据库里的transaction(事务)有什么特性? …

前端高薪岗位之大模型端上部署及训练

自2022年ChatGPT发布以来,以大模型为依托的AIGC相关的应用产品,比如ChatGPT、Midjourney、Stable Diffusion等,在社交网站的讨论热度持续攀升,引发了较大范围的好奇与关注。 目前,国内外各个科技大厂在大模型的端侧部…

手机k歌麦克风哪种好,口碑最好的k歌麦克风是哪款,麦克风推荐

​当我们谈论到演讲、表演或者录制视频时,一个高质量的无线麦克风能够使得整个体验提升至一个全新的水平。它不仅能够保证声音的清晰度和真实度,还能够让使用者在演讲或者表演时更加自信和舒适。基于对市场的深入研究和用户体验的考量,我挑选…

Langchain-Chatchat+Xinference集成部署

Langchain-ChatchatXinference集成部署 安装环境: 系统:Anolis OS 8.9 python版本:Python 3.9.19 Langchain-Chatchat版本:0.3.1.3 Xinference版本:v0.13.3 模型选择(下载时需要科学上网)&#…

一些常见的中间件漏洞

Tomcat 之CVE-2017-12615 靶场搭建使用vulhub-master/tomcat/CVE-2017-12615 第一步、访问网站 第二步、首页抓包改为put方式提交 网上找一个jsp的一句话木马 使用webshell工具链接即可 Tomcat 之tomcat8 vulhub-master/tomcat/tomcat8 继续访问页面 这次我们点击登录&…

ES6中的Promise、async、await,超详细讲解!

Promise是es6引入的异步编程新解决方案,Promise实例和原型上有reject、resolve、all、then、catch、finally等多个方法,语法上promise就是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果,本篇文章主要介绍了ES6中的P…

spring原理(第十天)

jdk 和 cglib 在 Spring 中的统一 Spring 中对切点、通知、切面的抽象如下 切点:接口 Pointcut,典型实现 AspectJExpressionPointcut 通知:典型接口为 MethodInterceptor 代表环绕通知 切面:Advisor,包含一个 Advic…

政务服务技能竞赛规则流程方案

此次政务服务技能竞赛以“强服务、优素质、促提升、共发展”为目标,通过以赛代练、以赛促建、比学赶超、全面提升,激发各级政务服务工作人员学政策、钻业务、练技能的热情和积极性,全面推动行政效能提升与营商环境建设,铸造新时代…

pytorch和deep learning技巧和bug解决方法短篇收集

有一些几句话就可以说明白的观点或者解决的的问题,小虎单独收集到这里。 torch.hub.load how does it work 下载预训练模型再载入,用程序下载链接可能失效。 model torch.hub.load(ultralytics/yolov5, yolov5s)model torch.hub.load(ultralytics/y…

IROS2024 | DarkGS:学习神经照明和3D高斯重新照明,用于黑暗中机器人探索

DarkGS:学习神经照明和3D高斯重新照明,用于黑暗中机器人探索 论文标题:DarkGS: Learning Neural Illumination and 3D Gaussians Relighting for Robotic Exploration in the Dark 论文地址:https://arxiv.org/abs/2403.10814 研…

数据开发/数仓工程师上手指南(七)CDM-DWS层搭建规范及流程

前言 进入到了CMD公共数据层的结尾最后一层-DWS层了,该层基本就是直接与业务强关联,也就是说产品提出的需求,或是报表、用户画像统计好还是数据大屏都是在这一层给处理好数据,再放入ADS层,然后我们只需要在BI里面配备…

【数据结构】——堆的实现(赋源码)

堆的概念与结构 堆(Heap)是计算机科学中一类特殊的数据结构,是最高效的优先级队列。堆通常是一个可以被看作一棵完全二叉树的数组对象。 堆的性质: 堆中某个结点的值总是不大于或不小于其父结点的值; 堆总是一棵完全二叉树。 堆的物理结构本质上是顺序…

PDF怎么转Word?分享二个简单的方法

很多小伙伴在工作学习的时候,经常会遇到别人发来的PDF文件。PDF 文件用于查看资料非常方便,因为它们的布局稳定,在大多数设备上都可以显示相同的布局。 如果我们需要将其转换为Word,如何转换呢?许多人不知道如何转换。…

怎么录制视频?简单步骤教你如何录制高质量视频

视频是我们生活、工作和学校中不可或缺的一部分,但对于初学者来说,面对琳琅满目的录屏工具,往往感到无从下手,今天我们就给大家分享几种简单又高效的电脑录屏方法,让你轻松掌握高质量视频录制的技巧。 录制技巧1&#…

工厂人员定位系统原理

工厂人员定位系统是一种通过现代无线通讯技术和定位技术实现对工厂内人员位置进行实时监测的系统。其具体原理是通过安装在员工身上的定位标签产生无线电信号,并通过无线通讯网络传输给基站,再由基站将数据传输到服务器进行处理,最终在监控中…

《藏文驾考》App:支持藏汉双语切换的驾考题库,方便不熟汉语的藏族学员考驾照,中文藏文语音读题!

藏文驾考,是一款支持藏汉双语切换的驾照考试在线刷题学习软件。服务于涉藏地区的藏文驾驶理论考试,同步西藏、四川、青海、甘南等涉藏地区的驾考新规题库。提供科目一、科目四藏文交规理论学习,科目二、科目三视频技巧讲解。支持汉语、卫藏、…

Power功效分析之广义模型原理及案例实操

Power功效分析常用于实验研究时样本量的计算(或功效值计算),如果是涉及广义模型时的回归系数差异计算时,SPSSAU共提供二元logit回归和Poisson回归情况时的Power功效分析,具体如下表格所述: 比如二元Logit回…

监听器Listener + 过滤器Filter

监听器Listener 介绍 Listener是JavaEE的规范,就是接口 监听器的作用是,监听某种变化(一般就是对象创建/销毁, 属性变化), 触发对应方法完成相应的任务 ServletContextListener监听器(最常用) 作用: 监听S…

javase综合案例4 -- 考试系统

文章目录 一&#xff0c;项目要求二&#xff0c;创建实体类ExamItem三&#xff0c;创建考试服务类ExamService3.1 全局变量 考题列表itemList(List< ExamItem >类型)&#xff0c;答案数组answerArr (String[]类型)&#xff0c;得分score3.2 初始化方法init()3.3 打印菜单…

从0开始的算法(数据结构和算法)基础(六)

二叉树 什么是二叉树 二叉树是一种非线性数据结构(层次关系结构)&#xff0c;代表“祖先”与“后代”之间的派生关系&#xff0c;体现了“一分为二”的分治逻辑。与链表类似&#xff0c;二叉树的基本单元是节点&#xff0c;每个节点包含值、左子节点引用和右子节点引用。 首先…