
推理大模型的应用——DeepSeek_R1解决机械臂DH模型数学推理的实例
从给出的推理过程,显然已经达到了一个专业级的水平,虽然最终给出的答案有出入,但是已经可以感觉到,推理模型的威力,只要好好调教(有时间再深入研究),应该能够准确解决。或者是下一个R2直接就能做到。
一、引言
机械臂的Denavit-Hartenberg(DH)模型是机器人运动学分析的核心工具,但其参数推导过程复杂且易错。传统方法依赖人工经验,需严格遵循坐标系对齐规则,并处理零位偏移、多轴变换等问题。近年来,基于符号计算和规则推理的大模型技术(如DeepSeek_R1)为解决此类数学难题提供了新思路。本文通过一个机械臂DH参数推导的实例,展示如何结合代数规则与大模型推理能力,实现复杂数学问题的自动化求解。
众所周知,DeepSeek_R1中国制造,已经干翻了OpenAI o1,成为网红。
二、技术路线(计划)
DeepSeek_R1的推理逻辑基于以下核心步骤:
- 大模型自我学习:通过阅读DH建模方法论文,自动总结学习数学推导规则。
- 开启深度推理模式,安装学习到的数学规则对已知条件进行数学推理
- 总结推理过程,根据推理过程生成python代码
三、操作过程
Step1.开启深度思考模式
登陆注册DeepSeek,开启推理模式。
Step2.上传论文学习
并上传我们之前博客(python机器人Agent编程——实现一个机器人DH参数自动生成Agent(上))讲到的一篇DH数学法建模的论文:
Step3.Prompt指令
输入了如下Prompt:
根据文章中的DH推导方法,列出推理原则,并解出以下原始变换:Tz(L1)Rz(q1)Ry(q2)Ty(L2)Tz(L3)Ry(q3)Tx(L6)Ty(L4)Tz(L5)Rz(q4)Ry(q5)Rz(q6)
输入指令后,DeepSeek_R1开启暴走模式,启动思维链左右手互博,
没等涮到第6个爆肚的功夫,就吐出解答过程:
(1)首先总结了数学推导规则
(2)截取了推导思路
(3)给出了答案
从给出的推理过程,显然已经达到了一个专业级的水平,虽然最终给出的答案有出入,但是已经可以感觉到,推理模型的威力,只要好好调教(有时间再深入研究),应该能够准确解决。或者是下一个R2直接就能做到。
Step4.编写python程序
我又叫他根据学到的推导规则,编写出一个python程序:
不到涮第三个爆肚时,他突出了python代码:
import sympy as sp
from collections import defaultdict
def derive_dh_parameters(transform_str):
"""
将原始变换序列转换为Denavit-Hartenberg参数。
输入格式示例: "Tz(L1)Rz(q1)Ry(q2)Ty(L2)Tz(L3)Ry(q3)Tx(L6)Ty(L4)Tz(L5)Rz(q4)Ry(q5)Rz(q6)"
"""
# 解析变换序列
tokens = []
current_token = ""
for c in transform_str:
if c in ['T', 'R'] and current_token != "":
tokens.append(current_token)
current_token = ""
current_token += c
tokens.append(current_token)
# 初始化操作列表
operations = []
for token in tokens:
op_type = token[0]
axis = token[1]
params = token[2:].strip("()")
operations.append((op_type, axis, params))
# 步骤1: 移动常量项到右侧
def move_constants_right(ops):
# 分离常量和变量操作
constants = []
variables = []
for op in ops:
if 'q' in op[2]: # 假设变量包含'q'
variables.append(op)
else:
constants.append(op)
return variables + constants
operations = move_constants_right(operations)
# 步骤2: 替换非Z轴操作为Z轴操作
substituted_ops = []
for op in operations:
op_type, axis, param = op
if op_type == 'R' and axis != 'z':
# Ry(q) → Rx' Rz(q) Rx
substituted_ops.extend([
('R', 'x', "-pi/2"),
('R', 'z', param),
('R', 'x', "pi/2")
])
elif op_type == 'T' and axis != 'z':
# Ty(L) → Rx' Tz(L) Rx
substituted_ops.extend([
('R', 'x', "-pi/2"),
('T', 'z', param),
('R', 'x', "pi/2")
])
else:
substituted_ops.append(op)
# 步骤3: 合并相邻的同轴操作
merged_ops = []
current_op = None
for op in substituted_ops:
if current_op and current_op[:2] == op[:2]:
# 合并平移或旋转
current_param = f"({current_op[2]} + {op[2]})"
current_op = (op[0], op[1], current_param)
else:
if current_op:
merged_ops.append(current_op)
current_op = op
merged_ops.append(current_op)
# 步骤4: 转换为DH参数
dh_table = []
for op in merged_ops:
op_type, axis, param = op
if op_type == 'R' and axis == 'z':
theta = param
d = "0"
a = "0"
alpha = "0"
elif op_type == 'T' and axis == 'z':
d = param
a = "0"
alpha = "0"
elif op_type == 'T' and axis == 'x':
a = param
elif op_type == 'R' and axis == 'x':
alpha = param
# 将参数组合为DH行
dh_table.append({
'theta': theta,
'd': d,
'a': a,
'alpha': alpha
})
return dh_table
# 示例应用
transform_str = "Tz(L1)Rz(q1)Ry(q2)Ty(L2)Tz(L3)Ry(q3)Tx(L6)Ty(L4)Tz(L5)Rz(q4)Ry(q5)Rz(q6)"
dh_params = derive_dh_parameters(transform_str)
# 打印结果
print("Generated DH Parameters:")
for i, param in enumerate(dh_params, 1):
print(f"Link {i}:")
print(f" θ = {param['theta']}")
print(f" d = {param['d']}")
print(f" a = {param['a']}")
print(f" α = {param['alpha']}\n")
运行代码,没有报错,但是火候还差点,须要再改进改进。不过这已经很有感觉了。
四、小结
经过本次尝试,虽然没有得到准确的解答,但是足以看到推理大模型给我们科研工作带来的全新技术思路,作为科技博主,未来写文章和代码的工作流程,须要转变,用大模型提高产出,如何找准自己的定位和角色,如何合理准确利用这个神器,如何赋能日常工作,是一个很有价值的课题。
蛇年将至,祝大家蛇来运转,宏图大展!
-----------------本篇完------------------
PS.扩展阅读
————————————————————————————————————————
对于python机器人编程感兴趣的小伙伴,可以进入如下链接阅读相关咨询
ps1.六自由度机器人相关文章资源
(1) 对六自由度机械臂的运动控制及python实现(附源码)
ps2.四轴机器相关文章资源
(1) 文章:python机器人编程——用python实现一个写字机器人
(2)python机器人实战——0到1创建一个自动是色块机器人项目-CSDN直播
(3)博文《我从0开始搭建了一个色块自动抓取机器人,并实现了大模型的接入和语音控制-(上基础篇)》的vrep基础环境
(3)博文《我从0开始搭建了一个色块自动抓取机器人,并实现了大模型的接入和语音控制-(上基础篇)》的vrep基础环境
(4)实现了语音输入+大模型指令解析+机器视觉+机械臂流程打通
ps3.移动小车相关文章资源
(1)python做了一个极简的栅格地图行走机器人,到底能干啥?[第五弹]——解锁蒙特卡洛定位功能-CSDN博客
(2) 对应python资源:源码地址
(3)python机器人编程——差速AGV机器、基于视觉和预测控制的循迹、自动行驶(上篇)_agv编程-CSDN博客
(4)python机器人编程——差速AGV机器、基于视觉和预测控制的循迹、自动行驶(下篇)_agv路线规划原则python-CSDN博客
对应python及仿真环境资源:源码链接
ps3.wifi小车控制相关文章资源
web端配套资源源代码已经上传(竖屏版),下载地址
仿真配套资源已经上传:下载地址
web端配套资源源代码已经上传(横屏版),下载地址
更多推荐
所有评论(0)