第一次完整测例跑完
This commit is contained in:
70
unitree_deploy/docs/GettingStarted.md
Normal file
70
unitree_deploy/docs/GettingStarted.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Getting Started
|
||||
|
||||
### Code framework
|
||||
|
||||
|
||||
| Module Name | Documentation Link |
|
||||
| ------------------------- | -------------------------------------------------- |
|
||||
| robots | [build_robot](./build_robot.md) |
|
||||
| robot_devices/arm | [add_robot_arm](./add_robot_arm.md) |
|
||||
| robot_devices/cameras | [add_robot_camera](./add_robot_camera.md) |
|
||||
| robot_devices/endeffector | [add_robot_endeffector](./add_robot_endeffector.md)|
|
||||
|
||||
### Simple Usage (Example code, not executable)
|
||||
|
||||
```python
|
||||
import time
|
||||
import math
|
||||
import torch
|
||||
|
||||
from unitree_deploy.robot.robot_utils import make_robot
|
||||
from unitree_deploy.robot_devices.robots_devices_utils import precise_wait
|
||||
|
||||
class YourPolicy:
|
||||
def predict_action(self, observation, policy):
|
||||
# Logic for predicting action
|
||||
pass
|
||||
|
||||
class UnitreeEnv:
|
||||
def __init__(self):
|
||||
self.robot = make_robot(self.robot_type)
|
||||
if not self.robot.is_connected:
|
||||
self.robot.connect()
|
||||
# If disconnection is needed, call disconnect() here
|
||||
# self.robot.disconnect()
|
||||
|
||||
def get_obs(self):
|
||||
# Get observation
|
||||
observation = self.robot.capture_observation()
|
||||
return observation
|
||||
|
||||
def step(self, pred_action, t_command_target):
|
||||
# Execute action
|
||||
t_cycle_end = time.monotonic() + self.control_dt
|
||||
t_command_target = t_cycle_end + self.control_dt
|
||||
action = self.robot.send_action(torch.from_numpy(pred_action), t_command_target)
|
||||
precise_wait(t_cycle_end)
|
||||
return action
|
||||
|
||||
if __name__ == "__main__":
|
||||
policy = YourPolicy() # Create policy instance
|
||||
env = UnitreeEnv() # Create environment instance
|
||||
|
||||
t_start = time.monotonic() # Get start time
|
||||
iter_idx = 0 # Initialize iteration index
|
||||
control_dt = 1 / 30 # Control loop interval (30Hz)
|
||||
|
||||
try:
|
||||
while True:
|
||||
t_cycle_end = t_start + (iter_idx + 1) * control_dt # Calculate end time of current cycle
|
||||
t_command_target = t_cycle_end + control_dt # Calculate command target time
|
||||
|
||||
observation = env.get_obs() # Get environment observation
|
||||
pred_action = policy.predict_action(observation, policy) # Predict action
|
||||
env.step(pred_action, t_command_target) # Execute action
|
||||
|
||||
precise_wait(t_cycle_end) # Wait until cycle end
|
||||
iter_idx += 1 # Update iteration index
|
||||
finally:
|
||||
# Perform cleanup operations on exit (e.g., disconnect robot)
|
||||
pass
|
||||
Reference in New Issue
Block a user