3.9 KiB
节卡机械臂与因时灵巧手开发
项目概述
本项目实现了节卡机械臂与因时灵巧手的协同控制,通过统一的C++接口实现了机械臂运动控制、灵巧手操作以及二者的协调动作。
项目结构
-
actions 动作相关数据和记录文件
-
build 编译中间产物和最终可执行文件
-
c&c++ 节卡提供的C++ SDK
-
inc_of_c++ C 定义的头文件,是抽象的接口
-
inc_of_c++ C++ 定义的头文件,是抽象的接口(使用)
-
x86_64-linux-gnu linux平台的静态和动态库,是接口的具体实现。使用的是.so
-
-
coordinated_actions 同时用到机械臂和灵巧手的动作定义,主要是最外层菜单功能
-
example 应用与测试
-
main.cpp 当前含有上层功能的系统
-
test_semo.cpp 测试读灵巧手寄存器:信号量
-
test.cpp 测试写灵巧手寄存器:TIO设置与发送RS485帧
-
-
inspire_hand 仅与灵巧手相关的操作
-
inspire_hand_driver
-
inspire_hand_driver.h 发送接口定义
-
rh56_frame.h .c 帧构造
-
-
hand_actions.h .cpp 动作封装,收发接口定义
-
-
jaka_robot 仅与机械臂相关的操作
-
error_codes.h .cpp 机械臂错误码
-
robot_action .h .cpp 机械臂高层动作API(被系统逻辑调用,调用controller)
-
robot_controller.h .cpp 机械臂低层功能API(被action调用,调用SDK中的接口)
-
-
references 参考的开发手册
-
robot_control_hand 机械臂操纵灵巧手的TIO相关
-
communication_bridge.h .cpp 发送接口的实现,以及初始化TIO
-
semophore.h .cpp 信号量,读取接口的实现
-
-
tools 用到的工具函数
-
config_loader.h .cpp json配置文件的读取函数
-
tools.h .cpp 机械臂与灵巧手应用所需的工具函数
-
-
config.json json配置文件
-
CMakeLists.txt 编译文件
快速开始
环境要求
| 项目 | 最低要求 | 已验证 |
|---|---|---|
| 操作系统 | Linux x86_64 | Ubuntu 22.04 |
| CMake | ≥ 3.7.2 | 3.22.1 |
| 编译器 | GCC/G++ ≥ 9 | gcc 11.4.0 · g++ 11.4.0 |
| C++ 标准 | C++17 | C++17 |
| 依赖库 | JAKA SDK (libjakaAPI.so) |
路径:c&c++/x86_64-linux-gnu/shared/ |
提示:
- 若使用 GCC ≤ 8,需在链接阶段额外加入
stdc++fs(已在 CMake 中自动处理老版本)。- Linux 环境需链接
pthread;若在 Windows 构建,请替换为对应平台库,建议使用Threads::Threads做跨平台处理,并将.so改为.lib路径。
编译步骤
- 清理并创建构建目录
- 生成构建文件(Release 配置)
- 并行编译
rm -rf build
mkdir build
cd build
cmake ..
make -j4
运行示例
./robot_menu # 主菜单示例
./hand_tio_example # RS485 帧发送测试
./test_semo # 信号量读取测试
配置说明
config.json 关键字段:
- 连接与通信:
robot_ip机器人 IP;vout_*、pin_mode、rs485_channel、slave_id、baudrate、databit、stopbit、parity为 RS485/IO 电气与串口参数。 - 运动参数:
joint_speed_deg_s/joint_acc_deg_s2关节速度加速度;line_speed_mm_s/line_acc_mm_s2直线速度加速度;pose_speed_deg_s/pose_acc_deg_s2姿态速度加速度。 - 回零位:
home_joint_deg0~5关节回零姿态。 - 手指动作默认值:
hand_angle*目标角度;hand_speed*速度;hand_force*夹持力。 - 抓取通用参数:
grasp_joint_speed_deg/grasp_joint_acc_deg抓取时关节运动参数;grasp_descend_mm抓取下降距离。 - 抓取策略:
grasp_a_*/grasp_b_*抓取时两个点的关节位置;grasp_strategy*一系列拇指弯曲/旋转/平移预设,用于不同物体抓取。