遨博I20协作臂关节逆解组Matlab可视化

AUBO I20协作臂关节逆解组Matlab可视化


前言

注意:请预先配置好Matlab和RTB机器人工具箱环境,本文使用matlab2022b和RTB10.04版本

工作需要,使用matlab实现对六轴机械臂的逆解八组解数据可视化。本文针对遨博AUBO I20型号的协作臂进行处理。


提示:以下是本篇文章正文内容,下面案例可供参考

1、RTB使用注意点

当图形需要显示多个机器人或者多个不同关节角时,每个plot都需要一个唯一的名称,否则,只会显示同名的最新一组调用plot的关节角。例如,现在针对同一个DH参数的臂型,有两组关节角希望显示出来,那么应该这么写才正确

matlab 复制代码
joints_type1 = [a1 b1 c1 d1 e1 f1];
joints_type2 = [a2 b2 c2 d2 e2 f2];

% robot1和robot2调用SerialLink创建时使用用一组DH参数L
% 'name'参数需要不同,作为区分。
robot1.plot(joints_type1);
hold on;
robot2.plot(joints_type2);

如果使用错误的写法,自始至终只有一个robot变量,即:

matlab 复制代码
joints_type1 = [a1 b1 c1 d1 e1 f1];
joints_type2 = [a2 b2 c2 d2 e2 f2];

robot1.plot(joints_type1);
hold on;
robot1.plot(joints_type2);

最终的效果,可以看到两个plot都是joints_type2的数据,即便是已经使用了hold on,这个问题和RTB的内部plot函数实现逻辑有关联;

2、代码与效果

2.1、完整代码

代码如下:

matlab 复制代码
clear;
clc;
warning off

% 定义连杆的DH参数
%             theta       d         a       alpha     sigma     offset
L(1) = Link([    0     0.1855      0         0          0         pi      ],'modified'); 
L(2) = Link([    0     0.177       0       -pi/2        0       -pi/2     ],'modified');
L(3) = Link([    0       0       0.803       pi         0          0      ],'modified');
L(4) = Link([    0       0       0.72        pi         0       -pi/2     ],'modified');
L(5) = Link([    0     0.127       0       -pi/2        0          0      ],'modified');
L(6) = Link([    0     0.1063      0        pi/2        0          0      ],'modified');
 
% 限制转动角度
L(1).qlim=[-359,359]/180*pi;
L(2).qlim=[-174,174]/180*pi;
L(3).qlim=[-174,174]/180*pi;
L(4).qlim=[-174,174]/180*pi;
L(5).qlim=[-174,174]/180*pi;
L(6).qlim=[-359,359]/180*pi;

aubo_robots = struct();
aubo_robots_num = 8;
robot_name_prefix = 'I20-';

% 创建机器人模型
for i = 1 : aubo_robots_num
    aubo_robots.(sprintf('robot%d', i)) = SerialLink(L, 'name', [robot_name_prefix, num2str(i)]);
    aubo_robots.(sprintf('robot%d', i)).base = transl(0, 0, 0);
    % 可选:显示D-H参数
    % aubo_robots.(sprintf('robot%d', i)).display();
end

% 逆解组的八组关节角
joints = struct();
joints.type1 = [0.412302 -1.365035 -0.573020 2.362811 -1.570796 -2.729291];
joints.type2 = [0.412302 -0.824124 0.573020 2.967940 -1.570796 -2.729291];
joints.type3 = [0.412302 -1.581334 -1.239168 -1.228631 1.570796 0.412302];
joints.type4 = [0.412302 -0.419871 1.239168 0.088243 1.570796 0.412302];
joints.type5 = [-3.029190 0.419871 -1.239168 -0.088243 -1.570796 0.112402];
joints.type6 = [-3.029190 1.581334 1.239168 1.228631 -1.570796 0.112402];
joints.type7 = [-3.029190 0.824124 -0.573020 -2.967940 1.570796 -3.029190];
joints.type8 = [-3.029190 1.365035 0.573020 -2.362811 1.570796 -3.029190];

% 分为二行四列的子图显示
for i = 1:aubo_robots_num
    row = ceil(i / 4) - 1;
    col = mod(i - 1, 4) + 1;
    subplot(2, 4, row * 4 + col);
    aubo_robots.(sprintf('robot%d', i)).plot(joints.(sprintf('type%d', i)), 'view', [51, 38]);
    hold on;
end
hold off;
grid on;

2.2、运行效果

运行效果截图:

总结

八组解可视化,可以看出对应 左/右手位 * 肘关节高/低于髋关节 * 腕关节是否翻转。想起高中时数学老师常说的一个词 数形结合 ,可视化确实方便了不少对数据的分析。

相关推荐
zh路西法22 分钟前
【玩转VLA具身智能机械臂】(二):MoveIt2 运动规划——架构、配置与 C++ 上手
c++·机械臂·路径规划·vla·planner·moveit2
民乐团扒谱机1 小时前
【微实验】物理启发神经网络(PINN):当AI学会遵守物理定律(附matlab代码))
人工智能·神经网络·matlab
BYSJMG4 小时前
计算机毕业设计选题推荐:基于大数据的心脏病风险数据可视化与分析(Hadoop+Spark+PySpark)
大数据·hadoop·信息可视化·数据分析·spark·课程设计
NoteStream5 小时前
MATLAB绘制带置信区间的折线散点图(科研绘图模板)
开发语言·matlab
简简单单做算法6 小时前
基于遗传算法和贝叶斯联合优化的BiLSTM(GA-BO-BiLSTM)一维时间序列预测算法matlab仿真
matlab·一维时间序列预测·ga-bo-bilstm·遗传和贝叶斯联合优化
又折桃枝换酒钱13 小时前
VisCoder2:构建多语言可视化编码智能体(翻译与解读)
人工智能·信息可视化
kaiyou202614 小时前
工商管理专业工作后,值得关注的8个职业证书(分梯队解读)
数据分析
CHENGQUAN_kenan15 小时前
佛山亚马逊卖家出口退税合规指南|9610免税、一般贸易退税、无票采购、申报误区全覆盖
大数据·经验分享·笔记·百度
机器学习之心16 小时前
MATLAB 实战复盘:集合覆盖模型 + 线性加权和法,搞定应急物流中心选址
matlab·集合覆盖模型·线性加权和法·应急物流中心选址