APP下载

基于ROS的送餐机器人自主抓取实现

2022-05-31方明辉曹梦祥袁薪凯晏林冲崔永利孙一鹏

科技创新与应用 2022年15期
关键词:手眼舵机标定

方明辉,曹梦祥,袁薪凯,晏林冲,崔永利,孙一鹏

(1.哈尔滨理工大学 计算机科学与技术学院,黑龙江 哈尔滨 150080;2.哈尔滨北方防务装备股份有限公司,黑龙江 哈尔滨 150080)

近年来,随着人工智能、物联网、5G等技术的不断发展,机器人的研发与创新都得到了空前的发展与革新。伴随着智能终端服务化的空前发展,服务型机器人已然在慢慢地融入人们的日常生活。

以餐饮行业为例,从送餐的本质上来讲,就是一项重复性的工作,与很多组装性的工序相类似,这就会很容易被机器人代替。就目前市场上送餐机器人的现状来看,其已经很好地融入了人们的生活。服务型机器人与餐饮行业的有效碰撞,在为餐饮服务提供特色的同时,也引导餐饮行业的经营模式走向智能化、高效化。随着智能硬件高度融入人类的生活习惯,“智能服务机器人+餐饮”的模式必将是未来的发展趋势,送餐机器人的发展前景十分明朗。现在,全国有大概800多万家餐厅,但是送餐机器人渗透到餐厅中的比例不到1%,这些数据都表明了在未来“智能服务机器人+餐饮”的领域还有很大的发展空间[1]。

此外,在机器人设计研发中,为了解决各部分的兼容性,需要采用一个统一的平台,即ROS。该平台适用于机器人的相关开发研究工作,这个框架提高了机器人各部件之间的耦合度,为这些部件提供了通信架构。除此之外,ROS还包含了大量实用且便捷的工具软件和软件包,如QT工具、开发工具RVIZ等。因此,使用ROS开发不仅具有良好的扩展性,还能应用丰富的软件包来强化机器人的功能[2]。

1 主要任务

本文主要研究如何利用搭载于送餐机器人上的六自由度机械臂与摄像头,实现机器人自主抓取的功能,从而实现机器人的高度自动化与智能化。

机器人搭载了一个深度视觉摄像头如图1所示,和一个普通的1080p的摄像头,利用ORB_SLAM算法可以高效地建立三维空间模型,并且可以依据建模结果获得某点的空间坐标值,传达至机器人主机进行后续处理。

图1 Kinect深度学习摄像头

机器人利用六自由度机械臂如图2所示,完成抓取动作,使用usb与机械臂lsc主控板进行连接,当摄像头建模后将采集空间坐标参数发送到机器人主机后,由主机转换为robot_arm/cmdstring格式的topic,这个topic内容为控制命令,最后由robot_arm节点负责将这个topic内容经由usb hid协议发送给机械臂主控板,完成抓取的操作。

图2 六自由度机械臂

2 六自由度机械臂的二次开发

实际开发过程中,机械臂通过串口与上位机进行通信,通信的有关参数见表1。

表1 通信有关参数

开发中通用的指令格式见表2。其中帧头表示如果收到连续的2个0x55,就代表有数据包到达,数据长度为参数的数量加2(即N+2),指令表示各种控制信息,参数表示需要补充的一些附加信息。

表2 通用指令格式

2.1 用户向控制板发送数据

(1)指令名CMD_SERVO_MOVE指令值0x03数据长度值:要转动的舵机的数量×3+5。

说明:利用指令对任意数量的舵机转动进行控制。

参数1:要转动舵机的数量;

参数2:舵机转动时间的十六进制下的低两位;

参数3:舵机转动时间的十六进制下的高两位;

参数4:转动舵机的ID号;

参数5:舵机转动角度位置的十六进制下的低两位;

参数6:舵机转动角度位置的十六进制下的高两位;

参数N,N+1,N+2:与参数4,5,6的意义相同,用来控制其他舵机转动的角度位置。

比如控制4号和7号舵机在2 500 ms内,4号转动到2 100的位置,7号转动到1 700的位置,见表3。

表3 CMD_SERVO_MOVE指令示例

(2)指令名CMD_ACTION_GROUP_RUN指令值0x06数据长度值:5。

说明:使机械臂运行该动作组,并且可以设置该动作组的运行次数,当参数值为0时即表示该动作组可以无限次运行。

参数1:准备运行的动作组的编号;

参数2:动作组执行次数的十六进制下的低两位;

参数3:动作组执行次数的十六进制下的高两位。

比如控制4号动作组运行5次,见表4。

表4 CMD_ACTION_GROUP_RUN指令示例

(3)指令名CMD_ACTION_GROUP_STOP指令值0x07数据长度值:2。

说明:中断当前正在运行的动作组。若当前机械臂没有执行动作,则无论发送几次命令都不会对机械臂产生影响。

参数:无参数。

停止当前正在运行的动作组,见表5。

表5 CMD_ACTION_GROUP_STOP指令示例

2.2 控制板向用户返回数据

指令名CMD_ACTION_GROUP_COMPLETE指令值0x08数据长度值:5。

说明:当机械臂将某个动作组正常执行完毕后(没有被强行停止运行,而是本身运行的时间到了,自然运行结束会返回该指令)。

参数1:运行动作组的编号;

参数2:动作组准备执行次数的十六进制下的低两位;

参数3:动作组准备执行次数的十六进制下的高两位。

比如当9号动作组将要执行8次,自然运行结束后,指令见表6。

表6 CMD_ACTION_GROUP_COMPLETE指令示例

3 基于Tsai-Lenz算法的自主抓取设计

送餐机器人通过Kinect摄像头和六自由度机械臂结合,基于手眼标定法完成自主抓取工作。手眼标定法根据摄像头固定的位置可分为两种类型,一种是摄像头固定在机械臂之上,称为眼在手上(eye-in-hand),另一种是摄像头固定在机械臂之外,称为眼在手外(eye-to-hand)。该机器人由于摄像头与机械臂分离,所以采用了eye-to-hand方式。

Tsai-Lenz算法是手眼标定中最常见的算法之一,其通常用于eye-in-hand的手眼固定形式,但是同样也能够用于eye-to-hand的情况,具有成熟可用的工具包,该方法借助标定板,通过求解线性方程的方法求取手眼关系。

在整个抓取过程中,主要过程如下[3]:

(1)物体识别:在图像中检测到物体。

(2)位姿估计:得到物体在相机坐标系下的位置和姿态。

(3)相机拟定:对物体在相机坐标系下的坐标进行转换,得到其在机器人坐标系的坐标。

用H表示坐标变换(H指homogeneous matrices齐次变换矩阵)。例如表示i时刻下机械臂(gripper)的坐标变换:

已知多组:

(1)机械臂在机器人坐标系中的坐标:

(2)标定板在相机坐标系中的坐标:

求机械臂和相机之间的位姿关系:

设:

即可得到:

根据Tsai-Lenz算法即可求解X,其核心等式如下:

在得到机器人坐标系下的物体坐标后,根据坐标进行动作规划,生成动作指令后并发布到机械臂执行。

4 结束语

本文介绍了一种送餐机器人自主抓取物品的实现方案,从实际角度出发,立足于餐饮行业,将摄像头与六自由度机械臂的应用进行了结合,可以实现自主抓取食物的功能,具有一定的现实意义和参考价值。

猜你喜欢

手眼舵机标定
观察力、手眼协调能力
培养手眼协调能力,创意思维能力
使用朗仁H6 Pro标定北汽绅宝转向角传感器
观察力、手眼协调能力
培养手眼协调能力,创意思维能力
含齿隙弹载舵机的全局反步模糊自适应控制
CT系统参数标定及成像—2
CT系统参数标定及成像—2
基于dsPIC单片机的飞艇舵机控制实现
基于匀速率26位置法的iIMU-FSAS光纤陀螺仪标定