【睿尔曼-RealMan】基于python用api设置机械臂udp回传

l 2024-06-17

 

1.  导入机械臂相关库文件

 

from robotic_arm_package.robotic_arm import * 
 

2.  定义机械臂型号和IP

 

robot = Arm(RM65, "192.168.1.18")
 

3. 设置机械臂主动上报配置,参数cycle为广播周期,设置为n即为广播周期是5ms的n倍,cycle=2,则机械臂会以2*5ms的周期返回机械臂数据。force_coordinate为受力数据的坐标系,若机械臂没有六维力,则设置为-1。

 
#定义机械臂型号和ip
robot = Arm(RM65, "192.168.1.18")
# 设置广播周期 20ms,端口号 8089,开启主动上报接口,目标 IP 为"192.168.1.20"
ret = robot.Set_Realtime_Push(cycle=1, port=8089, enable=True,force_coordinate=-1,ip="192.168.1.111")

4. 注册机械臂上报的回调函数,I系列通过设置 UDP 接口主动推送并注册回调函数获取到机械臂信息。

 

def robotstatus (data):
    print("RobotStatus RobotStatus RobotStatus")
    print("当前角度:", data.joint_status.joint_position[0], data.joint_status.joint_position[1], data.joint_status.joint_position[2],data.joint_status.joint_position[3],data.joint_status.joint_position[4],data.joint_status.joint_position[5])
    print("当前力:", data.force_sensor.force[0], data.force_sensor.force[1], data.force_sensor.force[2],data.force_sensor.force[3],data.force_sensor.force[4],data.force_sensor.force[5])
    print("err:", data.errCode)
 

5. 调用回调函数

 

 
robotstatus = RealtimePush_Callback(robotstatus )
robot.Realtime_Arm_Joint_State(robotstatus)

6. 给一定时间,允许机械臂将实时状态打印出来。

 

time.sleep(20)
 

7. 机械臂断开连接。

 

robot.RM_API_UnInit()
robot.Arm_Socket_Close()
 

8. 以RM65-B为例,完整的程序如下:

 

from robotic_arm_package.robotic_arm import *
#定义机械臂型号和ip
robot = Arm(RM65, "192.168.1.18")
# 设置广播周期 20ms,端口号 8089,开启主动上报接口,目标 IP 为"192.168.1.20"
ret = robot.Set_Realtime_Push(cycle=1, port=8089, enable=True,force_coordinate=-1,ip="192.168.1.111")
# 查询主动上报配置
#error_code, cycle, port, enable, force_coordinate, ip = robot.Get_Realtime_Push()
# 注册机械臂状态主动上报回调函数
def robotstatus (data):
    print("RobotStatus RobotStatus RobotStatus")
    print("当前角度:", data.joint_status.joint_position[0], data.joint_status.joint_position[1], data.joint_status.joint_position[2],data.joint_status.joint_position[3],data.joint_status.joint_position[4],data.joint_status.joint_position[5])
    print("当前力:", data.force_sensor.force[0], data.force_sensor.force[1], data.force_sensor.force[2],data.force_sensor.force[3],data.force_sensor.force[4],data.force_sensor.force[5])
    print("err:", data.errCode)
robotstatus = RealtimePush_Callback(robotstatus )
robot.Realtime_Arm_Joint_State(robotstatus)
time.sleep(20)
# 断开连接
robot.RM_API_UnInit()
robot.Arm_Socket_Close()
 

9. 回传结果:

0 条评论

关于作者

l

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

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