[ROS] URDF 建模,UR5 机械臂

[ROS] URDF 建模,UR5 机械臂



UR5模型下载https://github.com/ros-industrial/universal_robot/blob/kinetic-devel/ur_description/urdf/ur5.urdf.xacro


1. UR5 参数

在这里插入图片描述

urdf 文件中没有使用此参数。参数手动调试。


2. UR5 URDF 代码

<?xml version="1.0" encoding="utf-8" ?>

<!--            <mesh filename="package://demo_urdf/meshes/ur5/visual/base.dae"/>       -->
<!--            <mesh filename="package://demo_urdf/meshes/ur5/visual/forearm.dae"/>    -->
<!--            <mesh filename="package://demo_urdf/meshes/ur5/visual/shoulder.dae"/>   -->
<!--            <mesh filename="package://demo_urdf/meshes/ur5/visual/upperarm.dae"/>   -->
<!--            <mesh filename="package://demo_urdf/meshes/ur5/visual/wrist1.dae"/>     -->
<!--            <mesh filename="package://demo_urdf/meshes/ur5/visual/wrist2.dae"/>     -->
<!--            <mesh filename="package://demo_urdf/meshes/ur5/visual/wrist3.dae"/>     -->

<robot name="ur5">

    <link name="base_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <mesh filename="package://demo_urdf/meshes/ur5/visual/base.dae"/>
            </geometry>
        </visual>
    </link>

    <link name="shoulder_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <mesh filename="package://demo_urdf/meshes/ur5/visual/shoulder.dae"/>
            </geometry>
        </visual>
    </link>

    <joint name="joint1" type="revolute">
        <!-- 0.089159 -->
        <origin xyz="0 0 0.0862" rpy="0 0 0"></origin>
        <axis xyz="0 0 1"/>
        <parent link="base_link" />
        <child link="shoulder_link"/>
        <!-- -360 - 360 -->
        <limit effort="30" velocity="1.0" lower="-6.28" upper="6.28" />
    </joint>

    <link name="upperarm_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <mesh filename="package://demo_urdf/meshes/ur5/visual/upperarm.dae"/>
            </geometry>
        </visual>
    </link>

    <joint name="joint2" type="revolute">
        <!-- 0.089159 -->
        <origin xyz="0 0.136 0" rpy="0 0 0"></origin>
        <axis xyz="0 1 0"/>
        <parent link="shoulder_link" />
        <child link="upperarm_link"/>
        <!-- -360 - 360 -->
        <limit effort="30" velocity="1.0" lower="-6.28" upper="6.28" />
    </joint>

    <link name="forearm_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <mesh filename="package://demo_urdf/meshes/ur5/visual/forearm.dae"/>
            </geometry>
        </visual>
    </link>

    <joint name="joint3" type="revolute">
        <!-- 0.089159 -->
        <origin xyz="0 -0.12 0.425" rpy="0 0 0"></origin>
        <axis xyz="0 1 0"/>
        <parent link="upperarm_link" />
        <child link="forearm_link"/>
        <!-- -360 - 360 -->
        <limit effort="30" velocity="1.0" lower="-6.28" upper="6.28" />
    </joint>

    <link name="wrist1_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <mesh filename="package://demo_urdf/meshes/ur5/visual/wrist1.dae"/>
            </geometry>
        </visual>
    </link>

    <joint name="joint4" type="revolute">
        <!-- 0.089159 -->
        <origin xyz="0 0 0.3922" rpy="0 0 0"></origin>
        <axis xyz="0 1 0"/>
        <parent link="forearm_link" />
        <child link="wrist1_link"/>
        <!-- -360 - 360 -->
        <limit effort="30" velocity="1.0" lower="-6.28" upper="6.28" />
    </joint>

    <link name="wrist2_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <mesh filename="package://demo_urdf/meshes/ur5/visual/wrist2.dae"/>
            </geometry>
        </visual>
    </link>

    <joint name="joint5" type="revolute">
        <!-- 0.089159 -->
        <origin xyz="0 0.093 -0.0015" rpy="0 0 0"></origin>
        <axis xyz="0 0 1"/>
        <parent link="wrist1_link" />
        <child link="wrist2_link"/>
        <!-- -360 - 360 -->
        <limit effort="30" velocity="1.0" lower="-6.28" upper="6.28" />
    </joint>

    <link name="wrist3_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <mesh filename="package://demo_urdf/meshes/ur5/visual/wrist3.dae"/>
            </geometry>
        </visual>
    </link>

    <joint name="joint6" type="revolute">
        <!-- 0.089159 -->
        <origin xyz="0 0 0.0948" rpy="0 0 0"></origin>
        <axis xyz="0 1 0"/>
        <parent link="wrist2_link" />
        <child link="wrist3_link"/>
        <!-- -360 - 360 -->
        <limit effort="30" velocity="1.0" lower="-6.28" upper="6.28" />
    </joint>

</robot>


3. 调试验证

在这里插入图片描述

*. 参考


*. 问题解决


*. rough

  • 11
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
你可以使用ROS(Robot Operating System)和Python来操纵UR5机械臂。首先,确保已经安装了ROS和UR开发包。接下来,你需要创建一个ROS工作空间,并下载UR5机械臂ROS包。然后,你可以使用Python编写控制程序来操纵机械臂。 以下是一个简单的操纵UR5机械臂的示例代码: ```python #!/usr/bin/env python import rospy from std_msgs.msg import String from sensor_msgs.msg import JointState from math import pi def move_ur5(): rospy.init_node('move_ur5', anonymous=True) pub = rospy.Publisher('/ur_driver/URScript', String, queue_size=10) # 设置机械臂关节角度 joint_angles = [0, -pi/2, pi/2, -pi/2, -pi/2, 0] joint_angles_str = '[{}]'.format(', '.join(map(str, joint_angles))) command = 'movej({}, a=1.0, v=0.1)'.format(joint_angles_str) # 发布控制指令 rospy.loginfo('Moving UR5 to joint angles: {}'.format(joint_angles_str)) pub.publish(command) rospy.sleep(5) if __name__ == '__main__': try: move_ur5() except rospy.ROSInterruptException: pass ``` 这个示例代码中,我们使用ROS的Python库rospy来发布控制指令到UR5机械臂。首先,我们初始化ROS节点并创建一个Publisher来发布URScript指令。然后,我们设置机械臂的目标关节角度,并将其转换为字符串格式。最后,我们发布控制指令并等待5秒钟。 请确保你的ROS环境正确设置,并且已经连接上UR5机械臂。你可以运行上述代码来测试操纵UR5机械臂。 希望这对你有帮助!如有其他问题,请随时提问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值