Algorithm——逆解算三轴机械臂运动公式得到运动坐标

三轴机械臂

博主是在淘宝上买的这个机械臂,这个机械臂应该是6轴的,但是实际上只有3个轴是最核心的,是建立坐标系所需的轴,其余的顶端三个轴都是一些附加的机械爪控制轴,就不是核心机械臂运动的轴。所以只用3个轴便可以完成机械臂在三维坐标系中的运动,三个轴如图所示。

在这里插入图片描述

三轴机械臂的控制原理及运动方程求解

因为直接上三轴立体坐标系会稍微有些复杂,所以先从垂直坐标系看,再加上一个轴就会简单很多。

垂直坐标系

在垂直坐标系中,机械臂实际只用到了轴1轴2,可以保证机械臂到达垂直平面内的点,所以我们先建立锤子坐标系,进行列写运动公式,进行求解。

建立坐标系

机械臂的顶部所到达的点(x2,y2)为我们所求的点,θ1θ2分别为机械臂轴2轴1对应舵机转动的角度。(x1,y1)为轴2对应的点的坐标,(△x2,△y2)为以(x1,y1)为原点的当前坐标。

在这里插入图片描述

列写运动方程

根据坐标系列写运动方程:

在这里插入图片描述

求解θ1θ2

真就列方程2分钟,解方程2小时。最终手算出表达式如图所示:

在这里插入图片描述

所求的θ1θ2即为我们需要的舵机转动的角度。

三轴立体空间

只需直接加上Z轴即可实现到达空间中任意一点了~Z轴不需要进行解算,不影响机械臂垂直平面内的运动,只需控制舵机到达运动对应角度即可。

单片机控制

使用PYB的小伙伴可以参考我的博客,实现机械臂的运动~

Micropython——基于单片机的三轴机械臂的控制

如果觉得好,就给苦逼解方程的博主留个赞吧~

  • 10
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
数值方法求解机械臂逆解在MATLAB中通常涉及到优化算法、线性代数和控制系统技术。在处理复杂机械臂的逆运动学问题时,由于可能存在非线性约束和局部最优解,常用的算法有梯度下降法、拟牛顿法(如Levenberg-Marquardt或Broyden-Fletcher-Goldfarb-Shanno算法)以及一些数值优化库的支持,如`fmincon`。 以下是一个简单的MATLAB代码示例,使用`fmincon`函数解决一个二维简单机械臂的逆解问题(假设两个关节): ```Matlab % 定义逆解函数(目标是找到关节角度使得末端位置为目标位置) function [cost, grad] = inverse_kinematics(theta, target_position) % 构建变换矩阵 T = homogeneous_transformation(theta(1), theta(2)); % 计算末端位置 endeffector = T * [0; 0; 0; 1]; % 代价函数,目标是最小化末端位置与目标位置的欧几里得距离 cost = norm(endeffector(1:2) - target_position); % 求导计算梯度(这里只是一个简化示例,实际可能更复杂) if nargout > 1 % 拟合的梯度计算 grad = zeros(2, 1); grad(1) = -endeffector(1) / endeffector(3); grad(2) = -endeffector(2) / endeffector(3); end end % 初始猜测的关节角度 initial_theta = [0; 0]; % 目标位置 target_position = [1; 1]; % 设置优化选项 options = optimoptions('fmincon', 'Display', 'iter', 'Algorithm', 'interior-point'); % 调用优化函数求解 [theta_optimal, fval, exitflag, output] = fmincon(@inverse_kinematics, initial_theta, [], [], [], [], [], [], target_position, options); % 打印结果 disp(['Optimal joint angles: ', num2str(theta_optimal)]) disp(['Cost: ', num2str(fval)])

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值