精华内容
下载资源
问答
  • Delta并联机器人逆解程序,自己写的,正逆解完全可以对照上。
  • 在VC6.0平台下基于C++语言编写的Delta机器人逆解,输入x y z坐标机可得到所需输入转角。
  • 通过对各类支链运动学及动力学逆解的分析,应用牛顿-欧拉法并引入拉格朗日乘子建立了空间并联机构的动力学逆解模型,提出了空间并联机构运动学与动力学逆解模块化计算软件的系统构架。结果表明该方法适用于各类非...
  • 借助Matlab软件,通过运动学逆解分析3种不同构型配置的6自由度起重机器人机构的运动学欠约束问题
  • 并联机器人由多个封闭的机构环组成。这些机构环通常是由连接基座和...本文根据DELTA机器人的机构结构,运用空间向量知识,建立机器人各连杆之间位置的向量关系,进行DELTA机器人的运动学逆解计算,以及工作空间的计算。
  • 本文对并联机构运动学分析主要是通过已知末端执行器的空间位置求解出主动臂的转角。然后再根据各主动臂的转角求解出末端执行器的空间位置。 最后通过MATLAB编程,比较求解出的正逆解的偏差并计算机构工作空间。
  • MoveIt编程实现关节空间机械臂运动(逆运动学)

    千次阅读 热门讨论 2019-05-27 22:02:09
    首先看一下逆运动学规划的例程,逆运动学规划简单的说就是直接给机械臂末端机构需要到达目标的位置,由系统求出逆解之后进行路径规划,从而实现的机械臂运动。 运行例程: roslaunch probot_anno_moveit_config ...

    具体介绍见就上一篇文章:《MoveIt简单编程实现机械臂运动(正运动学)》

    使用的是probot机械臂模型,还是在关节空间下。首先看一下逆运动学规划的例程,逆运动学规划简单的说就是直接给机械臂末端机构需要到达目标的位置,由系统求出逆解之后进行路径规划,从而实现的机械臂运动。

    运行例程:

    roslaunch probot_anno_moveit_config demo.launch
    rosrun probot_demo moveit_ik_demo.py

                  

    Python版本源码以及解析 :

    import rospy, sys
    import moveit_commander
    from geometry_msgs.msg import PoseStamped, Pose
    
    
    class MoveItIkDemo:
        def __init__(self):
    
            # 初始化move_group的API
            moveit_commander.roscpp_initialize(sys.argv)
            
            # 初始化ROS节点
            rospy.init_node('moveit_ik_demo')
                    
            # 初始化需要使用move group控制的机械臂中的arm group
            arm = moveit_commander.MoveGroupCommander('manipulator')
                    
            # 获取终端link的名称,这个在setup assistant中设置过了
            end_effector_link = arm.get_end_effector_link()
                            
            # 设置目标位置所使用的参考坐标系
            reference_frame = 'base_link'
            arm.set_pose_reference_frame(reference_frame)
                    
            # 当运动规划失败后,允许重新规划
            arm.allow_replanning(True)
            
            # 设置位置(单位:米)和姿态(单位:弧度)的允许误差
            arm.set_goal_position_tolerance(0.001)
            arm.set_goal_orientation_tolerance(0.01)
           
            # 设置允许的最大速度和加速度
            arm.set_max_acceleration_scaling_factor(0.5)
            arm.set_max_velocity_scaling_factor(0.5)
    
            # 控制机械臂先回到初始化位置
            arm.set_named_target('home')
            arm.go()
            rospy.sleep(1)
                   
            # 设置机械臂工作空间中的目标位姿,位置使用x、y、z坐标描述,
            # 姿态使用四元数描述,基于base_link坐标系
            target_pose = PoseStamped()
            #参考坐标系,前面设置了
            target_pose.header.frame_id = reference_frame
            target_pose.header.stamp = rospy.Time.now() #时间戳?
            #末端位置   
            target_pose.pose.position.x = 0.2593
            target_pose.pose.position.y = 0.0636
            target_pose.pose.position.z = 0.1787
            #末端姿态,四元数
            target_pose.pose.orientation.x = 0.70692
            target_pose.pose.orientation.y = 0.0
            target_pose.pose.orientation.z = 0.0
            target_pose.pose.orientation.w = 0.70729
            
            # 设置机器臂当前的状态作为运动初始状态
            arm.set_start_state_to_current_state()
            
            # 设置机械臂终端运动的目标位姿
            arm.set_pose_target(target_pose, end_effector_link)
            
            # 规划运动路径,返回虚影的效果
            traj = arm.plan()
            
            # 按照规划的运动路径控制机械臂运动
            arm.execute(traj)
            rospy.sleep(1)  #执行完成后休息1s
    
            # 控制机械臂回到初始化位置
            arm.set_named_target('home')
            arm.go()
     
            # 关闭并退出moveit
            moveit_commander.roscpp_shutdown()
            moveit_commander.os._exit(0)
    
    if __name__ == "__main__":
        MoveItIkDemo()

    C++版源码以及解析 :

    #include <string>
    #include <ros/ros.h>
    #include <moveit/move_group_interface/move_group_interface.h>
    
    int main(int argc, char **argv)
    {
        //初始化节点
        ros::init(argc, argv, "moveit_fk_demo");
        //多线程
        ros::AsyncSpinner spinner(1);
        //开启线程
        spinner.start();
    
        //初始化需要使用move group控制的机械臂中的arm group
        moveit::planning_interface::MoveGroupInterface arm("manipulator");
    
        //获取终端link的名称
        std::string end_effector_link = arm.getEndEffectorLink();
    
        //设置目标位置所使用的参考坐标系
        std::string reference_frame = "base_link";
        arm.setPoseReferenceFrame(reference_frame);
    
        //当运动规划失败后,允许重新规划
        arm.allowReplanning(true);
    
        //设置位置(单位:米)和姿态(单位:弧度)的允许误差
        arm.setGoalPositionTolerance(0.001);
        arm.setGoalOrientationTolerance(0.01);
    
        //设置允许的最大速度和加速度
        arm.setMaxAccelerationScalingFactor(0.2);
        arm.setMaxVelocityScalingFactor(0.2);
    
        // 控制机械臂先回到初始化位置
        arm.setNamedTarget("home");
        arm.move(); //规划+运动
        sleep(1); //停1s钟
    
        // 设置机器人终端的目标位置
        geometry_msgs::Pose target_pose;
        //四元数,设置末端姿态
        target_pose.orientation.x = 0.70692;
        target_pose.orientation.y = 0.0;
        target_pose.orientation.z = 0.0;
        target_pose.orientation.w = 0.70729;
        //设置末端位置
        target_pose.position.x = 0.2593;
        target_pose.position.y = 0.0636;
        target_pose.position.z = 0.1787;
    
        // 设置机器臂当前的状态作为运动初始状态
        arm.setStartStateToCurrentState();
        // 将目标位姿写入
        arm.setPoseTarget(target_pose);
    
        // 进行运动规划,计算机器人移动到目标的运动轨迹,此时只是计算出轨迹,并不会控制机械臂运动
        moveit::planning_interface::MoveGroupInterface::Plan plan;
        moveit::planning_interface::MoveItErrorCode success = arm.plan(plan);
    
        //输出成功与否的信息
        ROS_INFO("Plan (pose goal) %s",success?"":"FAILED");   
    
        //让机械臂按照规划的轨迹开始运动
        if(success)
          arm.execute(plan);
        sleep(1);
    
        // 控制机械臂先回到初始化位置
        arm.setNamedTarget("home");
        arm.move();
        sleep(1);
    
        ros::shutdown(); 
    
        return 0;
    }
    

     

    展开全文
  • 运动学规划的例程,逆运动学规划简单的说就是直接给机械臂末端机构需要到达目标的位置,由系统求出逆解之后进行路径规划,从而实现的机械臂运动。 1.将universal_robot功能包拷贝到src目录下,并且在src创建ur_...

    ros用Python程序控制moviet机器人运动-逆运动学(二)

    笔者运行环境:
    ubuntu16.04
    ros-kinetic
    universal_robot功能包
    以ur机械臂为例

    逆运动学规划的例程,逆运动学规划简单的说就是直接给机械臂末端机构需要到达目标的位置,由系统求出逆解之后进行路径规划,从而实现的机械臂运动。

    1.将universal_robot功能包拷贝到src目录下,并且在src创建ur_test功能包

    参考我上一篇博客
    ros用Python程序控制moveit机器人运动-正向运动学(一)https://blog.csdn.net/weixin_45839124/article/details/106801986

    2.在ur_test功能包下创建moveit_ik_demo.py程序。

    在ur_test文件目录下打开终端:

    touch moveit_ik_demo.py
    

    将代码拷贝到刚刚创建的Python程序里:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import rospy, sys
    import moveit_commander
    from geometry_msgs.msg import PoseStamped, Pose
     
     
    class MoveItIkDemo:
        def __init__(self):
     
            # 初始化move_group的API
            moveit_commander.roscpp_initialize(sys.argv)
            
            # 初始化ROS节点
            rospy.init_node('moveit_ik_demo')
                    
            # 初始化需要使用move group控制的机械臂中的arm group
            arm = moveit_commander.MoveGroupCommander('manipulator')
                    
            # 获取终端link的名称,这个在setup assistant中设置过了
            end_effector_link = arm.get_end_effector_link()
                            
            # 设置目标位置所使用的参考坐标系
            reference_frame = 'base_link'
            arm.set_pose_reference_frame(reference_frame)
                    
            # 当运动规划失败后,允许重新规划
            arm.allow_replanning(True)
            
            # 设置位置(单位:米)和姿态(单位:弧度)的允许误差
            arm.set_goal_position_tolerance(0.001)
            arm.set_goal_orientation_tolerance(0.01)
           
            # 设置允许的最大速度和加速度
            arm.set_max_acceleration_scaling_factor(0.5)
            arm.set_max_velocity_scaling_factor(0.5)
     
            # 控制机械臂先回到初始化位置
            arm.set_named_target('home')
            arm.go()
            rospy.sleep(1)
                   
            # 设置机械臂工作空间中的目标位姿,位置使用x、y、z坐标描述,
            # 姿态使用四元数描述,基于base_link坐标系
            target_pose = PoseStamped()
            #参考坐标系,前面设置了
            target_pose.header.frame_id = reference_frame
            target_pose.header.stamp = rospy.Time.now() #时间戳?
            #末端位置   
            target_pose.pose.position.x = 0.2593
            target_pose.pose.position.y = 0.0636
            target_pose.pose.position.z = 0.1787
            #末端姿态,四元数
            target_pose.pose.orientation.x = 0.70692
            target_pose.pose.orientation.y = 0.0
            target_pose.pose.orientation.z = 0.0
            target_pose.pose.orientation.w = 0.70729
            
            # 设置机器臂当前的状态作为运动初始状态
            arm.set_start_state_to_current_state()
            
            # 设置机械臂终端运动的目标位姿
            arm.set_pose_target(target_pose, end_effector_link)
            
            # 规划运动路径,返回虚影的效果
            traj = arm.plan()
            
            # 按照规划的运动路径控制机械臂运动
            arm.execute(traj)
            rospy.sleep(1)  #执行完成后休息1s
     
            # 控制机械臂回到初始化位置
            arm.set_named_target('home')
            arm.go()
     
            # 关闭并退出moveit
            moveit_commander.roscpp_shutdown()
            moveit_commander.os._exit(0)
     
    if __name__ == "__main__":
        MoveItIkDemo()
    

    然后保存文件,并右击属性,将文件的权限修改为可执行程序文件。
    然后再次编译,这样文件创建工作已经完成。

    3.运行程序

    在第一个终端输入一下代码启动demo.launch。

    roslaunch ur3_moveit_config demo.launch
    

    在第二个终端输入以下代码启动我们刚刚创建的Python程序。

    rosrun test_ur moveit_ik_demo.py
    

    这时候我们看到在demo中的机械臂可以运动了,沿着直线运动。
    在这里插入图片描述
    注释:本程序可能因为机械臂位置问题,运动可能会报错,将机械臂位置换一个,机械臂可以运动,说明本文程序没有问题。

    本文参考链接:

    ros用Python程序控制moveit机器人运动-正向运动学(一)https://blog.csdn.net/weixin_45839124/article/details/106801986
    MoveIt编程实现关节空间机械臂运动(逆运动学)https://blog.csdn.net/zzu_seu/article/details/90612876

    展开全文
  • 倍四元数在串联机构运动学分析中的应用,乔曙光,廖启征,首次引入倍四元数完成了一种串联机构运动学封闭分析。基于对偶四元数与倍四元数之间的转换关系给出了倍四元数形式的坐标系之
  • 依据构型建立机构坐标系,通过构造闭环矢量,建立驱动长度与动平台转动角度的数学模型并求得运动学逆解。利用3D模型进行运动学仿真,求解机构位移、速度、加速度。结果表明,所提出的机构具有较好的位移分辨率且结构简单...
  • 以3UPS-1S机构为研究对象,使用Grubler-Kutzbach自由度公式计算了机构的自由度,通过机器人学及机构学理论确定动、静平台坐标系、旋转...运动学分析得出机构的位姿正、逆解,速度正、逆解,对此类机构的理论研究很有意义。
  • 首先对平面三自由度并联机构进行了系统分类和描述,通过对各类支链的运动学及动力学逆解的分析,应用 Newton-Euler法建立平面三自由度并联机构的逆动力学模型,提出了平面三自由度并联机构动力学逆解模块化计算软件的...
  • 为研究一种新型平面二自由度移动并联机构运动学性能,建立其运动学模型,推导出位置正/逆解的解析表达式,定义运动学性能指标,分析不同构型的性能指标表达式,探讨性能指标与机构尺寸之间的关系,并绘制相关的性能图谱...
  • 基于机构运动约束方程,求得机构的位置逆解的解析表达式。使用牛顿迭代法得到该机构的位置正解的数值解,并通过算例验证了其正确性;建立了机构输出运动参数与输入运动参数之间的速度和加速度关系的数学模型,得到机构...
  • 基于这些微分方程的数值,最终确定了产生谐波梯形波运动所需的施加关节转矩,为我们提供了有关履带机器人机构步态控制的重要信息。最后,将关节扭矩的理论值应用于当前的履带机构以进行运动实验,从而验证了当前...
  • 对变幅机构进行了等效变形,建立了变幅机构运动学模型,运用运动旋量原理得出运动学模型的正解和逆解。描述了调角油缸的运动与钻机姿态的相互关系,为设计钻机工作空间参数提供了理论支持。利用逆解分析了调角油缸的...
  • 运用坐标旋转矩阵变换和矢量导数法,推导出并联机构位置逆解的解析表达式以及各主动支链和动平台的微分运动特性。运用杆长约束条件和Sylvester结式消元法,推导出该机构位置正解的解析解。仿真研究和实例验证结果...
  • 推导出机构位置的正、解析,以及速度矢量方程。根据机构灵巧性分析可知,当机构处于某一特殊位形时,其运动学条件指标等于1,即该机构为各向同性并联机构。因而所提出机构具有良好的运动学性能,在工业机器人、医用...
  • 与SKM400对比,建立了二者的运动学模型,计算了它们的位置逆解和速度。以雅可比条件数及其全域均值为指标,对机构运动学性能进行了评价。从理论上说,TAM机构比SKM400机构简单有效,更具竞争性。
  • Stewart平台运动学

    2021-03-05 22:28:03
    并联机构逆解较简单,可以得到解析解 # 正解 正解用数值解 # Matlab代码 逆解 function L = Stewart_IK_AlgebraFunc(x,y,z,a,b,g) %%运动学参数 %零初始位置时静平台位置(相对于静平台坐标系) B1=[12;-14;0]; ...

    Stewart平台运动学

    运动学建模过程:

    参考硕士学位论文《Stewart平台的滑模变结构控制方法研究》

    1平台定义图

    在这里插入图片描述

    # 逆解

    并联机构逆解较简单,可以得到解析解
    在这里插入图片描述

    # 正解

    正解用数值解
    在这里插入图片描述

    # Matlab代码

    在这里插入图片描述

    逆解
    function L  = Stewart_IK_AlgebraFunc(x,y,z,a,b,g)
    %%运动学参数
    %零初始位置时静平台位置(相对于静平台坐标系)
    B1=[12;-14;0];
    B2=[12;14;0];
    B3=[6.12435565;17.39230485;0];
    B4=[-18.12435565;3.39230485;0];
    B5=[-18.12435565;-3.39230485;0];
    B6=[6.12435565;-17.39230485;0];
    %零初始位置时动平台位置(相对于动平台坐标系)
    P1=[12;-2;0];
    P2=[12;2;0];
    P3=[-4.26794919;11.39230485;0];
    P4=[-7.73205081;9.39230485;0];
    P5=[-7.73205081;-9.39230485;0];
    P6=[-4.26794919;-11.39230485;0];
    
    
    %%
    L = zeros(6,1);
    X=[x;y;z];
    RX=[1 0 0;0 cos(a) -sin(a);0 sin(a) cos(a)];
    RY=[cos(b) 0 sin(b);0 1 0;-sin(b) 0 cos(b)];
    RZ=[cos(g) -sin(g) 0;sin(g) cos(g) 0; 0 0 1];
    R=RZ*RY*RX;
    l1=norm(X+R*P1-B1);
    l2=norm(X+R*P2-B2);
    l3=norm(X+R*P3-B3);
    l4=norm(X+R*P4-B4);
    l5=norm(X+R*P5-B5);
    l6=norm(X+R*P6-B6);
    L=[l1;l2;l3;l4;l5;l6];
    
    正解:牛顿迭代法
    function Out  = Stewart_IK_AlgebraFunc(Length)
    x0=[0;0;20;0;0;0];
    Out=x0;
    x1=[0;0;20;0;0;0];
    x1=x0-inv(myJacobi(x0,Length))*myfun(x0,Length);
    while norm(x1-x0)>1e-3
        x0=x1;
        x1=x0-inv(myJacobi(x0,Length))*myfun(x0,Length);
    end
    Out = x1;
    end
     
    function f=myfun(x,Length)
    %零初始位置时静平台位置
    B1=[12;-14;0];
    B2=[12;14;0];
    B3=[6.12435565;17.39230485;0];
    B4=[-18.12435565;3.39230485;0];
    B5=[-18.12435565;-3.39230485;0];
    B6=[6.12435565;-17.39230485;0];
    %零初始位置时动平台位置
    P1=[12;-2;0];
    P2=[12;2;0];
    P3=[-4.26794919;11.39230485;0];
    P4=[-7.73205081;9.39230485;0];
    P5=[-7.73205081;-9.39230485;0];
    P6=[-4.26794919;-11.39230485;0];
    
    x1=x(1);
    x2=x(2);
    x3=x(3);
    a=x(4);
    b=x(5);
    g=x(6);
    % l1=19.78;
    % l2=24.81;
    % l3=24.54;
    % l4=21.25;
    % l5=21.34;
    % l6=18.2;
    l1=Length(1);
    l2=Length(2);
    l3=Length(3);
    l4=Length(4);
    l5=Length(5);
    l6=Length(6);
    X=[x1;x2;x3];
    RX=[1 0 0;0 cos(a) -sin(a);0 sin(a) cos(a)];
    RY=[cos(b) 0 sin(b);0 1 0;-sin(b) 0 cos(b)];
    RZ=[cos(g) -sin(g) 0;sin(g) cos(g) 0; 0 0 1];
    R=RZ*RY*RX;
    f1=(norm(X+R*P1-B1))^2-l1^2;
    f2=(norm(X+R*P2-B2))^2-l2^2;
    f3=(norm(X+R*P3-B3))^2-l3^2;
    f4=(norm(X+R*P4-B4))^2-l4^2;
    f5=(norm(X+R*P5-B5))^2-l5^2;
    f6=(norm(X+R*P6-B6))^2-l6^2;
    f=[f1;f2;f3;f4;f5;f6];
    end
     
    function J=myJacobi(x,Length)
    %零初始位置时静平台位置
    %零初始位置时静平台位置
    B1=[12;-14;0];
    B2=[12;14;0];
    B3=[6.12435565;17.39230485;0];
    B4=[-18.12435565;3.39230485;0];
    B5=[-18.12435565;-3.39230485;0];
    B6=[6.12435565;-17.39230485;0];
    %零初始位置时动平台位置
    P1=[12;-2;0];
    P2=[12;2;0];
    P3=[-4.26794919;11.39230485;0];
    P4=[-7.73205081;9.39230485;0];
    P5=[-7.73205081;-9.39230485;0];
    P6=[-4.26794919;-11.39230485;0];
    
    x1=x(1);
    x2=x(2);
    x3=x(3);
    a=x(4);
    b=x(5);
    g=x(6);
    l1=Length(1);
    l2=Length(2);
    l3=Length(3);
    l4=Length(4);
    l5=Length(5);
    l6=Length(6);
    X=[x1;x2;x3];
    RX=[1 0 0;0 cos(a) -sin(a);0 sin(a) cos(a)];
    RY=[cos(b) 0 sin(b);0 1 0;-sin(b) 0 cos(b)];
    RZ=[cos(g) -sin(g) 0;sin(g) cos(g) 0; 0 0 1];
    R=RZ*RY*RX;
    f1=(norm(X+R*P1-B1))^2-l1^2;
    f2=(norm(X+R*P2-B2))^2-l2^2;
    f3=(norm(X+R*P3-B3))^2-l3^2;
    f4=(norm(X+R*P4-B4))^2-l4^2;
    f5=(norm(X+R*P5-B5))^2-l5^2;
    f6=(norm(X+R*P6-B6))^2-l6^2;
    
    J=[                      2.0*abs(x1 + 12.0*cos(b)*cos(g) + 2.0*cos(a)*sin(g) - 2.0*cos(g)*sin(a)*sin(b) - 12.0)*sign(x1 + 12.0*cos(b)*cos(g) + 2.0*cos(a)*sin(g) - 2.0*cos(g)*sin(a)*sin(b) - 12.0),                      2.0*abs(x2 - 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) - 2.0*sin(a)*sin(b)*sin(g) + 14.0)*sign(x2 - 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) - 2.0*sin(a)*sin(b)*sin(g) + 14.0), -2.0*abs(12.0*sin(b) - 1.0*x3 + 2.0*cos(b)*sin(a))*sign(12.0*sin(b) - 1.0*x3 + 2.0*cos(b)*sin(a)),                                                 2.0*abs(x2 - 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) - 2.0*sin(a)*sin(b)*sin(g) + 14.0)*sign(x2 - 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) - 2.0*sin(a)*sin(b)*sin(g) + 14.0)*(2.0*cos(g)*sin(a) - 2.0*cos(a)*sin(b)*sin(g)) - 2.0*abs(x1 + 12.0*cos(b)*cos(g) + 2.0*cos(a)*sin(g) - 2.0*cos(g)*sin(a)*sin(b) - 12.0)*sign(x1 + 12.0*cos(b)*cos(g) + 2.0*cos(a)*sin(g) - 2.0*cos(g)*sin(a)*sin(b) - 12.0)*(2.0*sin(a)*sin(g) + 2.0*cos(a)*cos(g)*sin(b)) + 4.0*abs(12.0*sin(b) - 1.0*x3 + 2.0*cos(b)*sin(a))*sign(12.0*sin(b) - 1.0*x3 + 2.0*cos(b)*sin(a))*cos(a)*cos(b),                                                2.0*abs(12.0*sin(b) - 1.0*x3 + 2.0*cos(b)*sin(a))*sign(12.0*sin(b) - 1.0*x3 + 2.0*cos(b)*sin(a))*(12.0*cos(b) - 2.0*sin(a)*sin(b)) - 2.0*abs(x1 + 12.0*cos(b)*cos(g) + 2.0*cos(a)*sin(g) - 2.0*cos(g)*sin(a)*sin(b) - 12.0)*sign(x1 + 12.0*cos(b)*cos(g) + 2.0*cos(a)*sin(g) - 2.0*cos(g)*sin(a)*sin(b) - 12.0)*(12.0*cos(g)*sin(b) + 2.0*cos(b)*cos(g)*sin(a)) - 2.0*abs(x2 - 2cos(g) + 12.0*cos(b)*sin(g) - 2.0*sin(a)*sin(b)*sin(g) + 14.0)*sign(x2 - 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) - 2.0*sin(a)*sin(b)*sin(g) + 14.0)*(12.0*sin(b)*sin(g) + 2.0*cos(b)*sin(a)*sin(g)),                                                   2.0*abs(x2 - 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) - 2.0*sin(a)*sin(b)*sin(g) + 14.0)*sign(x2 - 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) - 2.0*sin(a)*sin(b)*sin(g) + 14.0)*(12.0*cos(b)*cos(g) + 2.0*cos(a)*sin(g) - 2.0*cos(g)*sin(a)*sin(b)) + 2.0*abs(x1 + 12.0*cos(b)*cos(g) + 2.0*cos(a)*sin(g) - 2.0*cos(g)*sin(a)*sin(b) - 12.0)*sign(x1 + 12.0*cos(b)*cos(g) + 2.0*cos(a)*sin(g) - 2.0*cos(g)*sin(a)*sin(b) - 12.0)*(2.0*cos(a)*cos(g) - 12.0*cos(b)*sin(g) + 2.0*sin(a)*sin(b)*sin(g));
                          2.0*abs(x1 + 12.0*cos(b)*cos(g) - 2.0*cos(a)*sin(g) + 2.0*cos(g)*sin(a)*sin(b) - 12.0)*sign(x1 + 12.0*cos(b)*cos(g) - 2.0*cos(a)*sin(g) + 2.0*cos(g)*sin(a)*sin(b) - 12.0),                      2.0*abs(x2 + 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) + 2.0*sin(a)*sin(b)*sin(g) - 14.0)*sign(x2 + 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) + 2.0*sin(a)*sin(b)*sin(g) - 14.0),          2.0*abs(x3 - 12.0*sin(b) + 2.0*cos(b)*sin(a))*sign(x3 - 12.0*sin(b) + 2.0*cos(b)*sin(a)),                                                         2.0*abs(x1 + 12.0*cos(b)*cos(g) - 2.0*cos(a)*sin(g) + 2.0*cos(g)*sin(a)*sin(b) - 12.0)*sign(x1 + 12.0*cos(b)*cos(g) - 2.0*cos(a)*sin(g) + 2.0*cos(g)*sin(a)*sin(b) - 12.0)*(2.0*sin(a)*sin(g) + 2.0*cos(a)*cos(g)*sin(b)) - 2.0*abs(x2 + 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) + 2.0*sin(a)*sin(b)*sin(g) - 14.0)*sign(x2 + 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) + 2.0*sin(a)*sin(b)*sin(g) - 14.0)*(2.0*cos(g)*sin(a) - 2.0*cos(a)*sin(b)*sin(g)) + 4.0*abs(x3 - 12.0*sin(b) + 2.0*cos(b)*sin(a))*sign(x3 - 12.0*sin(b) + 2.0*cos(b)*sin(a))*cos(a)*cos(b),                                                      - 2.0*abs(x2 + 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) + 2.0*sin(a)*sin(b)*sin(g) - 14.0)*sign(x2 + 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) + 2.0*sin(a)*sin(b)*sin(g) - 14.0)*(12.0*sin(b)*sin(g) - 2.0*cos(b)*sin(a)*sin(g)) - 2.0*abs(x1 + 12.0*cos(b)*cos(g) - 2.0*cos(a)*sin(g) + 2.0*cos(g)*sin(a)*sin(b) - 12.0)*sign(x1 + 12.0*cos(b)*cos(g) - 2.0*cos(a)*sin(g) + 2.0*cos(g)*sin(a)*sin(b) - 12.0)*(12.0*cos(g)*sin(b) - 2.0*cos(b)*cos(g)*sin(a)) - 2.0*abs(x3 - 12.0*sin(b) + 2.0*cos(b)*sin(a))*sign(x3 - 12.0*sin(b) + 2.0*cos(b)*sin(a))*(12.0*cos(b) + 2.0*sin(a)*sin(b)),                                                   2.0*abs(x2 + 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) + 2.0*sin(a)*sin(b)*sin(g) - 14.0)*sign(x2 + 2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) + 2.0*sin(a)*sin(b)*sin(g) - 14.0)*(12.0*cos(b)*cos(g) - 2.0*cos(a)*sin(g) + 2.0*cos(g)*sin(a)*sin(b)) - 2.0*abs(x1 + 12.0*cos(b)*cos(g) - 2.0*cos(a)*sin(g) + 2.0*cos(g)*sin(a)*sin(b) - 12.0)*sign(x1 + 12.0*cos(b)*cos(g) - 2.0*cos(a)*sin(g) + 2.0*cos(g)*sin(a)*sin(b) - 12.0)*(2.0*cos(a)*cos(g) + 12.0*cos(b)*sin(g) + 2.0*sin(a)*sin(b)*sin(g));
     -2.0*sign(4.268*cos(b)*cos(g) - 1.0*x1 + 11.39*cos(a)*sin(g) - 11.39*cos(g)*sin(a)*sin(b) + 6.124)*abs(4.268*cos(b)*cos(g) - 1.0*x1 + 11.39*cos(a)*sin(g) - 11.39*cos(g)*sin(a)*sin(b) + 6.124),          2.0*abs(x2 + 11.39*cos(a)*cos(g) - 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*sign(x2 + 11.39*cos(a)*cos(g) - 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39),    2.0*abs(x3 + 4.268*sin(b) + 11.39*cos(b)*sin(a))*sign(x3 + 4.268*sin(b) + 11.39*cos(b)*sin(a)),         22.78*abs(x3 + 4.268*sin(b) + 11.39*cos(b)*sin(a))*sign(x3 + 4.268*sin(b) + 11.39*cos(b)*sin(a))*cos(a)*cos(b) - 2.0*abs(x2 + 11.39*cos(a)*cos(g) - 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*sign(x2 + 11.39*cos(a)*cos(g) - 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*(11.39*cos(g)*sin(a) - 11.39*cos(a)*sin(b)*sin(g)) - 2.0*sign(4.268*cos(b)*cos(g) - 1.0*x1 + 11.39*cos(a)*sin(g) - 11.39*cos(g)*sin(a)*sin(b) + 6.124)*abs(4.268*cos(b)*cos(g) - 1.0*x1 + 11.39*cos(a)*sin(g) - 11.39*cos(g)*sin(a)*sin(b) + 6.124)*(11.39*sin(a)*sin(g) + 11.39*cos(a)*cos(g)*sin(b)),         2.0*abs(x3 + 4.268*sin(b) + 11.39*cos(b)*sin(a))*sign(x3 + 4.268*sin(b) + 11.39*cos(b)*sin(a))*(4.268*cos(b) - 11.39*sin(a)*sin(b)) - 2.0*sign(4.268*cos(b)*cos(g) - 1.0*x1 + 11.39*cos(a)*sin(g) - 11.39*cos(g)*sin(a)*sin(b) + 6.124)*abs(4.268*cos(b)*cos(g) - 1.0*x1 + 11.39*cos(a)*sin(g) - 11.39*cos(g)*sin(a)*sin(b) + 6.124)*(4.268*cos(g)*sin(b) + 11.39*cos(b)*cos(g)*sin(a)) + 2.0*abs(x2 + 11.39*cos(a)*cos(g) - 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*sign(x2 + 11.39*cos(a)*cos(g) - 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*(4.268*sin(b)*sin(g) + 11.39*cos(b)*sin(a)*sin(g)),         2.0*sign(4.268*cos(b)*cos(g) - 1.0*x1 + 11.39*cos(a)*sin(g) - 11.39*cos(g)*sin(a)*sin(b) + 6.124)*abs(4.268*cos(b)*cos(g) - 1.0*x1 + 11.39*cos(a)*sin(g) - 11.39*cos(g)*sin(a)*sin(b) + 6.124)*(11.39*cos(a)*cos(g) - 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g)) - 2.0*abs(x2 + 11.39*cos(a)*cos(g) - 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*sign(x2 + 11.39*cos(a)*cos(g) - 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*(4.268*cos(b)*cos(g) + 11.39*cos(a)*sin(g) - 11.39*cos(g)*sin(a)*sin(b));
              2.0*abs(x1 - 7.732*cos(b)*cos(g) - 9.392*cos(a)*sin(g) + 9.392*cos(g)*sin(a)*sin(b) + 18.12)*sign(x1 - 7.732*cos(b)*cos(g) - 9.392*cos(a)*sin(g) + 9.392*cos(g)*sin(a)*sin(b) + 18.12),          2.0*abs(x2 + 9.392*cos(a)*cos(g) - 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*sign(x2 + 9.392*cos(a)*cos(g) - 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392),    2.0*abs(x3 + 7.732*sin(b) + 9.392*cos(b)*sin(a))*sign(x3 + 7.732*sin(b) + 9.392*cos(b)*sin(a)),                 2.0*abs(x1 - 7.732*cos(b)*cos(g) - 9.392*cos(a)*sin(g) + 9.392*cos(g)*sin(a)*sin(b) + 18.12)*sign(x1 - 7.732*cos(b)*cos(g) - 9.392*cos(a)*sin(g) + 9.392*cos(g)*sin(a)*sin(b) + 18.12)*(9.392*sin(a)*sin(g) + 9.392*cos(a)*cos(g)*sin(b)) - 2.0*abs(x2 + 9.392*cos(a)*cos(g) - 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*sign(x2 + 9.392*cos(a)*cos(g) - 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*(9.392*cos(g)*sin(a) - 9.392*cos(a)*sin(b)*sin(g)) + 18.78*abs(x3 + 7.732*sin(b) + 9.392*cos(b)*sin(a))*sign(x3 + 7.732*sin(b) + 9.392*cos(b)*sin(a))*cos(a)*cos(b),                 2.0*abs(x1 - 7.732*cos(b)*cos(g) -in(g) + 9.392*cos(g)*sin(a)*sin(b) + 18.12)*sign(x1 - 7.732*cos(b)*cos(g) - 9.392*cos(a)*sin(g) + 9.392*cos(g)*sin(a)*sin(b) + 18.12)*(7.732*cos(g)*sin(b) + 9.392*cos(b)*cos(g)*sin(a)) + 2.0*abs(x3 + 7.732*sin(b) + 9.392*cos(b)*sin(a))*sign(x3 + 7.732*sin(b) + 9.392*cos(b)*sin(a))*(7.732*cos(b) - 9.392*sin(a)*sin(b)) + 2.0*abs(x2 + 9.392*cos(a)*cos(g) - 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*sign(x2 + 9.392*cos(a)*cos(g) - 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*(7.732*sin(b)*sin(g) + 9.392*cos(b)*sin(a)*sin(g)),               - 2.0*abs(x1 - 7.732*cos(b)*cos(g) - 9.392*cos(a)*sin(g) + 9.392*cos(g)*sin(a)*sin(b) + 18.12)*sign(x1 - 7.732*cos(b)*cos(g) - 9.392*cos(a)*sin(g) + 9.392*cos(g)*sin(a)*sin(b) + 18.12)*(9.392*cos(a)*cos(g) - 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g)) - 2.0*abs(x2 + 9.392*cos(a)*cos(g) - 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*sign(x2 + 9.392*cos(a)*cos(g) - 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*(7.732*cos(b)*cos(g) + 9.392*cos(a)*sin(g) - 9.392*cos(g)*sin(a)*sin(b));
              2.0*abs(x1 - 7.732*cos(b)*cos(g) + 9.392*cos(a)*sin(g) - 9.392*cos(g)*sin(a)*sin(b) + 18.12)*sign(x1 - 7.732*cos(b)*cos(g) + 9.392*cos(a)*sin(g) - 9.392*cos(g)*sin(a)*sin(b) + 18.12), -2.0*abs(9.392*cos(a)*cos(g) - 1.0*x2 + 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*sign(9.392*cos(a)*cos(g) - 1.0*x2 + 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392),    2.0*abs(x3 + 7.732*sin(b) - 9.392*cos(b)*sin(a))*sign(x3 + 7.732*sin(b) - 9.392*cos(b)*sin(a)),       - 2.0*abs(9.392*cos(a)*cos(g) - 1.0*x2 + 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*sign(9.392*cos(a)*cos(g) - 1.0*x2 + 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*(9.392*cos(g)*sin(a) - 9.392*cos(a)*sin(b)*sin(g)) - 2.0*abs(x1 - 7.732*cos(b)*cos(g) + 9.392*cos(a)*sin(g) - 9.392*cos(g)*sin(a)*sin(b) + 18.12)*sign(x1 - 7.732*cos(b)*cos(g) + 9.392*cos(a)*sin(g) - 9.392*cos(g)*sin(a)*sin(b) + 18.12)*(9.392*sin(a)*sin(g) + 9.392*cos(a)*cos(g)*sin(b)) - 18.78*abs(x3 + 7.732*sin(b) - 9.392*cos(b)*sin(a))*sign(x3 + 7.732*sin(b) - 9.392*cos(b)*sin(a))*cos(a)*cos(b),         2.0*abs(x1 - 7.732*cos(b)*cos(g) + 9.392*cos(a)*sin(g) - 9.392*cos(g)*sin(a)*sin(b) + 18.12)*sign(x1 - 7.732*cos(b)*cos(g) + 9.392*cos(a)*sin(g) - 9.392*cos(g)*sin(a)*sin(b) + 18.12)*(7.732*cos(g)*sin(b) - 9.392*cos(b)*cos(g)*sin(a)) + 2.0*abs(x3 + 7.732*sin(b) - 9.392*cos(b)*sin(a))*sign(x3 + 7.732*sin(b) - 9.392*cos(b)*sin(a))*(7.732*cos(b) + 9.392*sin(a)*sin(b)) - 2.0*abs(9.392*cos(a)*cos(g) - 1.0*x2 + 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*sign(9.392*cos(a)*cos(g) - 1.0*x2 + 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*(7.732*sin(b)*sin(g) - 9.392*cos(b)*sin(a)*sin(g)),         2.0*abs(x1 - 7.732*cos(b)*cos(g) + 9.392*cos(a)*sin(g) - 9.392*cos(g)*sin(a)*sin(b) + 18.12)*sign(x1 - 7.732*cos(b)*cos(g) + 9.392*cos(a)*sin(g) - 9.392*cos(g)*sin(a)*sin(b) + 18.12)*(9.392*cos(a)*cos(g) + 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g)) + 2.0*abs(9.392*cos(a)*cos(g) - 1.0*x2 + 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*sign(9.392*cos(a)*cos(g) - 1.0*x2 + 7.732*cos(b)*sin(g) + 9.392*sin(a)*sin(b)*sin(g) - 3.392)*(7.732*cos(b)*cos(g) - 9.392*cos(a)*sin(g) + 9.392*cos(g)*sin(a)*sin(b));
     -2.0*sign(4.268*cos(b)*cos(g) - 1.0*x1 - 11.39*cos(a)*sin(g) + 11.39*cos(g)*sin(a)*sin(b) + 6.124)*abs(4.268*cos(b)*cos(g) - 1.0*x1 - 11.39*cos(a)*sin(g) + 11.39*cos(g)*sin(a)*sin(b) + 6.124), -2.0*abs(11.39*cos(a)*cos(g) - 1.0*x2 + 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*sign(11.39*cos(a)*cos(g) - 1.0*x2 + 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39),    2.0*abs(x3 + 4.268*sin(b) - 11.39*cos(b)*sin(a))*sign(x3 + 4.268*sin(b) - 11.39*cos(b)*sin(a)), 2.0*sign(4.268*cos(b)*cos(g) - 1.0*x1 - 11.39*cos(a)*sin(g) + 11.39*cos(g)*sin(a)*sin(b) + 6.124)*abs(4.268*cos(b)*cos(g) - 1.0*x1 - 11.39*cos(a)*sin(g) + 11.39*cos(g)*sin(a)*sin(b) + 6.124)*(11.39*sin(a)*sin(g) + 11.39*cos(a)*cos(g)*sin(b)) - 2.0*abs(11.39*cos(a)*cos(g) - 1.0*x2 + 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*sign(11.39*cos(a)*cos(g) - 1.0*x2 + 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*(11.39*cos(g)*sin(a) - 11.39*cos(a)*sin(b)*sin(g)) - 22.78*abs(x3 + 4.268*sin(b) - 11.39*cos(b)*sin(a))*sign(x3 + 4.268*sin(b) - 11.39*cos(b)*sin(a))*cos(a)*cos(b), 2.0*abs(x3 + 4.268*sin(b) - 11.39*cos(b)*sin(a))*sign(x3 + 4.268*sin(b) - 11.39*cos(b)*sin(a))*(4.268*cos(b) + 11.39*sin(a)*sin(b)) - 2.0*abs(11.39*cos(a)*cos(g) - 1.0*x2 + 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*sign(11.39*cos(a)*cos(g) - 1.0*x2 + 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*(4.268*sin(b)*sin(g) - 11.39*cos(b)*sin(a)*sin(g)) - 2.0*sign(4.268*cos(b)*cos(g) - 1.0*x1 - 11.39*cos(a)*sin(g) + 11.39*cos(g)*sin(a)*sin(b) + 6.124)*abs(4.268*cos(b)*cos(g) - 1.0*x1 - 11.39*cos(a)*sin(g) + 11.39*cos(g)*sin(a)*sin(b) + 6.124)*(4.268*cos(g)*sin(b) - 11.39*cos(b)*cos(g)*sin(a)), 2.0*abs(11.39*cos(a)*cos(g) - 1.0*x2 + 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*sign(11.39*cos(a)*cos(g) - 1.0*x2 + 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g) - 17.39)*(4.268*cos(b)*cos(g) - 11.39*cos(a)*sin(g) + 11.39*cos(g)*sin(a)*sin(b)) - 2.0*sign(4.268*cos(b)*cos(g) - 1.0*x1 - 11.39*cos(a)*sin(g) + 11.39*cos(g)*sin(a)*sin(b) + 6.124)*abs(4.268*cos(b)*cos(g) - 1.0*x1 - 11.39*cos(a)*sin(g) + 11.39*cos(g)*sin(a)*sin(b) + 6.124)*(11.39*cos(a)*cos(g) + 4.268*cos(b)*sin(g) + 11.39*sin(a)*sin(b)*sin(g));];
    end
    
    
    

    Matlab代码和论文的区别

    • 论文中动静平台的Z都是相对于自身坐标系,因此都为0,网上有很多代码这个地方表示不清楚。
      在这里插入图片描述
    展开全文
  • 针对风洞模型实验平台的6PUUS并联机构,分析了其工作原理及运动要求,运用并联机构运动学逆解及空间笛卡尔坐标变换理论求出了该类机构在任意实验给定欧拉角下的拉杆运动位置和滑块的运动插补路径。根据空间位置插补...
  • 正向运动学根据各关节的关节角度求取末端机构的位置和姿态;逆向运动学运用几何法来进行求解。根据逆解的选取原则从8组解中选取最优解。利用MATLAB在多组位姿下对正逆运动学求解进行对比来验证算法求解的准确性。
  • 设计了一种自由曲面抛光并联机器人,对其进行了运动学分析,建立了并联机器人机构位姿逆解方程,并给出了显式解析表达。应用Solidworks 2008软件完成了三维实体建模,并利用机械系统动力学分析软件ADAMS对该并联...
  • 基于SimMechanics的球面3-RRR并联机构的运动轨迹规划仿真,陈洋,魏世民,针对球面3-RRR并联机构的运动轨迹规划问题,首先通过D-H矩阵法建立了该机器人的运动学逆解方程,并通过消元求解得到了该问题的解析�
  • 以3-TPT并联机构作为研究对象,建立该机构运动学正、反方程,求出该机构的雅可比矩阵及其矩阵,并在此基础上运用MATLAB软件和LabVIEW软件对该机床的奇异性、灵巧性和平稳性性进行仿真分析。仿真结果表明:3-TPT...
  • 以D-H 法为研究基础,对高压巡线机器人清障机械臂进行了运动学建模与分析,提出了一种有效的运动学正、逆解求解方法,为后续的控制编程提供可靠的变量参数.与固定式空间 6R机器人相比,清障机器人既有转动关节又有平动...
  • 通过建立机器人正向、逆向运动学数学模型,解决了该机器人逆运动学解析的问题,得到了运动学特征方程;运用蒙特卡洛法求解出机器人的工作空间云点区域分布,得到了由随机点构成的手术工作空间。理论分析和实际仿真...
  • 针对中医推拿按摩的特点及...建立了机械臂的运动学模型,利用D-H变换求解其运动学的正解和逆解。利用Pro/E建立机械臂的三维模型,导入ADAMS就其位移、速度、加速度等运动学特征进行模拟和分析,仿真结果表明机械臂的设计符
  • 为研究巷道修复机工作机构在工作过程中的运动特性,解决在实际操作中易发生工作臂与铲运装置的运动干涉问题,基于旋量运动学理论建立了巷道修复机工作机构的正、逆解运动学模型,应用Matlab软件计算出该工作机构的工作...
  • 首先,基于6自由度绳牵引并联机构运动学逆解模型,给出了可用于运动轨迹规划的绳的速度和加速度的一般结论:绳的速度值始终不大于动平台上相应铰链点的速度值;而正的绳加速度值始终不大于动平台上相应铰链点沿绳...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

机构运动学逆解