2024 年华数杯全国大学生数学建模竞赛题目A题:确保机械臂末端能够准确到达目标位置,最大限度降低能耗和外部干扰力对运动精度的影响。赛题思路代码解析(附结果展示和python代码)

A 题 机器臂关节角路径的优化设计
机器臂是一种由多个连杆和关节组成的自动化装置,广泛应用于工业生产、
精密操作、危险环境作业和物流等领域。其主要作用包括提高生产效率、执行精
密操作、适应恶劣环境以及优化物流流程。当前有关机器臂的研究重点包括运动
学与动力学建模、关节角路径的优化设计以及路径规划等。这些研究旨在提升机
器臂的性能和应用范围,确保其在各种复杂任务中的高效性和精确性。其中,关
节角路径的优化设计尤为重要,它直接影着机器臂的精度和能效。
关节角路径的优化设计涉及到多个相互冲突和影响的目标。最小化输出误差
(即机器人实际动作与预期动作之间的偏差)是优化任务的首要目标,特别关注
末端误差这一关键部分。末端误差描述的是一次任务中机器臂末端部位与目标位
置之间的位置偏差。例如,在使用机器臂拾取货物时,通常更关注末端是否准确
到达货物的位置,而不太关注各关节的具体位置。
在执行一次任务的过程中,由于各个关节之间的杠杆长度不变,机器臂通常
通过调整关节角度来完成任务。而在调整关节角度的过程中会由于关节转动、机
器臂克服重力势能做功等产生各种能耗,如何在末端误差允许的范围内使得能耗
最小化,是另一个研究重点。例如,在机器臂拾取货物的过程中,末端不一定要
精准地到达目标位置的正中心,如果对于关节角路径的优化能减少能耗,微小的
误差是被允许的。
在工业、服务业等各个领域,机器臂通常需要执行多次任务。比如,在工业
生产线上,机器臂需要对在不同位置的货物依次完成抓取;为了更好地完成任务,
需要考虑末端误差和能耗,同时对底座移动路径和关节角路径进行优化设计。
六自由度机器臂在工业应用中因其极高的灵活性和多功能性而被广泛使用,
能够处理各种复杂的任务。本文中所有任务均依赖于六自由度机器臂的执行,需
解决的问题如下:
问题 1 为方便后续建模,请先绘制出零位状态( ? 1 =0 ° ? 2 = 90 ° ? 3 =0 ° ? 4 =180 ° ? 5 = 90 ° ? 6 =0 ° )的六自由度机器臂简图,机器臂初始参数(包括关
节的初始位置,角度等)如表 1 所示。假设机器臂收到一次抓取货物的任务,目
标点相对于机器臂的位置为( 1500mm 1200mm 200mm ),请建立机器臂运
动的数学模型,并以最小化末端误差为目标,对机器臂的关节角路径进行优化。
1 机器臂初始 Denavit-Hartenberg D-H )参数
问题 2 在第一问的基础上,已知机器臂质量和末端载重之和为 5kg ,各个关
节的转动惯量和平均角速度如表 2 所示。假设末端误差(末端误差指目标点坐标
与机器臂端部坐标之间的欧式距离)允许的范围为 ±200mm ,请以最小化末端误
差和能耗为目标,对机器臂的关节角路径进行优化。
2 关节转动能耗参数
关节 i /转动惯量(kg ∙ m²) /平均角速度(rad/s)
问题 3 在问题二的基础上,假设机器臂收到一次货物抓取任务,需要绕过
障碍物抓取一个货物,收到指令后,机器臂底座(移动过程中视为质点,为了简
化问题,假设移动的能耗不考虑,只考虑机器臂抓取过程中的能耗)先移动到目
标点附近,然后再进行抓取动作。机器臂底座栅格图中默认无法沿斜线移动,机
器臂底座需要回到起点。机器臂出发时的状态与问题一中的零位状态一致。机器 臂的所有关节均无法从障碍上方越过进行物体抓取。请以最小化末端误差和能耗
为目标,设计出最优底座移动路径和最优关节角路径,并将底座移动路径用栅格
图可视化。货物和障碍物的位置见 附件 .xlsx” 中的 Sheet1
问题 4 假设机器臂收到一次完整的货物抓取任务,需要绕过障碍物抓取多
个货物,请以最小化末端误差和能耗为目标,设计出最优底座移动路径和关节角
路径,并将底座移动路径用栅格图可视化。货物和障碍物的位置见 附件 .xlsx”
Sheet2 。请在结果中明确给出总末端误差和总能耗。

以下为传送门,首日优惠,学习从速!!!

以下为传送门,首日优惠,学习从速!!!

以下为传送门,首日优惠,学习从速!!!

🍞正在装饰个人主页...面包多icon-default.png?t=N7T8https://mbd.pub/o/author-bGuYmmhoYw==/work

🍞正在装饰个人主页...

摘要
机器臂的作用包括提高生产效率、执行精密操作、适应恶劣环境以及优化物流流程。当前关于机器臂的研究重点涵盖运动学与动力学建模、关节角路径优化设计以及路径规划等方面,这些研究旨在提升机器臂的性能和应用范围。然而如何确保其在各种复杂任务中的高效性和精确性,使之满足复杂的社会生产需求,一直以来成为该领域亟待解决和优化的问题之一。而其中关节角路径的优化设计尤为关键,因为它直接影响机器臂的精度和能效。在本研究中,我们采用了一种结合A*路径规划算法与遗传算法的优化方法,以解决六自由度机械臂在障碍物环境中从初始位置移动到多个目标位置的问题。通过对机械臂运动路径和关节角度的优化,我们不仅确保了机械臂末端能够准确到达目标位置,还最大限度地降低了能耗和外部干扰力对运动精度的影响。在本研究中,我们采用了一种结合A*路径规划算法与遗传算法的优化方法,以解决六自由度机械臂在障碍物环境中从初始位置移动到多个目标位置的问题。通过对机械臂运动路径和关节角度的优化,我们不仅确保了机械臂末端能够准确到达目标位置,还最大限度地降低了能耗和外部干扰力对运动精度的影响。

#生成六自由度机械臂零位状态图代码:

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

# 设置中文字体
font = FontProperties(fname='C:\\Windows\\Fonts\\simsun.ttc', size=14)

# 机器臂的 Denavit-Hartenberg 参数
# 各个关节的参数定义为[a, alpha, d, theta],单位分别为[mm, 度, mm, 度]
# 初始零位状态的关节角度
dh_params = [
    [0, 0, 600, 0],
    [300, -90, 0, -90],
    [1200, 0, 0, 0],
    [300, -90, 1200, 180],
    [0, -90, 0, -90],
    [0, -90, 0, 0]
]

def dh_transform(a, alpha, d, theta):
    """根据D-H参数计算变换矩阵"""
    alpha = np.radians(alpha)
    theta = np.radians(theta)
    return np.array([
        [np.cos(theta), -np.sin(theta) * np.cos(alpha), np.sin(theta) * np.sin(alpha), a * np.cos(theta)],
        [np.sin(theta), np.cos(theta) * np.cos(alpha), -np.cos(theta) * np.sin(alpha), a * np.sin(theta)],
        [0, np.sin(alpha), np.cos(alpha), d],
        [0, 0, 0, 1]
    ])

def forward_kinematics(dh_params):
    """计算前向运动学,返回每个关节的坐标"""
    points = [np.array([0, 0, 0, 1])]
    T = np.eye(4)
    for param in dh_params:
        T = T @ dh_transform(*param)
        points.append(T @ np.array([0, 0, 0, 1]))
    return points

# 计算每个关节的坐标
points = forward_kinematics(dh_params)

# 提取各个关节的x, y, z坐标
x_coords = [point[0] for point in points]
y_coords = [point[1] for point in points]
z_coords = [point[2] for point in points]

# 绘制机械臂简图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(x_coords, y_coords, z_coords, '-o', label='机械臂')
ax.set_xlabel('X (mm)', fontproperties=font)
ax.set_ylabel('Y (mm)', fontproperties=font)
ax.set_zlabel('Z (mm)', fontproperties=font)
ax.set_title('六自由度机械臂零位状态简图', fontproperties=font)
ax.legend(prop=font)

# 设置显示范围
ax.set_xlim([-500, 2000])
ax.set_ylim([-500, 2000])
ax.set_zlim([0, 2000])

plt.show()

以第四问为例:
起始位置与目标位置
实验开始时,我们从Excel文件的Sheet2中读取了机械臂的起始位置、目标位置以及障碍物分布。起始位置为坐标 (1, 0),目标位置分别为 (0, 0), (1, 14), (8, 10), (16, 8), (18, 1) 和 (20, 19)。障碍物的分布情况较为复杂,这为路径规划和运动优化增加了挑战。

A*路径规划算法
首先,我们应用A算法进行路径规划。该算法在初始位置与目标位置之间寻找最短路径,同时避免碰撞障碍物。A算法的启发函数基于欧几里得距离,确保搜索效率和路径优化。例如,对于目标位置 (0, 0),A*算法成功规划了一条避开障碍物的最短路径,为后续的关节角度优化提供了基础路径。

遗传算法优化
在路径规划的基础上,我们使用遗传算法对机械臂的关节角度进行优化。遗传算法的适应度函数综合考虑了末端位置误差、能耗和路径长度,目标是最小化这三者的加权和。为了确保优化结果的有效性,我们将关节角度的取值范围限制在 [−π,π][-π, π][−π,π] 内,并在个体生成和变异过程中应用归一化操作。例如,对于目标位置 (0, 0),遗传算法求得的最优关节角度分别为 [-2.6448, 2.6965, 2.2210, 3.0564, -0.6752, -2.8472],对应的最小末端误差和能耗为 1438.7998。

结果分析
我们对每个目标位置的优化结果进行了详细分析。对于目标位置 (1, 14),最优关节角度为 [0.2923, 0.3691, 0.5752, -3.0418, 2.5507, 1.7169],最小末端误差和能耗为 392.9167。对于目标位置 (8, 10),最优关节角度为 [-1.2848, 0.2054, 2.7030, -3.0521, 2.2149, 2.5610],最小末端误差和能耗为 199.6660。对于目标位置 (16, 8),最优关节角度为 [0.5436, -81.56, 12.81, 22.83, 56.7, 3.1374],最小末端误差和能耗为 113.5624。对于目标位置 (18, 1),最优关节角度为 [-1.4524, 0.7847, 0.0890, 1.9913, 0.4457, 3.0481],最小末端误差和能耗为 175.2245。对于目标位置 (20, 19),最优关节角度为 [-0.3848, 0.5505, 0.2161, -0.1115, -0.5227, -0.5093],最小末端误差和能耗为 799.6344。

结论
本研究成功应用A*路径规划算法与遗传算法,优化了六自由度机械臂在复杂障碍物环境中的运动路径和关节角度。通过对目标函数的精细设计和关节角度范围的严格限制,我们确保了机械臂末端的运动精度和能耗的最小化。未来工作可进一步优化算法参数,并探索更多实际应用场景中的性能。

现在已更新思路代码56页,更有十余组可视化和丰富的结果输出。结果可靠。需要请及时联系。

 以下为传送门,首日优惠,学习从速!!!

以下为传送门,首日优惠,学习从速!!!

以下为传送门,首日优惠,学习从速!!!

🍞正在装饰个人主页...

🍞正在装饰个人主页...

🍞正在装饰个人主页...

                                                                                                                 by DISCrete_28

                                                                                                                8.4.24.华数

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值