在MATLAB中利用符号函数功能,通过手动输入DH参数符号矩阵 or Excel文件导入DH参数表从而获得DH符号矩阵的公式

1.前言

由于自己的专业方向,现在正在开始学习机器人相关知识。在机器人领域中(特别是机械臂之类的工业机器人),如果需要对机器人进行运动学分析,我们常常需要用到D-H矩阵(即Denavit-Hartenberg矩阵)。

然而求过DH矩阵的小伙伴都知道,我们目前基本都是通过对应的DH参数表以及DH矩阵计算公式手动计算出各个DH转换矩阵。特别是在获得DH矩阵之后一般还需进行多个DH转换矩阵的相乘等操作,从而获得我们所需的变换关系。如果我们自己手动去计算这些矩阵,实在是恶心…

考虑到人工手动计算DH矩阵的麻烦,我便想“能不能利用工具,只要我输入DH参数就能自动算出对应的DH矩阵?”

今天,我在这里将要分享给大家的是一个自己写的 matlab 函数,这个函数便是用来求DH矩阵的。函数部分介绍如下:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                     符号矩阵计算 DH 转换矩阵公式
% 1、函数功能:[Dof,A] = m_SigalMesu(DH_table_or_excelname,sheetname,range)
%    利用符号矩阵 or excel文件导入 D-H 参数表,自动获得转换矩阵
%    DH_table_or_excelname —— DH参数符号矩阵 or 具有DH参数便表的excel文件名
%    sheetname —— 只有在excel导入时候才有作用,它表示导入数据在excel文件的sheetname sheet中
%    range —— 只有在excel导入时候才有作用,它表示DH参数表范围
%    Dof —— 转换矩阵个数
%    A   —— 转换矩阵,三维数据。A(:,:,i)为求得的第i个DH矩阵
%
% 2D-H参数输入格式:
%    [连杆1长度a1 连杆1扭角aerf1 关节1偏移量d1 关节1角度theta1;
%     连杆2长度a2 连杆2扭角aerf2 关节2偏移量d2 关节2角度theta2;
%                            ....                            ]   
%    符号矩阵直接创建方法:
%    1M = sym('[a,2*b;3*a,0]');
%    2) M = str2sym('[a,2*b;3*a,0]');
%  注:sym函数可能不再适用
%
% 3、从excel导入输入格式:
%    [Dof,A] = m_SigalMesu('excelname','sheetname','range')
%    如:[Dof,A] = m_SigalMesu('dh_test.xlsx','sheet1','B2:E8')
%
%  注:该函数如果输入一个参数,则表示输入为DH参数符号矩阵;
%      如果需要从excel导入,则需要根据自己建立的参数表输入:
%      excel文件名、sheet名、甚至对应DH参数范围
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [Dof,A] = m_SigalMesu(DH_table_or_excelname,sheetname,range);

函数部分截图如下:
在这里插入图片描述

并且这样求得的矩阵还有个好处:利用matlab的符号运算功能,将获得的DH矩阵,能够直接通过matlab用于计算我们所需的变换矩阵!!!——从而不再需要我们自己手动计算 ~~~

由于创作不易,具体函数代码,大家如果需要,则到我主页下载;或留言邮箱~~~
下载网址:https://download.youkuaiyun.com/download/binheon/11180873

2.废话不多说,上代码演示效果

1. 函数使用方法一:通过excel直接导入DH参数获得DH矩阵

1)、建立一个excel文件,并将自己的DH参数按照固定格式(由于我在建这个函数时将格式给固定了,因此使用这函数时输入格式要按照固定格式来)输入到excel表中。如下例子:
在这里插入图片描述

2)、直接调用函数,输入excel名、sheet名、表格范围

%%%% 从excel文件中导入数据,并求得DH矩阵
>>[Dof,A] = m_SigalMesu('dh_test.xlsx','sheet1','B2:E8') % 输入参数为:excel文件名、文件中对应的sheet名、表范围

Dof =

     7   % DH矩阵个数

 
A(:,:,1) =
 
[ cos(theta10), -sin(theta10), 0, 0]
[ sin(theta10),  cos(theta10), 0, 0]
[            0,             0, 1, 0]
[            0,             0, 0, 1]  %1DH矩阵函数
 
 
A(:,:,2) =
 
[ cos(90), -sin(90), 0, l12*cos(90)]
[ sin(90),  cos(90), 0, l12*sin(90)]
[       0,        0, 1,           0]
[       0,        0, 0,           1] %2DH矩阵函数
 
 
A(:,:,3) =
 
[ cos(theta32), -sin(theta32), 0, l2*cos(theta32)]
[ sin(theta32),  cos(theta32), 0, l2*sin(theta32)]
[            0,             0, 1,               0]
[            0,             0, 0,               1] %3DH矩阵函数
 
 
A(:,:,
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值