精华内容
下载资源
问答
  • 欠驱动五连杆双足机器人的动态模型该项目包含两个 MATLAB 函数,用于获取欠驱动五连杆双足机器人的动力学模型。 第一个文件 (Generlazed.m) 用于生成作为绝对角度函数的动态模型,绝对角度是两足动物的每个链接与...
  • 为提高双足机器人设计的效率...在ADAMS中建立双足机器人的机械动力学模型,利用Matlab中的Simulink工具箱建立控制系统,通过ADAMS与Matlab的接口ADAMS/Controls模块,实现双足机器人基于ADAMS与Matlab的联合步行仿真。
  • 基于Matlab双足机器人单腿运动学仿真.pdf
  • Simulink的simmechanics的应用论文-双足机器人基于ADAMS与Matlab的联合仿真.pdf simmechanics的应用论文 机械结构的仿真和机器人运动研究
  • 双足机器人

    2012-02-03 17:28:14
    本课题研究意义,阐述了开发双足机器人的必要性,其次,论述了机器人机械构架设计,伺服电机 控制器设计和制作,并针对机器人整体构架,进行数学建模,采用三次样条插值算法对双足机器人 的步态规划进行了研究,并...
  • MATLAB软件中对双足机器人进行动力学计算,将双足机器人的三维实体模型导入到运动分析软件ADAMS中,添加约束驱动等,并输入规划好的轨迹进行仿真,再将通过仿真得出的各关节扭矩与动力学分析结果进行比较,以验证...
  • MATLAB机器人工具箱--双足机器人建模

    千次阅读 2020-12-29 00:29:11
    1、前记:出于好奇和学习目的,主要参考了知乎:https://zhuanlan.zhihu.com/p/290641155,并使用MATLAB进行双足机器人建模。但还是和刘勋师兄说的一样,不建议利用机器人工具箱,出图的速度慢得可怕! 2、代码: ...

    1、前记:出于好奇和学习目的,主要参考了知乎:https://zhuanlan.zhihu.com/p/290641155,并使用MATLAB进行双足机器人建模。但还是和刘勋师兄说的一样,不建议利用机器人工具箱,出图的速度慢得可怕!

    2、代码:

    %% creat walking robot model
    clear all
    %leg length 
    L1=0.15;L2=0.25;
    %form a leg 
    leg=SerialLink([0, 0, 0, pi/2; 0, 0, L1, 0; 0, 0, -L2, 0 ],...
        'name', 'leg', 'base', eye(4,4),'tool', ...
        trotz(-pi/2)*trotx(-pi/2)*trotz(-pi/2),'offset', [pi/2  0  -pi/2]);
    %% diplay the leg 
    %body wide and length
    W = 0.2; L = 0.2;
    %form a body
    legs(1) = SerialLink(leg, 'name', 'leg1','base', transl(0, 0, -0.05)*trotz(pi/2));
    legs(2) = SerialLink(leg, 'name', '.', 'base', transl(0, -W, -0.05)*trotz(pi/2));
    % create a fixed size axis for the robot, and set z positive downward
    clf;
    axis([-0.3 0.25 -0.6 0.4 -0.19 0.45]); set(gca,'Zdir', 'reverse')
    hold on
    legs(1).plot([0 pi/3 -pi/2.5],'nobase','noshadow','nowrist');%leg pose
    legs(2).plot([0 pi/1.8 -pi/2.5],'nobase','noshadow','nowrist');
    %plot body
    plotcube([0.1 0.2 -0.12],[ -0.05  -0.2  0],1,[1 1 0]);
    %% simulate moving
    for i=0.01:0.02:0.4
    legs(1).plot([0   pi/3+i    -pi/2.5-i],'nobase','noshadow');%leg pose
    legs(2).plot([0   pi/1.8-i  -pi/2.5+i],'nobase','noshadow');
    end

    plotcube画方块函数:

    function plotcube(varargin)
    % PLOTCUBE - Display a 3D-cube in the current axes
    %
    %   PLOTCUBE(EDGES,ORIGIN,ALPHA,COLOR) displays a 3D-cube in the current axes
    %   with the following properties:
    %   * EDGES : 3-elements vector that defines the length of cube edges
    %   * ORIGIN: 3-elements vector that defines the start point of the cube
    %   * ALPHA : scalar that defines the transparency of the cube faces (from 0
    %             to 1)
    %   * COLOR : 3-elements vector that defines the faces color of the cube
    %
    % Example:
    %   >> plotcube([5 5 5],[ 2  2  2],.8,[1 0 0]);
    %   >> plotcube([5 5 5],[10 10 10],.8,[0 1 0]);
    %   >> plotcube([5 5 5],[20 20 20],.8,[0 0 1]);
    %% plotcube函数 长宽高  三维空间起点  颜色属性
    % Default input arguments
    inArgs = { ...
      [10 56 100] , ... % Default edge sizes (x,y and z)
      [10 10  10] , ... % Default coordinates of the origin point of the cube
      .7          , ... % Default alpha value for the cube's faces
      [1 0 0]       ... % Default Color for the cube
      };
    
    % Replace default input arguments by input values
    inArgs(1:nargin) = varargin;
    
    % Create all variables
    [edges,origin,alpha,clr] = deal(inArgs{:});
    
    XYZ = { ...
      [0 0 0 0]  [0 0 1 1]  [0 1 1 0] ; ...
      [1 1 1 1]  [0 0 1 1]  [0 1 1 0] ; ...
      [0 1 1 0]  [0 0 0 0]  [0 0 1 1] ; ...
      [0 1 1 0]  [1 1 1 1]  [0 0 1 1] ; ...
      [0 1 1 0]  [0 0 1 1]  [0 0 0 0] ; ...
      [0 1 1 0]  [0 0 1 1]  [1 1 1 1]   ...
      };
    
    XYZ = mat2cell(...
      cellfun( @(x,y,z) x*y+z , ...
        XYZ , ...
        repmat(mat2cell(edges,1,[1 1 1]),6,1) , ...
        repmat(mat2cell(origin,1,[1 1 1]),6,1) , ...
        'UniformOutput',false), ...
      6,[1 1 1]);
    
    
    cellfun(@patch,XYZ{1},XYZ{2},XYZ{3},...
      repmat({clr},6,1),...
      repmat({'FaceAlpha'},6,1),...
      repmat({alpha},6,1)...
      );
    
    % view(3);
    

    结果:

     

     

                                        

    接下来感受下动画出图的可怕,若要实现身体前移可能还需要研究身体(方块)移动与双足运动的规律进行对应plot更新。

                                         

    完全没有使用Simscape搭建的双足机器人移动流畅,如下,与地面接触身体移动:

     

                                                               

    simscape参考demo:

    https://www.mathworks.com/help/reinforcement-learning/ug/train-biped-robot-to-walk-using-reinforcement-learning-agents.html?searchHighlight=Biped%20robot&s_tid=srchtitle

    https://www.mathworks.com/support/search.html/videos/matlab-and-simulink-robotics-arena-walking-robots-pattern-generation-1546434170253.html?fq=asset_type_name:video%20category:mpc/index&page=1

    https://www.mathworks.com/matlabcentral/fileexchange/64227-matlab-and-simulink-robotics-arena-walking-robot

    https://www.mathworks.com/support/search.html/videos/model-based-control-of-humanoid-walking-1574399243682.html?fq=asset_type_name:video%20category:physmod/sm/index&page=1

    展开全文
  • 目录matlab双足机器人强化学习算例介绍强化学习的一些基础理解菜鸟对一些名词的理解matlab强化学习库介绍双足机器人算例逻辑盘点如何改写算例做自己的强化学习。 %写在前面: 本人大四狗一名,不是计算机专业,所以...


    %写在前面:
    本人大四狗一名,不是计算机专业,所以这方面比较菜。最近在学习强化学习的一些算法,python更新太快,很多一两年前的学习资料就不太能用了,涉及到版本匹配和语法的更改等一系列问题。2020b的matlab中加入了DDPG\TD3\PPO等算法的强化学习算例和强化学习库,于是想用matlab来做强化学习。
    最近看了看官方给出的双足机器人算例,注意到网上一般是这个算例的中文翻译,并没有对各种关节展开说明,于是想与和我一样看不懂算例,不明白原理的小白们共同讨论,共同进步,如果写的哪里不对,还请各位大佬多多指教。

    matlab双足机器人强化学习算例介绍

    matlab2020b版本中给出了 双足机器人直线行走的相关算例,这个算例是利用强化学习算法,使得小机器人能用最小的控制力让其能沿着一条直线行走下去,如下图,控制六个关节的输出力矩来达成目标。
    算例中使用的是强化学习库中的函数来搭建模型和env与模型交互的学习框架。应用的是DDPG和TD3两种算法来完成学习任务,在matlab命令行中输入

    openExample('control_deeplearning/TrainBipedRobotToWalkUsingReinforcementLearningAgentsExample')
    

    六关节机器人

    强化学习的一些基础理解

    我理解强化学习就是一个在不断试错的过程中学习的过程,这和人类幼崽学习一件事物是比较相似的,比如婴儿学习抓取,爬,走路,都是跌跌撞撞地不断进步的,谁家的小孩儿不摔跤呢?这个过程对于学习行走地小孩儿来说,就是不断试错的过程。

    比如:面对左脚在前,右脚在后的情况,该如何抉择呢?在没有经验的基础上可以随即决策。比如先迈了左脚,导致劈叉,裤裆疼,相当于收到了环境给出了反馈。小孩儿学会了在左脚在前,右脚在后的情况下先迈左脚就会摔倒或者受伤。下一次面临相似的抉择时就可以做出先迈右脚的决策,在先迈右脚比先迈左脚优先级更高的情况下(因为先迈左脚会受伤,而不是先迈右脚会成功),选择先迈右脚,这时成功走出一步,说明在这种情况下先迈右脚是一个比较成功的决策,那么小孩儿就学会了在这种情况下该如何决策才能完成行走。

    对于智能体来说,强化学习的过程和上述的过程是类似的,实际上不同算法的核心思想都是如此,只是实现的手段上有所不同。相信想要学习强化学习的同学都一定听说过Q-learning算法,这种算法就是针对不同决策给一个价值表或者叫Q表,比如针对上述问题,在左脚在前,右脚在后的状态下有一个对两种决策的价值表[-1;1];-1代表先迈左脚的价值,1代表先迈右脚的价值,这是就很好选择了,选择1就对了。这时针对离散动作的抉择方法,如果对于连续的动作可以通过均值和方差的方法来定义。不同任务可以选择不同算法,但是各类任务的总体思想都是随即给出动作,环境给出奖励,智能体根据奖励更新策略的循环。

    菜鸟对一些名词的理解

    在上述理解的基础上,理解一些名词就比较方便了,要完成一个强化学习任务,就可以通过定义环境env,奖励函数reward,仿真结构(walking robot),学习算法,逼近函数来进行学习了。

    状态observation,这个单词直接的翻译是观察,我理解这个词的意义是状态,相当于传感器对于状态量的观测,在python一些算法中会用到“observation_”这个变量,代表的是下一时刻的状态量。这是由于在计算reward时会用到下一个状态值。在迭代的过程中,先后顺于是:由此时此刻的状态observation根据某些策略(如e-greedy策略)得出这一时刻的动作值,再将动作和状态交给环境仿真模型来计算得出下一时刻的状态值observation_,再借助observation_的好坏来评估action的好坏,由env返回reward用于更新智能体的策略。

    动作action动作就是智能体可以做出的动作,在面对一个状态observation时能够选择的动作,可以是连续的也可以是离散的,环境env再根据observation和action来给出下一时刻的状态。

    环境env,在算例中,env是这么描述的:

    mdl = 'rlWalkingBipedRobot';%simulink文件的名字
    blk = [mdl,'/RL Agent'];%RL Agent是simulink(mdl)中的一个模块,代表整个环境和智能体交互的过程,包括智能体和环境。见下图。
    env = rlSimulinkEnv(mdl,blk,obsInfo,actInfo);%代表env是simulink(mdl)中的blk这个模块,observation是obsInfo、action是actInfo。
    env.ResetFcn = @(in) walkerResetFcn(in,upper_leg_length/100,lower_leg_length/100,h/100);%在env中加入reset函数
    

    所以,环境就是可以根据状态量给出反馈,又称奖励reward。
    在这里插入图片描述
    模型,模型就是搭建的仿真模型,一般是几个微分方程,可以根据动作量给出下一个状态量。

    matlab强化学习库介绍

    在matlab中的强化学习库就是一系列封装好的函数,包括环境搭建、智能体搭建、训练函数、各种模型参数设置等众多函数。在matlab的官网可以查到各个函数的help,具体请各位异步:https://ww2.mathworks.cn/help/reinforcement-learning/referencelist.html?type=function
    里面是matlab强化学习的各类函数介绍。

    双足机器人算例逻辑盘点

    首先,初始化变量。加载一个变量包。

    robotParametersRL;
    

    第二步,打开simulink模型。

    mdl = 'rlWalkingBipedRobot';
    open_system(mdl)
    

    第三步,建立连续的状态变量向量,29*1,类似python里面的tf.placeholder,是一种初始化,又称占着**不拉 *。

    mdl = 'rlWalkingBipedRobot';
    open_system(mdl)
    

    第四步,建立连续的动作变量向量,6*1.

    numAct = 6;
    actInfo = rlNumericSpec([numAct 1],'LowerLimit',-1,'UpperLimit',1);
    actInfo.Name = 'foot_torque';
    

    第五步,利用simulink模型建立环境。注释在上文提及过,自行观看。

    blk = [mdl,'/RL Agent'];
    env = rlSimulinkEnv(mdl,blk,obsInfo,actInfo);
    env.ResetFcn = @(in) walkerResetFcn(in,upper_leg_length/100,lower_leg_length/100,h/100);
    

    第六步,选择学习途径,也就是算法种类了,这个例子中可以使用TD3或者DDPG,这里语法很好理解,不多赘述。

    AgentSelection = 'TD3';
    switch AgentSelection
        case 'DDPG'
            agent = createDDPGAgent(numObs,obsInfo,numAct,actInfo,Ts);
        case 'TD3'
            agent = createTD3Agent(numObs,obsInfo,numAct,actInfo,Ts);
        otherwise
            disp('Enter DDPG or TD3 for AgentSelection')
    end
    

    第七步,训练参数设置。具体见备注,或者见help(https://ww2.mathworks.cn/help/reinforcement-learning/ref/rltrainingoptions.html)

    maxEpisodes = 2000;
    maxSteps = floor(Tf/Ts);
    trainOpts = rlTrainingOptions(...
        'MaxEpisodes',maxEpisodes,...%训练集最大值
        'MaxStepsPerEpisode',maxSteps,...%每次喂入网络的数据集大小,这样调用神经网络事件较快,且一定程度上避免练偏。
        'ScoreAveragingWindowLength',250,...%窗口长度,不太重要。
        'Verbose',false,...%在命令行输出训练进度
        'Plots','training-progress',...%可视化
        'StopTrainingCriteria','EpisodeCount',...%训练停止条件
        'StopTrainingValue',maxEpisodes,...%终止训练条件。
        'SaveAgentCriteria','EpisodeCount',...%保存网络的条件
        'SaveAgentValue',maxEpisodes);%保存网络的条件
    trainOpts.UseParallel = true;%是否并行训练
    trainOpts.ParallelizationOptions.Mode = 'async';%并行计算模式
    trainOpts.ParallelizationOptions.StepsUntilDataIsSent = 32;%向主机发送数据的步骤数
    trainOpts.ParallelizationOptions.DataToSendFromWorkers = 'Experiences';%发送给主机的数据类型
    

    步骤八,利用环境和智能体交互来训练网络(train)。例子中可以选择自己训练或者加载数据。

    doTraining = 1;
    if doTraining    
        % Train the agent.
        trainingStats = train(agent,env,trainOpts);
    else
        % Load a pretrained agent for the selected agent type.
        if strcmp(AgentSelection,'DDPG')
           load('rlWalkingBipedRobotDDPG.mat','agent')
        else
           load('rlWalkingBipedRobotTD3.mat','agent')
        end  
    end
    

    在这里插入图片描述

    到这里训练就已经完成了,之后的代码是为了进行可视化和比较,在这里不多讨论。

    如何改写算例做自己的强化学习。

    在上文中,对算例有了一个大概的介绍,那么,学会了例子并不是最终目的,怎么修改这个例子来为自己服务呢?在这个框架上不需要改动太多,只要把每部分都替换成自己要研究问题的公式就可以了。比如,这里的动力学建模是一个双足机器人,把他的动力学模型改变一下,也就是改变了收到动作和状态得出的新状态。
    对应不同目标的任务就要改变reward模块儿,用reward来训诫智能体做出希望的动作。
    改变结束学习的判定条件,能省点儿时间就是点儿吧。
    再在m文件中把需要初始化的各个数据改成自己需要的,bang!属于你的强化学习模型就搭建出来了。

    %写在最后,水平有限,请有幸看到的您多多指正。在工作之余,祝您早安,午安,晚安。Have a nice day。
    (可能的话点个赞再走吧)

    展开全文
  • 研究了一种基于零力矩点(ZMP)预观控制系统的双足机器人稳定行走步行模式生成方法。...最后采用ADAMS和Matlab/Simulink联合仿真技术对离线步行模式进行仿真验证,仿真结果表明双足机器人虚拟样机可实现稳定行走效果。
  • ====== 关于 使用 MATLAB Simulink 操作和模拟双足机器人 ATRIAS 的协作代码库。 ============ 要求 适用于 Windows 的 MATLAB 2014b+ Simulink 实时 模拟力学
  • 本课题是在双足机器人平路行走的基础上对其参数化步态进行规划,进而通过实现对不同角度的斜坡的行走验证参数化的步态方法研究。主要工作包括以下内容: 1.介绍了机器人的设计原则及方法,不仅介绍了机器人外形结构...
  • 采用Matlab仿真的方式构建了一个简单的有躯干双足机器人模型,研究了该模型在斜坡上的被动行走,分析了模型步行的稳定性,并设计了一个全状态线性反馈步行稳定器。研究结果表明:无任何驱动器的有躯干双足机器人能够...
  • 应用三维建模软件SolidWorks建立了HIT-ROBOCEAN双足机器人的简化模型,导入虚拟样机仿真分析软件Adams中生成虚拟样机模型,并通过在科学计算软件Matlab中得到的机器人行走步态的关节运动轨迹对虚拟样机模型进行控制,...
  • 双足机器人的步态控制策略是保证双足稳定行走的重要条件之一。结合人在行走时ZMP平稳移动的特性,建立了一种移动可伸缩三维倒立摆模型;在约束平面内分析ZMP与COG的运动关系,将ZMP和COG分别定为快变因子和慢变因子,...
  • 浅谈双足机器人的思路和算法

    千次阅读 多人点赞 2019-05-05 23:46:12
    浅谈双足机器人的思路和算法 首先,双足机器人走路的过程,最直观地看是两个过程: 迈左腿,迈右腿,由此形成迈左腿,迈右腿,再迈左腿,再迈右腿的周期. 加入对重心的考察,则是: 重心右移,迈左腿,重心左移,迈...

    浅谈双足机器人的思路和算法


    首先,双足机器人走路的过程,最直观地看是两个过程:
    迈左腿,迈右腿,由此形成迈左腿,迈右腿,再迈左腿,再迈右腿的周期.
    加入对重心的考察,则是:
    重心右移,迈左腿,重心左移,迈右腿,由此形成重心右移,迈左腿,重心左移,迈右腿,重心再右移,再迈左腿,重心再左移,再迈右腿的周期.
    再加入对转向的考察,转向可以分为两个部分:
    正在迈的腿转向和另一条不迈的腿转向
    首先解决迈腿的问题:
    迈腿的过程有两个:抬腿落腿、申腿缩腿
    迈腿的过程,最需要关心的是足端的位置.
    建立坐标系进行研究:
    以双足机器人的髋部的几何中心作为原点,重力的反方向作为z轴,前进方向作为y轴,则:
    抬腿落腿的过程关心的是足端z的变化
    申腿缩腿的过程关心的是足端y轴的变化

    在这里插入图片描述
    舵机和结构件可以抽象为杆和转轴,杆的两端是两个电机的转轴,把结构简化成转轴和杆是不会引入原理误差的,只要结构是刚性的,就可以完全代表结构所对应的机械关系.
    当不考虑转向和重心的调整时,影响电机末端的电机有两个:
    分别是髋关节的电机和膝关节的电机,他们的转角是θ1和θ2,当足端坐标用(yF,zF)表示时(只考虑侧视图),则找到θ1、θ2和yF、zF之间的对应关系,就可以通过控制θ1和θ2来控制足端位置

    在这里插入图片描述
    他们的关系是这样的
    在这里插入图片描述

    其中tt2是θ1,tt3是θ2,ye是yF,ze是zF,di是连杆的长度
    但是这是简化运算,就是不考虑其他舵机影响的,低速直行的时候还能凑合用,高速和转弯性能就很差了.

    如果还希望足端是水平地踩在地面的话,还可以计算出θ3,其中tt5就是θ3
    说髋关节不太准确,其实是这样对应的

    θ1不是最上面的那个而是第二个,上面的两个合在一起可以看做有两个自由度的髋关节,θ2可以看做膝关节,θ3和上面的一个可以看做有两个自由度的踝关节,因为是以顶部作为坐标原点,所以在这个坐标系里顶部是一定和坐标系的y轴平行的,这时保证脚板也平行于y轴,当脚板平踩在地面上时,地面和脚板看做重合,进而地面也平行y轴,顶部也就平行地面了

    再对刚才两个没有标号的舵机进行标号,最上面的唯一绕z轴旋转的舵机转角标为θz,下面唯一绕x轴旋转的舵机标号为θx,之前研究的θ1-3其实是沿y轴旋转的三个舵机,他们可以看做一组,相互之间的耦合关系已经研究明白,但是θz、θ1-3、θy这三者之间的耦合关系还没有研究,姑且当做他们之间是独立的(当转角都较小的时候误差小,转角大则误差大),将他们三者独立看时,则θz负责旋转的过程,θ1-3负责迈腿的过程,θy负责重心左右移动的过程.
    在规划步态时,θz和θx直接控制,而θ1-3则由yF,zF间接控制,这样一来,调动作的任务由调θz、θx、θ1-3五个量变为了调θz、θx、yF、zF四个量,少了一个量是因为默认了足端平行,当需要足端不与地面平行时,则再加入足端修正θcompensate,直接和计算出的θ3相加,这时控制量又变成了5个量.
    在这里插入图片描述
    其实之前的工作就是在调这5个量,所以说本质还是调动作组,只不过从[[θz、θx、θ1-3]的动作组变成了[θz、θx、yF、zF、θcompensate]的动作组.
    这样做有什么好处呢,其实好处就是把足端坐标和机身姿态由间接控制量变成了直接控制量
    把动作组的舵机 调节转换成具体的关节部位量转成,当足悬空时,调整足端修正θcompensate就是调整足端的平面,当足落地时,调整θcompensate就是调整顶部的倾角,这样一来,足端位置,顶部倾角,足端平面倾角都变成了直接控制量,加上θz可以直接控制转向,θx可以直接控制重心左右变换,这一套新的动作组就实现了基本的控制功能.
    现在没有引入动力学,之前都没有考虑质量、力、加速度的问题,也没有考虑机器人会摔倒,需要保证稳定性,下面说一下动力学问题.
    动力学根本上是要解决稳定性问题,重心其实不是影响稳定性的唯一因素,影响稳定性的因素主要有三个:重力、惯性力、转动力矩,前两者会引起平移性质的失稳、后者会引起转动性质的失稳
    对抗重力和惯性力引起摔倒倾向的因素是脚板提供的支持力,对抗转动力矩引起摔倒倾向的因素是脚板提供的摩擦力
    对当前的机器人来说,转动力矩引起的摔倒倾向可以先忽略,在低速时,只考虑重力,在高速时,要考虑重力和惯性力,(惯性力是用质量乘以加速度得到的虚拟力).
    一般认为,重力和惯性力的合力在地面的投影如果落在脚板范围内,机器人是稳定的

    在这里插入图片描述
    计算重心一般有两种方法,一种是倒立摆模型,一种是连杆模型
    倒立摆模型是把腿部简化为没有质量轻杆,而将机器人的全部质量集中于轻杆之上,该模型适合于腿部惯量小的机器人,我们的机器人主要质量都集中于腿部,所以用该模型会有非常大的误差,可以pass.
    在这里插入图片描述
    另一种模型则是连杆模型,该模型把质量集中在每个杆的重心位置,该杆的质量记为mi,位置记为pi,则总的重心位置就是每个杆的重心位置的质量加权平均值.
    在这里插入图片描述
    在这里插入图片描述
    这种建模方法适合质量集中在连杆的机器人,因此我们可以采用这种模型来计算重心,计算重心需要两个要素,就是各杆的位置和质量,质量由称量得到(这就是为什么组装前要上称),在连杆是刚体的情况下,位置由舵机的转角决定.
    把单腿所有的舵机转角放在一个向量里面,记为θ = [θz,θx,θ1,θ2,θ3],把各杆重心所在的位置也放在一个向量里面,记为p = [p1,p2,p3,p4,p5,p6].
    现在要找到一个函数关系,记为p = f(θ),然后由重心计算公式,得到重心 P = fθ
    找从转角到重心的关系容易,找由重心到转角的关系就比较困难了
    实际上 p = f(θ) 的问题,我在最开始的matlab建模里面已经解决了,所以P = fθ)的问题也是好解决的,公式太复杂我就不发了
    P = fθ)的关系式,只能用于规划好步态,再验证步态是否稳定,想要直接规划重心,则需要找到θ = f-1(P总)的关系,其中f-1是f的反函数,这个函数是多解的,多解到令人发指,所以大多数人的做法,都是先按照重心的大致趋势规划步态,再用重心计算公式来验证,但是多解的问题,可以通过增加约束条件来限制解的范围,找好约束条件的话,效果也是不错的,就是约束条件需要比较多.
    其实编完动作组用手晃两下就是物理上的验算了(笑),还不带误差的,比算出来的好多了,不过还是应该向理论进发,才能有更广阔的成长空间(更好写论文),就比如说把稳定裕度限制在一个范围的话,动作组可调的范围也变小了,然后就可以从调动作组进化为调一个范围内的动作组.

    支付宝打赏:13502895966
    在这里插入图片描述
    欢迎加群讨论交流~在这里插入图片描述

    展开全文
  • 双足机器人Maltab腿部建模,正运动学分析

    千次阅读 热门讨论 2018-12-13 16:40:01
    双足机器人Maltab腿部建模,正运动学分析 matlab程序如图所示,显示的模型如图所示,求大神指导怎样可以去掉那个红色的连杆呢???

    双足机器人Maltab腿部建模,正运动学分析

    matlab程序如图所示,显示的模型如图所示,求大神指导怎样可以去掉那个红色的连杆呢???
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 为了获得良好的双足机器人步行模式,提出了以步行过程中机器人的稳定性、移动性和能耗为目标的步态规划多目标优化方法.该方法基于倒立摆模型产生基本步态,并使用罚函数法和改进的强度Pareto进化算法(SPEA2)在可行域中...
  • 设计制作一款能够奔跑的双足机器人,只为稳定奔跑。省去一切华丽的表演动作。如果一定要给它取个名字,就叫狂奔吧!Design and make a biped robot that can run, only for stable running. Eliminate all gorgeous ...
  • l-曲线matlab代码
  • 本文为美国特拉华大学(作者:Seyed Mohamad Shafiee Motahar)的博士论文,共142页。如今对辅助双足机器人的需求越来越大,这些机器人能够与其他...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 126
精华内容 50
关键字:

双足机器人matlab

matlab 订阅