Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ LinkerHand-CPP-SDK 是由灵心巧手(北京)科技有限公司开发的官
- **操作系统**: Linux (Ubuntu 18.04+ 推荐)
- **架构**: x86_64 或 aarch64
- **编译器**: GCC 7.0+ 或 Clang 5.0+
- **CMake**: 3.11+
- **CMake**: 3.15+
- **依赖**: pthread

## 🚀 快速开始
Expand Down Expand Up @@ -98,8 +98,8 @@ int main() {
创建 `CMakeLists.txt`:

```cmake
cmake_minimum_required(VERSION 3.5)
project(MyProject)
cmake_minimum_required(VERSION 3.15)
project(LinkerHand-CPP-SDK)

# 检测系统架构
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
Expand Down Expand Up @@ -305,13 +305,23 @@ ctest --output-on-failure
SDK 支持以下通信协议:

- **CAN** (`COMM_CAN_0`, `COMM_CAN_1`) - CAN 总线通信

- **ModBus** (`COMM_MODBUS`) - ModBus 通信协议
- **EtherCAT** (`COMM_ETHERCAT`) - EtherCAT 工业以太网通信

默认使用 `COMM_CAN_0`。

```cpp
// 使用 COMM_CAN_1 通信
// 使用 CAN0 通信(默认)
LinkerHandApi hand(LINKER_HAND::L10, HAND_TYPE::RIGHT);

// 使用 CAN1 通信
LinkerHandApi hand(LINKER_HAND::L10, HAND_TYPE::RIGHT, COMM_CAN_1);

// 使用 ModBus 通信
LinkerHandApi hand(LINKER_HAND::L10, HAND_TYPE::RIGHT, COMM_MODBUS);

// 使用 EtherCAT 通信
LinkerHandApi hand(LINKER_HAND::L10, HAND_TYPE::RIGHT, COMM_ETHERCAT);
```

## 📁 项目结构
Expand Down
13 changes: 11 additions & 2 deletions docs/API-Reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

## API 概述

LinkerHand C++ API 提供了完整的接口用于控制灵心巧手系列灵巧手设备。支持 O6、L6、L7、L10、L20、L21、L25 等多种型号,支持 CAN通信协议
LinkerHand C++ API 提供了完整的接口用于控制灵心巧手系列灵巧手设备。支持 O6、L6、L7、L10、L20、L21、L25 等多种型号,支持 CAN、ModBus、EtherCAT 等多种通信协议

---

Expand Down Expand Up @@ -70,6 +70,8 @@ LinkerHandApi(const LINKER_HAND &handJoint, const HAND_TYPE &handType, const COM
- `commType` (COMM_TYPE): 通信类型(可选,默认 `COMM_CAN_0`)
- `COMM_CAN_0` - CAN 总线 0
- `COMM_CAN_1` - CAN 总线 1
- `COMM_MODBUS` - ModBus 通信协议
- `COMM_ETHERCAT` - EtherCAT 工业以太网通信

**返回值**
Expand All @@ -91,8 +93,11 @@ int main() {

**注意事项**
- 构造函数会自动初始化通信接口
- 确保在创建实例前,通信接口已正确配置(如 CAN 总线已启动)
- 确保在创建实例前,通信接口已正确配置(如 CAN 总线已启动、ModBus 端口已配置、EtherCAT 网络已初始化
- 不同型号支持的通信协议可能不同,请参考设备手册
- 使用 CAN 总线前,确保总线已正确配置和启动
- 使用 ModBus 前,确保串口或网络连接已建立
- 使用 EtherCAT 前,确保 EtherCAT 主站已正确配置

---

Expand Down Expand Up @@ -839,6 +844,8 @@ int main() {
4. **通信协议**
- 默认使用 CAN0,可通过构造函数参数修改
- 使用 CAN 总线前,确保总线已正确配置和启动
- 使用 ModBus 前,确保串口或网络连接已建立
- 使用 EtherCAT 前,确保 EtherCAT 主站已正确配置

5. **错误处理**
- 建议定期检查故障码
Expand Down Expand Up @@ -875,6 +882,8 @@ int main() {

### 通信协议支持
- ✅ CAN (CAN0, CAN1)
- ✅ ModBus
- ✅ EtherCAT

---

Expand Down
6 changes: 4 additions & 2 deletions docs/CI-CD.md
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ sudo apt-get install -y \
mkdir -p build
cd build

# 配置 CMake(启用测试)
# 配置 CMake(启用测试,CMake 最低版本要求 3.15
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON

# 构建项目
Expand All @@ -245,7 +245,7 @@ sudo apt-get install -y \
mkdir -p build
cd build

# 配置 CMake(交叉编译)
# 配置 CMake(交叉编译,CMake 最低版本要求 3.15
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=ON \
Expand Down Expand Up @@ -312,3 +312,5 @@ cmake /path/to/project -Wno-dev
---

**最后更新**: 2026-01-XX

**注意**: 本文档描述了项目的 CI/CD 配置。如果您的项目尚未配置 CI/CD,可以参考本文档进行配置。实际的工作流配置文件位于 `.github/workflows/ci.yml`。
30 changes: 28 additions & 2 deletions docs/FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ sudo rm -rf /usr/local/lib/linkerhand-cpp-sdk
**A**: 根据您的硬件配置选择:

- **CAN 总线**: 默认使用 `COMM_CAN_0`,如果有多个 CAN 接口可使用 `COMM_CAN_1`
- **ModBus**: 使用 `COMM_MODBUS` 进行 ModBus 通信
- **EtherCAT**: 使用 `COMM_ETHERCAT` 进行 EtherCAT 工业以太网通信

```cpp
// CAN0(默认)
Expand All @@ -147,13 +149,22 @@ LinkerHandApi hand(LINKER_HAND::L10, HAND_TYPE::RIGHT);
// CAN1
LinkerHandApi hand(LINKER_HAND::L10, HAND_TYPE::RIGHT, COMM_CAN_1);

// ModBus
LinkerHandApi hand(LINKER_HAND::L10, HAND_TYPE::RIGHT, COMM_MODBUS);

// EtherCAT
LinkerHandApi hand(LINKER_HAND::L10, HAND_TYPE::RIGHT, COMM_ETHERCAT);
```

---

### Q7: 如何配置 CAN 总线?
### Q7: 如何配置通信接口?

**A**: 根据不同的通信协议进行配置:

#### CAN 总线配置

**A**: 在 Linux 系统中配置 CAN 总线:
在 Linux 系统中配置 CAN 总线:

```bash
# 加载 CAN 模块
Expand All @@ -173,6 +184,21 @@ cansend can0 123#DEADBEEF
candump can0
```

#### ModBus 配置

ModBus 配置取决于使用的接口类型(串口或网络):

- **串口 ModBus**: 确保串口设备权限正确,通常需要将用户添加到 `dialout` 组
- **网络 ModBus**: 确保网络连接正常,ModBus TCP/IP 端口已开放

#### EtherCAT 配置

EtherCAT 需要配置 EtherCAT 主站:

- 确保 EtherCAT 主站软件已安装和配置
- 检查 EtherCAT 网络拓扑
- 验证 EtherCAT 从站设备已正确连接

---

### Q8: 如何控制手指运动?
Expand Down
84 changes: 82 additions & 2 deletions docs/TROUBLESHOOTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,9 +194,13 @@ CMake 3.5 or higher is required
// 尝试不同的通信接口
LinkerHandApi hand1(LINKER_HAND::L10, HAND_TYPE::RIGHT, COMM_CAN_0);
LinkerHandApi hand2(LINKER_HAND::L10, HAND_TYPE::RIGHT, COMM_CAN_1);
LinkerHandApi hand3(LINKER_HAND::L10, HAND_TYPE::RIGHT, COMM_MODBUS);
LinkerHandApi hand4(LINKER_HAND::L10, HAND_TYPE::RIGHT, COMM_ETHERCAT);
```

3. 检查 CAN 总线状态:
3. 检查通信接口状态:

**CAN 总线**:
```bash
# 查看 CAN 接口
ip link show can0
Expand All @@ -207,6 +211,14 @@ CMake 3.5 or higher is required
# 监听 CAN 消息
candump can0
```

**ModBus**:
- 检查串口设备或网络连接
- 验证 ModBus 配置参数

**EtherCAT**:
- 使用 EtherCAT 主站工具检查网络状态
- 验证从站配置和连接

4. 检查设备 ID 和地址设置

Expand Down Expand Up @@ -265,7 +277,23 @@ CMake 3.5 or higher is required

## 通信问题

### 问题:CAN 总线通信失败
### 问题:通信接口连接失败

**错误现象**:
- 设备无响应
- 数据读取失败
- 通信超时

**可能原因**:
- 通信接口未正确配置
- 设备未连接或未上电
- 通信协议不匹配
- 权限问题

**解决方案**:
根据使用的通信协议,参考以下配置:

### CAN 总线通信问题

**错误现象**:
- 设备无响应
Expand Down Expand Up @@ -301,6 +329,58 @@ CMake 3.5 or higher is required
- CAN 总线两端需要 120Ω 终端电阻
- 检查硬件连接

### ModBus 通信问题

**错误现象**:
- ModBus 连接失败
- 数据读取超时
- 串口权限错误

**解决方案**:
1. **检查串口权限**:
```bash
# 添加用户到 dialout 组
sudo usermod -a -G dialout $USER
# 重新登录后生效

# 检查串口设备
ls -l /dev/ttyUSB* # USB 转串口
ls -l /dev/ttyS* # 串口
```

2. **检查串口配置**:
- 确认串口设备路径正确
- 检查波特率、数据位、停止位、校验位设置
- 验证 ModBus 从站地址

3. **测试 ModBus 通信**:
- 使用 ModBus 测试工具验证连接
- 检查网络连接(ModBus TCP/IP)

### EtherCAT 通信问题

**错误现象**:
- EtherCAT 主站无法识别从站
- 网络拓扑错误
- 同步失败

**解决方案**:
1. **检查 EtherCAT 主站配置**:
- 确保 EtherCAT 主站软件已正确安装
- 验证主站配置与硬件匹配

2. **检查网络拓扑**:
- 验证 EtherCAT 从站设备已正确连接
- 检查网络线缆和连接器
- 确认网络拓扑正确(环形或线性)

3. **检查从站状态**:
- 使用 EtherCAT 主站工具检查从站状态
- 验证从站配置和地址

4. **检查同步**:
- 确保 EtherCAT 网络同步正常
- 检查分布式时钟(DC)配置(如适用)

---

Expand Down
3 changes: 2 additions & 1 deletion examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ g++ -std=c++11 examples/toolset_example.cpp -I./include \
1. 运行程序
2. 选择机械手型号(L6/O6、L7、L10、L20、L21、L25)
3. 选择手部方向(左手/右手)
4. 选择通信接口(CAN0、CAN1、EtherCAT)
4. 选择通信接口(CAN0、CAN1、ModBus、EtherCAT)
5. 进入交互菜单,选择要测试的功能

**代码结构**:
Expand Down Expand Up @@ -170,6 +170,7 @@ $ ./action_group_show_l10
- 本示例仅支持 L10 型号
- 默认使用右手,如需左手请修改代码中的 `HAND_TYPE::RIGHT` 为 `HAND_TYPE::LEFT`
- 确保设备已正确连接
- 确保通信接口已正确配置(CAN 总线、ModBus 或 EtherCAT)

---

Expand Down
7 changes: 4 additions & 3 deletions tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,10 @@ make
```

**说明**:
- `-DBUILD_TESTING=ON` 启用测试构建
- `-DBUILD_TESTING=ON` 启用测试构建(默认已启用)
- CMake 会自动下载 Google Test 框架(如果未安装)
- 确保网络连接正常,以便下载依赖
- **注意**: 项目要求 CMake 3.15 或更高版本

### 方法二:禁用测试

Expand Down Expand Up @@ -475,7 +476,7 @@ Could not find gtest
# Ubuntu/Debian
sudo apt-get install libgtest-dev
```
3. 检查 CMake 版本(需要 3.5+)
3. 检查 CMake 版本(需要 3.15+)

---

Expand Down Expand Up @@ -581,7 +582,7 @@ CMake Error: ...

2. **检查 CMake 版本**:
```bash
cmake --version # 需要 3.5+
cmake --version # 需要 3.15+
```

3. **检查 CMakeLists.txt 语法**:
Expand Down