Arduino白泽四足机器人——matlab逆运动学求解
基于“白泽”四足机器人足端轨迹的插值方法
目录
1 应用背景
2 模型建立
3 MATLAB对足端轨迹进行拟合插值
4 结果与分析
5 matlab逆运动学程序
1 应用背景
近年来,机器人领域得到了大力的发展,多技术融合赋予了机器人更多的使命,其中足式机器人凭借其在探险、军事等领域的优越运动表现而快速的进入了人们的视野。感知系统(例如视觉识别,超声波传感测距仪以及红外设备等) 的加入使足式机器人具备独立户外工作的能力,它们在行进过程中可以识别出大型障碍物并规划新的路径进行避障,但是很多小型障碍物却无法被它准确的侦测到,这就要求足式机器人能够稳定踏上或者跨越这些不易察觉的小型障碍物,具有最基本的跨越小型障碍物的能力.足端轨迹规划的优劣对机器人跨越障碍方面有重要的影响,使用何种方式规划足端轨迹,足端轨迹闭环曲线线形的控制方式等就成为了研究足式机器人的基础内容。在这里,我们通过三次样条插值的方式,使得机器人足端轨迹的规划足够任意,能够走出各种预期轨迹。
该机器人是我从去年开始开发并维护的一款arduino开源四足机器人,这款机器人将会得到长期的维护和改进,后期会基于ros增加更丰富的功能。
2 模型建立
首先,需要先建立solidworks模型,机器人腿部共有8个自由度,单腿有两个自由度,头部可进行自定义扩展。主控板是一款基于国产lgt8f328p芯片的arduino nano开发板,由一节4.8V可充电电池供电。下图为建好的solidworks模型:
图2-1 机器人solidworks模型
然后,我们可以根据机器人的3D模型,建立DH参数表,通过DH参数模型推导机器人的正逆运动学方程。不过,在得到DH参数表之前,我们先去将模型的坐标系建立好,然后导出urdf模型。
图2-2 Solidworks建立坐标系导出urdf模型
导出urdf模型后,将其加载进入matlab观察坐标系之间的关系:
图2-3 urdf模型导入matlab
上图为加载进matlab的urdf模型,这个是整个机器人的坐标系,而分析四足机器人,我们只要进行单腿运动学分析即可。
因为四足机器人的运动学分析以及运动方程的建立主要基于单腿运动学。因此,我们只需先对单腿进行DH建模并在matlab中进行轨迹插值即可,通过步态相位差可以很方便的将单腿的运动转换到其他腿上达到控制机器人的目的。
单腿的DH参数如下:
表2-1 机器人单腿DH参数表
对机器人进行单腿DH建模(标准DH参数)并进行运动学分析:
图2-4 matlab里对机器人单腿DH建模程序
图2-5 matlab里对机器人单腿DH建模
3 MATLAB对足端轨迹进行拟合插值
为了控制机器人足端能够任意走出我们想要的轨迹,需要通过事先找好轨迹控制点,然后通过插值的方式,插值得到轨迹上其他点的坐标。这样只要我们改变控制点,就可以足够随意的控制足端轨迹,以得到多组机器人足端运动轨迹,通过机器人逆运动学得到每种足端轨迹对应的机器人运动关节变量数据,然后测试每组关节变量数据在不同地形上的行走性能,通过性能的对比,得出在各种不同地形下,机器人最优足端轨迹。
Matlab单腿DH模型取点:
图3-1 matlab里对足端取点
我们在如下图中,构建一组足端轨迹控制点,用这一组点来控制足端轨迹的轮廓,如下图蓝色小圆圈所示为构建的点:
图3-2 完成一组足端轨迹控制点的获取
然后,通过三次样条插值的方式,得到整条轨迹和一组坐标数据,插值梯度可以任意定义,如下图所示:
通过这组插值之后得到的点坐标数据,对机器人单腿用逆运动学计算关节变量,如下图:
图3-5 插值后单腿足端平滑轨迹
通过逆运动学得来的关节变量,再对机器人单腿进行运动学正解,将关节变量赋值给各个关节,并实时展现其过程,观察机器人运动的足端轨迹是否符合插值结果:
通过逆解得来的数据进行正解展示并验证插值结果,四足机器人单腿运动4个时刻的步态帧如下图所示,可以看到每一帧图片中,足端坐标和我们插值结果完美重合,机器人足端走出了预期的轨迹:
4 结果与分析
在基于ubuntu系统并安装了ROS的虚拟机上,编写ROS节点,如下图所示:
若行走步态与预期一致且表现稳定,我们可以将机器人放下来进行步行测试,如下图为在实验室地板进行步行测试:
图4-5 实时步行测试
结果与分析:
通过步行测试发现,足端可以走出我们想要的轨迹,可见matlab插值在四足机器人轨迹控制与规划方面还是非常方便的。通过事先规划好轨迹控制点,通过一组点控制好机器人足端的轨迹轮廓,然后用插值的方式丰富轨迹上点的数量,这样我们能够控制机器人足端尽可能契合预期运动轨迹,同时减少舵机抖舵对机身平衡的影响。
在机器人前进过程中通过对机身上IMU信号的采集,可以分析出这种足端轨迹的优劣,以最终得到满意的足端轨迹。这充分显示了matlab对于缩短开发机器人项目的周期,加快产品开发上的优越性。
5 matlab逆运动学程序
clear;
clc;
theta_0=[];
% 勾画机器人腿部关节
q1_lim = [-pi/2,0];
L1 = Link('d', 0, 'a',45, 'alpha', 0,'offset',0);L2 = Link('d',0 , 'a', 45 , 'alpha', 0,'offset',0);
quadruped_robot=SerialLink([L1 L2],'name','quadruped_robot_liuzhitong');
quadruped_robot.plot([0 0]);
L1.qlim = q1_lim;
% T4=quadruped_robot.fkine([pi/3,pi/5,pi/7,pi/4]);
axis equal;
%机器人足端轨迹控制点
teach(quadruped_robot);
view([0,0,1]);%XY平面的投影看
hold on;
x = [0,-6.630,-20.091,-40.761];
y = [-57.368,-52.484,-46.427,-56.102];
x1=[-40.761,0];
y1=[-56.102,-57.368];
xx=0:-4:-40.761;
xx1=-40.761:4:0;
YY=spline(x,y,xx);
YY1=spline(x1,y1,xx1);
plot(x,y,'o',xx,YY,'-');
hold on;
plot(x1,y1,'o',xx1,YY1,'-');
hold on;xy_ik=[xx,xx1;YY,YY1];for i = 1:22X = xy_ik(1,i);Y = xy_ik(2,i);T_4 = [1 0 0 X; 0 1 0 Y;0 0 1 0;0 0 0 1];qik = quadruped_robot.ikine(T_4,'mask',[1 1 0 0 0 0]);%若没有XYZ三个方向的rotation自由度,应构造一个mask矩阵[1 1 1 0 0 0]quadruped_robot.plot(qik);%展现逆解的动态过程qik = qik*180/pi;%转化成度数表示theta_0 = [theta_0;qik];%将每组数据存起来pause(0.2);
% alph1 = 180-70-qik(2);
% thata_1 = acos((15^2+35.96^2+25^2-2*35.96*25*cos(pi-alph1*pi/180)-40^2)/(2*15*(sqrt(35.96^2+25^2-2*35.96*25*cos(pi-alph1*pi/180)))))+...acos((l1^2+l1^2+l2^2-2*l1*l2*cos(pi-alph1*pi/180)-l1^2)/2*l1*(sqrt(l1^2+l2^2-2*l1*l2*cos(pi-alph1*pi/180))));
end
测试视频:
arduino 3D打印四足机器人
Arduino白泽四足机器人——matlab逆运动学求解相关推荐
- 【机器人学、机器人控视觉与控制】四足机器人MATLAB仿真
文章目录 [机器人学.机器人控视觉与控制]四足机器人MATLAB仿真 1 创建一条机器人腿 2 单腿运动 3 四腿运动 [机器人学.机器人控视觉与控制]四足机器人MATLAB仿真 我们的目标是创建一个 ...
- 白泽四足机器人ROS+rviz仿真(二)整体行走步态
导航在这里:白泽四足机器人导航贴 目录 导航在这里:白泽四足机器人导航贴 源码: 整体项目文件地址: 先看效果: 白泽四足机器人ROS+rviz前进行走 源码: #include <iostre ...
- 白泽四足机器人Opencat玩法之——校准关节和陀螺仪
导航在这里:白泽四足机器人导航贴 关节校准一定要连接电池! 基于上面已经上传了WriteInstinct.ino程序的基础上,打开串口监视器,可以看到如下输出: 注意:下方红框两个参数要设置与图片一致 ...
- 四足机器人—matlab机器人工具箱DH建模
目录 基于matlab机器人工具箱的四足机器人DH建模 模型展示 代码 参考博客 基于matlab机器人工具箱的四足机器人DH建模 模型展示 代码 %2021/10/28四足机器人DH建模 %碎弧的星 ...
- RobWork框架编程(2):使用雅可比数值迭代算法对机器人进行逆运动学求解
在上一篇博客文章中,我们介绍了如何创建一个使用RobWork机器人框架的工程,以及如何加载机器人设备文件. 接下来,在本篇博客中,我们将讨论如何使用RobWork求解UR3机器人的运动学逆解,使用的方 ...
- 四足机器人单腿逆运动学解-几何方法
四足机器人单腿逆运动学解-几何方法 视角分解 静止状态 运动状态 运动学逆解 求解gamma角 求解beta角 求解alpha角 matlab代码实现 古月居<四足机器人控制与仿真入门>学 ...
- 四足机器人(二)---运动学逆解和步态规划
四足机器人(二)---运动学逆解和步态规划 运动学逆解 步态规划 MATLAB仿真 运动学逆解 其实运动学分为运动学正解和运动学逆解,二者有什么区别呢?因为在四足机器人中用的是12个舵机,所以运动学正 ...
- 实例10:四足机器人运动学逆解可视化与实践
实例10: 四足机器人运动学逆解单腿可视化 实验目的 了解逆运动学的有无解.有无多解情况. 了解运动学逆解的求解. 熟悉逆运动学中求解的几何法和代数法. 熟悉单腿舵机的简单校准. 掌握可视化逆向运动学 ...
- 【四足机器人】学习笔记 单腿逆运动学和站立姿态控制
[四足机器人]学习笔记 单腿逆运动学和站立姿态控制 一.四足机器人单腿逆运动学原理 二.四足机器人站立姿态控制原理 近期,博主在古月居学习关于四足机器人的相关部分知识,从阳炼老师的四足机器人控制与仿真 ...
最新文章
- 老李分享:shell 监控cpu,memory,load average 1
- (转载)Python函数参数传递机制(超级详细)
- Kafka 源码解析:Server 端的运行过程
- springboot接收多对象_springboot实现邮件发送
- 【BZOJ 3442】 3442: 学习小组 (最大费用流)
- 使用mutt和msmtp发送邮件
- 七夕表白代码合集,建议收藏!!!
- 同一个服务器装oracle,windows下同一台服务器上装有两个ORACLE数据库实例,通过命令启停数据库...
- itunes计算机无法启动,电脑怎么打开itunes
- LVGL的PC端移植和STM32F429阿波罗开发板移植
- java rotateright_Java Tetris旋转
- 游戏应用出海本地化策略,巴西篇
- 唐宇迪资源-机器学习与深度学习
- uniapp轻松集成极光推送SDK(本地插件集成和离线打包两种)
- 小程序插件接入、开发与注意事项
- 澳洲色情网浏览人数创新高 涉嫌破坏两性关系
- 请各位大咖指点一下备考全国通信技术职业水平考试(初级)的考试经验
- h5 canvas多边形(蜘蛛图)的画法
- 勒贝格积分的本质特征
- Apache Kylin 大数据时代的OLAP利器
热门文章
- 程序员等于吃青春饭吗?
- 学计算机颈椎痛,近九成电脑族曾颈椎疼痛,怎么办?
- paradigm画时序图 visual_Visual Paradigm使用技巧:从用户故事中生成序列图
- 蓝牙HID——将android设备变成蓝牙鼠标/触控板(BluetoothHidDevice)
- 两码一号(四):蚂蚁产品大盘
- 捍卫者usb管理控制系统_捍卫效用优先CSS
- java安全体系:JCA、JCE、JSSE、JAAS
- AnyTrans for Mac(ios数据传输工具)
- 【题解】AtCoder ARC128D - Neq Neq
- GANs奇思妙想TOP10榜单