Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

openarm_HT Python SDK

English | ็ฎ€ไฝ“ไธญๆ–‡

openarm_HT ๆ˜ฏ้ขๅ‘ๅŒ่‡‚ๆœบๅ™จไบบ็š„ Python ่ฝฏไปถๅผ€ๅ‘ๅทฅๅ…ทๅŒ…ใ€‚ๆœบๅ™จไบบๅทฆๅณ่‡‚ๅ„ๆœ‰ 7 ไธชๆœบๆขฐ่‡‚ๅ…ณ่Š‚ๅ’Œ 1 ไธชๅคน็ˆช็”ตๆœบใ€‚ๆœฌ้กน็›ฎๆไพ›ๅบ•ๅฑ‚็”ตๆœบ้€šไฟกใ€MIT ๆŽงๅˆถใ€ๆญฃ/้€†่ฟๅŠจๅญฆใ€ๅŠจๅŠ›ๅญฆ่กฅๅฟใ€่ฝจ่ฟน่ง„ๅˆ’ใ€QP ้€†่ฟๅŠจๅญฆใ€่ฝจ่ฟนๅฝ•ๅˆถ/ๅ›žๆ”พใ€้”ฎ็›˜ๅ’Œ Quest VR ๆŽงๅˆถไพ‹็จ‹ใ€‚

Caution

ๆœบๆขฐ่‡‚ไธŠ็”ตๅ‰่ฏทๆธ…็ฉบๅทฅไฝœๅŒบๅŸŸ๏ผŒ็กฎ่ฎคๆ€ฅๅœๅ’Œ Ctrl+C ๅฏ็”จใ€‚ๆމ็”ตๆ—ถๆœบๆขฐ่‡‚ๅฏ่ƒฝไธ‹ๅ ๏ผŒ่ฏทๆๅ‰ๆ”ฏๆ’‘ๆœบๆขฐ่‡‚ใ€‚้ฆ–ๆฌก่ฟ่กŒไปปไฝ•ๅŠจไฝœไพ‹็จ‹ๆ—ถ่ฏทไฝฟ็”จไฝŽ้€Ÿๅนถ้šๆ—ถๅ‡†ๅค‡ๅœๆœบใ€‚

ไธป่ฆๅŠŸ่ƒฝ

  • ๅทฆ่‡‚ใ€ๅณ่‡‚ๅ’ŒๅŒ่‡‚ๅŒๆญฅๆŽงๅˆถ
  • ไฝ็ฝฎใ€้€Ÿๅบฆใ€ๅŠ›็Ÿฉใ€ไฝ็ฝฎ-้€Ÿๅบฆๅ’Œ MIT ไบ”ๅ‚ๆ•ฐๆŽงๅˆถ
  • Pinocchio ๆญฃ่ฟๅŠจๅญฆใ€้€†่ฟๅŠจๅญฆๅ’Œ้›…ๅฏๆฏ”็Ÿฉ้˜ต
  • ้‡ๅŠ›ใ€ๆ‘ฉๆ“ฆใ€็ง‘ๆฐๅŠ›ใ€่ดจ้‡็Ÿฉ้˜ตๅ’ŒๅฎŒๆ•ดๅŠจๅŠ›ๅญฆ
  • ไบ”ๆฌก/ไธƒๆฌกๅคš้กนๅผๆ’ๅ€ผๅ’Œ็ฌ›ๅกๅฐ”่ฝจ่ฟน
  • ๅธฆๅ…ณ่Š‚ไฝ็ฝฎใ€้€Ÿๅบฆๅ’ŒๅŠ ้€Ÿๅบฆ็บฆๆŸ็š„ QP ้€†่ฟๅŠจๅญฆ
  • ๅ•่‡‚/ๅŒ่‡‚่ฝจ่ฟนๅฝ•ๅˆถใ€ๅކๅฒ่ฝจ่ฟน้€‰ๆ‹ฉๅ’Œ MIT ๅ›žๆ”พ
  • ้”ฎ็›˜็ฌ›ๅกๅฐ”ๆŽงๅˆถๅ’Œ Quest VR DLS/QP ๆŽงๅˆถ
  • YAML ๅ…ณ่Š‚้™ไฝใ€้€Ÿๅบฆใ€ๅŠ ้€Ÿๅบฆใ€ๅŠ›็Ÿฉๅ’Œ URDF ้…็ฝฎ

ๅๆ ‡็ณป

ๅŸบๅบงๅๆ ‡็ณป

openarm_HT ๅŸบๅบงๅๆ ‡็ณป

ๅคน็ˆชๆœซ็ซฏ๏ผˆTCP๏ผ‰ๅๆ ‡็ณป

ไธ‹ๅ›พๅฑ•็คบ็š„ๆ˜ฏๅคน็ˆชๆœซ็ซฏๅๆ ‡ๆ–นๅ‘ใ€‚TCP๏ผˆTool Center Point๏ผ‰ๆ˜ฏ็ฌ›ๅกๅฐ”ๆŽงๅˆถไฝฟ็”จ็š„ๅคน็ˆชๆœซ็ซฏๅ‚่€ƒๅๆ ‡็ณป๏ผŒๅทฆๅณ่‡‚ๅœจ URDF ไธญๅˆ†ๅˆซไธบ l_hand_tcp_link ๅ’Œ r_hand_tcp_linkใ€‚

openarm_HT ๅคน็ˆชๆœซ็ซฏ TCP ๅๆ ‡็ณป

้กน็›ฎ็ป“ๆž„

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 ๆ‰‹ๆŸ„ๆ•ฐๆฎ่ฝฌๅ‘ๆœๅŠก

ๅฎ‰่ฃ…

1. ๅˆ›ๅปบ conda ็Žฏๅขƒ

conda create -n panthera python=3.10
conda activate panthera

2. ๅฎ‰่ฃ…ๅบ•ๅฑ‚็”ตๆœบ SDK

ๅœจ้กน็›ฎๆ น็›ฎๅฝ•ไธญๆ นๆฎ 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.whl

aarch64 + Python 3.10๏ผš

pip install motor_whl/hightorque_robot-1.0.0-cp310-cp310-linux_aarch64.whl

3. ๅฎ‰่ฃ…้ซ˜ๅฑ‚ๅบ“ไพ่ต–

pip install -r requirements.txt

Important

ๅŠจๅŠ›ๅญฆๅบ“็š„ pip ๅŒ…ๅๆ˜ฏ pin๏ผŒPython ไธญ็š„ๅฏผๅ…ฅๅๆ˜ฏ pinocchioใ€‚

4. ้ชŒ่ฏ็Žฏๅขƒ

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')"

่ฟžๆŽฅไธŽๅฟซ้€Ÿๅผ€ๅง‹

้€šไฟกๆฟๆŽฅ็บฟ

HighTorque ้€šไฟกๆฟๆŽฅ็บฟ

่ฟžๆŽฅๅŽ็กฎ่ฎคไธฒๅฃ๏ผš

ls /dev/ttyACM*

ไธดๆ—ถๆŽˆไบˆๅฝ“ๅ‰่ฎพๅค‡่ฎฟ้—ฎๆƒ้™๏ผš

sudo chmod a+rw /dev/ttyACM*

่ฏปๅ–ๅ•่‡‚็Šถๆ€

cd scripts
python 0_robot_get_state.py

Openarm() ้ป˜่ฎคๅŠ ่ฝฝ robot_param/Openarm_left.yamlใ€‚ๅŒ่‡‚ไพ‹็จ‹ไผšๅˆ†ๅˆซๅŠ ่ฝฝ๏ผš

  • robot_param/Openarm_left.yaml
  • robot_param/Openarm_right.yaml

Python ๆŽฅๅฃ็คบไพ‹

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

ไบคไบ’่œๅ•ๆ”ฏๆŒ๏ผš

  1. ๅทฆ่‡‚ใ€ๅณ่‡‚ๆˆ–ๅŒ่‡‚ๅฝ•ๅˆถใ€‚
  2. ๅ›žๆ”พๅฝ“ๅ‰้ป˜่ฎค่ฝจ่ฟนใ€‚
  3. ้€‰ๆ‹ฉๅކๅฒ JSONL ่ฝจ่ฟนใ€‚
  4. ๅŒ่‡‚ๅ…ฑไบซๆ—ถ้—ด่ฝดๅนถไฝฟ็”จ 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 list

Quest VR ๆŽงๅˆถ

SDK ๅ†…ๅŒ…ๅซ 4 ไธชๆœบๆขฐ่‡‚ๆŽงๅˆถ็จ‹ๅบ๏ผš

  • 8_vr_single_cartesian_dls_control.py
  • 8_vr_single_cartesian_qp_control.py
  • 8_vr_dual_cartesian_dls_control.py
  • 8_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 frame
  • moveit_cartesian๏ผš็ฌ›ๅกๅฐ”้‡‡ๆ ทๅ’Œ่ทณๅ˜้˜ˆๅ€ผ

ไฟฎๆ”น้…็ฝฎๅŽๅบ”ๅ…ˆ่ฟ่กŒ็Šถๆ€/FK ไพ‹็จ‹๏ผŒ็กฎ่ฎค็”ตๆœบๆ•ฐใ€ๅ…ณ่Š‚ๅใ€้™ไฝๅ’Œ TCP frame ไธ€่‡ดใ€‚

ๅธธ่ง้—ฎ้ข˜

ๆ‰พไธๅˆฐ /dev/ttyACM*

ๆฃ€ๆŸฅ้€šไฟกๆฟไพ›็”ตใ€USB ่ฟžๆŽฅๅ’Œไธฒๅฃๆƒ้™๏ผŒ็„ถๅŽ้‡ๆ–ฐๆ‰ง่กŒ ls /dev/ttyACM*ใ€‚

pinocchio ๅฏผๅ…ฅๅคฑ่ดฅ

็กฎ่ฎคๅทฒๆฟ€ๆดป panthera ็Žฏๅขƒๅนถ้€š่ฟ‡ pip install pin ๅฎ‰่ฃ…๏ผŒ้ฟๅ…ไธŽ ROS ็š„ๅ…ถไป– Python ็‰ˆๆœฌๆทท็”จใ€‚

้”ฎ็›˜ไพ‹็จ‹ๆ— ๆณ•ๅฏๅŠจ

pynput ้œ€่ฆๅฏ็”จ็š„ๅ›พๅฝขๆกŒ้ข/X ไผš่ฏใ€‚่ฏทๅœจๆœบๆขฐไบบไธปๆœบ็š„ๆกŒ้ข็ปˆ็ซฏไธญ่ฟ่กŒ๏ผŒไธ่ฆๅœจๆ— ๆ˜พ็คบ็š„ headless ไผš่ฏไธญ่ฟ่กŒใ€‚

VR ไพ‹็จ‹ๆ”ถไธๅˆฐๆ•ฐๆฎ

็กฎ่ฎค Quest ่ฝฌๅ‘ๆœๅŠกๅทฒๅฏๅŠจ๏ผŒUDP IP/็ซฏๅฃไธŽๆŽงๅˆถ่„šๆœฌไธ€่‡ด๏ผŒไธ”้˜ฒ็ซๅข™ๆœช้˜ปๆญข UDP 5005ใ€‚

ๅผ€ๅ‘ๆ็คบ

  • ไปฃ็ ็บงๆŽงๅˆถๆŽฅๅฃไฝไบŽ scripts/Lib/Openarm.pyใ€‚
  • QP IK ๅฎž็ŽฐไฝไบŽ scripts/Lib/qp_ik.pyใ€‚
  • ่ฝจ่ฟน JSONL ๅทฅๅ…ทไฝไบŽ scripts/Lib/recorder.pyใ€‚
  • ไธ่ฆ็ป•่ฟ‡ YAML ๅ…ณ่Š‚้™ไฝๅ’ŒๅŠ›็Ÿฉ้™ๅˆถใ€‚
  • ็ป“ๆŸ็จ‹ๅบๆ—ถ่ฐƒ็”จ set_stop()๏ผŒๅนถ็กฎ่ฎค็”ตๆœบ่ฟ›ๅ…ฅ้ข„ๆœŸ็š„ๅˆน่ฝฆ/้˜ปๅฐผ็Šถๆ€ใ€‚

License

้กน็›ฎๆ‰“ๅŒ…ๅ…ƒๆ•ฐๆฎๅฃฐๆ˜Žไธบ MIT Licenseใ€‚ๅ‘ๅธƒๆ—ถ่ฏทๅœจ้กน็›ฎๆ น็›ฎๅฝ•ไธญ้™„ๅธฆๅฎŒๆ•ด็š„ LICENSE ๆ–‡ไปถใ€‚

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages