Metadata-Version: 2.4
Name: rabo_robocap
Version: 2.0.7
Summary: rabo_robocap: ROS2 机器人能力封装
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: numpy
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Provides-Extra: build
Requires-Dist: oss2; extra == "build"

# rabo_robocap

ROS2 机器人能力封装 SDK，为 Gazebo 仿真中的机器人提供高级控制接口。

支持热更新：`pip install` 一次后，每次 `import` 自动获取最新版本。

## 安装

```bash
# 1. 安装 Python 包（仅需一次）
pip install rabo_robocap

# 2. 构建 ROS2 消息包（需要 ROS2 环境）
cd ~/ros2_ws/src/rabo-lib
colcon build --paths rabo_robocap_msgs
source install/setup.bash
```

详细构建说明请参考 [构建指南](docs/build.md)。

## 使用

### 移动底盘

```python
from rabo_robocap import AgilexScoutMini

# 仿真模式（自动从 API 获取配置，rclpy 自动初始化）
base = AgilexScoutMini(robot_id='scout_model', mode='sim')

# 或 真实硬件模式
# base = AgilexScoutMini(robot_id='scout', mode='real')

base.set_velocity(linear_x=0.5, angular_z=0.0)
base.move_distance(1.0)
x, y, theta = base.get_odometry()
print(f"Position: ({x:.2f}, {y:.2f}), Heading: {theta:.2f}")

base.shutdown()
```

### 机械臂

```python
import numpy as np
from rabo_robocap import UniversalRobotsUR5

# 仿真模式
arm = UniversalRobotsUR5(robot_id='ur5_model', mode='sim')

# 或 真实硬件
# arm = UniversalRobotsUR5(robot_id='ur5', mode='real')

# 移动到 ready 位置
arm.move_joints([0, -np.pi/2, np.pi/2, -np.pi/2, -np.pi/2, 0])

# 移动到目标位置
arm.move_to(0.3, 0.2, 0.4)

# 获取当前位姿
pos, ori = arm.get_pose()
print(f"Position: {pos}")

arm.shutdown()
```

### 版本管理

```python
import rabo_robocap

# 查看当前版本
print(rabo_robocap.__version__)

# 查看更新状态
rabo_robocap.check_update()
```

**注意**：
- rclpy 自动初始化，无需手动调用 `rclpy.init()`
- 节点内部自动管理 ROS2 回调，**不要**将节点添加到外部 executor

## 文档

- [构建指南](docs/build.md)
- [整体架构](docs/architecture.md)
- [AgilexScoutMini 移动底盘](docs/robots/AgilexScoutMini.md)
- [GalaxeaR1LiteChassis 移动底盘](docs/robots/GalaxeaR1LiteChassis.md)
- [UniversalRobotsUR5 机械臂](docs/robots/UniversalRobotsUR5.md)
- [UniversalRobotsUR10 机械臂](docs/robots/UniversalRobotsUR10.md)
- [设计规则](CLAUDE.md)
