gazebo添加末端六维力传感器
常用的机器人只支持位置控制,但实际运用中,却对末端力控制有迫切的需求,其中一种常用的方法是基于位置的阻抗控制(也称为导纳控制)实现对末端的力控。该方法只需要增加一个末端六维力传感器,就能实现机械臂的力柔顺控制,在现实中很容易实现,但是在gazebo中没有提供专用的末端六维力传感器模块,这个问题困扰了我很久。
为了解决这个问题,我让实验室的师弟专门研究了一段时间,结果他直接采用关节传感器(ros_control中提供了关节传感的控制器模块),最后成功采集了末端六维力。
末端六维力传感器添加步骤:
- 1 建立传感器URDF模型
- 2 将模型拼接到机器人末端
- 3 在××.gazebo中配置传感器
建立六维力矩传感器模型
首先绘制六维力传感器三维模型,例如用SolidWorks绘制,让后采用插件导出URDF格式的模型,具体的导出方法参照Solidworks模型转换到URDF格式并配置Moveit的详细教程,本文导出如下
<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner ([email protected])
Commit Version: 1.5.0-0-g9aa0fdb Build Version: 1.5.7004.21443
For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot
name="my_sensor">
<link
name="sensor_link">
<inertial>
<origin
xyz="5.187E-06 8.9595E-06 0.011516"
rpy="0 0 0" />
<mass
value="0.10567" />
<inertia
ixx="7.1441E-05"
ixy="1.6499E-08"
ixz="-4.9269E-09"
iyy="7.146E-05"
iyz="-8.5336E-09"
izz="0.00013366" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://my_arm/meshes/sensor_link.STL" />
</geometry>
<material
name="">
<color
rgba="0.79216 0.79216 0.79216 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename