Adams模型导入
导入模型为parasolid所产生文件
文件->导入->文件类型->Parasolid->读取文件选择文件路径->模型名称右键->模型->创建
添加转动副
连接->运动副->旋转副->右击主体1选择->右击主体2选择->在关节出设置坐标系
添加驱动
驱动->转动驱动
设置状态变量
Adams快捷键
T+左键 平动模型
R+左键 旋转模型
Z+左键 动态缩放
F或Ctrl+F 以最大比例全面显示模型
matlab
足端轨迹绘制
参考了B站大佬视频
函数
axis
axis( [xmin xmax ymin ymax] ): 设置当前坐标轴 x轴 和 y轴的限制范围
axis equal: 设置屏幕高宽比,使得每个坐标轴的具有均匀的刻度间隔
hold on
hold on: 主要是用于添加新绘图的时候保留当前绘图
linspace
linspace: Matlab中的均分计算指令,用于产生x1,x2之间的N点行线性的矢量。
eg:X=linspace(5,100,20)将输出:
X =5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
length
length: 函数主要是求数组元素的个数
绘制代码
axis([-3 5 -2 8]);
axis equal;
hold on;
x=0:0.01:3;xi=x;
yi=-0.5*xi.*(xi-3);
plot(xi,yi,'color','r');%足端轨迹
yz=linspace(6,6,length(x));
plot([x,3],[yz,6],'color','r');%上端横线
%x1=0:0.2:3;%上端移动
%x3=x1;%上端移动
x1=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];%上端不动
x3=0:0.2:3;%上端不动
y1=linspace(6,6,length(x1));
pp=spline(xi,yi);
y3=ppval(pp,x3);
[x2,y2]=solvepoint2(x1,y1,x3,y3);
for i=1:length(x1)
hold on;
plot([x1(i),x2(i),x3(i)],[y1(i),y2(i),y3(i)],'color','b');
pause(0.1);
end
hold on;
执行效果
%% 支撑相
clear;clc;clf;
axis equal;
axis([-6 5 -2 8]);% 坐标范围
hold on;
grid; %xyzlabel;
plot([0],[0],'Marker','diamond');
plot([-3],[6],'Marker','diamond');
plot([3],[6],'Marker','diamond');
text(0,0,' 支撑点','color','b');
text(-3,6,' 初始髋关节点','color','b');
text(3,6,' 末髋关节点','color','b');
x1=-3:0.5:3;
y1=linspace(6,6,length(x1));
x3=zeros(length(x1),1)';y3=zeros(length(x1),1)';
plot([x1(1),x1(length(x1))],[y1(1),y1(length(y1))],'color','r');
% [x2,y2]=solvepoint2(x1,y1,x3,y3);
for i=1:length(x1)
hold on;
[x2(i),y2(i)]=solvepoint2(x1(i),y1(i),x3(i),y3(i));
plot([x1(i),x2(i),x3(i)],[y1(i),y2(i),y3(i)],'color','b');
% axis([-6 5 -2 8]);
pause(0.1);
end
%% 摆动相
clear;clc;clf;
axis equal;
axis([-3 15 -1 7]);% 坐标范围
hold on;
grid;
%xyzlabel;
plot([0],[0],'Marker','diamond');text(0,0,' 初支撑点','color','b','HorizontalAlignment','right');
plot([9],[6],'Marker','diamond');text(9,6,' 末髋关节点','color','b');
plot([3],[6],'Marker','diamond');text(3,6,' 初髋关节点','color','b','HorizontalAlignment','right');
plot([12],[0],'Marker','diamond');text(12,0,' 末支撑点','color','b');
a=6; b=6;
x1=0.5*a:0.5:1.5*a; y1=linspace(b,b,length(x1));
step_x3=2*a/(length(x1)-1);
x3=0:step_x3:2*a; y3=-0.03*x3.*(x3-2*a);
plot([x1(1),x1(length(x1))],[y1(1),y1(length(y1))],'color','r');
plot(x3,y3,'color','r');
for i=1:length(x1)
hold on;
[x2(i),y2(i)]=solvepoint2(x1(i),y1(i),x3(i),y3(i));
plot([x1(i),x2(i),x3(i)],[y1(i),y2(i),y3(i)],'color','b');
% axis([-6 5 -2 8]);
pause(0.1);
end
%%
绘制过程所用到函数
function [x2,y2]=solvepoint2(x1,y1,x3,y3)
l1=4;l2=4;% 两条腿长
l3=sqrt((x1-x3).*(x1-x3)+(y1-y3).*(y1-y3));
theta3=acos((l2.*l2+l3.*l3-l1.*l1)/(2*l2.*l3));
theta2=acos((l1.*l1+l2.*l2-l3.*l3)/(2*l1.*l2));
if x1 > x3
theta_need=theta2-(pi-atan((y1-y3)./(x1-x3))-theta3);
elseif x1==x3
theta_need=theta2-(pi/2-theta3);
else
theta_need=theta2-(atan((y1-y3)./(x3-x1))-theta3);
end
x2=x1-l1*cos(theta_need);
y2=y1-l1*sin(theta_need);
end
Simulink仿真
B站参考视频
模型导入
- 模型下载
宇树科技官方CAD下载地址 - 利用UG完成零件坐标设置如下图
身体
左上肢
注意z轴与旋转轴重合
右上肢
髋关节
小腿
4. 模型导入simulink
1. smnew快捷键打开物理建模
产生一平面
导入3D模型,拖动至simulink界面中(Ctrl+R可旋转)
双击file solid
注:由于宇树科技官方结构坐标系方向设置遇到障碍,故改用视频配套结构
仿真结果
身体上各个关节位置坐标转换
仿真后可观察到坐标对应成功
腿部模型导入
Ctrl+G封装
添加旋转副
关节运动方式改为角度输入
同侧腿一致,可以直接复制,但是要改一个参数
加入力反馈
下载对应版本解压并添加到目录
仿真会报错
此处改为warning
文章来源:https://www.toymoban.com/news/detail-412060.html
加入六自由度变化
仿真结果文章来源地址https://www.toymoban.com/news/detail-412060.html
到了这里,关于四足机器人仿真 Matlab的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!