我的狗子-业余四足机器人笔记(2)-单腿逆解(几何法)

引入

之前不知道从哪里看到的,反解的三种方法:几何法,解析法,数值法
(1)几何法就是运用一系列的三角公式求解
(2)解析法:比如DH反解(我线代垃圾,待备研的同时好好学一下线代),想学习的话去coursera的robotics课程。b站有搬运的运动学片段:搜索关键字:台大机器人学,林沛群。
(3)数值法:需要高性能处理单元,类似迭代数值试凑

坐标系


狗子的全部解算都是基于这个坐标系方向

步骤

参数:
(1)足端坐标:X,Y,Z
(2)三杆件夹角(即反解的目标值):∠A(髋关节),∠B(大腿关节),∠C(小腿关节)
(3)3连杆长度:D,E,F
(4)中间变量:G,H,I。∠J,∠K
1. 髋关节角度求解(∠A):
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200703002911621.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNTM3MjQz,size_16,color_FFFFFF,t_70
在这里插入图片描述
在这里插入图片描述
2. 大腿关节求解(∠B):
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3. 小腿关节求解(∠C):
在这里插入图片描述
综上:已知足端坐标(X,Y,Z),便可以求得三个夹角∠A,∠B,∠C.

示例代码:

#include "math.h"   
                         
float A,B,C,J,K;    
float G,H,I,D=32,E=46,F=62;                     //狗腿参数
float Pos_cal_A(float X,float Y,float Z)        //髋关节角度反解函数
{                   
    A=atan(Y/Z)*(180/3.1415);
    return -A;                       //符号为实验所得

}       
float Pos_cal_B(float X,float Y,float Z)        //大腿关节角度反解函数
{
    G=sqrt(X*X+Z*Z+Y*Y);
    H=sqrt(G*G-X*X)-D;
    J=abs(atan(X/H)*(180/3.1415));
    I=sqrt(H*H+X*X);
    K=abs(acos((E*E+I*I-F*F)/(2*E*I))*(180/3.1415));
    if(X>0)
        B=K-J;
    else
        B=K+J;	

    return B;
}   

float Pos_cal_C(float X,float Y,float Z)         //小腿关节角度反解函数
{
    C=acos((E*E+F*F-I*I)/(2*E*F))*(180/3.1415);
    return -(180-C);                              //符号为实验所得

结语:

注意自己狗子电机的排布方式是否一样,否则需要对公式稍作修改。X,Y,Z坐标是相对于髋关节电机轴轴心的,不是相对于整体的中心

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值