Files
2026-06-09 09:31:44 +08:00

63 lines
1.7 KiB
Python

import multiprocessing as mp
from gripper_control.calibration import ForceConverter
from gripper_control.feedback import TactileFeedbackProcessor
from gripper_control.force_reader import TwoSensorForceReader
from gripper_control.hardware import GripperClient
from gripper_control.paths import ensure_project_paths
from .controller import SideTriggerGripController
from .settings import Demo02Config
def build_controller(
argv=None,
status_callback=None,
include_visuals=False,
visual_size=320,
):
ensure_project_paths()
config = Demo02Config.from_args(argv)
normal_converter = ForceConverter.from_config(
config.normal_force_calibration,
"normal_force_calibration",
)
shear_converter = ForceConverter.from_config(
config.shear_force_calibration,
"shear_force_calibration",
)
reader = TwoSensorForceReader(
video1=config.video1,
video2=config.video2,
config1=config.sensor_config1,
config2=config.sensor_config2,
rotation1=config.rotation1,
rotation2=config.rotation2,
target_fps=config.sensor_fps,
cuda=not config.sensor_cpu,
motion_threshold=config.motion_threshold,
include_visuals=include_visuals,
visual_size=visual_size,
)
gripper = GripperClient(config)
feedback = TactileFeedbackProcessor(config, normal_converter, shear_converter)
return SideTriggerGripController(
config,
reader,
gripper,
feedback,
status_callback=status_callback,
)
def main(argv=None):
controller = build_controller(argv)
controller.run()
if __name__ == "__main__":
mp.freeze_support()
main()