基于matlab的双足机器人动力学库Frost介绍

基于matlab的双足机器人动力学库还是比较少的。除了frost外,基本都是C++的,像Pinocchio,RBDL,以及drake等。本人对matlab比较熟悉,frost的使用介绍又太少了,因此自己摸索了一阵子。【Frost也有C版本,即CFrost】

  1. frost安装与使用思路
    1)frost安装
    首先需要安装matlab 2016 和 mathematica 11以上的版本,具体见这里Mathematica_11.3.0 安装教程
    然后,下载Frost并安装即可frost-dev安装包(github)
    经验1:不能有中文路径,否则会出一些不必要的错误】
    经验2:一个错误的解决方案。错误提示“”】

    2)frost 库的使用思路:从urdf模型到matlab可调用代码生成
    首先,输入并解析urdf模型文件,
    其次,使用符号计算进行公式推导,并生成.cpp/.h文件(调用mathematica内核进行计算),
    然后,采用matlab mex工具,将上述c++文件编译成matlab可调用的C++动态链接库(即.mexw64文件),
    最终,通过matlab直接调用.mexw64文件内函数实现运动学/动力学/雅可比矩阵及其导数 计算。
    经验3:与一般C++机器人动力学库的使用逻辑好像不太一样,需要先符号推导,再编译成单个函数的mex文件,再提供给matlab实时调用】

  2. frost计算功能介绍
    1)frost计算功能:在机器人控制中,常常需要用到下面的计算,frost都有了,算是很齐全了。【逆运动学的,倒是没有注意】

M/C/G/BJcdJccentriodal com(pcom)centriodal momentum (hg)centriodal Jcom (Ag)centriodal(dAg)Jcom_total (*手动计算)dJcom_total (*手动计算)
√*√*√*Ag(1:3)/m_totaldAg(1:3)/m_total

[ * ] frost核心代码部分(class RobotLinks)未直接给出计算公式,但是在Atlas示例spatial_momentum.m文件中,有相关的计算公式(其中,hg=Agdq, dhg=Agddq + dAg*dq)。需要用的时候,基于atlas计算案例,自己修改即可。此外,总质心的雅可比/雅可比导数没有直接给出,但是可以由质心动量雅可比的公式推导出。

  1. 案例运行前依赖的工具包
    在运行atlas等案例的时候使用到了一些函数(loadjson(),plux()),但是其依赖包并没有任何说明,需要自己找到并添加。
    1)jsonlab库(对应loadjson函数):用于matlab读写json类文件。安装方式Matlab读取json文件
    2)Spectial_v2库(对应plux函数):《Rigid Body Dynamics Algorithms》(Roy Featherstone2012)一书配套的matlab动力学计算工具,这个库比较简单,也没有urdf接口。注意这个与RBDL(C++库,Felix Richter 2018-2022)不是同一个东西。库链接Spatial Vector and Rigid-Body Dynamics Software
    下载后添加路径即可:addpath(genpath(’ your path\spatial_v2 '))
  2. Atlas 案例运行
    要成功运行,首先要将上述提到的依赖库安装好,并在运行文件中添加matlab路径。
    1)运行main_sim,完成基础计算和仿真。进入Atlas项目子文件夹中,即可推导编译生成mex文件,并运行。
    问题1:目前,我运行到Animation这一节,是出现了问题的。还不知道怎么解决】,不影响后续进行,比如后面的plot一节,可以直接“运行当前节”进行绘图。
    2)运行spatial_momentum.m,完成空间动量的计算函数编译。
    问题2:目前编译遇到算法方面的问题,就是pcm = transpose(pcom_atlas(q)); 这句话中,pcom_atlas并没有预先定义,也暂时不知道什么含义】
    经验4:自己在matlab中打开urdf后,稍微修改了点,ctrl+s保存了,结果导致后续仿真中,urdf文件总是读取不了。网上说是urdf的编码要改为 utf-8,但是自己尝试了很久,也没搞定。 最终,重新解压一份源zip,替换掉了就好了。还是不能随便乱改啊】

老早就写完的文章,居然没发表!估计当时觉得还没写完。现在因为实验需要,必须要转到C++的库了,也不知道要补什么了。补发一下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值