Update workstation UI, ROS task control and device integration

This commit is contained in:
cheng
2026-10-20 15:46:13 +08:00
parent 2b74c50ba8
commit e5b06df6da
141 changed files with 91520 additions and 748 deletions
+31
View File
@@ -0,0 +1,31 @@
from pathlib import Path
from unittest import TestCase
from arm_application.tactile_calibration import ForceCurve,TactileCalibration
class TactileCalibrationTest(TestCase):
def setUp(self):
path=Path(__file__).resolve().parents[2]/'src/arm_application/config/tactile/force_calibration.json'
self.calibration=TactileCalibration(path)
def test_calibration_knots_units_and_shear_sign(self):
self.assertAlmostEqual(self.calibration.normal.convert(10000),.377)
self.assertAlmostEqual(self.calibration.normal.convert(30000),1.377)
self.assertAlmostEqual(self.calibration.shear.convert(36000),1.19)
self.assertAlmostEqual(self.calibration.shear.convert(-36000),-1.19)
self.assertEqual(self.calibration.normal.convert(0),0.)
self.assertEqual(self.calibration.shear.convert(-500),0.)
def test_interpolation_and_conversion_never_replace_raw_values(self):
raw={'fnormal':20000.,'fshearx':52000.,'fsheary':-52000.}
saved=dict(raw);force=self.calibration.convert(raw)
self.assertAlmostEqual(force['fnormal'],.877)
self.assertAlmostEqual(force['fshearx'],1.625)
self.assertAlmostEqual(force['fsheary'],-1.625)
self.assertEqual(raw,saved)
with self.assertRaises(ValueError):self.calibration.normal.convert(float('nan'))
def test_invalid_or_disabled_curve_does_not_mislabel_raw_as_newtons(self):
with self.assertRaises(ValueError):ForceCurve.from_config({'enabled':False})
with self.assertRaises(ValueError):ForceCurve.from_config({'enabled':True,'method':'piecewise_linear',
'points':[{'raw':1,'force_n':0},{'raw':1,'force_n':1}]})