精华内容
下载资源
问答
  • UR机械臂正逆运动学求解

    万次阅读 多人点赞 2018-07-21 16:14:10
    最近有个任务:求解UR机械臂正逆运动学,在网上参考了一下大家的求解办法,众说纷纭,其中有些朋友求解过程非常常规,但是最后求解的8组解,只有4组可用。在这里我介绍一个可以求解8组解析解的方法,供大家参考。 ...

           最近有个任务:求解UR机械臂正逆运动学,在网上参考了一下大家的求解办法,众说纷纭,其中有些朋友求解过程非常常规,但是最后求解的8组解,只有4组可用。在这里我介绍一个可以求解8组解析解的方法,供大家参考。

           以UR5机械臂结构和尺寸参数为例进行正逆运动学求解,下图分别是UR5结构图和标准DH系参数:

     

    1. 正运动学求解

    正运动学是已知关节六个角度求变换矩阵T

    其中:

    整理得:

    带入DH参数,求解:

            

    最终变换矩阵:

    正运动学求解完毕。

    2. 逆运动学求解

    逆运动学是已知变换矩阵T,求六个关节角度 。逆运动学求解有解析法,几何法,迭代法,这里采用解析法求解。

    2.1 两个简单的数学方法

    2.1.1 求角度

     这个逆运动学算法求解的角度范围是

     

    因为标准的反正切arctan的值域是

    所以不能使用,这里介绍一个改进的反正切求法 Atan2(y, x)(Matlab里有这个函数),它的值域可以满足要求。

    2.1.2 解方程

    首先进行三角恒等变换,令

    其中:

    然后带入原方程:

    2.2 约定

    为了简化书写,约定:

    2.3 求解1,5,6关节角度

    已知:

    其中:

    等式左边:

    等式右边:

    2.3.1 求关节角1

    利用等式左右两边第3行,第4列对应相等求关节角1。

    整理得:

    设:

    则  

    根据前面介绍的解方程的方法:

    2.3.2 求关节角5

    利用等式左右两边第3行,第3列对应相等求关节角5。

    解得:

    2.3.3 求关节角6

    利用等式左右两边第3行,第1列对应相等求关节角6。

    设:

    根据前面介绍的方法:

    其实可以通过化简得到式中

    2.4 求解2,3,4关节角度

    已知:

    其中:

    等式左边等于

    等式右边等于

    2.4.1 求解关节角3

    利用等式左右两边第1行,第4列对应相等,第2行,第4列对应相等,求关节角3。

    为了简化,设:

    将m,n带入上式得

    式子③④平方和为

    因为

    所以

    2.4.2  求解关节角2

    将③④展开得:

    将关节角3带入⑤⑥,求关节角2得

    2.4.3  求解关节角4

    的第2行第2列,第1行第2列求 

    2.5 总结

    2.5.1 求解公式

    2.5.2 奇异位置

    1.肩关节奇异位置

    此时末端执行器参考点O6位于轴线z1和z2构成的平面内,关节角1无法求解。

    2.肘关节奇异位置

    此时关节角2无法求解。

    3.腕关节奇异位置

    此时轴线z4和z6平行,关节角6无法求解。

    2.6 实例

    利用Matlab机器人库 ur5 DH参数:


    alpha1 = pi/2;          a1=0;                 d1=89.459;

    alpha2 = 0;              a2=-425;           d2=0;

    alpha3 = 0;              a3=-392.25;      d3=0;

    alpha4 = pi/2;           a4=0;               d4=109.15;

    alpha5 = -pi/2;          a5=0;               d5=94.65;

    alpha6 = 0;               a6=0;               d6=82.3;

    取 theta1 = 1;  theta2 = 1;  theta3 = 1;  theta4 = 1;  theta5 = 1;  theta6 = 1;  (不要纠结theta选这6个数值是否有实际意义,这里只验证算法的有效性)

    • 将theta带入正运动学公式,求T:

    • 将T带入逆运动学公式, 反求theta

    theta = 

    • 再将8个theta带入正运动学公式,反求8个T:

    8个T均等于

    验证了算法的有效性

    展开全文
  • UR机械臂手册

    2017-07-18 20:45:44
    UR机械臂手册
  • UR机械臂的用户手册

    2020-12-15 14:02:36
    UR 机械臂的用户手册和编程手册,主要介绍UR机械臂如何安装与使用,如何在示教器上编程和如何使用UR提供的编程接口
  • UR机械臂的仿真软件版本,适用于Linux
  • UR机械臂仿真

    2020-09-13 11:42:27
    UR机械臂仿真学习笔记(1)1 安装编译功能包2 功能包文件3 启动仿真4 实现简单的仿真运动5 Motion Planning 1 安装编译功能包 其中包含UR3、UR5、UR10三款机器人的功能。 mkdir -p ~/ur_ws/src cd ~/ur_ws/src git ...


    最近的学习思路有些不清晰,拿到kinova机械臂功能包后,官网资料都是关于链接实际机械臂开发的,有些不知所措,不知道如何去利用这个包来完成自己想要完成的仿真场景,比如实现物体的抓取,网上关于kinova开发的资源很少,于我而言有些难上手,有一种越学越不会的感觉,所以打算看看其它机械臂—UR系列,掌握机械臂仿真的思路和编程,再举一反三到其他机械臂的开发。

    1 安装编译功能包

    其中包含UR3、UR5、UR10三款机器人的功能。

    mkdir -p ~/ur_ws/src
    cd ~/ur_ws/src
    git clone https://github.com/ros-industrial/universal_robot
    cd ..
    catkin_make
    

    2 功能包文件

    在这里插入图片描述在这里插入图片描述

    3 启动仿真

    在Gazebo中显示UR5机器人:

    cd ur_ws
    source devel/setup.bash
    roslaunch ur_gazebo ur5.launch
    

    在这里插入图片描述查看话题列表:
    在这里插入图片描述
    打开新的终端,运行moveit相关,运行UR5的路径规划节点:

    cd ur_ws
    source devel/setup.bash
    roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch sim:=true
    

    此时moveit启动,命令行显示许多启动消息,但此时还未启动rviz。

    打开新的终端,运行rviz相关:

    cd ur_ws
    source devel/setup.bash
    roslaunch ur5_moveit_config moveit_rviz.launch config:=true
    

    在这里插入图片描述此时,rviz启动,显示ur5在gazebo下的姿态。

    终端查看规划的轨迹命令:

    rostopic echo /arm_controller/follow_joint_trajectory/goal
    

    4 实现简单的仿真运动

    在rviz中拖动机器人的末端执行器到目标姿态:
    在这里插入图片描述规划并执行,rviz和gazebo中的机械臂都运动
    在这里插入图片描述

    5 Motion Planning

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述planning scene可以为机器人创建一个具体的工作环境,加入一些障碍物。这一功能主要由move group节点中的planning scene monitor来实现,主要监听:
    State Information: joint_states topic
    Sensor Information: the world geometry monitor

    为上面的运动规划环境中施加一些障碍物(创建一个.scene文件)
    然后SceneObjects->ImportFromText,选择刚刚创建的demo_obstacle.scene文件,一个简单的桌面环境就被导入进了rviz。
    在这里插入图片描述回到Context子模块,点击Publish Current Scene,将当前的环境发布出去。然后再次点击Plan,会看到一条不同的轨迹,这轨迹应该绕过所有障碍物并且达到目标位姿。

    参考资源:
    ros_ur的wiki教程
    universal robot github
    ROS驱动UR机械臂

    展开全文
  • UR机械臂手册V3.5中文版,本手册是基于丹麦优傲机械臂的最新脚本程序说明
  • ROS下C++控制UR机械臂

    千次阅读 热门讨论 2020-09-27 21:25:45
    ROS系统下,使用moveit和gazebo搭建UR机械臂控制的仿真环境,并使用C++编写一个节点来控制UR机械臂的移动 ROS系统:kinetic UR5机械臂 电脑系统:Ubuntu16.04 截图和运行效果 gazebo的机械臂会先水平,然后依次移动...

    描述

    ROS系统下,使用moveit和gazebo搭建UR机械臂控制的仿真环境,并使用C++编写一个节点来控制UR机械臂的移动
    ROS系统:kinetic
    UR5机械臂
    电脑系统:Ubuntu16.04

    截图和运行效果

    gazebo的机械臂会先水平,然后依次移动到两个位置
    rviz中的机械臂移动和gazebo机械臂一致,但是会有一个透明效果的机械臂,沿着同样路径非常滞后的移动
    在这里插入图片描述

    代码

    1. 特殊位置移动(Moveit中默认的位置)

    #include <moveit/move_group_interface/move_group_interface.h>
    #include <moveit/planning_scene_interface/planning_scene_interface.h>
    #include <moveit_msgs/DisplayRobotState.h>
    #include <moveit_msgs/DisplayTrajectory.h>
    #include <moveit_msgs/AttachedCollisionObject.h>
    #include <moveit_msgs/CollisionObject.h>
    #include <vector>
    #include <iostream>
     
    int main(int argc, char **argv)
    {
        
        ros::init(argc, argv, "demo"); //初始化
        ros::AsyncSpinner spinner(1); //多线程
        spinner.start(); //开启新的线程
     
        moveit::planning_interface::MoveGroupInterface arm("manipulator");//初始化需要使用move group控制的机械臂中的arm group
        
        arm.setGoalJointTolerance(0.001); //允许误差
        arm.setMaxAccelerationScalingFactor(0.2); //允许的最大速度和加速度
        arm.setMaxVelocityScalingFactor(0.2);
    
        arm.setNamedTarget("home"); // 控制机械臂移动到水平(躺下)
        arm.move();
        sleep(1);
     
        arm.setNamedTarget("up"); //控制机械臂到达竖直位置(竖立)
        arm.move();
        sleep(1);
     
        ros::shutdown();
     
        return 0;
    }
    

    2. 指定位置移动(欧氏空间的位置和四元数)

    #include <moveit/move_group_interface/move_group_interface.h>
    #include <moveit/planning_scene_interface/planning_scene_interface.h>
    #include <moveit_msgs/DisplayRobotState.h>
    #include <moveit_msgs/DisplayTrajectory.h>
    #include <moveit_msgs/AttachedCollisionObject.h>
    #include <moveit_msgs/CollisionObject.h>
    #include <vector>
    #include <iostream>
     
    int main(int argc, char **argv)
    {
    	ros::init(argc, argv, "demo");
    	ros::AsyncSpinner spinner(1);
    	spinner.start();
    
        moveit::planning_interface::MoveGroupInterface arm("manipulator");
      
        std::string end_effector_link = arm.getEndEffectorLink(); //获取终端link的名称
        std::cout<<"end_effector_link: "<<end_effector_link<<std::endl;
       
        std::string reference_frame = "/world"; //设置目标位置所使用的参考坐标系
        arm.setPoseReferenceFrame(reference_frame);
    
        arm.allowReplanning(true); //当运动规划失败后,允许重新规划
        arm.setGoalJointTolerance(0.001);
        arm.setGoalPositionTolerance(0.001); //设置位置(单位:米)和姿态(单位:弧度)的允许误差
        arm.setGoalOrientationTolerance(0.01);   
        arm.setMaxAccelerationScalingFactor(0.2); //设置允许的最大速度和加速度
        arm.setMaxVelocityScalingFactor(0.2);
    
        geometry_msgs::Pose now_pose = arm.getCurrentPose(end_effector_link).pose;
        std::cout<<"now Robot position: [x,y,z]: ["<<now_pose.position.x<<","<<now_pose.position.y<<","<<now_pose.position.z<<"]"<<std::endl;
        std::cout<<"now Robot orientation: [x,y,z,w]: ["<<now_pose.orientation.x<<","<<now_pose.orientation.y<<","<<now_pose.orientation.z
           <<","<<now_pose.orientation.w<<"]"<<std::endl;
      
        arm.setNamedTarget("home");// 控制机械臂先回到初始化位置
        arm.move();
        sleep(1);
    
        std::vector<geometry_msgs::Pose> waypoints;
        geometry_msgs::Pose pose1;
        pose1.position.x = 0.712759;
    	pose1.position.y = 0.20212;	
    	pose1.position.z = 1.16729;
    	pose1.orientation.x = 0.70717;
    	pose1.orientation.y = 0.707044;
    	pose1.orientation.z = 1.42317e-05;
    	pose1.orientation.w = 7.09771e-05;
    	waypoints.push_back(pose1);
    
        geometry_msgs::Pose pose2;
        pose2.position.x = 0.250989;
    	pose2.position.y = 0.578917;	
    	pose2.position.z = 1.3212;
    	pose2.orientation.x = 0.707055;
    	pose2.orientation.y = 0.707159;
    	pose2.orientation.z = 4.39101e-05;
    	pose2.orientation.w = 8.60218e-05;
    	waypoints.push_back(pose2);
    
    	// 笛卡尔空间下的路径规划
    	moveit_msgs::RobotTrajectory trajectory;
    	const double jump_threshold = 0.0;
    	const double eef_step = 0.002;
    	double fraction = 0.0;
        int maxtries = 100;   //最大尝试规划次数
        int attempts = 0;     //已经尝试规划次数
    
        while(fraction < 1.0 && attempts < maxtries)
        {
            fraction = arm.computeCartesianPath(waypoints, eef_step, jump_threshold, trajectory);
            attempts++;
            
            if(attempts % 10 == 0)
                ROS_INFO("Still trying after %d attempts...", attempts);
        }
        
        if(fraction == 1)
        {   
            ROS_INFO("Path computed successfully. Moving the arm.");
    
    	    // 生成机械臂的运动规划数据
    	    moveit::planning_interface::MoveGroupInterface::Plan plan;
    	    plan.trajectory_ = trajectory;
    	    // 执行运动
    	    arm.execute(plan);
            
            sleep(1);
        }
        else
        {
            ROS_INFO("Path planning failed with only %0.6f success after %d attempts.", fraction, maxtries);
        }
        
    	ros::shutdown(); 
    	return 0;
    }
    

    3. CMakeLists.txt

    cmake_minimum_required(VERSION 3.0.2)
    project(UR5_control)
    
    add_compile_options(-std=c++11)
    
    find_package(catkin REQUIRED COMPONENTS
      roscpp
      rospy
      std_msgs
      moveit_ros_planning_interface
    )
    find_package(Boost REQUIRED COMPONENTS system)
    
    include_directories(
      ${catkin_INCLUDE_DIRS}
      ${Boost_INCLUDE_DIRS}
    )
    
    add_executable(UR5_control_node src/UR5_control.cpp)
    target_link_libraries(UR5_control_node ${catkin_LIBRARIES})
    
    

    代码中你需要更改的地方

    • 位姿点geometry_msgs::Pose pose
      你可以在rviz界面,使用interactiveMarkers来拖动UR机械臂,可以把它拖动到任何一个位置,然后点击按钮Plan and Execute。这时rviz和gazebo中的机械臂会发生实际移动。
      这时你可以再次运行以上程序,程序会把启动时的位姿打印出来,你照抄在代码中即可
    • 一些你需要自己设置的参数
    • 以“”括起来的字符串们

    问题及解决方案

    1. 路径规划失败

    执行这句话fraction = arm.computeCartesianPath(waypoints, eef_step, jump_threshold, trajectory);时,fraction返回的结果是0,代表机械臂路径规划失败,fraction返回的结果是1,代表机械臂路径规划成功

    我一直返回的结果就是0,也就是路径规划失败。
    排查了一下,最终确认是编译过程中缺少了一个依赖包

    解决方案

    • CMakeLists.txt文件更改
      在原基础上添加了一个包moveit_ros_planning_interface
      find_package(catkin REQUIRED COMPONENTS
        roscpp
        rospy
        std_msgs
        moveit_ros_planning_interface
      )
      

    2. Gazebo中的机械臂不动

    之前我的代码并不是以上贴出来的样子,比正确的代码多了以下这句错误的话

    geometry_msgs::Pose now_pose = arm.getCurrentPose(end_effector_link).pose;
    waypoint.push_back(now_pose)  // 错误的话,不要添加
    

    多了以上这句话出现的问题就是,在执行arm.execute(plan);这句话的时候,报了如下的错误

    [ INFO] [1601195859.013775369, 913.641000000]: ABORTED: Solution found but controller failed during execution
    

    实际表现是:
    moveit里的机械臂动了,但是动起来是透明的效果,实体机械臂位置没有更新,gazebo里的机械臂不动。以下这张照片,中间那个机械臂就是我所说的透明的效果,图和文字没关系
    在这里插入图片描述

    问题排查过程

    我一直以为,是rviz中的机械臂位置问题,如图
    在这里插入图片描述
    最开始执行代码的时候,机械臂的位置一直是"home"位置,在rviz上可以看到,机械臂的末端是处在水平面位置的,也就是可能存在和水平面的碰撞。执行代码时,rviz机械臂会以透明的效果肉眼可见的范围动一下,gazebo机械臂不动。这让我觉得是rviz认为与地面存在碰撞,而运动失败。

    因此我进入了ur5_robot.urdf.xacro文件(请你前往你对应的机械臂描述文件),更改了机械臂的起始位姿。示例

    <joint name="world_joint" type="fixed">
        <parent link="world" />
        <child link = "base_link" />
        <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
      </joint>
    

    改为了<origin xyz="0.0 0.0 1.0" rpy="0.0 0.0 0.0" />,这样改变的效果是,机械臂在z方向上上升了1m,也就悬在了空中,这里不做截图展示。

    问题没有得到解决。

    解决方案

    根据我的另外一篇文章ROS下查看rviz中的机械臂位姿,我查阅了机械臂的位姿,突然发现查阅位姿这个命令的终端使用黄色字体提示了这样一句话

    [ WARN] [1601210755.347884455, 0.800000000]: goalConnectCallback: Trying to add [/move_group] to goalSubscribers, but it is already in the goalSubscribers list
    [ WARN] [1601210755.348000765, 0.800000000]: cancelConnectCallback: Trying to add [/move_group] to cancelSubscribers, but it is already in the cancelSubscribers list
    

    我开始怀疑是路径规划本身的问题。

    专业的讲,使用moveit能够控制机械臂运动,没有任何道理使用代码不能让机械臂运动。因此虽然代码提示规划成功,运动失败,我仍然怀疑规划出的路径并不能让机械臂成功移动。

    我做了一次大胆的尝试,删除了waypoints中的第一个点,也就是当前位置的push_back。这一次成功运动了,可以运行的整段代码就在上面

    后记

    是stackflow上都有人说,要在waypoint中加入当前位置,我的参考书中隐隐约约也是这样写的。我现在懒得去真正落实这个问题了,出现这次调试有三个可能

    1. 那些要在waypoint中加入当前位置的,是python接口,很多人直接照搬了
    2. moveit代码版本升级的变化
    3. 很多人互相在抄,没有跑一跑就把代码搞出来了这一次成功运动了,可以运行的整段代码就在上面
    展开全文
  • 在使用ROS的kinetic版本控制UR机械臂时,moveit规划成功但UR机械臂不运动的问题 失败表现 成功的截图如下 注意到,MotionPlanning界面下的“Commands”下有四个按钮,分别是“plan”、“Execute”、“Plan and ...

    描述

    在使用ROS的kinetic版本控制UR机械臂时,moveit规划成功但UR机械臂不运动的问题

    失败表现

    UR机械臂在Gazebo环境下,绵软无力的倒在地上,在rviz环境下一直是横着倒下的姿态,机械臂末端一直位于地面之下

    成功的截图如下
    在这里插入图片描述
    注意到,MotionPlanning界面下的“Commands”下有四个按钮,分别是“plan”、“Execute”、“Plan and Execute”和“Stop”

    下面有一个提示,截图中是“Executed”,也即是我运动成功了,可以看到我的UR机械臂已经直立了

    这里没有截出失败的示意图。失败时,“Executed”的位置为“failed”。机械臂一直是倒下的状态。

    问题提示

    在执行命令roslaunch ur5_moveit_config moveit_rviz.launch config:=true的终端上,有如下提示

    ABORTED: Solution found but controller failed during execution
    

    意思就是说,规划成功但是控制器执行失败

    这时你可以去运行命令roslaunch ur5_gazebo ur5.launch的窗口,寻找以下,会发现包含以下一个提示信息

    rospy.service.ServiceException: transport error completing service call: receive_once[/controller_manager/load_controller]: DeserializationError cannot deserialize: unknown error handler name 'rosmsg
    

    执行命令来安装rosmsg

    sudo apt-get install ros-kinetic-rosmsg 
    

    仍然不成功

    最终解决办法

    执行命令

    rosservice call /controller_manager/list_controller_types "{}"
    

    终端提示失败

    ERROR: transport error completing service call: receive_once[/controller_manager/list_controller_types]: DeserializationError cannot deserialize: unknown error handler name 'rosmsg'
    

    发现这个提示和gazebo中的提示是一样的。因此判断它是核心问题。

    执行以下命令后,问题解决

    sudo apt-get install ros-kinetic-genpy
    

    如果这个时候你再执行命令

    rosservice call /controller_manager/list_controller_types "{}"
    

    终端会返回

    types: [ackermann_steering_controller/AckermannSteeringController, controller_manager_tests/EffortTestController,
      controller_manager_tests/MyDummyController, controller_manager_tests/PosEffController,
      controller_manager_tests/PosEffOptController, controller_manager_tests/VelEffController,
      diff_drive_controller/DiffDriveController, effort_controllers/GripperActionController,
      effort_controllers/JointEffortController, effort_controllers/JointGroupEffortController,
      effort_controllers/JointGroupPositionController, effort_controllers/JointPositionController,
      effort_controllers/JointTrajectoryController, effort_controllers/JointVelocityController,
      force_torque_sensor_controller/ForceTorqueSensorController, imu_sensor_controller/ImuSensorController,
      joint_state_controller/JointStateController, pos_vel_acc_controllers/JointTrajectoryController,
      pos_vel_controllers/JointTrajectoryController, position_controllers/GripperActionController,
      position_controllers/JointGroupPositionController, position_controllers/JointPositionController,
      position_controllers/JointTrajectoryController, velocity_controllers/JointGroupVelocityController,
      velocity_controllers/JointPositionController, velocity_controllers/JointTrajectoryController,
      velocity_controllers/JointVelocityController]
    base_classes: ['controller_interface::ControllerBase', 'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
      'controller_interface::ControllerBase', 'controller_interface::ControllerBase']
    
    展开全文
  • PC控制ur机械臂的方式

    2021-01-05 10:27:35
    PC控制ur机械臂的方式 使用机械臂进行实验,尤其是验证算法的抓取等工作,避免不了的需要进行机械臂与pc端通讯,机械臂本身的示教器和控制语言不能完成大多的学术研究工作。 通过pc端控制ur机械臂的方式有很多。 ...
  • ur机械臂客户端反馈信息解析,控制器始终通过控制器中的几个服务器插座提供表示机器人状态的数据,例如位置,温度等。从每个服务器套接字传输的数据可以彼此不同。可以编写自定义程序来读取这些流。完整说明(excel...
  • 通过socket通讯控制ur机械臂

    千次阅读 热门讨论 2019-04-12 11:09:58
    通过socket通讯控制ur机械臂1.socket客户端(连接机械臂)2.控制机械臂运动(发送控制指令)3. 实时 以前一直使用ros跟机械臂打交道,但在使用moveit控制机械臂运动的时候会出现一些卡顿现象,具体可参照这个网页,...
  • 最近在使用c++对UR3和UR5进行控制,发现网上内容不太好找,...机械臂TCP/ip通信通信概述机械臂的网口通信有几个端口可以使用,我只讲解30003端口,我用的UR3和UR5是e系列.关于机械臂tcp/ip通信的参考在这里,下图就来自这...
  • ur机械臂的位姿获取

    千次阅读 2019-05-06 15:53:58
    UR机械臂的位姿获取 之前就玩过ur机械臂,但是今天再研究的时候,发现ur机械臂通过30003端口发送过来的居然是rotation vector, 以前一直当作欧拉角处理…问题是居然还蒙混过关了… 于是借机学习了一下旋转向量到旋转...
  • 本代码实现基于MATLAB的UR机械臂运动仿真,使用前请确保安装好Robotic Toolbox工具箱,本程序在低版本matlab运行可能会有报错,但一般问题不大,R2018b版本已测可用!感谢如下blog,本人在此基础上进行拓展。 ...
  • UR机械臂上位机开发

    2020-06-11 10:00:50
    出于行业应用需要,一些科研领域用户希望用上位机替代示教器来控制UR机械臂,而这往往会花费不少时间和精力。为解决这一问题,我们为UR用户提供上位机开发服务,即基于PC端采用上位机软件控制机器人运动交互,取代...
  • 本文在强化学习UR机械臂仿真环境搭建(一) - 为UR3机械臂添加robotiq ft300力传感器的基础上,继续添加OnRobot RG2夹爪。 OnRobot官方并没有提供ros package,在github上有一份使用RG2的仓库, sharathrjtr / ur10_...
  • ur机械臂TCP姿态表示

    2020-09-12 11:31:56
    旋转向量与旋转矩阵之间的关系 ur机械臂TCP 姿态采用旋转向量表示为r=[Rx,Ry,Rz] 旋转向量r可以表示为r=n
  • 使用UR机械臂最新的 ur_robot_driver一、下载ros package二、配置示教器三、配置Ubuntu网络1. 查看显卡名称2.设置静态IP3.重启4.现在看看右上角网络连接有没有显示对应于控制柜的网络显示已经连接。四、运行程序测试...
  • ur机械臂 + robotiq gripper + robotiq ft sensor + gazebo + 连接真实机械臂 + 网页控制仓库地址:[ur_ws](https://github.com/borninfreedom/ur_ws),欢迎debug和develop。...xacro主要负责将ur机械臂
  • UR机械臂仿真和用上位机编程控制 在没有实物UR机械臂时怎么办,优傲提供了仿真工具可以满足开发者需求,这样也减少了实际操作机械臂时的麻烦。 需要下载和安装的软件 虚拟机 使用VMware是不错的选择,可以去百度下载...
  • UR机械手臂为汽车行业众多生产阶段增添价值。下面为大家介绍三篇UR机器人在汽车行业中拾取与放置的案例。配合视觉的刹车盘取放应用设备对刹车盘进行拍照,确定孔位,夹爪定位后抓取刹车盘并搬运到下一个工位。该工位...
  • UR机械臂逆运动学解析解 ur10机械臂的DH(修正)参数为 d1=0.1273;a2=-0.612;a3=-0.5723;d4=0.163941;d5=0.1157;d6=0.6922; 首先,推导机械臂的正向运动学方程,根据DH参数可以计算机械臂的正向运动学方程表示为: ...
  • UR机械臂simscape正逆解仿真

    千次阅读 多人点赞 2020-04-11 15:54:33
    UR机械臂的物理模型文件是根据SolidWorks插件simscape导出的xml文件,课程直接提供的,博客不便给出,清楚整个建模原理就行。但个人还是觉得urdf文件好理解一些,可以人为控制各个坐标系的方向、位置还有质心的位置...
  • 最近几个月因为工作接触到了...ur机械臂是六自由度机械臂,由D-H参数法确定它的运动学模型,连杆坐标系的建立如上图所示。我当时在这个地方的理解上走了不少弯路,后来找个一个视频,我觉得讲解地比较容易理解,可以...
  • 关于UR机械臂仿真模型的安装及介绍可以参考我以前的博文,目前在学习使用编程接口(Python/C++)而不是通过Rviz控制机械臂。 参考了很多博文,说实话关于编程控制UR机械臂的文章不多而且讲得不是特别的详细。这里将会...
  • ur机械臂 控制器TrustZone is different from that of a separate physical security co-processor (like a TPM or a secure element) with a pre-defined set of features. You can think of it as a ...
  • 文件名大小更新时间QTemplate_1.0.7.080202017-08-02QTemplate_1.0.7.0802\Libraries02017-07-28QTemplate_1.0.7.0802\Libraries\control02017-07-28QTemplate_1.0.7.0802\Libraries\control\LinkRTC.pri2882017-06-...
  • (课程代码所以涉及版权问题,经过同意后我上传代码)UR机械臂的物理模型文件是根据SolidWorks插件simscape导出的xml文件,课程直接提供的,博客不便给出,清楚整个建模原理就行。但个人还是觉得urdf文件好理解一些...
  • ros控制虚拟和实际ur机械臂

    千次阅读 2017-12-19 15:45:01
    1.最后需要运行的commandsudo apt-get install ros-kinetic-ur-description仿真ur机械臂roslaunch ur_gazebo ur3_joint_limited.launch roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch sim:=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 511
精华内容 204
关键字:

ur机械臂