news 2026/6/23 19:25:32

UR3 机械臂状态读取与多格式转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UR3 机械臂状态读取与多格式转换

代码由Qwen3-Max生成。

prompt:

设计一个读取UR3机械臂关节角度(两种格式输出:弧度和角度)和末端位姿的程序(3种格式:UR机械臂默认格式,欧拉角和旋转矩阵)。

1. 代码

ur3_state_reader.py

import rtde_receive import numpy as np from scipy.spatial.transform import Rotation # -- 全局配置 -- ROBOT_HOST = '192.168.1.101' # 请替换为你的 UR3 IP def get_robot_state(robot_host=ROBOT_HOST): """ 读取 UR3 机械臂当前状态,并以多种格式输出关节角和末端位姿。 返回: dict: 包含关节角(弧度/角度)和末端位姿(三种格式) """ try: rtde_r = rtde_receive.RTDEReceiveInterface(robot_host) # 1. 获取关节角度(弧度) q_rad = np.array(rtde_r.getActualQ()) # 单位:弧度 q_deg = np.rad2deg(q_rad) # 转换为角度 # 2. 获取末端位姿(UR 默认格式:[x, y, z, rx, ry, rz]) tcp_pose_ur = np.array(rtde_r.getActualTCPPose()) # 前3位位置(m),后3位轴角向量(rad) # 3. 提取旋转部分(轴角向量) rotvec = tcp_pose_ur[3:] # 4. 转换为旋转矩阵 R = Rotation.from_rotvec(rotvec).as_matrix() # 5. 转换为欧拉角(默认顺序 'XYZ',单位:度) euler_xyz_deg = Rotation.from_rotvec(rotvec).as_euler('xyz', degrees=True) # 关闭连接(RTDEReceiveInterface 通常不需要显式关闭,但可重用) # 注意:频繁创建/销毁 rtde_r 可能影响性能,建议在长期任务中复用实例 return { "joint_angles": { "radians": q_rad.tolist(), "degrees": q_deg.tolist() }, "tcp_pose": { "ur_format": tcp_pose_ur.tolist(), # [x, y, z, rx, ry, rz] "euler_xyz_degrees": euler_xyz_deg.tolist(), # [roll, pitch, yaw] in degrees "rotation_matrix": R.tolist() # 3x3 list of lists } } except Exception as e: print(f"❌ 读取机器人状态失败: {e}") return None def print_robot_state(state): """格式化打印机器人状态(用于调试或日志)""" if state is None: print("无法获取机器人状态。") return print("\n===== UR3 当前状态 =====") print("🔄 关节角度 (弧度):") for i, q in enumerate(state['joint_angles']['radians'], 1): print(f" q{i}: {q:.4f} rad") print("\n🔄 关节角度 (角度):") for i, q in enumerate(state['joint_angles']['degrees'], 1): print(f" q{i}: {q:.2f}°") print("\n📍 末端位姿 (UR 默认格式 [x,y,z,rx,ry,rz]):") pose = state['tcp_pose']['ur_format'] print(f" 位置 (m): [{pose[0]:.4f}, {pose[1]:.4f}, {pose[2]:.4f}]") print(f" 轴角 (rad): [{pose[3]:.4f}, {pose[4]:.4f}, {pose[5]:.4f}]") print("\n📍 末端位姿 (欧拉角 XYZ, 单位: 度):") euler = state['tcp_pose']['euler_xyz_degrees'] print(f" Roll (X): {euler[0]:.2f}°, Pitch (Y): {euler[1]:.2f}°, Yaw (Z): {euler[2]:.2f}°") print("\n📍 旋转矩阵 R = [r11 r12 r13; r21 r22 r23; r31 r32 r33]:") R = np.array(state['tcp_pose']['rotation_matrix']) print(R) if __name__ == '__main__': print("正在读取 UR3 机械臂当前状态...") state = get_robot_state() print_robot_state(state)

2. 依赖库安装

pip install ur_rtde scipy numpy

3. 输出

下面是两种不同TCP设置的输出。

(book_robot) robot@robot-cvai:~/workspace/book_robot/ur3$ python ur3_state_reader.py 正在读取 UR3 机械臂当前状态... ===== UR3 当前状态 ===== 🔄 关节角度 (弧度): q1: 1.5216 rad q2: -0.1532 rad q3: -1.9164 rad q4: 4.9550 rad q5: 4.5877 rad q6: -6.4484 rad 🔄 关节角度 (角度): q1: 87.18° q2: -8.78° q3: -109.80° q4: 283.90° q5: 262.85° q6: -369.47° 📍 末端位姿 (UR 默认格式 [x,y,z,rx,ry,rz]): 位置 (m): [0.0924, -0.2015, 0.4796] 轴角 (rad): [-0.0428, -1.7833, 2.2792] 📍 末端位姿 (欧拉角 XYZ, 单位: 度): Roll (X): -75.29°, Pitch (Y): -7.35°, Yaw (Z): 167.73° 📍 旋转矩阵 R = [r11 r12 r13; r21 r22 r23; r31 r32 r33]: [[-0.96913461 -0.1748315 -0.17381614] [ 0.21076242 -0.22179452 -0.95204327] [ 0.12789568 -0.959292 0.25179666]] (book_robot) robot@robot-cvai:~/workspace/book_robot/ur3$ python ur3_state_reader.py 正在读取 UR3 机械臂当前状态... ===== UR3 当前状态 ===== 🔄 关节角度 (弧度): q1: 1.5215 rad q2: -0.1532 rad q3: -1.9164 rad q4: 4.9550 rad q5: 4.5876 rad q6: -6.4485 rad 🔄 关节角度 (角度): q1: 87.18° q2: -8.78° q3: -109.80° q4: 283.90° q5: 262.85° q6: -369.47° 📍 末端位姿 (UR 默认格式 [x,y,z,rx,ry,rz]): 位置 (m): [0.0576, -0.3919, 0.5300] 轴角 (rad): [-0.0429, -1.7834, 2.2790] 📍 末端位姿 (欧拉角 XYZ, 单位: 度): Roll (X): -75.30°, Pitch (Y): -7.35°, Yaw (Z): 167.73° 📍 旋转矩阵 R = [r11 r12 r13; r21 r22 r23; r31 r32 r33]: [[-0.96911454 -0.17485003 -0.17390936] [ 0.21085012 -0.22172955 -0.95203899] [ 0.1279032 -0.95930364 0.25174848]] (book_robot) robot@robot-cvai:~/workspace/book_robot/ur3$
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 16:25:00

第十九篇:多租户架构:数据隔离与资源配额

📋 本文概览 学习目标: 理解多租户架构的核心概念和设计模式 掌握三种主流数据隔离策略的实现 学会使用PostgreSQL Row-Level Security(RLS) 实现细粒度的资源配额管理系统 构建完整的租户计费统计模块 掌握多租户系统的安全最佳实践 技术栈: PostgreSQL(数据库 + RLS)…

作者头像 李华
网站建设 2026/6/22 23:24:21

VLN-CE视觉语言导航实战:从零开始构建智能导航系统

VLN-CE视觉语言导航实战:从零开始构建智能导航系统 【免费下载链接】VLN-CE Vision-and-Language Navigation in Continuous Environments using Habitat 项目地址: https://gitcode.com/gh_mirrors/vl/VLN-CE 想要让机器人听懂你的指令并自主导航吗&#xf…

作者头像 李华
网站建设 2026/6/22 16:19:50

中国电力招标网:开启能源行业高质量发展的“金钥匙”

能源招标平台:助力能源行业高质量发展的关键力量引言在能源行业蓬勃发展的当下,能源招标平台正扮演着愈发重要的角色。随着能源市场的不断扩大和深化改革,招投标作为一种高效、公平的资源配置方式,在能源项目建设、设备采购以及技…

作者头像 李华
网站建设 2026/6/13 22:55:53

京东外卖全国上线“自提”功能:线上点单,到店即走更省时

12月17日讯,京东外卖宣布在全国范围内正式上线“自提”功能。用户在平台下单后,可以选择到门店自行取餐,实现“线上下单、到店自提、即提即走”的用餐方式。这一变化,正在为外卖消费带来更灵活的选择。对不少用户来说,…

作者头像 李华
网站建设 2026/6/19 13:06:07

ITSS在中小企业中的应用策略:从轻量化落地到能力成长

那是一家位于苏州的制造型中小企业,老板在会议室里拍着桌子说:“我们也要搞ITSS认证,听说那是大企业都在做的标准。”IT经理当场愣住了,他的团队只有五个人,平时一人身兼数职:一个管系统,一个管…

作者头像 李华