71 lines
2.6 KiB
Markdown
71 lines
2.6 KiB
Markdown
# 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
|