kuavo-humanoid-sdk 1.2.1b3284__tar.gz → 1.2.1b3295__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.
Potentially problematic release.
This version of kuavo-humanoid-sdk might be problematic. Click here for more details.
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/PKG-INFO +1 -1
- kuavo_humanoid_sdk-1.2.1b3295/kuavo_humanoid_sdk/kuavo/core/ros/camera.py +105 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_blockly.py +39 -47
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk.egg-info/PKG-INFO +1 -1
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk.egg-info/SOURCES.txt +1 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/README.md +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/common/logger.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/interfaces/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/interfaces/data_types.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/interfaces/end_effector.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/interfaces/robot.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/interfaces/robot_info.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/audio.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/core.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/dex_hand_control.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/leju_claw_control.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/llm_doubao.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/microphone.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/navigation.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros/audio.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros/control.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros/microphone.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros/navigation.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros/observation.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros/param.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros/sat_utils.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros/state.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros/tools.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros/vision.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/ros_env.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/core/sdk_deprecated.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/demo_climbstair.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/dexterous_hand.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/leju_claw.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/logger_client.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_arm.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_audio.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_climbstair.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_head.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_info.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_microphone.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_navigation.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_observation.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_speech.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_state.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_tool.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot_vision.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo_strategy/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo_strategy/grasp_box/grasp_box_strategy.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo_strategy/kuavo_strategy.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo_strategy_v2/common/data_type.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo_strategy_v2/common/events/base_event.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo_strategy_v2/common/robot_sdk.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo_strategy_v2/pick_place_box/case.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo_strategy_v2/pick_place_box/strategy.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo_strategy_v2/utils/logger_setup.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo_strategy_v2/utils/utils.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AprilTagDetection.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AprilTagDetectionArray.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AudioReceiverData.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_FTsensorData.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_JoySticks.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_Metadata.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_MmDetectionMsg.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_RobotActionState.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_TFArray.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_TaskPoint.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armCollisionCheckInfo.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armHandPose.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armHandPoseFree.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armPoseWithTimeStamp.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armTargetPoses.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_bezierCurveCubicPoint.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_dexhandCommand.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_dexhandTouchState.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_endEffectorData.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPose.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPose6D.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPose6DTargetTrajectories.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoseTargetTrajectories.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoseWithVision.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoseWithVisionArray.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoses.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoses6D.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_fullBodyTargetTrajectories.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gaitTimeName.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gestureInfo.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gestureTask.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_handPose.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_headBodyPose.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_ikSolveError.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_ikSolveParam.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_imuData.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointBezierTrajectory.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointCmd.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointData.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_kuavoModeSchedule.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_lejuClawCommand.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_lejuClawState.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_motorParam.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_picoPoseInfo.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_picoPoseInfoList.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_planArmState.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_qv.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotArmQVVD.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotBodyMatrices.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotHandPosition.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotHeadMotionData.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotState.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_sensorsData.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_switchGaitByName.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_tagDataArray.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_touchSensorStatus.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPose.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPoseCmd.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPoseCmdFree.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_twoArmHandPoseFree.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_yoloDetection.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_yoloOutputData.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_CreatePath.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_ExecuteArmAction.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_GetAllMaps.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_GetCurrentMap.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_GetTargetPartPoseInCamera.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_InitialPoseWithTaskPoint.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_LoadMap.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_NavigateToTaskPoint.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_RepublishTFs.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetInitialPose.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetJoyTopic.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetLEDMode.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SetLEDMode_free.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SpeechSynthesis.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_TaskPointOperation.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_adjustZeroPoint.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeArmCtrlMode.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeArmCtrlModeKuavo.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeMotorParam.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeTorsoCtrlMode.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_controlLejuClaw.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_enableHandTouchSensor.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_fkSrv.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_footPose6DTargetTrajectoriesSrv.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_footPoseTargetTrajectoriesSrv.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureExecute.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureExecuteState.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureList.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_getCurrentGaitName.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_getMotorParam.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_getMotorZeroPoints.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_handForceLevel.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_jointMoveTo.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_planArmTrajectoryBezierCurve.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_planArmTrajectoryCubicSpline.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_playmusic.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setHwIntialState.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setMmCtrlFrame.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setMotorEncoderRoundService.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setTagId.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_singleStepControl.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_twoArmHandPoseCmdFreeSrv.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_twoArmHandPoseCmdSrv.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/motion_capture_ik/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_constraint.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_controller_data.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_lagrangian_metrics.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mode_schedule.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_flattened_controller.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_input.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_observation.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_performance_indices.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_solver_data.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_state.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_target_trajectories.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_multiplier.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/srv/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/ocs2_msgs/srv/_reset.py +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk.egg-info/dependency_links.txt +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk.egg-info/requires.txt +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk.egg-info/top_level.txt +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/setup.cfg +0 -0
- {kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/setup.py +0 -0
|
@@ -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)
|
|
@@ -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
|
-
|
|
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
|
-
|
|
353
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
|
|
@@ -41,6 +41,7 @@ kuavo_humanoid_sdk/kuavo/core/navigation.py
|
|
|
41
41
|
kuavo_humanoid_sdk/kuavo/core/ros_env.py
|
|
42
42
|
kuavo_humanoid_sdk/kuavo/core/sdk_deprecated.py
|
|
43
43
|
kuavo_humanoid_sdk/kuavo/core/ros/audio.py
|
|
44
|
+
kuavo_humanoid_sdk/kuavo/core/ros/camera.py
|
|
44
45
|
kuavo_humanoid_sdk/kuavo/core/ros/control.py
|
|
45
46
|
kuavo_humanoid_sdk/kuavo/core/ros/microphone.py
|
|
46
47
|
kuavo_humanoid_sdk/kuavo/core/ros/navigation.py
|
|
File without changes
|
{kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/__init__.py
RENAMED
|
File without changes
|
{kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/common/logger.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/kuavo/robot.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kuavo_humanoid_sdk-1.2.1b3284 → kuavo_humanoid_sdk-1.2.1b3295}/kuavo_humanoid_sdk/msg/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|