六自由度机械臂SolidWorks模型转化成urdf文件,添加简单gazebo属性并修改为xacro

在某宝上买了个机械臂,想用来和ros系统通讯玩一玩。我简单学习了一下硬件,现在开始软件方面的学习。第一步先在ros系统中对机械臂进行虚拟仿真,因此需要导入模型。手写六自由度机械臂的urdf或者xacro文件太费劲,好在SolidWorks出了一款sw_urdf_exporter插件,可以自动生成urdf及展示用的launch文件,非常方便。

sw_urdf_exporter插件

下载链接及安装详情可以看官方文档
安装完成后,进入sw界面加载该插件
在这里插入图片描述在这里插入图片描述
点选SW2URDF插件选项框并点击确定,插件即可成功加载。

给机械臂添加坐标系和旋转轴

机械臂如图所示
在这里插入图片描述
第一步,添加点,该点作为后面坐标原点的位置参考点。参考几何体->点,然后根据几何关系选定点的位置。
在这里插入图片描述第二步,添加轴,该轴即为joint的转轴,与即将建立的坐标系的z轴重合。参考几何体->基准轴,同样根据几何关系选定基准轴位置。
在这里插入图片描述第三步,添加坐标系。参考几何体->坐标系,坐标系原点位置为第一步添加的点的位置,z轴与第二步添加的基准轴重合。
在这里插入图片描述
最终建立的坐标系如图所示,其中坐标系3是base_link上的坐标系,z轴的方向需要与机械臂直立的方向一致,否则会在rviz中倒立显示。坐标系4、5、6、8、9为机械臂连杆上的五个旋转joint坐标系,坐标系10为旋转的finger坐标系。
在这里插入图片描述

在URDF界面设置坐标系和旋转轴

工具->File->Export as Urdf,下面是具体界面。其中,Link Components部分选择该link部分包含的零件,Number of Child links即为子连杆的数量,这里每个link的子连杆均为1。
在这里插入图片描述
各关节类型均为revolute,各选项点选完毕后,点击“preview and export”
在这里插入图片描述在这里插入图片描述
在点击“preview and export”后,会出现如下界面,按图示填写每个关节的限位值,注意是弧度。该界面中的内容可以后期在生成的urdf文件中修改。
在这里插入图片描述

生成package包

注意该包文件需要是小写字母命名。
在这里插入图片描述将生成的包复制到工作空间内,新建myrobot_description.urdf.xacro文件,内容如下:

<?xml version="1.0"?>
<robot name="myrobot_description" xmlns:xacro="http://www.ros.org/wiki/xacro">
……
原myrobot_description.urdf文件的内容
……
 <!--/// gazebo -->
      <!-- Transmissions for ROS Control -->
    <xacro:macro name="transmission_block" params="joint_name">
        <transmission name="tran1">
            <type>transmission_interface/SimpleTransmission</type>
            <joint name="${joint_name}">
                <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
            </joint>
            <actuator name="motor1">
                <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
                <mechanicalReduction>1</mechanicalReduction>
            </actuator>
        </transmission>
    </xacro:macro>
    
    <xacro:transmission_block joint_name="base_link_to_link_02"/>
    <xacro:transmission_block joint_name="link_02_to_link_03"/>
    <xacro:transmission_block joint_name="link_03_to_link_04"/>
    <xacro:transmission_block joint_name="link_04_to_link_05"/>
    <xacro:transmission_block joint_name="link_05_to_link_06"/>
    <xacro:transmission_block joint_name="finger_joint"/>

    <!-- ros_control plugin -->
    <gazebo>
        <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
            <robotNamespace>/myrobot_description</robotNamespace>
        </plugin>
    </gazebo>

</robot>

display.launch内容如下:

<launch>
  <arg
    name="urdf_file" default="$(find xacro)/xacro.py '$(find myrobot_description)/urdf/myrobot_description.urdf.xacro'" />
  <arg
    name="gui"
    default="True" />
  <param
    name="robot_description"
    command="$(arg urdf_file)" />
  <param
    name="use_gui"
    value="$(arg gui)" />
  <node
    name="joint_state_publisher"
    pkg="joint_state_publisher"
    type="joint_state_publisher" />
  <node
    name="robot_state_publisher"
    pkg="robot_state_publisher"
    type="state_publisher" />
  <node
    name="rviz"
    pkg="rviz"
    type="rviz"
    args="-d $(find myrobot_description)/urdf.rviz" />
</launch>
测试

使用命令
roslaunch display.launch
在这里插入图片描述在这里插入图片描述


图纸我已经上传了,下面是链接供大家下载使用~
另外提醒一点,这个模型在ros中建模tf树会出现问题,后面我是1:1按照图纸的尺寸,用SolidWorks重新建了个机械臂。如果可能大家还是自己建一个,很简单,知道每个轴尺寸即可~
https://download.csdn.net/download/qq_26565435/12630791

评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuuyann

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值