kuavo-humanoid-sdk 1.2.1b3279__tar.gz → 1.2.1b3290__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/PKG-INFO +1 -1
  2. kuavo_humanoid_sdk-1.2.1b3290/kuavo_humanoid_sdk/kuavo/core/ros/camera.py +105 -0
  3. kuavo_humanoid_sdk-1.2.1b3290/kuavo_humanoid_sdk/kuavo/core/sdk_deprecated.py +41 -0
  4. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_arm.py +114 -2
  5. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_blockly.py +39 -47
  6. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_head.py +24 -3
  7. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk.egg-info/PKG-INFO +1 -1
  8. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk.egg-info/SOURCES.txt +2 -0
  9. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/README.md +0 -0
  10. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/__init__.py +0 -0
  11. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/common/logger.py +0 -0
  12. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/interfaces/__init__.py +0 -0
  13. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/interfaces/data_types.py +0 -0
  14. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/interfaces/end_effector.py +0 -0
  15. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/interfaces/robot.py +0 -0
  16. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/interfaces/robot_info.py +0 -0
  17. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/__init__.py +0 -0
  18. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/audio.py +0 -0
  19. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/core.py +0 -0
  20. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/dex_hand_control.py +0 -0
  21. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/leju_claw_control.py +0 -0
  22. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/llm_doubao.py +0 -0
  23. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/microphone.py +0 -0
  24. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/navigation.py +0 -0
  25. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros/audio.py +0 -0
  26. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros/control.py +0 -0
  27. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros/microphone.py +0 -0
  28. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros/navigation.py +0 -0
  29. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros/observation.py +0 -0
  30. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros/param.py +0 -0
  31. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros/sat_utils.py +0 -0
  32. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros/state.py +0 -0
  33. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros/tools.py +0 -0
  34. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros/vision.py +0 -0
  35. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/core/ros_env.py +0 -0
  36. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/demo_climbstair.py +0 -0
  37. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/dexterous_hand.py +0 -0
  38. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/leju_claw.py +0 -0
  39. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/logger_client.py +0 -0
  40. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot.py +0 -0
  41. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_audio.py +0 -0
  42. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_climbstair.py +0 -0
  43. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_info.py +0 -0
  44. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_microphone.py +0 -0
  45. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_navigation.py +0 -0
  46. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_observation.py +0 -0
  47. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_speech.py +0 -0
  48. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_state.py +0 -0
  49. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_tool.py +0 -0
  50. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo/robot_vision.py +0 -0
  51. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo_strategy/__init__.py +0 -0
  52. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo_strategy/grasp_box/grasp_box_strategy.py +0 -0
  53. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo_strategy/kuavo_strategy.py +0 -0
  54. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo_strategy_v2/common/data_type.py +0 -0
  55. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo_strategy_v2/common/events/base_event.py +0 -0
  56. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo_strategy_v2/common/robot_sdk.py +0 -0
  57. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo_strategy_v2/pick_place_box/case.py +0 -0
  58. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo_strategy_v2/pick_place_box/strategy.py +0 -0
  59. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo_strategy_v2/utils/logger_setup.py +0 -0
  60. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/kuavo_strategy_v2/utils/utils.py +0 -0
  61. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/__init__.py +0 -0
  62. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/__init__.py +0 -0
  63. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AprilTagDetection.py +0 -0
  64. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AprilTagDetectionArray.py +0 -0
  65. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AudioReceiverData.py +0 -0
  66. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_FTsensorData.py +0 -0
  67. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_JoySticks.py +0 -0
  68. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_Metadata.py +0 -0
  69. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_MmDetectionMsg.py +0 -0
  70. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_RobotActionState.py +0 -0
  71. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_TFArray.py +0 -0
  72. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_TaskPoint.py +0 -0
  73. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/__init__.py +0 -0
  74. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armCollisionCheckInfo.py +0 -0
  75. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armHandPose.py +0 -0
  76. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armHandPoseFree.py +0 -0
  77. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armPoseWithTimeStamp.py +0 -0
  78. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armTargetPoses.py +0 -0
  79. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_bezierCurveCubicPoint.py +0 -0
  80. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_dexhandCommand.py +0 -0
  81. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_dexhandTouchState.py +0 -0
  82. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_endEffectorData.py +0 -0
  83. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPose.py +0 -0
  84. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPose6D.py +0 -0
  85. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPose6DTargetTrajectories.py +0 -0
  86. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoseTargetTrajectories.py +0 -0
  87. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoseWithVision.py +0 -0
  88. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoseWithVisionArray.py +0 -0
  89. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoses.py +0 -0
  90. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoses6D.py +0 -0
  91. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_fullBodyTargetTrajectories.py +0 -0
  92. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gaitTimeName.py +0 -0
  93. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gestureInfo.py +0 -0
  94. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gestureTask.py +0 -0
  95. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_handPose.py +0 -0
  96. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_headBodyPose.py +0 -0
  97. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_ikSolveError.py +0 -0
  98. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_ikSolveParam.py +0 -0
  99. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_imuData.py +0 -0
  100. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointBezierTrajectory.py +0 -0
  101. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointCmd.py +0 -0
  102. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointData.py +0 -0
  103. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_kuavoModeSchedule.py +0 -0
  104. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_lejuClawCommand.py +0 -0
  105. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_lejuClawState.py +0 -0
  106. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_motorParam.py +0 -0
  107. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_picoPoseInfo.py +0 -0
  108. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_picoPoseInfoList.py +0 -0
  109. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_planArmState.py +0 -0
  110. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_qv.py +0 -0
  111. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotArmQVVD.py +0 -0
  112. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotBodyMatrices.py +0 -0
  113. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotHandPosition.py +0 -0
  114. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotHeadMotionData.py +0 -0
  115. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotState.py +0 -0
  116. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_sensorsData.py +0 -0
  117. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_switchGaitByName.py +0 -0
  118. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_tagDataArray.py +0 -0
  119. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_touchSensorStatus.py +0 -0
  120. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPose.py +0 -0
  121. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPoseCmd.py +0 -0
  122. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPoseCmdFree.py +0 -0
  123. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPoseFree.py +0 -0
  124. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_yoloDetection.py +0 -0
  125. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_yoloOutputData.py +0 -0
  126. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_CreatePath.py +0 -0
  127. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_ExecuteArmAction.py +0 -0
  128. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_GetAllMaps.py +0 -0
  129. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_GetCurrentMap.py +0 -0
  130. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_GetTargetPartPoseInCamera.py +0 -0
  131. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_InitialPoseWithTaskPoint.py +0 -0
  132. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_LoadMap.py +0 -0
  133. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_NavigateToTaskPoint.py +0 -0
  134. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_RepublishTFs.py +0 -0
  135. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetInitialPose.py +0 -0
  136. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetJoyTopic.py +0 -0
  137. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetLEDMode.py +0 -0
  138. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetLEDMode_free.py +0 -0
  139. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SpeechSynthesis.py +0 -0
  140. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_TaskPointOperation.py +0 -0
  141. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/__init__.py +0 -0
  142. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_adjustZeroPoint.py +0 -0
  143. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeArmCtrlMode.py +0 -0
  144. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeArmCtrlModeKuavo.py +0 -0
  145. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeMotorParam.py +0 -0
  146. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeTorsoCtrlMode.py +0 -0
  147. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_controlLejuClaw.py +0 -0
  148. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_enableHandTouchSensor.py +0 -0
  149. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_fkSrv.py +0 -0
  150. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_footPose6DTargetTrajectoriesSrv.py +0 -0
  151. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_footPoseTargetTrajectoriesSrv.py +0 -0
  152. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureExecute.py +0 -0
  153. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureExecuteState.py +0 -0
  154. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureList.py +0 -0
  155. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_getCurrentGaitName.py +0 -0
  156. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_getMotorParam.py +0 -0
  157. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_getMotorZeroPoints.py +0 -0
  158. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_handForceLevel.py +0 -0
  159. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_jointMoveTo.py +0 -0
  160. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_planArmTrajectoryBezierCurve.py +0 -0
  161. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_planArmTrajectoryCubicSpline.py +0 -0
  162. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_playmusic.py +0 -0
  163. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setHwIntialState.py +0 -0
  164. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setMmCtrlFrame.py +0 -0
  165. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setMotorEncoderRoundService.py +0 -0
  166. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setTagId.py +0 -0
  167. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_singleStepControl.py +0 -0
  168. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_twoArmHandPoseCmdFreeSrv.py +0 -0
  169. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_twoArmHandPoseCmdSrv.py +0 -0
  170. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/motion_capture_ik/__init__.py +0 -0
  171. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/__init__.py +0 -0
  172. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/__init__.py +0 -0
  173. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_constraint.py +0 -0
  174. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_controller_data.py +0 -0
  175. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_lagrangian_metrics.py +0 -0
  176. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mode_schedule.py +0 -0
  177. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_flattened_controller.py +0 -0
  178. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_input.py +0 -0
  179. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_observation.py +0 -0
  180. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_performance_indices.py +0 -0
  181. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_solver_data.py +0 -0
  182. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_state.py +0 -0
  183. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_target_trajectories.py +0 -0
  184. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_multiplier.py +0 -0
  185. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/srv/__init__.py +0 -0
  186. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk/msg/ocs2_msgs/srv/_reset.py +0 -0
  187. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk.egg-info/dependency_links.txt +0 -0
  188. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk.egg-info/requires.txt +0 -0
  189. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/kuavo_humanoid_sdk.egg-info/top_level.txt +0 -0
  190. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/setup.cfg +0 -0
  191. {kuavo_humanoid_sdk-1.2.1b3279 → kuavo_humanoid_sdk-1.2.1b3290}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kuavo_humanoid_sdk
3
- Version: 1.2.1b3279
3
+ Version: 1.2.1b3290
4
4
  Summary: A Python SDK for kuavo humanoid robot.
5
5
  Home-page: https://gitee.com/leju-robot/kuavo-ros-opensource/
6
6
  Author: ['lejurobot']
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/env python3
2
+ # coding: utf-8
3
+ import rospy
4
+ from std_msgs.msg import Bool, Int16MultiArray
5
+ from kuavo_humanoid_sdk.common.logger import SDKLogger
6
+ from kuavo_humanoid_sdk.kuavo.core.core import KuavoRobotCore
7
+ from sensor_msgs.msg import Image
8
+ from cv_bridge import CvBridge, CvBridgeError
9
+ from kuavo_msgs.msg import yoloOutputData, yoloDetection
10
+ import threading
11
+
12
+ class CameraROSInterface:
13
+ def __init__(self):
14
+ self.bridge = CvBridge()
15
+
16
+ self.cameras = {
17
+ 'head': {
18
+ 'topic': '/camera/color/image_raw',
19
+ 'pub_topic': '/model_output_data',
20
+ 'publisher': None
21
+ },
22
+ 'chest': {
23
+ 'topic': '/chest_cam',
24
+ 'pub_topic': '/chest_detection_data',
25
+ 'publisher': None
26
+ }
27
+ }
28
+
29
+ self.cv_image_shape = None
30
+
31
+
32
+ def init_ros_node(self):
33
+ if not rospy.get_node_uri():
34
+ rospy.init_node('YOLO_detection', anonymous=True)
35
+
36
+ for camera in self.cameras.values():
37
+ camera['publisher'] = rospy.Publisher(
38
+ camera['pub_topic'],
39
+ yoloDetection,
40
+ queue_size=1,
41
+ tcp_nodelay=True
42
+ )
43
+
44
+ def get_camera_image(self, camera):
45
+ if camera not in self.cameras:
46
+ rospy.logerr(f"Unknown camera: {camera}")
47
+ return None
48
+
49
+ try:
50
+ # 使用rospy.wait_for_message()获取一帧图像
51
+ msg = rospy.wait_for_message(self.cameras[camera]['topic'], Image, timeout=1.0)
52
+ cv_image = self.bridge.imgmsg_to_cv2(msg, "bgr8")
53
+ self.cv_image_shape = cv_image.shape
54
+ return cv_image
55
+ except rospy.ROSException as e:
56
+ print(f"Timeout waiting for {camera} camera image: {e}")
57
+ return None
58
+ except CvBridgeError as e:
59
+ rospy.logerr(f"{camera.capitalize()} Camera CvBridge Error: {e}")
60
+ return None
61
+
62
+ def node_spin(self):
63
+ rospy.spin()
64
+
65
+ def node_is_shutdown(self):
66
+ return rospy.is_shutdown()
67
+
68
+ def tensor_to_msg(self, results):
69
+ if not results:
70
+ return None
71
+ else:
72
+ yolo_detections = yoloDetection()
73
+ for result in results:
74
+ boxes = result.boxes.cpu().numpy()
75
+
76
+ xywh = boxes.xywh # center-x(i,0), center-y(i,1), width(i,2), height(i,3)
77
+ class_ids = result.boxes.cls.int().cpu().numpy()
78
+ class_names = [result.names[cls.item()] for cls in result.boxes.cls.int()]
79
+ confs = boxes.conf
80
+
81
+ for i in range(len(xywh)):
82
+ yolo_output_data = yoloOutputData(
83
+ class_name=class_names[i],
84
+ class_id=int(class_ids[i]),
85
+ confidence=confs[i],
86
+ x_pos=xywh[i][0],
87
+ y_pos=xywh[i][1],
88
+ height=xywh[i][2],
89
+ width=xywh[i][3]
90
+ )
91
+ yolo_detections.data.append(yolo_output_data)
92
+ return yolo_detections
93
+
94
+ def publish_results(self, results, camera):
95
+ if not results:
96
+ rospy.loginfo(f"No results to publish for {camera} camera.")
97
+ return
98
+
99
+ if camera not in self.cameras:
100
+ rospy.logerr(f"Unknown camera: {camera}")
101
+ return
102
+
103
+ yolo_detections = self.tensor_to_msg(results)
104
+ if yolo_detections:
105
+ self.cameras[camera]['publisher'].publish(yolo_detections)
@@ -0,0 +1,41 @@
1
+ import warnings
2
+ from deprecated import deprecated
3
+
4
+ def custom_formatwarning(message, category, filename, lineno, file=None, line=None):
5
+ return f"\033[33mWarning: {filename}:{lineno} - {message}\033[0m\n"
6
+
7
+ warnings.formatwarning = custom_formatwarning
8
+
9
+ def sdk_deprecated(reason=None, version=None, replacement=None, removed_in=None, remove_date=None):
10
+ """
11
+ SDK专用的弃用装饰器,支持函数和类
12
+
13
+ Args:
14
+ reason (str): 弃用原因
15
+ version (str): 弃用版本
16
+ replacement (str): 替代函数/类名,如果为None则自动生成
17
+ removed_in (str): 将在哪个版本移除
18
+ remove_date (str): 将在哪个日期移除 (格式: YYYY-MM-DD)
19
+ """
20
+ # 构建reason字符串,包含replacement、removed_in和remove_date信息
21
+ if reason is None:
22
+ reason = ""
23
+ if replacement:
24
+ if reason:
25
+ reason += f",建议使用 {replacement} 替代"
26
+ else:
27
+ reason = f"建议使用 {replacement} 替代"
28
+ if removed_in:
29
+ if reason:
30
+ reason += f",将在版本 {removed_in} 移除"
31
+ else:
32
+ reason = f"将在版本 {removed_in} 移除"
33
+ if remove_date:
34
+ if reason:
35
+ reason += f",预计移除日期: {remove_date}"
36
+ else:
37
+ reason = f"预计移除日期: {remove_date}"
38
+
39
+ # 使用标准的deprecated装饰器
40
+ return deprecated(version=version, reason=reason)
41
+
@@ -5,38 +5,56 @@ import math
5
5
  from typing import Tuple
6
6
  from kuavo_humanoid_sdk.interfaces.data_types import KuavoArmCtrlMode, KuavoIKParams, KuavoPose, KuavoManipulationMpcFrame, KuavoManipulationMpcCtrlMode, KuavoManipulationMpcControlFlow
7
7
  from kuavo_humanoid_sdk.kuavo.core.core import KuavoRobotCore
8
+ from kuavo_humanoid_sdk.kuavo.core.sdk_deprecated import sdk_deprecated
8
9
  from kuavo_humanoid_sdk.kuavo.robot_info import KuavoRobotInfo
9
10
 
11
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot", remove_date="2026-06-30")
10
12
  class KuavoRobotArm:
11
13
  """Kuavo机器人手臂控制类。
12
14
 
13
15
  提供了控制机器人手臂的各种接口,包括关节位置控制、轨迹控制、末端执行器姿态控制等。
16
+
17
+ .. warning::
18
+ 此类已过期废弃,将在 2026-06-30 移除。
19
+ 请使用 KuavoRobot 类替代。
14
20
  """
15
21
  def __init__(self):
16
22
  self._kuavo_core = KuavoRobotCore()
17
23
  self._robot_info = KuavoRobotInfo(robot_type="kuavo")
18
24
 
25
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.arm_reset", remove_date="2026-06-30")
19
26
  def arm_reset(self)-> bool:
20
27
  """重置机器人手臂。
21
28
 
29
+ .. warning::
30
+ 此接口已过期废弃,将在 2026-06-30 移除。
31
+ 请使用 KuavoRobot.arm_reset() 替代。
32
+
22
33
  Returns:
23
34
  bool: 重置成功返回True,否则返回False。
24
35
  """
25
36
  return self._kuavo_core.robot_arm_reset()
26
37
 
38
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.manipulation_mpc_reset", remove_date="2026-06-30")
27
39
  def manipulation_mpc_reset(self)-> bool:
28
40
  """重置机器人 Manipulation MPC 控制器。
29
41
 
42
+ .. warning::
43
+ 此接口已过期废弃,将在 2026-06-30 移除。
44
+ 请使用 KuavoRobot.manipulation_mpc_reset() 替代。
45
+
30
46
  Returns:
31
47
  bool: 重置成功返回True,否则返回False。
32
48
  """
33
49
  return self._kuavo_core.robot_manipulation_mpc_reset()
34
50
 
51
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.control_arm_joint_trajectory", remove_date="2026-06-30")
35
52
  def control_arm_target_poses(self, times: list, q_frames: list) -> bool:
36
53
  """控制机器人手臂目标姿态(已废弃)。
37
54
 
38
- .. deprecated::
39
- 请使用 :meth:`control_arm_joint_trajectory` 替代此函数。
55
+ .. warning::
56
+ 此接口已过期废弃,将在 2026-06-30 移除。
57
+ 请使用 KuavoRobot.control_arm_joint_trajectory() 替代。
40
58
 
41
59
  Args:
42
60
  times (list): 时间间隔列表,单位秒
@@ -63,9 +81,14 @@ class KuavoRobotArm:
63
81
  q_degs.append([(p * 180.0 / math.pi) for p in q])
64
82
 
65
83
  return self._kuavo_core.control_robot_arm_target_poses(times=times, joint_q=q_degs)
84
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.control_arm_joint_positions", remove_date="2026-06-30")
66
85
  def control_arm_joint_positions(self, joint_position:list)->bool:
67
86
  """控制机器人手臂关节位置。
68
87
 
88
+ .. warning::
89
+ 此接口已过期废弃,将在 2026-06-30 移除。
90
+ 请使用 KuavoRobot.control_arm_joint_positions() 替代。
91
+
69
92
  Args:
70
93
  joint_position (list): 关节位置列表,单位为弧度
71
94
 
@@ -87,9 +110,14 @@ class KuavoRobotArm:
87
110
 
88
111
  return self._kuavo_core.control_robot_arm_joint_positions(joint_data=joint_position)
89
112
 
113
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.control_arm_joint_trajectory", remove_date="2026-06-30")
90
114
  def control_arm_joint_trajectory(self, times:list, joint_q:list)->bool:
91
115
  """控制机器人手臂关节轨迹。
92
116
 
117
+ .. warning::
118
+ 此接口已过期废弃,将在 2026-06-30 移除。
119
+ 请使用 KuavoRobot.control_arm_joint_trajectory() 替代。
120
+
93
121
  Args:
94
122
  times (list): 时间间隔列表,单位为秒
95
123
  joint_q (list): 关节位置列表,单位为弧度
@@ -118,9 +146,14 @@ class KuavoRobotArm:
118
146
 
119
147
  return self._kuavo_core.control_robot_arm_joint_trajectory(times=times, joint_q=q_degs)
120
148
 
149
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.control_robot_end_effector_pose", remove_date="2026-06-30")
121
150
  def control_robot_end_effector_pose(self, left_pose: KuavoPose, right_pose: KuavoPose, frame: KuavoManipulationMpcFrame)->bool:
122
151
  """控制机器人末端执行器姿态。
123
152
 
153
+ .. warning::
154
+ 此接口已过期废弃,将在 2026-06-30 移除。
155
+ 请使用 KuavoRobot.control_robot_end_effector_pose() 替代。
156
+
124
157
  Args:
125
158
  left_pose (KuavoPose): 左手臂姿态,包含xyz位置和四元数方向
126
159
  right_pose (KuavoPose): 右手臂姿态,包含xyz位置和四元数方向
@@ -131,22 +164,33 @@ class KuavoRobotArm:
131
164
  """
132
165
  return self._kuavo_core.control_robot_end_effector_pose(left_pose, right_pose, frame)
133
166
 
167
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.set_fixed_arm_mode", remove_date="2026-06-30")
134
168
  def set_fixed_arm_mode(self) -> bool:
135
169
  """固定/冻结机器人手臂。
136
170
 
171
+ .. warning::
172
+ 此接口已过期废弃,将在 2026-06-30 移除。
173
+ 请使用 KuavoRobot.set_fixed_arm_mode() 替代。
174
+
137
175
  Returns:
138
176
  bool: 固定/冻结成功返回True,否则返回False
139
177
  """
140
178
  return self._kuavo_core.change_robot_arm_ctrl_mode(KuavoArmCtrlMode.ArmFixed)
141
179
 
180
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.set_auto_swing_arm_mode", remove_date="2026-06-30")
142
181
  def set_auto_swing_arm_mode(self) -> bool:
143
182
  """设置手臂自动摆动模式。
144
183
 
184
+ .. warning::
185
+ 此接口已过期废弃,将在 2026-06-30 移除。
186
+ 请使用 KuavoRobot.set_auto_swing_arm_mode() 替代。
187
+
145
188
  Returns:
146
189
  bool: 设置成功返回True,否则返回False
147
190
  """
148
191
  return self._kuavo_core.change_robot_arm_ctrl_mode(KuavoArmCtrlMode.AutoSwing)
149
192
 
193
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.arm_ik_free", remove_date="2026-06-30")
150
194
  def arm_ik_free(self,
151
195
  left_pose: KuavoPose,
152
196
  right_pose: KuavoPose,
@@ -154,41 +198,68 @@ class KuavoRobotArm:
154
198
  right_elbow_pos_xyz: list = [0.0, 0.0, 0.0],
155
199
  arm_q0: list = None,
156
200
  params: KuavoIKParams=None) -> list:
201
+ """机器人手臂自由空间逆向运动学求解
202
+
203
+ .. warning::
204
+ 此接口已过期废弃,将在 2026-06-30 移除。
205
+ 请使用 KuavoRobot.arm_ik_free() 替代。
206
+ """
157
207
  return self._kuavo_core.arm_ik_free(left_pose, right_pose, left_elbow_pos_xyz, right_elbow_pos_xyz, arm_q0, params)
158
208
 
209
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.set_external_control_arm_mode", remove_date="2026-06-30")
159
210
  def set_external_control_arm_mode(self) -> bool:
160
211
  """设置手臂外部控制模式。
161
212
 
213
+ .. warning::
214
+ 此接口已过期废弃,将在 2026-06-30 移除。
215
+ 请使用 KuavoRobot.set_external_control_arm_mode() 替代。
216
+
162
217
  Returns:
163
218
  bool: 设置成功返回True,否则返回False
164
219
  """
165
220
  return self._kuavo_core.change_robot_arm_ctrl_mode(KuavoArmCtrlMode.ExternalControl)
166
221
 
222
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.set_manipulation_mpc_mode", remove_date="2026-06-30")
167
223
  def set_manipulation_mpc_mode(self, ctrl_mode: KuavoManipulationMpcCtrlMode) -> bool:
168
224
  """设置 Manipulation MPC 控制模式。
169
225
 
226
+ .. warning::
227
+ 此接口已过期废弃,将在 2026-06-30 移除。
228
+ 请使用 KuavoRobot.set_manipulation_mpc_mode() 替代。
229
+
170
230
  Returns:
171
231
  bool: 设置成功返回True,否则返回False
172
232
  """
173
233
  return self._kuavo_core.change_manipulation_mpc_ctrl_mode(ctrl_mode)
174
234
 
235
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.set_manipulation_mpc_control_flow", remove_date="2026-06-30")
175
236
  def set_manipulation_mpc_control_flow(self, control_flow: KuavoManipulationMpcControlFlow) -> bool:
176
237
  """设置 Manipulation MPC 控制流。
177
238
 
239
+ .. warning::
240
+ 此接口已过期废弃,将在 2026-06-30 移除。
241
+ 请使用 KuavoRobot.set_manipulation_mpc_control_flow() 替代。
242
+
178
243
  Returns:
179
244
  bool: 设置成功返回True,否则返回False
180
245
  """
181
246
  return self._kuavo_core.change_manipulation_mpc_control_flow(control_flow)
182
247
 
248
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.set_manipulation_mpc_frame", remove_date="2026-06-30")
183
249
  def set_manipulation_mpc_frame(self, frame: KuavoManipulationMpcFrame) -> bool:
184
250
  """设置 Manipulation MPC 坐标系。
185
251
 
252
+ .. warning::
253
+ 此接口已过期废弃,将在 2026-06-30 移除。
254
+ 请使用 KuavoRobot.set_manipulation_mpc_frame() 替代。
255
+
186
256
  Returns:
187
257
  bool: 设置成功返回True,否则返回False
188
258
  """
189
259
  return self._kuavo_core.change_manipulation_mpc_frame(frame)
190
260
 
191
261
  """ 手臂正向运动学和逆向运动学 """
262
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.arm_ik", remove_date="2026-06-30")
192
263
  def arm_ik(self,
193
264
  left_pose: KuavoPose,
194
265
  right_pose: KuavoPose,
@@ -198,6 +269,10 @@ class KuavoRobotArm:
198
269
  params: KuavoIKParams=None) -> list:
199
270
  """机器人手臂逆向运动学求解
200
271
 
272
+ .. warning::
273
+ 此接口已过期废弃,将在 2026-06-30 移除。
274
+ 请使用 KuavoRobot.arm_ik() 替代。
275
+
201
276
  Args:
202
277
  left_pose (KuavoPose): 左手臂目标姿态,包含xyz位置和四元数方向
203
278
  right_pose (KuavoPose): 右手臂目标姿态,包含xyz位置和四元数方向
@@ -221,6 +296,7 @@ class KuavoRobotArm:
221
296
  """
222
297
  return self._kuavo_core.arm_ik(left_pose, right_pose, left_elbow_pos_xyz, right_elbow_pos_xyz, arm_q0, params)
223
298
 
299
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.arm_ik_free", remove_date="2026-06-30")
224
300
  def arm_ik_free(self,
225
301
  left_pose: KuavoPose,
226
302
  right_pose: KuavoPose,
@@ -228,11 +304,22 @@ class KuavoRobotArm:
228
304
  right_elbow_pos_xyz: list = [0.0, 0.0, 0.0],
229
305
  arm_q0: list = None,
230
306
  params: KuavoIKParams=None) -> list:
307
+ """机器人手臂自由空间逆向运动学求解(重复定义)
308
+
309
+ .. warning::
310
+ 此接口已过期废弃,将在 2026-06-30 移除。
311
+ 请使用 KuavoRobot.arm_ik_free() 替代。
312
+ """
231
313
  return self._kuavo_core.arm_ik_free(left_pose, right_pose, left_elbow_pos_xyz, right_elbow_pos_xyz, arm_q0, params)
232
314
 
315
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.arm_fk", remove_date="2026-06-30")
233
316
  def arm_fk(self, q: list) -> Tuple[KuavoPose, KuavoPose]:
234
317
  """机器人手臂正向运动学求解
235
318
 
319
+ .. warning::
320
+ 此接口已过期废弃,将在 2026-06-30 移除。
321
+ 请使用 KuavoRobot.arm_fk() 替代。
322
+
236
323
  Args:
237
324
  q (list): 关节位置列表,单位为弧度
238
325
 
@@ -251,9 +338,14 @@ class KuavoRobotArm:
251
338
  return None, None
252
339
  return result
253
340
 
341
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.control_hand_wrench", remove_date="2026-06-30")
254
342
  def control_hand_wrench(self, left_wrench: list, right_wrench: list) -> bool:
255
343
  """控制机器人末端力/力矩
256
344
 
345
+ .. warning::
346
+ 此接口已过期废弃,将在 2026-06-30 移除。
347
+ 请使用 KuavoRobot.control_hand_wrench() 替代。
348
+
257
349
  Args:
258
350
  left_wrench (list): 左手臂6维力控指令 [Fx, Fy, Fz, Tx, Ty, Tz]
259
351
  right_wrench (list): 右手臂6维力控指令 [Fx, Fy, Fz, Tx, Ty, Tz]
@@ -266,26 +358,46 @@ class KuavoRobotArm:
266
358
  """
267
359
  return self._kuavo_core.control_hand_wrench(left_wrench, right_wrench)
268
360
 
361
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.is_arm_collision", remove_date="2026-06-30")
269
362
  def is_arm_collision(self)->bool:
270
363
  """判断当前是否发生碰撞
271
364
 
365
+ .. warning::
366
+ 此接口已过期废弃,将在 2026-06-30 移除。
367
+ 请使用 KuavoRobot.is_arm_collision() 替代。
368
+
272
369
  Returns:
273
370
  bool: 发生碰撞返回True,否则返回False
274
371
  """
275
372
  return self._kuavo_core.is_arm_collision()
276
373
 
374
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.release_arm_collision_mode", remove_date="2026-06-30")
277
375
  def release_arm_collision_mode(self):
278
376
  """释放碰撞模式
377
+
378
+ .. warning::
379
+ 此接口已过期废弃,将在 2026-06-30 移除。
380
+ 请使用 KuavoRobot.release_arm_collision_mode() 替代。
279
381
  """
280
382
  self._kuavo_core.release_arm_collision_mode()
281
383
 
384
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.wait_arm_collision_complete", remove_date="2026-06-30")
282
385
  def wait_arm_collision_complete(self):
283
386
  """等待碰撞完成
387
+
388
+ .. warning::
389
+ 此接口已过期废弃,将在 2026-06-30 移除。
390
+ 请使用 KuavoRobot.wait_arm_collision_complete() 替代。
284
391
  """
285
392
  self._kuavo_core.wait_arm_collision_complete()
286
393
 
394
+ @sdk_deprecated(reason="接口废弃", version="1.2.2", replacement="KuavoRobot.set_arm_collision_mode", remove_date="2026-06-30")
287
395
  def set_arm_collision_mode(self, enable: bool):
288
396
  """设置碰撞模式
397
+
398
+ .. warning::
399
+ 此接口已过期废弃,将在 2026-06-30 移除。
400
+ 请使用 KuavoRobot.set_arm_collision_mode() 替代。
289
401
  """
290
402
  self._kuavo_core.set_arm_collision_mode(enable)
291
403
 
@@ -28,9 +28,8 @@ from geometry_msgs.msg import Pose, Point, Quaternion
28
28
  from std_msgs.msg import Float64MultiArray
29
29
 
30
30
  import inspect
31
- from model_utils import *
32
- import model_utils as model_utils
33
-
31
+ from kuavo_humanoid_sdk.kuavo.core.model_utils.model_utils import *
32
+ from kuavo_humanoid_sdk.kuavo.core.model_utils import model_utils as model_utils
34
33
 
35
34
  from enum import IntEnum
36
35
  # Global flag for handling Ctrl+C
@@ -45,24 +44,6 @@ else:
45
44
  INIT_ARM_POS = [22.91831, 0, 0, -45.83662, 22.91831, 0, 0, -45.83662] # task.info: shoudler_center: 0.4rad, elbow_center: -0.8rad
46
45
 
47
46
 
48
-
49
- global ACTION_FILE_FOLDER, package_path, THRESHOLD_HEAD_CONTROL_COUNT, FLOAT_MAX
50
- THRESHOLD_HEAD_CONTROL_COUNT = 30
51
- FLOAT_MAX = float('inf')
52
-
53
- package_name = 'planarmwebsocketservice'
54
- package_path = rospkg.RosPack().get_path(package_name)
55
- sudo_user = os.environ.get("SUDO_USER")
56
- if sudo_user:
57
- user_info = pwd.getpwnam(sudo_user)
58
- home_path = user_info.pw_dir
59
- else:
60
- home_path = os.path.expanduser("~")
61
- ACTION_FILE_FOLDER = os.path.join(home_path, '.config', 'lejuconfig', 'action_files')
62
- plan_arm_state_progress = 0
63
- plan_arm_state_status = False
64
-
65
-
66
47
  def signal_handler(sig, frame):
67
48
  """Signal handler for catching Ctrl+C and safely stopping the robot.
68
49
 
@@ -287,16 +268,29 @@ class RobotControlBlockly:
287
268
  g_robot_type = "ocs2"
288
269
  self.loop = None
289
270
  self.init_ros_publishers()
271
+ self.THRESHOLD_HEAD_CONTROL_COUNT = 30
272
+ self.FLOAT_MAX = float('inf')
290
273
  self.to_stance()
291
274
 
275
+ package_name = 'planarmwebsocketservice'
276
+ self.package_path = rospkg.RosPack().get_path(package_name)
277
+ sudo_user = os.environ.get("SUDO_USER")
278
+ if sudo_user:
279
+ user_info = pwd.getpwnam(sudo_user)
280
+ home_path = user_info.pw_dir
281
+ else:
282
+ home_path = os.path.expanduser("~")
283
+ self.ACTION_FILE_FOLDER = os.path.join(home_path, '.config', 'lejuconfig', 'action_files')
284
+ self.plan_arm_state_progress = 0
285
+ self.plan_arm_state_status = False
286
+
292
287
  def set_action_file_path(self, proj_name: str):
293
288
  """Set the action file path for a specific project.
294
289
 
295
290
  Args:
296
291
  proj_name (str): Project name.
297
292
  """
298
- global ACTION_FILE_FOLDER
299
- ACTION_FILE_FOLDER = package_path + "/upload_files/" + proj_name + "/action_files"
293
+ self.ACTION_FILE_FOLDER = self.package_path + "/upload_files/" + proj_name + "/action_files"
300
294
 
301
295
  def init_ros_publishers(self):
302
296
  """Initialize ROS publishers and subscribers for arm, hand, head control topics, sensor data, and trajectory state."""
@@ -318,7 +312,7 @@ class RobotControlBlockly:
318
312
  Only publishes when robot type is 'ocs2' and trajectory is not finished.
319
313
  """
320
314
  global kuavo_arm_traj_pub, control_hand_pub, control_head_pub, g_robot_type
321
- if g_robot_type == "ocs2" and len(ocs2_joint_state.position) > 0 and plan_arm_state_status is False:
315
+ if g_robot_type == "ocs2" and len(ocs2_joint_state.position) > 0 and self.plan_arm_state_status is False:
322
316
  kuavo_arm_traj_pub.publish(ocs2_joint_state)
323
317
  control_hand_pub.publish(ocs2_hand_state)
324
318
  # control_head_pub.publish(ocs2_head_state)
@@ -349,9 +343,8 @@ class RobotControlBlockly:
349
343
  Args:
350
344
  msg (planArmState): Arm trajectory state message.
351
345
  """
352
- global plan_arm_state_progress, plan_arm_state_status
353
- plan_arm_state_progress = msg.progress
354
- plan_arm_state_status = msg.is_finished
346
+ self.plan_arm_state_progress = msg.progress
347
+ self.plan_arm_state_status = msg.is_finished
355
348
 
356
349
  def traj_callback(self, msg):
357
350
  """Callback for trajectory messages, parses trajectory points and updates global arm, hand, and head state variables.
@@ -597,14 +590,13 @@ class RobotControlBlockly:
597
590
  """
598
591
  global g_robot_type
599
592
  g_robot_type = "ocs2"
600
- global plan_arm_state_status
601
- plan_arm_state_status = False
593
+ self.plan_arm_state_status = False
602
594
 
603
595
  action_filename = action_file + ".tact"
604
596
  if proj_name is None:
605
- action_file_path = os.path.expanduser(f"{ACTION_FILE_FOLDER}/{action_filename}")
597
+ action_file_path = os.path.expanduser(f"{self.ACTION_FILE_FOLDER}/{action_filename}")
606
598
  else:
607
- action_file_path = package_path + "/upload_files/" + proj_name + "/action_files/" + action_filename
599
+ action_file_path = self.package_path + "/upload_files/" + proj_name + "/action_files/" + action_filename
608
600
  if not os.path.exists(action_file_path):
609
601
  print(f"Action file not found: {action_file_path}")
610
602
  return
@@ -623,7 +615,7 @@ class RobotControlBlockly:
623
615
  self.play_music(music_file)
624
616
  self.plan_arm_trajectory_bezier_curve_client(req)
625
617
  time.sleep(0.5)
626
- while plan_arm_state_status is False:
618
+ while self.plan_arm_state_status is False:
627
619
  time.sleep(0.01)
628
620
  print("action file executed")
629
621
 
@@ -635,13 +627,12 @@ class RobotControlBlockly:
635
627
  pitch (float): Pitch angle in degrees.
636
628
  """
637
629
  try:
638
- global THRESHOLD_HEAD_CONTROL_COUNT, FLOAT_MAX
639
630
  self.robot.stance()
640
631
  yaw = math.radians(yaw)
641
632
  pitch = math.radians(pitch)
642
633
  self.robot.control_head(yaw, pitch)
643
- diff_yaw_min = FLOAT_MAX
644
- diff_pitch_min = FLOAT_MAX
634
+ diff_yaw_min = self.FLOAT_MAX
635
+ diff_pitch_min = self.FLOAT_MAX
645
636
  times_count = 0
646
637
  while True:
647
638
  time.sleep(0.01)
@@ -657,7 +648,7 @@ class RobotControlBlockly:
657
648
  diff_pitch_min = diff_pitch
658
649
  continue
659
650
  times_count += 1
660
- if times_count > THRESHOLD_HEAD_CONTROL_COUNT:
651
+ if times_count > self.THRESHOLD_HEAD_CONTROL_COUNT:
661
652
  break
662
653
 
663
654
  except Exception as e:
@@ -670,12 +661,11 @@ class RobotControlBlockly:
670
661
  yaw (float): Yaw angle in degrees.
671
662
  """
672
663
  try:
673
- global THRESHOLD_HEAD_CONTROL_COUNT, FLOAT_MAX
674
664
  self.robot.stance()
675
665
  yaw = math.radians(yaw)
676
666
  self.robot.control_head(yaw, current_head_joint_state[1])
677
667
  times_count = 0
678
- diff_yaw_min = FLOAT_MAX
668
+ diff_yaw_min = self.FLOAT_MAX
679
669
  while True:
680
670
  time.sleep(0.01)
681
671
  diff_yaw = abs(current_head_joint_state[0] - yaw)
@@ -684,7 +674,7 @@ class RobotControlBlockly:
684
674
  diff_yaw_min = diff_yaw
685
675
  continue
686
676
  times_count += 1
687
- if times_count > THRESHOLD_HEAD_CONTROL_COUNT:
677
+ if times_count > self.THRESHOLD_HEAD_CONTROL_COUNT:
688
678
  break
689
679
  except Exception as e:
690
680
  print(f"Robot head control failed: {str(e)}")
@@ -696,12 +686,11 @@ class RobotControlBlockly:
696
686
  pitch (float): Pitch angle in degrees.
697
687
  """
698
688
  try:
699
- global THRESHOLD_HEAD_CONTROL_COUNT, FLOAT_MAX
700
689
  self.robot.stance()
701
690
  pitch = math.radians(pitch)
702
691
  self.robot.control_head(current_head_joint_state[0], pitch)
703
692
  times_count = 0
704
- diff_pitch_min = FLOAT_MAX
693
+ diff_pitch_min = self.FLOAT_MAX
705
694
  while True:
706
695
  time.sleep(0.01)
707
696
  diff_pitch = abs(current_head_joint_state[1] - pitch)
@@ -710,7 +699,7 @@ class RobotControlBlockly:
710
699
  diff_pitch_min = diff_pitch
711
700
  continue
712
701
  times_count += 1
713
- if times_count > THRESHOLD_HEAD_CONTROL_COUNT:
702
+ if times_count > self.THRESHOLD_HEAD_CONTROL_COUNT:
714
703
  break
715
704
  except Exception as e:
716
705
  print(f"Robot head control failed: {str(e)}")
@@ -1086,14 +1075,18 @@ class RobotControlBlockly:
1086
1075
  if not is_yolo_init:
1087
1076
  yolo_detection = YOLO_detection()
1088
1077
  yolo_detection.init_ros_node()
1089
- caller_file_path = inspect.stack()[1].filename
1078
+ caller_file_path = self.package_path + "/upload_files/"
1079
+ print(f"caller_file_path: {caller_file_path}")
1090
1080
  model_path = os.path.join(os.path.dirname(caller_file_path), 'best.pt')
1091
1081
  # print(f"函数被文件调用: {model_path}")
1092
1082
  model = yolo_detection.load_model(model_path)
1083
+ result = yolo_detection.camera_interface.get_camera_image("head")
1084
+ if result is None:
1085
+ print("No head camera image...")
1086
+ return
1093
1087
 
1094
-
1095
- IMAGE_CENTER_X = yolo_detection.cv_image_shape[1] / 2.0
1096
- IMAGE_CENTER_Y = yolo_detection.cv_image_shape[0] / 2.0
1088
+ IMAGE_CENTER_X = yolo_detection.camera_interface.cv_image_shape[1] / 2.0
1089
+ IMAGE_CENTER_Y = yolo_detection.camera_interface.cv_image_shape[0] / 2.0
1097
1090
  # rospy.loginfo(f"IMAGE_CENTER_X: {IMAGE_CENTER_X}")
1098
1091
  # rospy.loginfo(f"IMAGE_CENTER_Y: {IMAGE_CENTER_Y}")
1099
1092
  MOVE_SPEED_Y = 0.05 # Y方向移动速度
@@ -1102,7 +1095,6 @@ class RobotControlBlockly:
1102
1095
  while not rospy.is_shutdown():
1103
1096
 
1104
1097
  results = yolo_detection.get_detections("head", model)
1105
-
1106
1098
  if not results:
1107
1099
  continue
1108
1100