kuavo-humanoid-sdk 1.1.5__tar.gz → 1.1.6__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.1.5 → kuavo_humanoid_sdk-1.1.6}/PKG-INFO +1 -1
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/__init__.py +0 -2
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/interfaces/data_types.py +0 -90
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/__init__.py +0 -3
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/core/core.py +20 -238
- kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/kuavo/core/ros/control.py +814 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/core/ros/param.py +4 -142
- kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/kuavo/core/ros/state.py +380 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/core/ros_env.py +1 -229
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/dexterous_hand.py +2 -6
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/leju_claw.py +2 -6
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/robot.py +27 -150
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/robot_arm.py +7 -53
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/robot_head.py +0 -10
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/robot_info.py +2 -7
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/robot_state.py +4 -41
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/__init__.py +0 -7
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/__init__.py +0 -5
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_playmusic.py +20 -26
- kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik/msg/__init__.py +9 -0
- {kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik}/msg/_armHandPose.py +2 -2
- {kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik}/msg/_handPose.py +2 -2
- kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik/msg/_headBodyPose.py +145 -0
- {kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik}/msg/_ikSolveError.py +13 -13
- {kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik}/msg/_ikSolveParam.py +2 -2
- {kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik}/msg/_robotArmQVVD.py +2 -2
- kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik/msg/_robotHandPosition.py +225 -0
- {kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik}/msg/_twoArmHandPose.py +13 -13
- {kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik}/msg/_twoArmHandPoseCmd.py +30 -34
- kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik/srv/__init__.py +4 -0
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setMmCtrlFrame.py → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik/srv/_changeArmCtrlMode.py +37 -35
- {kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik}/srv/_changeArmCtrlModeKuavo.py +5 -5
- {kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik}/srv/_fkSrv.py +13 -13
- {kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs → kuavo_humanoid_sdk-1.1.6/kuavo_humanoid_sdk/msg/motion_capture_ik}/srv/_twoArmHandPoseCmdSrv.py +37 -38
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk.egg-info/PKG-INFO +1 -1
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk.egg-info/SOURCES.txt +15 -24
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk.egg-info/requires.txt +0 -1
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/setup.py +0 -3
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/common/global_config.py +0 -16
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/common/websocket_kuavo_sdk.py +0 -23
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo/core/audio.py +0 -36
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo/core/ros/audio.py +0 -176
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo/core/ros/control.py +0 -1874
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo/core/ros/state.py +0 -917
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo/core/ros/tools.py +0 -158
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo/core/ros/vision.py +0 -283
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo/robot_audio.py +0 -39
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo/robot_tool.py +0 -62
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo/robot_vision.py +0 -90
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo_strategy/__init__.py +0 -2
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo_strategy/grasp_box/grasp_box_strategy.py +0 -418
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/kuavo_strategy/kuavo_strategy.py +0 -63
- kuavo_humanoid_sdk-1.1.5/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_SpeechSynthesis.py +0 -270
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/README.md +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/common/logger.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/interfaces/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/interfaces/end_effector.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/interfaces/robot.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/interfaces/robot_info.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/core/dex_hand_control.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/core/leju_claw_control.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/kuavo/core/ros/sat_utils.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AprilTagDetection.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_AprilTagDetectionArray.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_Metadata.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armPoseWithTimeStamp.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_armTargetPoses.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_dexhandCommand.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_dexhandTouchState.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_endEffectorData.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPose.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_footPoseTargetTrajectories.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gaitTimeName.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gestureInfo.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_gestureTask.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_headBodyPose.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_imuData.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointCmd.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_jointData.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_lejuClawCommand.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_lejuClawState.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_questJoySticks.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotHandPosition.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotHeadMotionData.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_robotState.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_sensorsData.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_switchGaitByName.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_touchSensorStatus.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_yoloDetection.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/msg/_yoloOutputData.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeArmCtrlMode.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_changeTorsoCtrlMode.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_controlLejuClaw.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_enableHandTouchSensor.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_footPoseTargetTrajectoriesSrv.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureExecute.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureExecuteState.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_gestureList.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_getCurrentGaitName.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_handForceLevel.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_jointMoveTo.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setHwIntialState.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setMotorEncoderRoundService.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_setTagId.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/kuavo_msgs/srv/_singleStepControl.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/motion_capture_ik/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_constraint.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_controller_data.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_lagrangian_metrics.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mode_schedule.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_flattened_controller.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_input.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_observation.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_performance_indices.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_solver_data.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_state.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_mpc_target_trajectories.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/msg/_multiplier.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/srv/__init__.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/msg/ocs2_msgs/srv/_reset.py +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk.egg-info/dependency_links.txt +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk.egg-info/top_level.txt +0 -0
- {kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/setup.cfg +0 -0
{kuavo_humanoid_sdk-1.1.5 → kuavo_humanoid_sdk-1.1.6}/kuavo_humanoid_sdk/interfaces/data_types.py
RENAMED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from typing import Tuple
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
import numpy as np
|
|
5
4
|
|
|
6
5
|
@dataclass
|
|
7
6
|
class KuavoJointData:
|
|
@@ -60,50 +59,6 @@ class KuavoArmCtrlMode(Enum):
|
|
|
60
59
|
AutoSwing = 1
|
|
61
60
|
ExternalControl = 2
|
|
62
61
|
|
|
63
|
-
class KuavoManipulationMpcFrame(Enum):
|
|
64
|
-
"""Enum class representing the manipulation mpc frame for the Kuavo robot end effector.
|
|
65
|
-
|
|
66
|
-
Attributes:
|
|
67
|
-
KeepCurrentFrame: Keep the current frame (value: 0)
|
|
68
|
-
WorldFrame: World frame (value: 1)
|
|
69
|
-
LocalFrame: Local frame (value: 2)
|
|
70
|
-
VRFrame: VR frame (value: 3)
|
|
71
|
-
ManipulationWorldFrame: Manipulation world frame (value: 4)
|
|
72
|
-
"""
|
|
73
|
-
KeepCurrentFrame = 0
|
|
74
|
-
WorldFrame = 1
|
|
75
|
-
LocalFrame = 2
|
|
76
|
-
VRFrame = 3
|
|
77
|
-
ManipulationWorldFrame = 4
|
|
78
|
-
ERROR = -1
|
|
79
|
-
|
|
80
|
-
class KuavoManipulationMpcCtrlMode(Enum):
|
|
81
|
-
"""Enum class representing the control mode for the Kuavo robot manipulation MPC.
|
|
82
|
-
|
|
83
|
-
Attributes:
|
|
84
|
-
NoControl: No control (value: 0)
|
|
85
|
-
ArmOnly: Only control the arm (value: 1)
|
|
86
|
-
BaseOnly: Only control the base (value: 2)
|
|
87
|
-
BaseArm: Control both the base and the arm (value: 3)
|
|
88
|
-
ERROR: Error state (value: -1)
|
|
89
|
-
"""
|
|
90
|
-
NoControl = 0
|
|
91
|
-
ArmOnly = 1
|
|
92
|
-
BaseOnly = 2
|
|
93
|
-
BaseArm = 3
|
|
94
|
-
ERROR = -1
|
|
95
|
-
|
|
96
|
-
class KuavoManipulationMpcControlFlow(Enum):
|
|
97
|
-
"""Enum class representing the control data flow for the Kuavo robot manipulation.
|
|
98
|
-
|
|
99
|
-
Attributes:
|
|
100
|
-
ThroughFullBodyMpc: Control data flows through full-body MPC before entering WBC (value: 0)
|
|
101
|
-
DirectToWbc: Control data flows directly to WBC without full-body MPC (value: 1)
|
|
102
|
-
Error: Invalid control path (value: -1)
|
|
103
|
-
"""
|
|
104
|
-
ThroughFullBodyMpc = 0
|
|
105
|
-
DirectToWbc = 1
|
|
106
|
-
Error = -1
|
|
107
62
|
|
|
108
63
|
@dataclass
|
|
109
64
|
class EndEffectorState:
|
|
@@ -188,48 +143,3 @@ class KuavoDexHandTouchState:
|
|
|
188
143
|
status: int # 传感器状态
|
|
189
144
|
# 5 fingers
|
|
190
145
|
data: Tuple[KuavoTouchState, KuavoTouchState, KuavoTouchState, KuavoTouchState, KuavoTouchState]
|
|
191
|
-
|
|
192
|
-
@dataclass
|
|
193
|
-
class AprilTagData:
|
|
194
|
-
"""Represents detected AprilTag information with pose estimation.
|
|
195
|
-
|
|
196
|
-
Attributes:
|
|
197
|
-
id (list): List of detected AprilTag IDs (integers)
|
|
198
|
-
size (list): List of tag physical sizes in meters (floats)
|
|
199
|
-
pose (list): List of PoseQuaternion objects representing tag poses
|
|
200
|
-
"""
|
|
201
|
-
id: list
|
|
202
|
-
size: list
|
|
203
|
-
pose: list
|
|
204
|
-
|
|
205
|
-
@dataclass
|
|
206
|
-
class HomogeneousMatrix:
|
|
207
|
-
"""4x4 homogeneous transformation matrix for 3D transformations.
|
|
208
|
-
|
|
209
|
-
Represents both rotation and translation in 3D space. Can be used for
|
|
210
|
-
coordinate frame transformations and pose composition.
|
|
211
|
-
|
|
212
|
-
Attributes:
|
|
213
|
-
matrix (np.ndarray): 4x4 numpy array of shape (4, 4) containing::
|
|
214
|
-
|
|
215
|
-
[[R, t],
|
|
216
|
-
[0, 1]]
|
|
217
|
-
|
|
218
|
-
where R is 3x3 rotation matrix and t is 3x1 translation
|
|
219
|
-
"""
|
|
220
|
-
matrix: np.ndarray # Shape (4,4) homogeneous transformation matrix
|
|
221
|
-
|
|
222
|
-
@dataclass
|
|
223
|
-
class PoseQuaternion:
|
|
224
|
-
"""3D pose representation using position and quaternion orientation.
|
|
225
|
-
|
|
226
|
-
Provides a singularity-free orientation representation. Commonly used
|
|
227
|
-
in robotics for smooth interpolation between orientations.
|
|
228
|
-
|
|
229
|
-
Attributes:
|
|
230
|
-
position (Tuple[float, float, float]): XYZ coordinates in meters
|
|
231
|
-
orientation (Tuple[float, float, float, float]): Unit quaternion in
|
|
232
|
-
(x, y, z, w) format following ROS convention
|
|
233
|
-
"""
|
|
234
|
-
position: Tuple[float, float, float]
|
|
235
|
-
orientation: Tuple[float, float, float, float]
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
from .robot import KuavoSDK, KuavoRobot
|
|
2
2
|
from .robot_info import KuavoRobotInfo
|
|
3
3
|
from .robot_state import KuavoRobotState
|
|
4
|
-
from .robot_vision import KuavoRobotVision
|
|
5
|
-
from .robot_tool import KuavoRobotTools
|
|
6
4
|
from .robot_arm import KuavoRobotArm
|
|
7
5
|
from .robot_head import KuavoRobotHead
|
|
8
|
-
from .robot_audio import KuavoRobotAudio
|
|
9
6
|
from .dexterous_hand import DexterousHand, TouchDexterousHand
|
|
10
7
|
from .leju_claw import LejuClaw
|
|
@@ -19,37 +19,32 @@ Each state has an entry callback that handles initialization when entering that
|
|
|
19
19
|
|
|
20
20
|
import time
|
|
21
21
|
import math
|
|
22
|
+
import rospy
|
|
22
23
|
import threading
|
|
23
24
|
import numpy as np
|
|
24
25
|
from typing import Tuple
|
|
25
26
|
from transitions import Machine, State
|
|
26
27
|
|
|
27
|
-
from kuavo_humanoid_sdk.interfaces.data_types import KuavoArmCtrlMode, KuavoIKParams, KuavoPose
|
|
28
|
-
from kuavo_humanoid_sdk.kuavo.core.ros.control import KuavoRobotControl
|
|
29
|
-
from kuavo_humanoid_sdk.kuavo.core.ros.
|
|
30
|
-
from kuavo_humanoid_sdk.kuavo.core.ros.tools import KuavoRobotToolsCore
|
|
31
|
-
from kuavo_humanoid_sdk.kuavo.core.ros.state import KuavoRobotStateCore, KuavoRobotStateCoreWebsocket
|
|
28
|
+
from kuavo_humanoid_sdk.interfaces.data_types import KuavoArmCtrlMode, KuavoIKParams, KuavoPose
|
|
29
|
+
from kuavo_humanoid_sdk.kuavo.core.ros.control import KuavoRobotControl
|
|
30
|
+
from kuavo_humanoid_sdk.kuavo.core.ros.state import KuavoRobotStateCore
|
|
32
31
|
from kuavo_humanoid_sdk.kuavo.core.ros.param import make_robot_param
|
|
33
32
|
from kuavo_humanoid_sdk.common.logger import SDKLogger
|
|
34
|
-
|
|
33
|
+
|
|
35
34
|
# Define robot states
|
|
36
35
|
ROBOT_STATES = [
|
|
37
36
|
State(name='stance', on_enter=['_on_enter_stance']),
|
|
38
37
|
State(name='walk', on_enter=['_on_enter_walk']),
|
|
39
38
|
State(name='trot', on_enter=['_on_enter_trot']),
|
|
40
|
-
State(name='custom_gait', on_enter=['_on_enter_custom_gait'])
|
|
41
|
-
State(name='command_pose_world', on_enter=['_on_enter_command_pose_world']),
|
|
42
|
-
State(name='command_pose', on_enter=['_on_enter_command_pose']),
|
|
39
|
+
State(name='custom_gait', on_enter=['_on_enter_custom_gait'])
|
|
43
40
|
]
|
|
44
41
|
|
|
45
42
|
# Define state transitions
|
|
46
43
|
ROBOT_TRANSITIONS = [
|
|
47
|
-
{'trigger': 'to_stance', 'source': ['walk', 'trot', 'custom_gait'
|
|
44
|
+
{'trigger': 'to_stance', 'source': ['walk', 'trot', 'custom_gait'], 'dest': 'stance'},
|
|
48
45
|
{'trigger': 'to_walk', 'source': ['stance', 'trot', 'custom_gait'], 'dest': 'walk'},
|
|
49
46
|
{'trigger': 'to_trot', 'source': ['stance', 'walk', 'custom_gait'], 'dest': 'trot'},
|
|
50
47
|
{'trigger': 'to_custom_gait', 'source': ['stance', 'custom_gait'], 'dest': 'custom_gait'},
|
|
51
|
-
{'trigger': 'to_command_pose_world', 'source': ['stance', 'command_pose_world'], 'dest': 'command_pose_world'},
|
|
52
|
-
{'trigger': 'to_command_pose', 'source': ['stance', 'command_pose'], 'dest': 'command_pose'},
|
|
53
48
|
]
|
|
54
49
|
|
|
55
50
|
class KuavoRobotCore:
|
|
@@ -70,25 +65,9 @@ class KuavoRobotCore:
|
|
|
70
65
|
send_event=True
|
|
71
66
|
)
|
|
72
67
|
# robot control
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
self._rb_state = KuavoRobotStateCoreWebsocket()
|
|
76
|
-
else:
|
|
77
|
-
self._control = KuavoRobotControl()
|
|
78
|
-
self._rb_state = KuavoRobotStateCore()
|
|
79
|
-
|
|
80
|
-
# manipulation mpc
|
|
81
|
-
self._manipulation_mpc_frame = KuavoManipulationMpcFrame.KeepCurrentFrame
|
|
82
|
-
self._manipulation_mpc_ctrl_mode = KuavoManipulationMpcCtrlMode.NoControl
|
|
83
|
-
self._manipulation_mpc_control_flow = KuavoManipulationMpcControlFlow.ThroughFullBodyMpc
|
|
84
|
-
|
|
85
|
-
# robot vision
|
|
86
|
-
self._robot_vision = KuavoRobotVisionCore()
|
|
87
|
-
# robot ros tf
|
|
88
|
-
self._robot_tf_tool = KuavoRobotToolsCore()
|
|
89
|
-
|
|
68
|
+
self._control = KuavoRobotControl()
|
|
69
|
+
self._rb_state = KuavoRobotStateCore()
|
|
90
70
|
self._arm_ctrl_mode = KuavoArmCtrlMode.AutoSwing
|
|
91
|
-
|
|
92
71
|
# register gait changed callback
|
|
93
72
|
self._rb_state.register_gait_changed_callback(self._humanoid_gait_changed)
|
|
94
73
|
# initialized
|
|
@@ -114,21 +93,6 @@ class KuavoRobotCore:
|
|
|
114
93
|
if arm_ctrl_mode is not None:
|
|
115
94
|
self._arm_ctrl_mode = arm_ctrl_mode
|
|
116
95
|
SDKLogger.debug(f"[Core] initialize arm control mode: {arm_ctrl_mode}")
|
|
117
|
-
|
|
118
|
-
# init manipulation mpc
|
|
119
|
-
manipulation_mpc_frame = self._rb_state.manipulation_mpc_frame
|
|
120
|
-
if manipulation_mpc_frame is not None:
|
|
121
|
-
self._manipulation_mpc_frame = manipulation_mpc_frame
|
|
122
|
-
SDKLogger.debug(f"[Core] initialize manipulation mpc frame: {manipulation_mpc_frame}")
|
|
123
|
-
manipulation_mpc_ctrl_mode = self._rb_state.manipulation_mpc_ctrl_mode
|
|
124
|
-
if manipulation_mpc_ctrl_mode is not None:
|
|
125
|
-
self._manipulation_mpc_ctrl_mode = manipulation_mpc_ctrl_mode
|
|
126
|
-
SDKLogger.debug(f"[Core] initialize manipulation mpc ctrl mode: {manipulation_mpc_ctrl_mode}")
|
|
127
|
-
manipulation_mpc_control_flow = self._rb_state.manipulation_mpc_control_flow
|
|
128
|
-
if manipulation_mpc_control_flow is not None:
|
|
129
|
-
self._manipulation_mpc_control_flow = manipulation_mpc_control_flow
|
|
130
|
-
SDKLogger.debug(f"[Core] initialize manipulation mpc control flow: {manipulation_mpc_control_flow}")
|
|
131
|
-
|
|
132
96
|
except Exception as e:
|
|
133
97
|
raise RuntimeError(f"[Core] initialize failed: \n"
|
|
134
98
|
f"{e}, please check the robot is launched, "
|
|
@@ -190,21 +154,6 @@ class KuavoRobotCore:
|
|
|
190
154
|
SDKLogger.debug(f"[Core] [StateMachine] State unchanged: already in custom_gait state")
|
|
191
155
|
return
|
|
192
156
|
SDKLogger.debug(f"[Core] [StateMachine] Entering custom_gait state, from {previous_state}")
|
|
193
|
-
|
|
194
|
-
def _on_enter_command_pose_world(self, event):
|
|
195
|
-
previous_state = event.transition.source
|
|
196
|
-
if self.state == previous_state:
|
|
197
|
-
SDKLogger.debug(f"[Core] [StateMachine] State unchanged: already in command_pose_world state")
|
|
198
|
-
return
|
|
199
|
-
SDKLogger.debug(f"[Core] [StateMachine] Entering command_pose_world state, from {previous_state}")
|
|
200
|
-
|
|
201
|
-
def _on_enter_command_pose(self, event):
|
|
202
|
-
previous_state = event.transition.source
|
|
203
|
-
if self.state == previous_state:
|
|
204
|
-
SDKLogger.debug(f"[Core] [StateMachine] State unchanged: already in command_pose state")
|
|
205
|
-
return
|
|
206
|
-
SDKLogger.debug(f"[Core] [StateMachine] Entering command_pose state, from {previous_state}")
|
|
207
|
-
|
|
208
157
|
""" -------------------------------------------------------------"""
|
|
209
158
|
|
|
210
159
|
""" --------------------------- Control -------------------------"""
|
|
@@ -340,54 +289,6 @@ class KuavoRobotCore:
|
|
|
340
289
|
|
|
341
290
|
return True
|
|
342
291
|
|
|
343
|
-
def control_command_pose(self, target_pose_x:float, target_pose_y:float, target_pose_z:float, target_pose_yaw:float)->bool:
|
|
344
|
-
"""
|
|
345
|
-
Control robot pose in base_link frame
|
|
346
|
-
|
|
347
|
-
Arguments:
|
|
348
|
-
- target_pose_x: x position (meters)
|
|
349
|
-
- target_pose_y: y position (meters)
|
|
350
|
-
- target_pose_z: z position (meters)
|
|
351
|
-
- target_pose_yaw: yaw angle (radians)
|
|
352
|
-
|
|
353
|
-
Returns:
|
|
354
|
-
bool: True if command was sent successfully, False otherwise
|
|
355
|
-
|
|
356
|
-
Raises:
|
|
357
|
-
RuntimeError: If robot is not in stance state
|
|
358
|
-
"""
|
|
359
|
-
if self.state != 'stance':
|
|
360
|
-
raise RuntimeError(f"[Core] control_command_pose failed: robot must be in stance state, current state: {self.state}")
|
|
361
|
-
|
|
362
|
-
# Add any parameter validation if needed
|
|
363
|
-
# e.g., limit ranges for safety
|
|
364
|
-
self.to_command_pose()
|
|
365
|
-
return self._control.control_command_pose(target_pose_x, target_pose_y, target_pose_z, target_pose_yaw)
|
|
366
|
-
|
|
367
|
-
def control_command_pose_world(self, target_pose_x:float, target_pose_y:float, target_pose_z:float, target_pose_yaw:float)->bool:
|
|
368
|
-
"""
|
|
369
|
-
Control robot pose in odom (world) frame
|
|
370
|
-
|
|
371
|
-
Arguments:
|
|
372
|
-
- target_pose_x: x position (meters)
|
|
373
|
-
- target_pose_y: y position (meters)
|
|
374
|
-
- target_pose_z: z position (meters)
|
|
375
|
-
- target_pose_yaw: yaw angle (radians)
|
|
376
|
-
|
|
377
|
-
Returns:
|
|
378
|
-
bool: True if command was sent successfully, False otherwise
|
|
379
|
-
|
|
380
|
-
Raises:
|
|
381
|
-
RuntimeError: If robot is not in stance state
|
|
382
|
-
"""
|
|
383
|
-
# if self.state != 'stance':
|
|
384
|
-
# raise RuntimeError(f"[Core] control_command_pose_world failed: robot must be in stance state, current state: {self.state}")
|
|
385
|
-
|
|
386
|
-
# Add any parameter validation if needed
|
|
387
|
-
# e.g., limit ranges for safety
|
|
388
|
-
self.to_command_pose_world()
|
|
389
|
-
return self._control.control_command_pose_world(target_pose_x, target_pose_y, target_pose_z, target_pose_yaw)
|
|
390
|
-
|
|
391
292
|
def execute_gesture(self, gestures:list)->bool:
|
|
392
293
|
return self._control.execute_gesture(gestures)
|
|
393
294
|
|
|
@@ -410,111 +311,30 @@ class KuavoRobotCore:
|
|
|
410
311
|
pitch_deg = pitch * 180 / math.pi
|
|
411
312
|
return self._control.control_robot_head(yaw_deg, pitch_deg)
|
|
412
313
|
|
|
413
|
-
def
|
|
414
|
-
return self._control.enable_head_tracking(target_id)
|
|
415
|
-
|
|
416
|
-
def disable_head_tracking(self)->bool:
|
|
417
|
-
return self._control.disable_head_tracking()
|
|
418
|
-
|
|
419
|
-
def control_robot_arm_joint_positions(self, joint_data:list)->bool:
|
|
314
|
+
def control_robot_arm_traj(self, joint_data:list)->bool:
|
|
420
315
|
if self.state != 'stance':
|
|
421
|
-
raise RuntimeError(f"[Core]
|
|
316
|
+
raise RuntimeError(f"[Core] control_robot_arm_traj failed: robot must be in stance state, current state: {self.state}")
|
|
422
317
|
|
|
423
318
|
# change to external control mode
|
|
424
319
|
if self._arm_ctrl_mode != KuavoArmCtrlMode.ExternalControl:
|
|
425
|
-
SDKLogger.debug("[Core]
|
|
320
|
+
SDKLogger.debug("[Core] control_robot_arm_traj, current arm mode != ExternalControl, change it.")
|
|
426
321
|
if not self.change_robot_arm_ctrl_mode(KuavoArmCtrlMode.ExternalControl):
|
|
427
|
-
SDKLogger.warn("[Core]
|
|
322
|
+
SDKLogger.warn("[Core] control_robot_arm_traj failed, change robot arm ctrl mode failed!")
|
|
428
323
|
return False
|
|
429
|
-
return self._control.
|
|
324
|
+
return self._control.control_robot_arm_traj(joint_data)
|
|
430
325
|
|
|
431
|
-
def
|
|
326
|
+
def control_robot_arm_target_poses(self, times:list, joint_q:list)->bool:
|
|
432
327
|
if self.state != 'stance':
|
|
433
|
-
raise RuntimeError("[Core]
|
|
328
|
+
raise RuntimeError("[Core] control_robot_arm_target_poses failed: robot must be in stance state")
|
|
434
329
|
|
|
435
330
|
if self._arm_ctrl_mode != KuavoArmCtrlMode.ExternalControl:
|
|
436
|
-
SDKLogger.debug("[Core]
|
|
331
|
+
SDKLogger.debug("[Core] control_robot_arm_target_poses, current arm mode != ExternalControl, change it.")
|
|
437
332
|
if not self.change_robot_arm_ctrl_mode(KuavoArmCtrlMode.ExternalControl):
|
|
438
|
-
SDKLogger.warn("[Core]
|
|
333
|
+
SDKLogger.warn("[Core] control_robot_arm_target_poses failed, change robot arm ctrl mode failed!")
|
|
439
334
|
return False
|
|
440
335
|
|
|
441
|
-
return self._control.
|
|
442
|
-
|
|
443
|
-
def control_robot_end_effector_pose(self, left_pose: KuavoPose, right_pose: KuavoPose, frame: KuavoManipulationMpcFrame)->bool:
|
|
444
|
-
if self._arm_ctrl_mode != KuavoArmCtrlMode.ExternalControl:
|
|
445
|
-
SDKLogger.debug("[Core] control_robot_end_effector_pose, current arm mode != ExternalControl, change it.")
|
|
446
|
-
if not self.change_robot_arm_ctrl_mode(KuavoArmCtrlMode.ExternalControl):
|
|
447
|
-
SDKLogger.warn("[Core] control_robot_end_effector_pose failed, change robot arm ctrl mode failed!")
|
|
448
|
-
return False
|
|
449
|
-
|
|
450
|
-
if self._manipulation_mpc_ctrl_mode == KuavoManipulationMpcCtrlMode.NoControl:
|
|
451
|
-
SDKLogger.debug("[Core] control_robot_end_effector_pose, manipulation mpc ctrl mode is NoControl, change it.")
|
|
452
|
-
if not self.change_manipulation_mpc_ctrl_mode(KuavoManipulationMpcCtrlMode.ArmOnly):
|
|
453
|
-
SDKLogger.warn("[Core] control_robot_end_effector_pose failed, change manipulation mpc ctrl mode failed!")
|
|
454
|
-
return False
|
|
455
|
-
|
|
456
|
-
return self._control.control_robot_end_effector_pose(left_pose, right_pose, frame)
|
|
336
|
+
return self._control.control_robot_arm_target_poses(times, joint_q)
|
|
457
337
|
|
|
458
|
-
def change_manipulation_mpc_frame(self, frame: KuavoManipulationMpcFrame)->bool:
|
|
459
|
-
timeout = 1.0
|
|
460
|
-
count = 0
|
|
461
|
-
while self._rb_state.manipulation_mpc_frame != frame:
|
|
462
|
-
SDKLogger.debug(f"[Core] Change manipulation mpc frame from {self._rb_state.manipulation_mpc_frame} to {frame}, retry: {count}")
|
|
463
|
-
self._control.change_manipulation_mpc_frame(frame)
|
|
464
|
-
if self._rb_state.manipulation_mpc_frame == frame:
|
|
465
|
-
break
|
|
466
|
-
if timeout <= 0:
|
|
467
|
-
SDKLogger.warn("[Core] Change manipulation mpc frame timeout!")
|
|
468
|
-
return False
|
|
469
|
-
timeout -= 0.1
|
|
470
|
-
time.sleep(0.1)
|
|
471
|
-
count += 1
|
|
472
|
-
if not hasattr(self, '_manipulation_mpc_frame_lock'):
|
|
473
|
-
self._manipulation_mpc_frame_lock = threading.Lock()
|
|
474
|
-
with self._manipulation_mpc_frame_lock:
|
|
475
|
-
self._manipulation_mpc_frame = frame
|
|
476
|
-
return True
|
|
477
|
-
|
|
478
|
-
def change_manipulation_mpc_ctrl_mode(self, control_mode: KuavoManipulationMpcCtrlMode)->bool:
|
|
479
|
-
timeout = 1.0
|
|
480
|
-
count = 0
|
|
481
|
-
while self._rb_state.manipulation_mpc_ctrl_mode != control_mode:
|
|
482
|
-
SDKLogger.debug(f"[Core] Change manipulation mpc ctrl mode from {self._rb_state.manipulation_mpc_ctrl_mode} to {control_mode}, retry: {count}")
|
|
483
|
-
self._control.change_manipulation_mpc_ctrl_mode(control_mode)
|
|
484
|
-
if self._rb_state.manipulation_mpc_ctrl_mode == control_mode:
|
|
485
|
-
break
|
|
486
|
-
if timeout <= 0:
|
|
487
|
-
SDKLogger.warn("[Core] Change manipulation mpc ctrl mode timeout!")
|
|
488
|
-
return False
|
|
489
|
-
timeout -= 0.1
|
|
490
|
-
time.sleep(0.1)
|
|
491
|
-
count += 1
|
|
492
|
-
if not hasattr(self, '_manipulation_mpc_ctrl_mode_lock'):
|
|
493
|
-
self._manipulation_mpc_ctrl_mode_lock = threading.Lock()
|
|
494
|
-
with self._manipulation_mpc_ctrl_mode_lock:
|
|
495
|
-
self._manipulation_mpc_ctrl_mode = control_mode
|
|
496
|
-
return True
|
|
497
|
-
|
|
498
|
-
def change_manipulation_mpc_control_flow(self, control_flow: KuavoManipulationMpcControlFlow)->bool:
|
|
499
|
-
timeout = 1.0
|
|
500
|
-
count = 0
|
|
501
|
-
while self._rb_state.manipulation_mpc_control_flow != control_flow:
|
|
502
|
-
SDKLogger.debug(f"[Core] Change manipulation mpc control flow from {self._rb_state.manipulation_mpc_control_flow} to {control_flow}, retry: {count}")
|
|
503
|
-
self._control.change_manipulation_mpc_control_flow(control_flow)
|
|
504
|
-
if self._rb_state.manipulation_mpc_control_flow == control_flow:
|
|
505
|
-
break
|
|
506
|
-
if timeout <= 0:
|
|
507
|
-
SDKLogger.warn("[Core] Change manipulation mpc control flow timeout!")
|
|
508
|
-
return False
|
|
509
|
-
timeout -= 0.1
|
|
510
|
-
time.sleep(0.1)
|
|
511
|
-
count += 1
|
|
512
|
-
if not hasattr(self, '_manipulation_mpc_control_flow_lock'):
|
|
513
|
-
self._manipulation_mpc_control_flow_lock = threading.Lock()
|
|
514
|
-
with self._manipulation_mpc_control_flow_lock:
|
|
515
|
-
self._manipulation_mpc_control_flow = control_flow
|
|
516
|
-
return True
|
|
517
|
-
|
|
518
338
|
def change_robot_arm_ctrl_mode(self, mode:KuavoArmCtrlMode)->bool:
|
|
519
339
|
timeout = 1.0
|
|
520
340
|
count = 0
|
|
@@ -544,25 +364,12 @@ class KuavoRobotCore:
|
|
|
544
364
|
return
|
|
545
365
|
|
|
546
366
|
# init_pos = [0.0]*14
|
|
547
|
-
# if not self.
|
|
367
|
+
# if not self.control_robot_arm_target_poses([1.5], [init_pos]):
|
|
548
368
|
# SDKLogger.warn("[Core] robot arm reset failed, control robot arm traj failed!")
|
|
549
369
|
# return False
|
|
550
370
|
|
|
551
371
|
return self.change_robot_arm_ctrl_mode(KuavoArmCtrlMode.AutoSwing)
|
|
552
372
|
|
|
553
|
-
def robot_manipulation_mpc_reset(self)->bool:
|
|
554
|
-
if self._manipulation_mpc_ctrl_mode != KuavoManipulationMpcCtrlMode.NoControl:
|
|
555
|
-
SDKLogger.debug("[Core] robot manipulation mpc reset, current manipulation mpc ctrl mode != NoControl, change it.")
|
|
556
|
-
if not self.change_manipulation_mpc_ctrl_mode(KuavoManipulationMpcCtrlMode.NoControl):
|
|
557
|
-
SDKLogger.warn("[Core] robot manipulation mpc reset failed, change manipulation mpc ctrl mode failed!")
|
|
558
|
-
return False
|
|
559
|
-
if self._manipulation_mpc_control_flow != KuavoManipulationMpcControlFlow.ThroughFullBodyMpc:
|
|
560
|
-
SDKLogger.debug("[Core] robot manipulation mpc reset, current manipulation mpc control flow != ThroughFullBodyMpc, change it.")
|
|
561
|
-
if not self.change_manipulation_mpc_control_flow(KuavoManipulationMpcControlFlow.ThroughFullBodyMpc):
|
|
562
|
-
SDKLogger.warn("[Core] robot manipulation mpc reset failed, change manipulation mpc control flow failed!")
|
|
563
|
-
return False
|
|
564
|
-
return True
|
|
565
|
-
|
|
566
373
|
""" ------------------------------------------------------------------------"""
|
|
567
374
|
""" Arm Forward kinematics && Arm Inverse kinematics """
|
|
568
375
|
def arm_ik(self,
|
|
@@ -587,28 +394,3 @@ class KuavoRobotCore:
|
|
|
587
394
|
SDKLogger.debug(f"[Core] Received gait change notification: {gait_name} at time {current_time}")
|
|
588
395
|
# Call the transition method if it exists
|
|
589
396
|
getattr(self, to_method)()
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
if __name__ == "__main__":
|
|
593
|
-
DEBUG_MODE = 0
|
|
594
|
-
core = KuavoRobotCore()
|
|
595
|
-
core.initialize()
|
|
596
|
-
|
|
597
|
-
if DEBUG_MODE == 0:
|
|
598
|
-
time.sleep(1.0)
|
|
599
|
-
core.change_robot_arm_ctrl_mode(KuavoArmCtrlMode.ExternalControl)
|
|
600
|
-
core.change_manipulation_mpc_frame(KuavoManipulationMpcFrame.VRFrame)
|
|
601
|
-
core.change_manipulation_mpc_ctrl_mode(KuavoManipulationMpcCtrlMode.ArmOnly)
|
|
602
|
-
core.change_manipulation_mpc_control_flow(KuavoManipulationMpcControlFlow.DirectToWbc)
|
|
603
|
-
core.robot_manipulation_mpc_reset()
|
|
604
|
-
elif DEBUG_MODE == 1:
|
|
605
|
-
core.to_stance()
|
|
606
|
-
print("state now is to_stance:", core.state)
|
|
607
|
-
core.control_command_pose_world(0.0, 1.0, 0.0, 1.57)
|
|
608
|
-
print("state now is control_command_pose_world:", core.state)
|
|
609
|
-
elif DEBUG_MODE == 2:
|
|
610
|
-
core.to_trot()
|
|
611
|
-
print("state now is to_trot:", core.state)
|
|
612
|
-
time.sleep(3.0)
|
|
613
|
-
core.to_stance()
|
|
614
|
-
print("state now is to_stance:", core.state)
|