机器人学导论-第三章MATLAB练习答案

在这里插入图片描述
AltAlt
在这里插入图片描述

clear;clc;
syms theta1 theta2 theta3 l1 l2 l3%符号函数,真的好用
L(1) = Link([theta1 0 0 0],'modified');
L(2) = Link([theta2 0 l1 0],'modified');
L(3) = Link([theta3 0 l2 0],'modified');
Three_Link = SerialLink(L,'name','threelink');
Three_Link.display;

程序运行结果:
在这里插入图片描述

在这里插入图片描述

clc;clear;
syms theta1 theta2 theta3 theta4 l1 l2 l3
%齐次变换矩阵
syms alphai_1 ai_1 di thetai
i_1iT=[cos(thetai) -sin(thetai) 0 ai_1
    sin(thetai)*cos(alphai_1) cos(thetai)*cos(alphai_1) -sin(alphai_1) -sin(alphai_1)*di
    sin(thetai)*sin(alphai_1) cos(thetai)*sin(alphai_1) cos(alphai_1) cos(alphai_1)*di
    0 0 0 1];
%R = subs(S, old, new) 利用new的值代替符号表达式中old的值
T01=subs(i_1iT,[alphai_1 ai_1 di thetai],[0 0 0 theta1])
T12=subs(i_1iT,[alphai_1 ai_1 di thetai],[0 l1 0 theta2])
T23=subs(i_1iT,[alphai_1 ai_1 di thetai],[0 l2 0 theta3])
T3H=subs(i_1iT,[alphai_1 ai_1 di thetai],[0 l3 0 0])

输出结果:
在这里插入图片描述

利用工具箱函数测试:

syms theta1 theta2 theta3 theta4 l1 l2 l3
L(1) = Link([theta1 0  0  0 0],'modified');
L(2) = Link([theta2 0  l1 0 0],'modified');
L(3) = Link([theta3 0  l2 0 0],'modified');
L(4) = Link([0 0  l3 0 1],'modified');%本文假定夹爪连接为移动关节,动关节也可;
T01 = L(1).A(theta1)%A(jlist,q)输入关节的编号jlist和对应的角度q,输入变换矩阵
T12 = L(2).A(theta2);
T23 = L(3).A(theta3);
T3H = L(4).A(theta4);

在这里插入图片描述

clc;clear;
syms theta1 theta2 theta3 theta4 l1 l2 l3
%齐次变换矩阵
syms alphai_1 ai_1 di thetai
i_1iT=[cos(thetai) -sin(thetai) 0 ai_1
    sin(thetai)*cos(alphai_1) cos(thetai)*cos(alphai_1) -sin(alphai_1) -sin(alphai_1)*di
    sin(thetai)*sin(alphai_1) cos(thetai)*sin(alphai_1) cos(alphai_1) cos(alphai_1)*di
    0 0 0 1];
%R = subs(S, old, new) 利用new的值代替符号表达式中old的值
T01=subs(i_1iT,[alphai_1 ai_1 di thetai],[0 0 0 theta1]);
T12=subs(i_1iT,[alphai_1 ai_1 di thetai],[0 l1 0 theta2]);
T23=subs(i_1iT,[alphai_1 ai_1 di thetai],[0 l2 0 theta3]);
T3H=subs(i_1iT,[alphai_1 ai_1 di thetai],[0 l3 0 0]);
T03=T01*T12*T23
T0H=T01*T12*T23*T3H
T03i=subs(T03,[theta1 theta2 theta3],[0 0 0])
T0Hi=subs(T0H,[theta1 theta2 theta3],[0 0 0])
T03ii=subs(T03,[theta1 theta2 theta3],[10 20 30])
T0Hii=subs(T0H,[theta1 theta2 theta3],[10 20 30])
T03iii=subs(T03,[theta1 theta2 theta3],[10 20 30])
T0Hiii=subs(T0H,[theta1 theta2 theta3],[10 20 30])

结果太长,自己运行查看吧

利用工具箱函数测试:

syms theta1 theta2 theta3 L1 L2 L3
L(1) = Link([theta1 0  0 0 0],'modified');
L(2) = Link([theta2 0  4 0 0],'modified');
L(3) = Link([theta3 0  3 0 0],'modified');
L(4) = Link([0      0  2 0 1],'modified');
Three_Link = SerialLink(L,'name','threelink');
%用户输入均为角度
theta1 = input ('Please enter theta1 = ');
theta2 = input ('Please enter theta2 = ');
theta3 = input ('Please enter theta3 = ');
%只要有一个输入为空,就结束程序
empty = isempty(theta1)+isempty(theta2)+isempty(theta3);
if empty>0
    fprintf('Error!');
else     
    digits(4);%设置只保留小数点后4位
    T = Three_Link.fkine([theta1,theta2,theta3,0]);%此时为分数
    A = vpa(T)%变换为小数输出
end

测试结果:
在这里插入图片描述

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 机器人学导论第三章是关于矩阵和向量运算的内容。MATLAB是一种常用的数学软件,用于进行矩阵和向量的计算和处理。以下是该章的一些MATLAB习题解答: 1. 假设有两个向量A=[1, 2, 3]和B=[4, 5, 6],求它们的点积和叉积。 解答: ``` A = [1, 2, 3]; B = [4, 5, 6]; dot_product = dot(A, B); cross_product = cross(A, B); ``` 2. 定义一个3x3的单位矩阵。 解答: ``` I = eye(3); ``` 3. 计算以下矩阵的乘积: ``` A = [1, 2, 3; 4, 5, 6; 7, 8, 9] B = [9, 8, 7; 6, 5, 4; 3, 2, 1] ``` 解答: ``` product = A * B; ``` 4. 对以下矩阵进行转置和求逆: ``` A = [1, 2, 3; 4, 5, 6; 7, 8, 9] ``` 解答: ``` transpose = transpose(A); inverse = inv(A); ``` 通过在MATLAB中使用这些函数,可以方便地进行矩阵和向量运算,用于机器人学中的计算和分析。 ### 回答2: 机器人学导论第三章MATLAB习题主要涉及机器人的运动学以及转换矩阵的计算。以下是一些示例习题的解答: 1. 已知机器人 DH 坐标系参数为:a = [0, 1, 1, 0.5], alpha = [0, 0, 0, 0], d = [0, 0, 0, 1], theta = [0, pi/2, -pi/2, 0],请编写 MATLAB 代码计算机器人从基座标系到末端执行器坐标系的正运动学变换矩阵。 解答: ```MATLAB a = [0, 1, 1, 0.5]; alpha = [0, 0, 0, 0]; d = [0, 0, 0, 1]; theta = [0, pi/2, -pi/2, 0]; n = length(a); T = eye(4); % 初始化变换矩阵为单位矩阵 for i = 1:n % 计算当前关节的变换矩阵 A = [ cos(theta(i)), -sin(theta(i))*cos(alpha(i)), sin(theta(i))*sin(alpha(i)), a(i)*cos(theta(i)); sin(theta(i)), cos(theta(i))*cos(alpha(i)), -cos(theta(i))*sin(alpha(i)), a(i)*sin(theta(i)); 0, sin(alpha(i)), cos(alpha(i)), d(i); 0, 0, 0, 1 ]; % 更新总的变换矩阵 T = T * A; end T % 输出正运动学变换矩阵 ``` 2. 对于一个平面二自由度机器人,其末端执行器的位置分别为 x = t, y = sin(t),请编写 MATLAB 代码绘制机器人的末端执行器的轨迹。 解答: ```MATLAB t = 0:0.01:10; % 时间范围 x = t; % x 轴位置 y = sin(t); % y 轴位置 figure; plot(x, y, 'b-'); % 绘制蓝色曲线 hold on; plot(x(1), y(1), 'ro'); % 标记起始点为红色 plot(x(end), y(end), 'go'); % 标记结束点为绿色 xlabel('x'); ylabel('y'); title('末端执行器轨迹'); grid on; ``` 以上是机器人学导论第三章MATLAB习题的部分示例解答。通过编写代码并求解习题,我们可以学习和掌握机器人的运动学以及MATLAB机器人学中的应用。 ### 回答3: 机器人学导论第三章matlab习题,故需要使用matlab编程进行解答。以下是针对这些习题的简要回答。 第一题要求使用matlab计算机器人坐标系的旋转矩阵。可以使用matlab内置函数`rotx`、`roty`和`rotz`来分别计算绕x、y和z轴的旋转矩阵。通过调用这些函数,并输入相应的角度,即可计算得到机器人坐标系的旋转矩阵。 第二题是关于转换矩阵的计算。题目给出了机器人的DH参数,并要求计算机器人末端执行器的位姿。可以先使用`dh2matrix`函数将DH参数转化为转换矩阵,然后通过乘法运算将各个转换矩阵相乘得到末端执行器的位姿矩阵。 第三题是关于通过已知机器人结构的转换矩阵和末端执行器的位姿,求解机器人的关节角度。可以使用matlab内置函数`matrix2dh`将已知机器人结构的转换矩阵转化为DH参数,然后通过反解DH参数和末端执行器的位姿,即可求解出机器人的关节角度。 这些习题要求对matlab编程语言有一定的了解,并且熟悉机器人学中的基本概念与原理。解答这些习题可以帮助加深对机器人学的理解,并且提高matlab编程的能力。同时,这些习题也可以为以后的机器人学研究与实践提供基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值