Python API
시작하기
Haply 하드웨어 API는 Haply 하드웨어에 파이썬 인터페이스를 제공하는 파이썬 패키지입니다. API는 C++로 구현되며 pybind11을 사용하여 래핑됩니다. 이 API는 해플라이 버세그립과 해플라이 인버스3를 포함한 해플라이 하드웨어에 파이썬 인터페이스를 제공합니다.
설치
Haply 하드웨어 API는 PyPI에서 Python 패키지로 제공됩니다. 패키지를 설치하려면 pip를 사용하세요:
pip install HaplyHardwareAPI
사용법
Haply 하드웨어 API를 사용하는 방법에 대한 샘플은 Gitlab 샘플 리포지토리에서 확인할 수 있습니다.
예를 들어, 다음 코드 스니펫은 Haply 하드웨어 API를 사용하여 Inverse3에 연결하고 가상의 실제 공을 시뮬레이션하는 방법을 보여줍니다:
#!/usr/bin/env python
"""This example demonstrates how to display a haptic ball """
__author__ = "Antoine Weill--Duflos"
__copyright__ = "Copyright 2023, HaplyRobotics"
import HaplyHardwareAPI
import time
import math
connected_devices = HaplyHardwareAPI.detect_inverse3s()
com_stream = HaplyHardwareAPI.SerialStream(connected_devices[0])
inverse3 = HaplyHardwareAPI.Inverse3(com_stream)
response_to_wakeup = inverse3.device_wakeup_dict()
print("connected to device {}".format(response_to_wakeup["device_id"]))
start_time = time.perf_counter()
loop_time = 0.001 # 1ms
forces = [0, 0, 0]
def force_sphere(sphere_center, sphere_radius, device_position, stiffness):
distance = math.sqrt(
sum([(device_position[i] - sphere_center[i])**2 for i in range(3)]))
if distance > sphere_radius:
return [0, 0, 0]
else:
# Compute the normalised direction of the forces
direction = [(device_position[i] - sphere_center[i])/sphere_radius
for i in range(3)]
# Compute the force
force = [direction[i]*(sphere_radius-distance)
* stiffness for i in range(3)]
return force
while True:
position, velocity = inverse3.end_effector_force(forces)
forces = force_sphere([0, -0.14, 0.2], 0.08, position, stiffness=800)
print("position: {}".format(position))
while time.perf_counter() - start_time < loop_time: # wait for loop time to be reached
pass
start_time = time.perf_counter()