【睿尔曼-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 条评论
撰写评论