版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能机器人智慧商场应用场景开发课程内容课程背景场景程序分析和设计机械臂与摄像头标定人脸识别程序代码视觉处理程序启动机器人驱动程序与功能程序©NXROBO20232课程背景课程背景©NXROBO20234设计智能商场场景,客户只需告诉机器人想要获取的商品名字,机器人会识别出客户的信息并根据客户的需求前往对应的位置抓取商品,并返回到客户的位置。场景的要求与流程如下:1.当客户站在机器人前面时,机器人通过人脸识别识别客户(将提供3位客户的照片)。2.机器人通过TTS询问:“您好[客户姓名],您想购买什么产品?”3.客户说“[产品名称]”。4.机器人通过语音识别接收语音命令,并通过TTS响应“我要取[产品名称],请稍等。”(1分)5.转到特定的产品区。产品尺寸为0.1mx0.1mx0.1m,带有AR标签,随机放置。6.找到产品并将其取出。7.前往购物车区域,放下产品。8.返回客户区域,向客户报告“我已将[产品名称]放到您的购物车上”9.返回步骤1。场景程序分析和设计©NXROBO20236场景程序分析和设计根据场景的要求进行分析,该场景包含了人脸识别、语音识别、语音合成、AR码识别、建图导航等机器人功能。1)人脸识别客户信息,能够分辨提供的三个人的图片。采用第八章学习到的opencv人脸识别技术进行编程,需要准备三张人脸的图片,尺寸大小尽量一致,如360*480,命名格式为()。然后对准备的三张人脸图片进行训练,以生成训练的结果作人脸识别使用。2)采用语音合成功能包ros_vosk,通过向指定话题发布信息即可实现播放信息,根据识别到人脸的不同和听到的商品的不同,输出的结果也不同。3)采用语音识别功能包ros_vosk,启动功能包后,监听外部语音信息,并将识别的语音信息输出,主要传递客户想要的商品名字。4)使用自动避障导航到达特定商品区,在导航前使用slam建立好地图,并通过amcl定位起始时自身定位。5)到达商品区后,使用AR码识别,将AR码中心点的位置信息传递回机器人,并将该位置信息与摄像头与机械臂标定文件数据结合,控制机械臂运动位置,实现抓取。6)抓取成功后,再次自动导航回起始位置,将商品放下后进行语音播报。待机等待再次执行任务。机械臂与摄像头标定©NXROBO20238机械臂与摄像头标定打开摄像头与机械臂标定程序。©NXROBO20239机械臂与摄像头标定此时打开了这个界面,我们需要将机械臂的末端橙色部分对着图中绿色方框,可以适当调整摄像头的拍摄角度来确定位置。©NXROBO202310机械臂与摄像头标定点击旁边的终端,按任意键确定。这时,机械臂开始与摄像头标定。机械臂与摄像头标定©NXROBO202311这个是比较好的标定过程,周围没有其他颜色干扰,所以要注意周围光线、环境的影响,同时也要注意比较相关的参数,因为使用的是一元线性回归,图像位置与机械臂位置会有相对固定的定值增减,所以在标定过程中,观察图像的x轴与y轴的变化量是否相对稳定。标定完成之后,退出即可。人脸识别程序代码准备人脸识别图像13©NXROBO2023图片命名格式为:id.姓名准备了三张人脸信息图像,放置在/face_recognizer/faces路径下训练人脸图像14©NXROBO2023运行人脸识别训练程序train_date.py(/spark_vision/face_recognizer/script)$cd/home/spark/spark_noetic/src/spark_app/spark_vision/face_recognizer/script$python3train_date.py训练程序讲解(头文件与main函数)©NXROBO2023importcv2importosfromPILimportImageimportnumpyasnpif__name__=='__main__':#获取当前脚本的目录路径script_dir=os.path.dirname(os.path.abspath(__file__))#图片路径path=os.path.join(script_dir,"../faces")#获取图象数组id标签和姓名faces,ids,names=getImageAndLables(path)#加载识别源recognizer=cv2.face.LBPHFaceRecognizer_create()#训练recognizer.train(faces,np.array(ids))#保存文件recognizer.write(os.path.join(path,"../data/haarcasades"))训练程序讲解(getImageAndLables函数)©NXROBO2023defgetImageAndLables(path):#存储人脸数据faceSamples=[]#存储id数据ids=[]#存储姓名数据names=[]#存储图片信息imagePaths=[os.path.join(path,f)forfinos.listdir(path)]#打印数组imagePathsprint('数据排列:',imagePaths)#分类器地址cascade_path=os.path.join(path,"../data/haarcascades/haarcascade_frontalface_default.xml")#加载分类器face_detector=cv2.CascadeClassifier(cascade_path)
#遍历列表中的图片forimagePathinimagePaths:#打开图片,并且灰度化PIL有九种不同的模式:1,L,P,RGB,RGBA,CMYK,YCbCr,I,F.PIL_img=Image.open(imagePath).convert('L')#将图片转换为数组,以黑白深浅img_numpy=np.array(PIL_img,'uint8')#获取人脸特征faces=face_detector.detectMultiScale(img_numpy)#获取每张有图片的的ID和姓名id=int(os.path.split(imagePath)[1].split('.')[0])name=str(os.path.split(imagePath)[1].split('.')[1])#预防无面容图片forx,y,w,hinfaces:ids.append(id)names.append(name)faceSamples.append(img_numpy[y:y+h,x:x+w])#打印脸部特征和IDprint('name:',name)print('fs:',faceSamples)returnfaceSamples,ids,names识别程序讲解©NXROBO2023defface_detect_demo(self,img):try:#ROS图像与OpenCV图像格式之间进行转换img=CvBridge().imgmsg_to_cv2(img,"bgr8")exceptCvBridgeErrorase:print(e)#设置成灰度图片gary=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#导入人脸检测训练好的模型--分类器face_detect=cv.CascadeClassifier(self.cascade_path)#开始检测face=face_detect.detectMultiScale(gary,1.15,cv.CASCADE_SCALE_IMAGE)
forx,y,w,hinface:cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)#获取人脸id与置信度ids,confidence=self.recogizer.predict(gary[y:y+h,x:x+w])print('id:',ids,'confidence:',confidence)#如果置信度超过阈值80,则将人脸标记为"unknow",否则将显示对应的ID。ifconfidence>80:self.warningtime+=1ifself.warningtime>90:self.warningtime=0print("unknowpeople")cv.putText(img,'unknow',(x+10,y-10),cv.FONT_HERSHEY_SIMPLEX,0.75,(0,255,0),1)else:cv.putText(img,str(s[ids-1]),(x+10,y-10),cv.FONT_HERSHEY_SIMPLEX,0.75,(0,255,0),1)cv.imshow('result',img)cv.waitKey(1)人脸识别与语音合成程序初始化节点,创建发布者和订阅者©NXROBO202319初始化ROS节点,创建发布者和订阅者,创建发布语音合成、运动控制、机械臂抓取标识话题的发布者,以及创建订阅者订阅语音识别结果、机械臂抓取状态和move_base服务器信息:AMCL定位©NXROBO202320在运行导航前,使用amcl让机器人进行自我定位,并自我旋转一圈,有助于导航的精准:根据语音识别结果,确定目标点位置©NXROBO202321根据识别到的语音结果,和商品名字(如苹果、香蕉、橙子等)进行对比,当存在商品名字时,设置目标点为商品位置:Move_base运动规划©NXROBO202322根据目标点的不同,设置不同的movebase导航点,包含目标位置与位姿,若成功到达目标点,则发布抓取标志信息:抓取成功后返回起始点©NXROBO202323根据抓取成功与否的标志,设定成功抓取后返回起始点,将商品放下:AR码识别与机械臂抓取程序代码实现创建发布者和订阅者©NXROBO202325创建发布者发布机械臂位姿、机械臂吸盘、机械臂状态和底盘运动话题,订阅机械臂抓取话题。接收机械臂状态信息,监测图像©NXROBO202326当接收到机械臂状态信息后,对该内容进行分析,如果为允许抓取状态,则订阅摄像头数寻找图像中的ar码,并进行ar码识别,将商品上的ar码位置中心点返回;若画面中没有找到ar码,则控制机器人旋转:机械臂抓取©NXROBO202327在抓取之前需要进行机械臂与摄像头标定,获取标定信息,与识别到的ar码中心位置相结合计算出机械臂运动位置:机械臂释放©NXROBO202328设定机械臂释放位置,但需要释放商品时,直接调用该方法,发布机械臂控制话题:启动机器人驱动程序与功能程序©NXROBO202330启动机器人驱动程序与功能程序将人脸识别程序与语音识别程序相结合启动,创建face_recogniton.launch,当识别到人脸时,会自动启动ar_grasp.launch©NXROBO202331启动机器人驱动程序与功能程序结合前面课程的学习,若
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学龄前儿童生长发育指标达标率调查问卷
- 小区管网改造施工方案
- 物业小区篮球场管理制度及开放流程
- 机关单位投诉处理管理制度
- 高层建筑电信电力布线安装手册
- 弹药销毁技术规范工作手册
- 果树果实分级包装标准手册
- 大型游乐场燃气安全使用管理手册
- 城镇公租房租赁资格申请书
- 滑冰场冰雪质量检测与标准手册
- 2026年内蒙古高考(化学)真题试卷带答案
- 蓬溪县国有资产监督管理局 面向社会公开招聘国有企业工作人员的(10人)考试备考题库及答案详解
- 重症监护室护理技术实践
- 中国兽药典三部 2020年版
- DB42T-湖北省房屋和市政工程造价数据采集规范
- 医院7s管理成果汇报
- TCHIA 51-2024 手术室麻醉信息系统基本功能规范
- 处方调配人员岗位职责
- 四网合一光纤建设合同模板
- GB 30530-2024二甲基硅氧烷单位产品能源消耗限额
- 药品经营和使用质量监督管理办法(试题和答案)
评论
0/150
提交评论