Hummingbird_Joe 2023-04-15 00:15 采纳率: 81.8%
浏览 40

robot.ikine函数得到的结果为空

robot.ikine函数得到的结果为空

ML1=Link([0, 0.4967, 0, 0, 0],'modified');
ML2=Link([-pi/2, 0.18804, 0.2, 3*pi/2, 0],'modified');
ML3=Link([0, 0.17248, 0.79876, 0, 0],'modified');
ML4=Link([0, 0.98557, 0.25126, 3*pi/2, 0],'modified');
ML5=Link([0, 0, 0, pi*2, 0],'modified');
ML6=Link([0, 0, 0, pi*2, 0],'modified');
robot=SerialLink([ML1 ML2 ML3 ML4 ML5 ML6],'name','Fanuc M20ia');

%给定末端执行器的初始位置
p1=[0.617222144   0.465154659  -0.634561241  -0.254420286
    -0.727874557  0.031367208  -0.684992502  -1.182407321
    -0.298723039  0.884673523   0.357934776  -0.488241553
    0             0             0             1];
p2=[-0.504697849   -0.863267623   -0.007006569   0.664185871
    -0.599843651    0.356504321   -0.716304589   -0.35718173
    0.620860432    -0.357314539   -0.697752567   2.106929688
    0               0              0             1 ];
robot.display();
init_ang=robot.ikine(p1);
targ_ang=robot.ikine(p2);

这样得到的init_ang和targ_ang是0x0的空变量,为什么?是MATLAB版本的问题吗?我是MATLAB R2022b

  • 写回答

2条回答 默认 最新

  • 努力の小熊 2023-04-15 17:20
    关注

    问题在于ikine方法不能保证总是能找到有效的解。当这种情况发生时,它会返回一个空的结果。
    试试使用额外参数以及提供一个初始解:

    % 提供一个接近目标姿态的初始解
    init_guess = [0, -pi/4, 0, 0, 0, 0];
    
    % 调整 ikine 参数,例如增加迭代次数
    options = {'ilimit', 1000, 'alpha', 1e-6, 'stol', 1e-4, 'lambd', 0.1};
    
    init_ang = robot.ikine(p1, init_guess, options);
    targ_ang = robot.ikine(p2, init_guess, options);
    
    评论

报告相同问题?

问题事件

  • 创建了问题 4月15日

悬赏问题

  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused