智能机械手.doc

上传人:精*** 文档编号:882122 上传时间:2024-03-11 格式:DOC 页数:33 大小:1.41MB
下载 相关 举报
智能机械手.doc_第1页
第1页 / 共33页
智能机械手.doc_第2页
第2页 / 共33页
智能机械手.doc_第3页
第3页 / 共33页
智能机械手.doc_第4页
第4页 / 共33页
智能机械手.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、智能机械臂摘要本文主要介绍了用北极星套装搭建的智能机械手,该机械手可完成的任务有:自动寻查物品框,自动夹取物品,自动搬运物品。机械手运作原来是通过红外感应器扫描物品框,判断物品框内是否有物体,然后用机械手夹取物品,再放入对应的框内。关键词:智能 舵机 机械臂 北极星AbstractThis paper mainly introduces the pole star with setting up the intelligent robots suit, the system can accomplish the task: automatic sought items box, automat

2、ic clip items, automatic handling items. Manipulator operation it is through the infrared sensors scan items box, judge whether the object in the box items, then use the manipulator clip items, then put in the corresponding in the boxKeywords: intelligent ,steering, gear mechanical arm, north star目录

3、摘要1第1章 绪论11.1 机械手的发展历史11.2 机器人的研究领域和应用21.2.1 机器人的研究领域2第2章 开发系统42.1 CDS5500机器人舵机介绍42.1.1 舵机实物图和尺寸:52.2 MultiFLEX2控制器简介62.2.1 控制器配置72.3 机械臂的眼睛红外传感器82.3.1 红外距离传感器的工作原理9第3章 智能机械臂的组装103.1 搭建六个物品框103.1.1 物品框分步:103.2 机械臂的安装123.2.1 机械手的安装123.2.2 将控制器固定在支撑板上143.2.3 将红外测距传感器安装到机械手上143.2.4 将机械手也安装到支撑板上15第4章 智能

4、机械臂软件设计164.1 舵机的测试以及参数设置164.2 程序流程图174.2.1 用northstar软件进行编程19结论22参 考 文 献23致谢24 - 2 -智能机械臂第1章 绪论1.1 机械手的发展历史机械手是在早期就有的古机器人基础上发展起来的,我国古代的机关人制造者是最早研究有关机械手、关节活动等问题的.现代机械手的研究始于20世纪中期,随着计算机和自动化技术的发展,特别是1946年第一台数字电子计算机问世,计算机取得了惊人的进步,向高速度、大容量、低价格的方向发展。同时,大批量生产的迫切需求推动了自动化技术的进展,又为机器人的开发奠定了基础。另一方面,核能技术的研究要求某些操

5、作机械代替人处理放射性物质。在这一需求背景下,美国于1947年开发了遥控机械手,1948年又开发了机械式的主从机械手。机械手配件最先从美国开始研制。1954年美国戴沃尔最早提出了工业机器人的概念,并申请了专利。该专利的要点是借助伺服技术控制机器人的关节,利用人手对机器人进行动作示教,机器人能实现动作的记录和再现。这就是所谓的示教再现机器人。现有的机器人差不多都采用这种控制方式。1958年美国联合控制公司研制出第一台机械手铆接机器人。作为机器人产品最早的实用机型(示教再现)是1962年美国AMF公司推出的“VERSTRAN”和UNIMATION公司推出的“UNIMATE”。这些工业机器人主要由类

6、似人的手和臂组成它可代替人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门。机械手配件主要由手部、运动机构和控制系统三大部分组成。手部是用来抓持工件(或工具)的部件,根据被抓持物件的形状、尺寸、重量、材料和作业要求而有多种结构形式,如夹持型、托持型和吸附型等。运动机构,使手部完成各种转动(摆动)、移动或复合运动来实现规定的动作,改变被抓持物件的位置和姿势。运动机构的升降、伸缩、旋转等独立运动方式,称为机械手的自由度 。为了抓取空间中任意位置和方位的物体,需有6个自由度。自由度是机 械手设计的关 键参数。自由 度越多,

7、机械手的灵活性越大,通用性越广,其结构也越复杂。一般专用机械手有23个自由度。控制系统是通过对机械手每个自由度的电机的控制,来完成特定动作。同时接收传感器反馈的信息,形成稳定的闭环控制。控制系统的核心通常是由单片机或dsp等微控制芯片构成,通过对其编程实现所要功能。机械手的种类,按驱动方式可分为液压式、气动式、电动式、机械式机械手;按适用范围可分为专用机械手和通用机械手两种;按运动轨迹控制方式可分为点位控制和连续轨迹控制机械手。在不同领域中使用的机械手也不尽相同,如注塑机机械手配件就有:吸盘系列、抱具系列、夹具系列等等不同的种类机械手通常用作机床或其他机器的附加装置,如在自动机床或自动生产线上

8、装卸和传递工件,在加工中心中更换刀具等,一般没有独立的控制装置。有些操作装置需要由人直接操纵,如用于原子能部门操持危险物品的主从式操作手也常称为机械手。机械手在锻造工业中的应用能进一步发展锻造设备的生产能力,改善热、累等劳动条件。1.2 机器人的研究领域和应用机器人是未来发展空间最大的研究项目之一。目前机器人技术已广泛的应用于汽车、机械加工、电子及塑料制品等工业领域,随着科学与技术的发展,机器人的应用领域也随之不断扩大。1.2.1 机器人的研究领域机器人技术是集机械工程学、计算机科学、控制工程、电子技术、传感器技术、人工智能、仿生学等学科为一体的综合技术,它是多学科科技革命的必然结果,每一台机

9、器人,都是一个知识密集和技术密集的高科技机电一体化产品。1 传感器技术2 人工智能计算机科学3 假肢技术4 工业机器人技术5 移动机械技术6 生物功能1.2.1.1 机器人技术应用目前机器人技术已广泛的应用于汽车、机械加工、电子及塑料制品等工业领域,随着科学与技术的发展,机器人的应用领域也随之不断扩大。现在工业机器人的应用已经开始扩大到军事、核能、采矿、冶金、石油、化学、航空、航天、船舶、建筑、纺织、制衣、医药、生化、食品、服务、娱乐、农业、林业、畜牧业和养殖业等领域。在工业生产中,弧焊机器人、点焊机器人、装配机器人、喷涂机器人及搬运机器人等工业机器人都已经被大量采用。由于机器人对生产环境和作

10、业要求具有很强的适应性,用来完成不同生产作业的工业机器人的种类愈来愈多,工业将实现高度自动化。机器人将成为人类社会生产活动的“主劳力”,人类将从繁重的、重复单调的、有害健康和危险的生产劳动中解放出来。【4】机器人将成为人类探索与开发宇宙、海洋和地下未知世界的有力工具。各种舱内作业机器人、舱外作业机器人、空间自由飞行机器人、登录星球的探索车和作业车等将被送上天空,去开发与利用空间、去发现与利用外界星球的无知资源。水下机器人将用于海底探索与开发、海洋资源开发与利用、水下作业与救生。第2章 开发系统2.1 CDS5500机器人舵机介绍proMOTION CDS 系列机器人伺服电机(机器人舵机)属于一

11、种集电机、伺服驱 动、总线式通讯接口为一体的集成伺服单元,非常适合替代 RC 舵机,作为微型机器人的关节、轮子、履带驱动,也可用于其他简单位置控制场合。主要特点如下 : 大扭矩:16Kgf cm 高转速:最高 0.16s/60输出转速DC 6.8V 14V 供电 0.32位置分辨率双端输出轴,适合安装在机器人关节 高精度全金属齿轮组,双滚珠轴承 连接处 O 型环密封,防尘防溅水位置伺服控制模式下 转动范围 0-300l 在速度控制模式下可连续旋转,调速总线连接,理论可串联 254 个单元高达 1M 通讯波特率0.25KHz 的伺服更新率 具备位置、温度、电压、速度反馈 通讯协议兼容CDS551

12、6 机器人舵机采用先进的伺服控制技术和高速微处理器,响应速度快、到位准确无抖动。相比传统 RC 舵机 50Hz 的控制频率,CDS 系列机器人舵机通过高达250Hz 的控制频率,确保位置控制的准确和保持力矩的稳定性。CDS5516 机器人舵机采用周转型高精度电位器测量位置 ,舵机输出轴可连续整周旋转,运动扭矩输出高达 16kgf.cm。CDS5516 具备总线接口,理论 多至254 个机器人舵机可以通过总线组成链型 ,通过异步串行接口统一控制。每个舵机可以设定丌同的节点地址,多个舵机可以统一运动也可以单个独立控制。CDS5516 的通讯指令集完全开放 ,舵机通过异步串行接口不用户的上位机通讯

13、,用户可对其参数设置、功能控制。通 过 异 步 串 行 接 口 収 送 指 令 ,CDS5516 可以设置为电机模式或位置控制模式。在电机模式下,CDS5516 可以作为直流减速电机使用 ,速度可调;在位置控制模式下,CDS5516 拥有 0-300的转动范围,在此范围内具备精确位置控制性能,速度可调。CDS5516 机器人舵机的外形和安装方式兼容传统舵机。2.1.1 舵机实物图和尺寸,如图2.1.1所示: 图2.1.1舵机实物图和尺寸2.2 MultiFLEX2控制器简介MultiFLEX(TM)2-PXA270 控制器的处理器是Marvell Xscale PXA270 ,Xscale P

14、XA270处理器可工作在520MHz 的主频下,使得MultiFLEX(TM)2-PXA270 控制器除了能够处理常规的IO、AD 和总线数据之外,还能够进行语音识别、视频捕获和处理,让机器人看得见影像、听得到声音成为了可能。MultiFLEX(TM)2-PXA270 控制器运行的是Linux 操作系统,Linux 以其内核精炼、高效、源代码开放且免费等优势,在嵌入式领域得到了广泛的应用。MultiFLEX 2-PXA270 控制器集成开关量传感器、模拟量传感器、RC 舵机、机器人总线舵机控制接口,具有 RS422 总线接口和 USB 接口、以太网接口 ,具有丰富的扩展能力 ,具体特点如下:l

15、 高运算能力、低 耗、体积小。520MHz、32 位的高性能嵌入式处理器和 Linux 操作系统 ,运算处理能力强大,而功耗不到 2W ;体积小巧。2 控制接口丰富。可以控制 RC 舵机、机器人总线舵机,直流电机伺服驱动器等。3 数据接口丰富。12路双向IO 接口,8 路 10 位精度的 AD 接口 ;RS-422 总线、以太网接口、USB接口。4 多种开发环境。配套 NorthSTAR图形化集成开发环境 ,纯代码开发环境;5 接口开放彻底。MultiFLEX2-AVR 开放所有底层函数接口 ,用户就可以直接调用这些函数编写程序。2.2.1 控制器配置MultiFLEX2-AVR 控制器配置如

16、下:l l 主处理器:ATmega12816MHz,协处理器:ATmega816MHz;l l 6个机器人舵机接口,完全兼容Robotis Dynamixel AX12+;l l 8个R/C舵机接口;l l 12个TTL 电平的双向I/O口,GND/VCC/SIG三线制;l l 8个AD转换器接口(05V);l l 2个RS-422总线接口(可挂接1-127 个422设备);l l 1个无源蜂鸣器;l l 通过RS-232与上位机通讯,可选无线通讯模组;l l 使用USB 接口的AVR-ISP 下载调试器。2.2.2第二代控制器耳机接口使用比较方便,但是长期使用偶尔会出现接触不良的情况,用户自

17、己做线也比较困难,第二代控制器对这两个问题进行了修改。接口形式如下图:图2.221第二代控制器2.3 机械臂的眼睛红外传感器红外接近传感器利用红外信号遇到障碍物距离的不同反射的强度也不同的原理,进行障碍物远近的检测。红外接近传感器具有一对红外信号发射与接收二极管,发射管发射特定频率的红外信号,接收管接收这种频率的红外信号,当红外的检测方向遇到障碍物时,红外信号反射回来被接收管接收,经过处理之后,通过数字传感器接口返回到机器人主机,机器人即可利用红外的返回信号来识别周围环境的变化。图2.3为红外接近传感器原理示意图 图图2.3红外接近传感器原理示意图当某一障碍物距离红外接近传感器达到一定值(这个

18、值可调,比如10cm),红外传感器out和GND导通,也就是out输出为0V的电平。根据上面所述原理,我们可以利用红外接近传感器来“发现障碍物”。当机器人前方的障碍物距离红外接近传感器小于10cm时,红外传感器的输出值就变成0。我们写程序不断查询这个接红外接近传感器的IO口的状态就能够知道机器人距离障碍物的距离状态。2.3.1 红外距离传感器的工作原理红外距离传感器的工作原理:利用的是红外线传播时的不扩散原理 ,因为红外线在穿越其它物质时折射率很小 ,所以长距离的测距仪都会考虑红外线 ,而红外线的传播是需要时间的 。当红外线从测距仪发出碰到反射物被反射回来被接受到 ,再根据红外线从发出到被接受

19、到的时间及红外线的传播速度就可以算出距离红外线的工作原理:利用高频调制的红外线在待测距离上往返产生的相位移推算出光束度越时间t,从而根据DCt/2得到距离D。在一定范围内,如果没有障碍物,发射出去的红外线,因为传播距离越远而逐渐减弱,最后消失。而如果有障碍物,红外线遇到障碍物,被反射到达传感器接收头。传感器检测到这一信号就可以确认正前方有障碍物,并送给单片机,单片机通过输入内部的算法,协调小车四轮工作,从而完成躲避障碍物动作。第3章 智能机械臂的组装机械臂组成包括:机械臂,机械手,底座,还有红外传感器。机械臂控制机械手的方向,机械手用来抓取物体,红外传感器用来检测物体所在处。3.1 搭建六个物

20、品框六个物品框是相当于6个被选择的地点如图3.11 图3.11六个物品框3.1.1 物品框分步:1:搭建6个物品框 图3.112所需零部件 图3.113建好后的物品框L1-1 J1 LX2 LM2 螺钉一套2:将搭建好的物品框3个一组安装在支撑板上如图3.12,安两组图3.12安装好物品框的支撑板3:搭建机械手可控制卡的支撑板如图3.13 图3.13搭建机械手可控制卡的支撑板搭建这个支撑板需要的结构件有:主支撑板DB 1个,LX4 6个,LM4 1个,U3H 1个,LM1 2个。图中上面的结构为控制卡的安装位,两侧的为前面安装好的支撑板的安装位,中间的为机械手的安装位。4:将3个支撑板拼装在一

21、起,组成整体的底座,注意连接是错开一个孔位的,如图3.14所示 图3.14底座整体3.2 机械臂的安装,这里得注意要从机械手开始组装。如图3.2 图3.2安装好的机械臂3.2.1 机械手的安装机械手连接所需要部件,用来抓取物体。如图3.21(1) 图3.21(1)机械手连接所需要部件连接好的机械手:如图3.2.1(2) 图3.21.(2)连接好的机械手3.2.1.1 连接好的机械臂如图3.2.1.1 图3.21.1连接好的机械3.2.2 将控制器固定在支撑板上如图3.22 图3.22控制器固定在支撑板上3.2.3 将红外测距传感器安装到机械手上如图3.2.3 图3.23红外测距传感器安装到机械

22、手上3.2.4 将机械手也安装到支撑板上 如图3.2.4 图3.2.4将机械手也安装到支撑板上第4章 智能机械臂软件设计软件设计是用来控制机械臂的运作的,没有软件,机械臂就无法运动了。该设计可以让机械臂自动寻找物体所在位置,并可自动夹物体,将物体放到指定位置。4.1 舵机的测试以及参数设置舵机出厂时有一套默认参数,ID默认为1,使用之前,一般只需要改变舵机的ID即可。具体操作步骤如下:(1)连接调试器,舵机和直流电源;(2)启动RobotServoTemrminal软件;(3)在Com输入框输入调试器所对应的端口号,Baud选择1000000(默认值),点击“Open”按钮打开串口;打开成功后

23、,右侧的绿灯会变成红色;如图4.1所示图4.1舵机的测试以及参数设置(4) 根据需要选择查询模式。只连接了一个舵机,所以选择“Single Baund”(5) 设置好模式后,点击“Search”开始搜索,右侧会出现搜索信息;如果连接正确,相应的舵机ID和波特率会出现在列表框。如图4.15所示图4.15相应的舵机ID和波特率按照此方法修改 其他舵机的ID。4.2 程序流程图开始 夹持物体是检查一号框内是否有物品体 否放入4号框夹持物体检查二号框内是否有物品是放入5号框否夹持物体是检查三号框内是否有物品放入5号框否放入6号框结束4.2.1 用northstar软件进行编程,程序如图4.2.1所示图

24、4.2.1northstar软件进行编程4.2.1.1 northstar程序代码#include Apps/SystemTask.huint8 SERVO_MAPPING6 = 1,2,3,4,5,6;int main() MFInit(); MFInitServoMapping(&SERVO_MAPPING0,6); MFSetPortDirect(0x00000FC0); MFSetServoMode(1,0); MFSetServoMode(2,0); MFSetServoMode(3,0); MFSetServoMode(4,0); MFSetServoMode(5,0); MFSe

25、tServoMode(6,0); /初始状态 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /左转60 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,

26、512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); MFGetAD(-1); if (有物体)&(没物体) /左转30 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); else /机械臂放下 MFSetS

27、ervoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /夹起物体 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512

28、); MFSetServoPos(6,512,512); MFServoAction(); /机械臂升起 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /右转120 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3

29、,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /机械臂放下 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /机械爪松开,放下物体 MF

30、SetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /左转150 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,51

31、2,512); MFSetServoPos(6,512,512); MFServoAction(); MFGetAD(-1); if () /左转30 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); else /机械臂放下 MFSetServoPos(1,512,512); MFSetServoPos

32、(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /夹起物体 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFSe

33、rvoAction(); /机械臂升起 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /右转180 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,51

34、2); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /机械臂放下 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /机械爪松开,放下物体 MFSetServoPos(1,512,512); MFSetServ

35、oPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /左转210 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512);

36、 MFServoAction(); MFGetAD(-1); if () /初始状态 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); else /机械臂放下 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,

37、512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /夹起物体 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /机械臂升起 MFSetServoPos

38、(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /右转240 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFS

39、etServoPos(6,512,512); MFServoAction(); /机械臂放下 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /机械爪松开,放下物体 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,

40、512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); /初始状态 MFSetServoPos(1,512,512); MFSetServoPos(2,512,512); MFSetServoPos(3,512,512); MFSetServoPos(4,512,512); MFSetServoPos(5,512,512); MFSetServoPos(6,512,512); MFServoAction(); 结论本文主要对机械手的结构进行了深入的研究和设计,在机械手的结构和 强度都符合要求的情况下,功能上也能达到当初设计的目的,能够

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 大学论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922