English | ็ฎไฝไธญๆ
openarm_HT ๆฏ้ขๅๅ่ๆบๅจไบบ็ Python ่ฝฏไปถๅผๅๅทฅๅ
ทๅ
ใๆบๅจไบบๅทฆๅณ่ๅๆ 7 ไธชๆบๆขฐ่ๅ
ณ่ๅ 1 ไธชๅคน็ช็ตๆบใๆฌ้กน็ฎๆไพๅบๅฑ็ตๆบ้ไฟกใMIT ๆงๅถใๆญฃ/้่ฟๅจๅญฆใๅจๅๅญฆ่กฅๅฟใ่ฝจ่ฟน่งๅใQP ้่ฟๅจๅญฆใ่ฝจ่ฟนๅฝๅถ/ๅๆพใ้ฎ็ๅ Quest VR ๆงๅถไพ็จใ
Caution
ๆบๆขฐ่ไธ็ตๅ่ฏทๆธ
็ฉบๅทฅไฝๅบๅ๏ผ็กฎ่ฎคๆฅๅๅ Ctrl+C ๅฏ็จใๆ็ตๆถๆบๆขฐ่ๅฏ่ฝไธๅ ๏ผ่ฏทๆๅๆฏๆๆบๆขฐ่ใ้ฆๆฌก่ฟ่กไปปไฝๅจไฝไพ็จๆถ่ฏทไฝฟ็จไฝ้ๅนถ้ๆถๅๅคๅๆบใ
- ๅทฆ่ใๅณ่ๅๅ่ๅๆญฅๆงๅถ
- ไฝ็ฝฎใ้ๅบฆใๅ็ฉใไฝ็ฝฎ-้ๅบฆๅ MIT ไบๅๆฐๆงๅถ
- Pinocchio ๆญฃ่ฟๅจๅญฆใ้่ฟๅจๅญฆๅ้ ๅฏๆฏ็ฉ้ต
- ้ๅใๆฉๆฆใ็งๆฐๅใ่ดจ้็ฉ้ตๅๅฎๆดๅจๅๅญฆ
- ไบๆฌก/ไธๆฌกๅค้กนๅผๆๅผๅ็ฌๅกๅฐ่ฝจ่ฟน
- ๅธฆๅ ณ่ไฝ็ฝฎใ้ๅบฆๅๅ ้ๅบฆ็บฆๆ็ QP ้่ฟๅจๅญฆ
- ๅ่/ๅ่่ฝจ่ฟนๅฝๅถใๅๅฒ่ฝจ่ฟน้ๆฉๅ MIT ๅๆพ
- ้ฎ็็ฌๅกๅฐๆงๅถๅ Quest VR DLS/QP ๆงๅถ
- YAML ๅ ณ่้ไฝใ้ๅบฆใๅ ้ๅบฆใๅ็ฉๅ URDF ้ ็ฝฎ
ไธๅพๅฑ็คบ็ๆฏๅคน็ชๆซ็ซฏๅๆ ๆนๅใTCP๏ผTool Center Point๏ผๆฏ็ฌๅกๅฐๆงๅถไฝฟ็จ็ๅคน็ชๆซ็ซฏๅ่ๅๆ ็ณป๏ผๅทฆๅณ่ๅจ URDF ไธญๅๅซไธบ l_hand_tcp_link ๅ r_hand_tcp_linkใ
openarm_HT/
โโโ motor_whl/ # ้ข็ผ่ฏๅบๅฑ็ตๆบ SDK
โ โโโ hightorque_robot-1.2.0-cp39-cp39-linux_x86_64.whl
โ โโโ hightorque_robot-1.2.0-cp310-cp310-linux_x86_64.whl
โ โโโ hightorque_robot-1.2.0-cp311-cp311-linux_x86_64.whl
โ โโโ hightorque_robot-1.2.0-cp312-cp312-linux_x86_64.whl
โ โโโ hightorque_robot-1.0.0-cp39-cp39-linux_aarch64.whl
โ โโโ hightorque_robot-1.0.0-cp310-cp310-linux_aarch64.whl
โ โโโ hightorque_robot-1.0.0-cp311-cp311-linux_aarch64.whl
โ โโโ hightorque_robot-1.0.0-cp312-cp312-linux_aarch64.whl
โ
โโโ Openarm-HT_description/ # ๅ่ URDF ๆจกๅ
โ โโโ urdf/
โ โ โโโ Openarm-HT_description.urdf
โ โ โโโ Openarm-HT_description.csv
โ โโโ meshes/ # ่บฏๅนฒใๅทฆๅณ่ๅๅคน็ช 3D ๆจกๅ
โ โโโ config/ # RViz ๅๅ
ณ่ๆพ็คบ้
็ฝฎ
โ โโโ launch/ # ROS/ROS 2 ๆพ็คบๅฏๅจๆไปถ
โ
โโโ images/
โ โโโ Board.png # ้ไฟกๆฟๆฅ็บฟๅพ
โ โโโ base_joint.png # ๅบๅบงๅๆ ็ณป
โ โโโ tcp_frame.png # ๅคน็ชๆซ็ซฏ TCP ๅๆ ็ณป
โ
โโโ robot_param/ # ๆบๆขฐ่้ซๅฑ้
็ฝฎ
โ โโโ Openarm_left.yaml # ๅทฆ่ 7 ่ช็ฑๅบฆ
โ โโโ Openarm_right.yaml # ๅณ่ 7 ่ช็ฑๅบฆ
โ โโโ Leader.yaml # ๆง 6 ่ช็ฑๅบฆไธป่
โ โโโ Follower.yaml # ๆง 6 ่ช็ฑๅบฆไป่
โ โโโ motor_param/
โ โโโ 7dof_openarm_HT_params_left.yaml
โ โโโ 7dof_openarm_HT_params_right.yaml
โ โโโ 6dof_openarm_HT_params_leader.yaml
โ โโโ 6dof_openarm_HT_params_follower.yaml
โ โโโ motor_1.yaml
โ โโโ motor_6.yaml
โ โโโ robot_config.yaml
โ
โโโ scripts/ # Python ๆงๅถไพ็จ
โ โโโ Lib/ # ้ซๅฑๅฐ่ฃ
ๅบ
โ โ โโโ Openarm.py # Openarm ๆงๅถ็ฑป
โ โ โโโ qp_ik.py # OSQP ๆ็้ๅบฆ็บง IK
โ โ โโโ recorder.py # JSONL ่ฝจ่ฟนๅฝๅถ/ๅๆพ
โ โ โโโ __init__.py
โ โ
โ โโโ 0_robot_get_state.py # ๅ่็ถๆๆฅ็
โ โโโ 0_dual_openarm_HT_get_state.py # ๅ่็ถๆๆฅ็
โ โโโ 0_robot_set_zero.py # ๅ่่ฎพ็ฝฎ้ถไฝ
โ โโโ 0_dual_robot_set_zero.py # ๅ่่ฎพ็ฝฎ้ถไฝ
โ โ
โ โโโ 1_Joint_PosVel_control.py # ๅ่ไฝ็ฝฎ้ๅบฆๆงๅถ
โ โโโ 1_dual_Joint_PosVel_control.py # ๅ่ไฝ็ฝฎ้ๅบฆๆงๅถ
โ โโโ 1_Joint_Vel_control.py # ๅ่้ๅบฆๆงๅถ
โ โโโ 1_dual_Joint_Vel_control.py # ๅ่้ๅบฆๆงๅถ
โ โโโ 1_Joint_PD_control.py # ๅ่ MIT/PD ๆงๅถ
โ โโโ 1_dual_Joint_PD_control.py # ๅ่ MIT/PD ๆงๅถ
โ โโโ 1_moveJ_control.py # ๅ่ moveJ
โ โโโ 1_dual_moveJ_control.py # ๅ่ moveJ
โ โโโ 1_forward_kinematics_test.py # ๅ่ๆญฃ่ฟๅจๅญฆ
โ โโโ 1_dual_forward_kinematics_test.py # ๅ่ๆญฃ่ฟๅจๅญฆ
โ โโโ 1_inverse_kinematics_test.py # ๅ่้่ฟๅจๅญฆ
โ โโโ 1_dual_inverse_kinematics_test.py # ๅ่้่ฟๅจๅญฆ
โ โ
โ โโโ 2_gravity_compensation_control.py
โ โโโ 2_dual_gravity_compensation_control.py
โ โโโ 2_gravity_friction_compensation_control.py
โ โโโ 2_dual_gravity_friction_compensation_control.py
โ โโโ 2_Jointimpendence_control_with_gra_pd.py
โ โโโ 2_dual_Jointimpendence_control_with_gra_pd.py
โ โโโ 2_Jointimpendence_control_with_gra_fri_pd.py
โ โโโ 2_dual_Jointimpendence_control_with_gra_fri_pd.py
โ โโโ 2_inv_PosVel_control.py
โ โโโ 2_dual_inv_PosVel_control.py
โ โ
โ โโโ 3_interpolation_control_zeroVel.py
โ โโโ 3_interpolation_control_nozeroVel.py
โ โโโ 3_sin_trajectory_control.py
โ โโโ 3_dual_sin_trajectory_control.py
โ โโโ 3_sin_trajectory_control_with_plot.py
โ โโโ 3_gravity_compensation_with_fk.py
โ โ
โ โโโ 4_QP_inverse_kinematics_control.py # ๅ่ QP ๅฅๅผไฝๅฝข/ๅคด้กถ็ปๅ
โ โโโ 4_dual_QP_inverse_kinematics_control.py # ๅ่ QP ๅฅๅผไฝๅฝข/ๅคด้กถ็ปๅ
โ โโโ 5_teleop_control.py # ๆงไธปไป่้ฅๆ
โ โโโ 5_trajectory_record_replay.py # ๅ/ๅ่่ฝจ่ฟนๅฝๅถๅๆพ
โ โโโ 6_moveL_pos_control.py # ็ฌๅกๅฐ็ด็บฟ่ฟๅจ
โ โโโ 6_moveL_rotate_control.py # ็ฌๅกๅฐๆ่ฝฌ่ฟๅจ
โ โ
โ โโโ 7_keyboard_cartesian_pos_control.py
โ โโโ 7_keyboard_cartesian_vel_control.py
โ โโโ 7_keyboard_cartesian_vel_collision_control.py
โ โโโ 7_keyboard_cartesian_impedance_control.py
โ โโโ 7_keyboard_cartesian_pd_nullspace_lock_control.py
โ โ
โ โโโ 8_vr_single_cartesian_dls_control.py # VR ๅ่ DLS
โ โโโ 8_vr_single_cartesian_qp_control.py # VR ๅ่ QP
โ โโโ 8_vr_dual_cartesian_dls_control.py # VR ๅ่ DLS
โ โโโ 8_vr_dual_cartesian_qp_control.py # VR ๅ่ QP
โ โ
โ โโโ motor_example/ # ๅบๅฑๅ็ตๆบไพ็จ
โ โ โโโ 01_motor_get_status.py
โ โ โโโ 02_position_control.py
โ โ โโโ 03_velocity_control.py
โ โ โโโ 04_torque_control.py
โ โ โโโ 05_voltage_control.py
โ โ โโโ 06_current_control.py
โ โ โโโ 07_pos_vel_maxtorque_control.py
โ โ โโโ 08_pos_vel_torque_kp_kd_control.py
โ โ โโโ 09_set_zero.py
โ โ โโโ motor_control.py
โ โโโ openarm_trajectory_test1.jsonl # ่ฝจ่ฟนๆ ทไพ
โ
โโโ src/bindings.cpp # pybind11 ๅบๅฑ็ปๅฎ
โโโ CMakeLists.txt
โโโ setup.py
โโโ pyproject.toml
โโโ requirements.txt
โโโ README.md # ไธญๆ
โโโ README_EN.md # English
- Ubuntu 20.04/22.04 64-bit
- Python 3.9โ3.12๏ผๆจ่ Python 3.10๏ผ
- openarm_HT ๆบๆขฐ่ๅ HighTorque ้ไฟกๆฟ
pinใSciPyใPyYAML ๅ OSQP- ้ฎ็ไพ็จ้่ฆๅพๅฝขๆก้ข/X ไผ่ฏ
- VR ไพ็จ้่ฆๅค้จ Quest ๆๆๆฐๆฎ่ฝฌๅๆๅก
conda create -n panthera python=3.10
conda activate pantheraๅจ้กน็ฎๆ น็ฎๅฝไธญๆ นๆฎ CPU ๆถๆๅ Python ็ๆฌ้ๆฉ motor_whl/ ไธญ็ wheelใไพๅฆ Ubuntu x86_64 + Python 3.10๏ผ
pip install motor_whl/hightorque_robot-1.2.0-cp310-cp310-linux_x86_64.whlaarch64 + Python 3.10๏ผ
pip install motor_whl/hightorque_robot-1.0.0-cp310-cp310-linux_aarch64.whlpip install -r requirements.txtImportant
ๅจๅๅญฆๅบ็ pip ๅ
ๅๆฏ pin๏ผPython ไธญ็ๅฏผๅ
ฅๅๆฏ pinocchioใ
python -c "import hightorque_robot; print('motor SDK OK')"
python -c "import pinocchio; print('Pinocchio OK')"
python -c "import scipy, yaml, osqp; print('dependencies OK')"่ฟๆฅๅ็กฎ่ฎคไธฒๅฃ๏ผ
ls /dev/ttyACM*ไธดๆถๆไบๅฝๅ่ฎพๅค่ฎฟ้ฎๆ้๏ผ
sudo chmod a+rw /dev/ttyACM*cd scripts
python 0_robot_get_state.pyOpenarm() ้ป่ฎคๅ ่ฝฝ robot_param/Openarm_left.yamlใๅ่ไพ็จไผๅๅซๅ ่ฝฝ๏ผ
robot_param/Openarm_left.yamlrobot_param/Openarm_right.yaml
from Lib import Openarm
robot = Openarm() # ้ป่ฎคๅทฆ่
position = robot.get_current_pos()
velocity = robot.get_current_vel()
torque = robot.get_current_torque()
target = [-0.2, -0.2, 0.2, -0.4, 0.5, 0.2, -0.1]
speed = [0.3] * robot.motor_count
robot.Joint_Pos_Vel(target, speed, robot.max_torque)
robot.gripper_open()
robot.set_stop()ๆๆๆบๆขฐ่ไพ็จไฝไบ scripts/ใ
| ๅ็ผ | ๅ ๅฎน | ไธป่ฆไพ็จ |
|---|---|---|
0_ |
็ถๆใ็ฝฎ้ถ | 0_robot_get_state.pyใ0_dual_openarm_HT_get_state.py |
1_ |
ๅ ณ่ๆงๅถๅ FK/IK | 1_Joint_PosVel_control.pyใ1_dual_moveJ_control.py |
2_ |
้ๅ/ๆฉๆฆ่กฅๅฟๅ้ปๆ | 2_gravity_compensation_control.pyใ2_dual_inv_PosVel_control.py |
3_ |
ๆๅผๅๆญฃๅผฆ่ฝจ่ฟน | 3_sin_trajectory_control.pyใ3_dual_sin_trajectory_control.py |
4_ |
QP ้่ฟๅจๅญฆ | 4_QP_inverse_kinematics_control.pyใ4_dual_QP_inverse_kinematics_control.py |
5_ |
่ฝจ่ฟนๅฝๅถ/ๅๆพๅไธปไป้ฅๆ | 5_trajectory_record_replay.pyใ5_teleop_control.py |
6_ |
็ฌๅกๅฐ MoveL | 6_moveL_pos_control.pyใ6_moveL_rotate_control.py |
7_ |
้ฎ็็ฌๅกๅฐๆงๅถ | 7_keyboard_cartesian_*_control.py |
8_ |
Quest VR ๅ/ๅ่ DLS/QP | 8_vr_*_control.py |
Note
5_teleop_control.py ้ขๅๆง 6 ่ช็ฑๅบฆ Leader/Follower ไธปไป่้
็ฝฎ๏ผไธๆฏๅฝๅ 7 ่ช็ฑๅบฆๅทฆๅณ่็้็จๅๆพ็จๅบใ
cd scripts
python 5_trajectory_record_replay.pyไบคไบ่ๅๆฏๆ๏ผ
- ๅทฆ่ใๅณ่ๆๅ่ๅฝๅถใ
- ๅๆพๅฝๅ้ป่ฎค่ฝจ่ฟนใ
- ้ๆฉๅๅฒ JSONL ่ฝจ่ฟนใ
- ๅ่ๅ ฑไบซๆถ้ด่ฝดๅนถไฝฟ็จ MIT ๅๆญฅๅๆพใ
ไนๅฏไฝฟ็จๅฝไปค่ก๏ผ
python 5_trajectory_record_replay.py record --arm dual
python 5_trajectory_record_replay.py replay trajectory_dual_YYYYMMDD_HHMMSS.jsonl
python 5_trajectory_record_replay.py listSDK ๅ ๅ ๅซ 4 ไธชๆบๆขฐ่ๆงๅถ็จๅบ๏ผ
8_vr_single_cartesian_dls_control.py8_vr_single_cartesian_qp_control.py8_vr_dual_cartesian_dls_control.py8_vr_dual_cartesian_qp_control.py
Quest ไฝๅงฟๅๆ้ฎๆฐๆฎ็ฑๅค้จ้กน็ฎ Quest_controller_stream ๅ้๏ผ่ฏฅๆฐๆฎ่ฝฌๅๅทฅ็จไธๅ
ๅซๅจๆฌ SDK ไธญใ้ป่ฎค UDP ็ซฏๅฃไธบ 5005ใ
ๅ ๅฏๅจๅค้จ่ฝฌๅๆๅก๏ผๅๅจ SDK ็ป็ซฏ่ฟ่กๆ้็VRไพ็จ๏ผไพๅฆ๏ผ
cd scripts
python 8_vr_single_cartesian_qp_control.pyๅ
ณ้ฎๅๆฐไฝไบ robot_param/Openarm_left.yaml ๅ robot_param/Openarm_right.yaml๏ผ
joint_limits๏ผๅ ณ่ไฝ็ฝฎ่พน็gripper_limits๏ผๅคน็ช่พน็max_torque๏ผๆๅคงๅ็ฉvelocity_limits๏ผๅ ณ่้ๅบฆ้ๅถacceleration_limits๏ผๅ ณ่ๅ ้ๅบฆ้ๅถurdf.end_effector_link๏ผๆซ็ซฏ TCP framemoveit_cartesian๏ผ็ฌๅกๅฐ้ๆ ทๅ่ทณๅ้ๅผ
ไฟฎๆน้ ็ฝฎๅๅบๅ ่ฟ่ก็ถๆ/FK ไพ็จ๏ผ็กฎ่ฎค็ตๆบๆฐใๅ ณ่ๅใ้ไฝๅ TCP frame ไธ่ดใ
ๆฃๆฅ้ไฟกๆฟไพ็ตใUSB ่ฟๆฅๅไธฒๅฃๆ้๏ผ็ถๅ้ๆฐๆง่ก ls /dev/ttyACM*ใ
็กฎ่ฎคๅทฒๆฟๆดป panthera ็ฏๅขๅนถ้่ฟ pip install pin ๅฎ่ฃ
๏ผ้ฟๅ
ไธ ROS ็ๅ
ถไป Python ็ๆฌๆทท็จใ
pynput ้่ฆๅฏ็จ็ๅพๅฝขๆก้ข/X ไผ่ฏใ่ฏทๅจๆบๆขฐไบบไธปๆบ็ๆก้ข็ป็ซฏไธญ่ฟ่ก๏ผไธ่ฆๅจๆ ๆพ็คบ็ headless ไผ่ฏไธญ่ฟ่กใ
็กฎ่ฎค Quest ่ฝฌๅๆๅกๅทฒๅฏๅจ๏ผUDP IP/็ซฏๅฃไธๆงๅถ่ๆฌไธ่ด๏ผไธ้ฒ็ซๅขๆช้ปๆญข UDP 5005ใ
- ไปฃ็ ็บงๆงๅถๆฅๅฃไฝไบ
scripts/Lib/Openarm.pyใ - QP IK ๅฎ็ฐไฝไบ
scripts/Lib/qp_ik.pyใ - ่ฝจ่ฟน JSONL ๅทฅๅ
ทไฝไบ
scripts/Lib/recorder.pyใ - ไธ่ฆ็ป่ฟ YAML ๅ ณ่้ไฝๅๅ็ฉ้ๅถใ
- ็ปๆ็จๅบๆถ่ฐ็จ
set_stop()๏ผๅนถ็กฎ่ฎค็ตๆบ่ฟๅ ฅ้ขๆ็ๅน่ฝฆ/้ปๅฐผ็ถๆใ
้กน็ฎๆๅ
ๅ
ๆฐๆฎๅฃฐๆไธบ MIT Licenseใๅๅธๆถ่ฏทๅจ้กน็ฎๆ น็ฎๅฝไธญ้ๅธฆๅฎๆด็ LICENSE ๆไปถใ


