【睿尔曼-RealMan】睿尔曼复合机器人产品配件-五指灵巧手实训手册

Ron 2024-04-30

一、硬件介绍

    基于系统设计小巧、美观的原则,避免线缆和设备过多,选取五指灵巧手,将执行器直接集成在机械臂末端。

末端执行器是一款利用小体积大扭矩微型伺服电缸而设计生产的机械灵巧手,以下简称为“灵巧手”。 

图1 灵巧手示意图

    该灵巧手集成了 6 个微型伺服电缸,用户接口采用 RS485 通信接口,内置灵敏的压力传感器,通过设置不同的阈值方便用户进行不同硬度物体的抓取,简洁高效的接口控制指令可使用户快速实现对灵巧手的操控,优质的性能使该灵巧手应用于服务机器人、教学教具、假肢等领域。仿人五指灵巧手具备 6 个自由度和 12 个运动关节,重量 540g,建议供电电压 24V,最大电流 5A。 

    仿人五指灵巧手采用直线驱动设计,具有 6 个自由度和 12 个运动关节,结合力位混合控制算法,可以模拟人手实现精准的抓取操作,分为左手和右手两个型号。 

拇指最大握力:6N

 四指最大握力:4N

 拇指弯曲速度:150°/s

 四指弯曲速度:570°/s

 供电电压:24V±10%

 通信接口:RS485 串口(115200bps、8 数据位、1 停止位、无奇偶校验)

图2 灵巧手结构图

性能参数

表 1 性能参数

二、硬件连接

    电动夹爪对外的硬件接口包括电源线和 RS-485 通信线。在机械臂末端已经预留末端执行器控制接口,可对末端工具进行供电、通讯及信号输出与采集。灵巧手的电器接口如图3所示,接口为GX12航插端子,端子定义如下。

图 3 接口描述

出厂时配有专门连接线,可通过航插头连接灵巧手与机械臂,实物连接效果如下图所示:

图4 灵巧手与机械臂连接示意图

三、灵巧手控制

3.1示教器控制

    在示教器软件上已经添加对五指灵巧手的控制功能,打开示教器后,在软件“末端控制”界面,可以对五指灵巧手进行运动控制。工具端电源输出设置为24V,勾选灵巧手控制选项,更改序列序号,灵巧手执行对应该序号预存的手势动作。

图4 示教器控制灵巧手

    在程序中进行控制时,可通过“高级指令”中的“灵巧手”完成手势动作的调用。

    “灵巧手”指令用来控制五指灵巧手动作。可进行阻塞模式设置、手势设置、动作序号设置。

    阻塞模式:分为阻塞和非阻塞模式。阻塞模式下,灵巧手运动完成后,机械臂执行后续指令;非阻塞模式下,灵巧手运动过程中,机械臂同步执行后续程序。

    手势设置:灵巧手预存手势。

    动作序号设置:灵巧手预存的手势序号,可设置为1-40,每个序号代表1种手势动作。

图5 图形化编程控制灵巧手

3.2协议控制

    在二次开发应用时,可通过机械臂控制器控制灵巧手动作。在通过协议进行控制时,除了可以执行预先设定好的手势之外,还可以控制灵巧手每个关节运动到指定角度以及速度和力度参数。具体指令协议介绍如下:

① 设置灵巧手手势

② 设置灵巧手动作序列

③ 设置灵巧手各自由度角度

④ 设置灵巧手速度

⑤ 设置灵巧手力阈值

3.3接口函数控制

3.3.1 接口介绍

① Set_Hand_Posture(设置灵巧手手势)

int Set_Hand_Posture (int posture_num, bool block);

参数posture_num: 预先保存在灵巧手内的手势序号,范围:1~40。

参数block:0-非阻塞,发送后立即返回; 1-阻塞,等待控制器返回设置成功指令

返回值:2- 成功, 1-失败 

 

② Set_Hand_Seq(设置灵巧手动作序列) 

int Set_Hand_Seq (int seq_num, bool block);

参数seq_num: 预先保存在灵巧手内的动作序列序号,范围:1~40

参数block:0-非阻塞,发送后立即返回; 1-阻塞,等待控制器返回设置成功指令

返回值 :3- 成功, 1-失败 

 

③ Set_Hand_Angle(设置灵巧手各自由度角度)

设置灵巧手角度,灵巧手有 6 个自由度,从 1~6 分别为小拇指,无名指,中指,食指,大拇指弯曲,大拇指旋转。

int Set_Hand_Angle (int *angle, bool block); 

参数*angle:手指角度数组,6 个元素分别代表 6 个自由度的角度。范围:0~1000.另外,-1 代表该自由度不执行任何操作,保持当前状态。

参数block:0-非阻塞,发送后立即返回; 1-阻塞,等待控制器返回设置成功指令。

返回值:0- 成功, 1-失败 

 

④ Set_Hand_Speed(设置灵巧手速度) 

int Set_Hand_Speed (int speed, bool block);

参数speed:灵巧手各关节速度设置,范围: 1~1000

参数block:0-非阻塞,发送后立即返回; 1-阻塞,等待控制器返回设置成功指令

返回值:0- 成功, 1-失败 

 

⑤ Set_Hand_Force(设置灵巧手力阈值)

int Set_Hand_Force (int force, bool block);

参数force:灵巧手各关节力阈值设置,范围: 1~1000,代表各关节的力矩阈值(四指握力 0~10N,拇指握力 0~15N)。

参数block:0-非阻塞,发送后立即返回; 1-阻塞,等待控制器返回设置成功指令

返回值 :0-成功, 1-失败

 

3.3.2程序示例:

    以设置灵巧手手势序号举例进行调用。可以从我们的api协议当中看到函数参数的描述,Set_Hand_Seq(seq,block)seq代表着着我们在上位机软件里面保存的手势序号,block 代表着阻塞与非阻塞。可以在提供的Api接口中调用这个函数来进行灵巧手来进行运动。代码示例如下:

Def hand_control(robot)
 #设置灵巧手序列号
 Ret=robot.Set-Hand_Seq(2,False)
 If ret!=0:
   Print(“动作执行失败:”+str(ret))
   Sys.exit()
 Else:
   Print(“动作执行成果”+str(ret))
 Time.sleep(1)

四、用上位机进行自定义手势设置

步骤一:连接灵巧手。

确保灵巧手硬件连接无误后,打开上位机测试软件。点击左上角连接搜索按钮,选择串口号\波特率-点击搜索按钮进行连接。

步骤二:调试灵巧手角度\速度\力度。

拖动按键,设置自定义灵巧手动作。

步骤三:写入数据。

点击左侧刷新参数按钮,刷新当前参数。

点击左上角参数-动作序列参数。

点击左上角-步骤-选择动作序列号-设置步骤数量。

图示为选择了”共一步”,在 STEP1 中写入角度\速度\力度。

步骤四:测试数据无误。

点击测试按钮,确认动作设置成功。

步骤五:下载数据到灵巧手。

五、使用MOBUS-RTU控制灵巧手

Send ASCII To 192.168.1.18:8080

打开末端MODBUS-RTU

发送json指令:

{"command":"set_modbus_mode","port":1,"baudrate":115200,"timeout":1}

返回值:

{"command":"set_modbus_mode","set_state":true}

以读多个保持寄存器为例:

灵巧手寄存器地址:

机械臂读取寄存器指令:

发送json指令:{"command":"read_multiple_holding_registers","port":1,"address":1474,"num":6,"device":1} 

返回值:{"command":"read_multiple_holding_registers","data":[1,244,1,244,1,244,1,244,1,244,1,244]}

换算:

高位:

十进制1转换为 16进制 0x01

低位:

十进制244转换为 16进制 0xF4

高低位组合:

0X01F4 转化为10进制 500

故:各自由度的电缸位置设置值为500

json指令:{"command":"read_multiple_holding_registers","port":1,"address":1534,"num":6,"device":1} 

返回值:{"command":"read_multiple_holding_registers","data":[7,72,7,125,7,11,7,50,6,14,2,42]}

json指令:{"command":"read_multiple_holding_registers","port":1,"address":1546,"num":6,"device":1} 

返回值:{"command":"read_multiple_holding_registers","data":[3,229,3,79,2,80,1,104,3,225,3,115]}

小指:

高位:十进制3转换为十六进制0X03

低位:十进制229转换为十六进制0XE5

高低位组合:十六进制0X03E5转换为十进制997

无名指同理:

高位:十进制3转换为十六进制0X03

低位:十进制79转换为十六进制0X4F

高低位组合:十六进制0X034F转化为十进制847

json指令:{"command":"read_multiple_holding_registers","port":1,"address":1582,"num":6,"device":1} 

返回值:{"command":"read_multiple_holding_registers","data":[0,0,0,11,0,0,255,199,0,56,0,18]}

注意:此处需要读6字节, 寄存器数量"num"填3即可。

json指令:{"command":"read_multiple_holding_registers","port":1,"address":1606,"num":3,"device":1} 

返回值:{"command":"read_multiple_holding_registers","data":[0,0,0,0,0,0]}

 

六、常见故障排查

问题:无法控制五指灵巧手怎么办?

可以参照以下步骤进行排查:

步骤一:检查灵巧手的线缆是否和机械臂末端连接;同时查看示教器中扩展选项中末端控制,工具端电源输出选择为 24V,然后勾选相应工具类型,即可在示教器对末端工具进行控制。

若在示教器中将末端电源设置为 0V,则无法控制末端工具,也无法通过程序控制。

步骤二:若有电压输出,通过五指灵巧手单独的上位机软件控制五指灵巧手,检查是否能控制。

步骤三:检查五指灵巧手连接线,插针是否弯曲。

步骤四:检查机械臂末端是否开启 MODBUS 模式(需保持在关闭状态),如果已开启可通过发送如下协议进行关闭。

 

 

步骤五:模式关闭后基础系列(二代)机械臂需要保存(三代不需要)机械臂设置,协议如下图所示:

 

0 条评论

关于作者

Ron

这家伙很懒,什么也没写!

选择发帖板块
选择发帖板块