1.Force Sensors的添加
Add→Force sensor
然后拖到响应的模型树位置,调整位姿即可
2. 传感器 介绍
如上图所示,Force sensor是一个六维力传感器,分别可测量沿x、y和z轴施加在传感器上的力以及围绕x、y和z轴施加在传感器上的扭矩。
对于关节中的力矩,可直接通过API函数simxGetJointForce
来获取,本文主要记录传感器的使用,不涉及关节力矩的获取。
Force sensor相当于一个刚性连接,在仿真过程中,如果外力超过指定的力/扭矩阈值或满足某些其他用户定义的条件时,力传感器可能会损坏,即这个刚性连接会被破坏掉。
注意:要想力传感器工作,必须enable动力学属性
关于力传感器的本地帮助文档位于:①
CoppeliaSim_Edu_V4_0_0_Win/helpFiles/en/forceSensors.htm
;②forceSensors.htm
3. 传感器属性设置
- Filter:当通过力传感器获取力或扭矩数据时,会对其进行累加并可以进行过滤,以减少抖动值。
- Sample size:滤波器应使用的值数。默认值1为不使用滤波器(原始输出)。
- Average value:如果选择,则传感器将提供平均值(样本的平均值)
- Median value:如果选择,则传感器将提供样本中值
- Trigger settings:允许设置一些自动触发条件,触发器将调用触发器回调函数
simBreakForceSensor
,具体参照手册 - Force threshold:设置力矢量阀值
- Torque threshold:设置扭矩矢量阀值
- Consecutive threshold violations for breaking:触发前允许传感器连续超过阀值的次数
- Object size:调整传感器3D表示大小,没有实际的功能作用
- Adjust color A / B: 可调整力传感器的两种颜色
4. API使用及数据可视化
- Step1:使用
simxGetObjectHandle
获取传感器Handle - Step2:通过Handle调用
simxReadForceSensor
具体参见手册Remote API
数据可视化方案:
- 方案1:使用相应的语言调用相应的包,如MATLAB使用plot
- 方案2:在V-REP中使用
Graph
工具进行可视化,下图为一个5㎏重物*落体在机械臂末端产生的力数据
注意:使用Bullet和ODE引擎时,接触边界也进行了碰撞计算,会导致数据一直产生不正确的跳动,解决方案:在Common中设置碰撞掩码(mask),使其掩码位错开,不进行碰撞计算即可
来看下大佬搞的称重器:
5. 应用场景
- 机械臂末端力传感器
- 手爪夹持力的检测
- 足式机器人地面接触力的检测
- 其他
参考文献: