返回产品首页

Developer Documentation

ForceEase A1 开发文档

包含开发工具安装、设备连接、状态读取、关节与夹爪控制,以及安全关机。

Overview

用程序控制机械臂

ForceEase A1 SDK 可连接设备、读取状态、同步控制关节、开合夹爪、拖动示教、 复位、紧急停止和安全停机。按项目选择 Python、C++ 或 ROS。

Python SDK 通过 PyPI 安装,用于脚本、教学和快速验证。
PyPI 安装

Quickstart

一分钟选择合适的 SDK

脚本和教学选 Python;Linux 工程选 C++;ROS2、MoveIt 或 ros2_control 项目选 ROS SDK。

目标 推荐 SDK 安装 验证
脚本控制、教学实验、快速验证设备 Python SDK pip install zeroArm-sdk python3 -c "import zeroArm_sdk; print(zeroArm_sdk.__version__)"
Linux CMake 工程、原生控制程序 C++ SDK 下载本站 Linux 安装包并执行安装脚本 pkg-config --modversion zeroArm_sdk
ROS2、MoveIt、ros2_control 集成 ROS SDK bash install_zeroarm_ros2_sdk.sh ros2 launch robot_arm_moveit real_moveit.launch.py

Python SDK

安装与快速开始

Python SDK 用于实验、课程演示和自动化脚本。需要 Python 3.8 或更高版本, 支持 Windows、macOS 和 Linux。建议安装在虚拟环境中。

pip install zeroArm-sdk

安装完成后可以检查版本:

python3 -c "import zeroArm_sdk; print(zeroArm_sdk.__version__)"

推荐控制流程

import asyncio
from zeroArm_sdk import RobotArm

async def main():
    arm = RobotArm()

    success = await arm.auto_discover_and_connect(timeout=3.0)
    if not success:
        print("未发现 ForceEase A1 设备或连接失败")
        return

    print(f"已成功连接机械臂:{arm.sn[:6]}...")

    def state_handler(state):
        if state.eef_pose:
            print(
                f"末端位姿: x={state.eef_pose.x:.3f}m, "
                f"y={state.eef_pose.y:.3f}m, z={state.eef_pose.z:.3f}m"
            )

    arm.on_state_update(state_handler)
    await arm.back_to_initial()

    ok = await arm.set_joints_batch(
        joint_targets=[
            (1, 0.52), (2, -0.35), (3, 1.57),
            (4, 0.0), (5, 0.0), (6, 0.0),
        ],
        wait_for_completion=True,
        timeout=10.0,
        tolerance=0.015,
    )
    print("到达目标" if ok else "运动超时或未完全到达目标")

    await arm.set_gripper(target_pos=0.08)
    await arm.gracefully_shutdown(wait_before_shutdown=5.0)

if __name__ == "__main__":
    asyncio.run(main())

多臂环境中可以使用序列号前缀连接,建议至少使用前 8 位,例如 await arm.connect_with_short_sn("<SN-PREFIX>")。

C++ SDK

工程集成与快速示例

C++ SDK 用于 Linux 工程和高频控制。按安装包说明准备编译工具和依赖库。

curl -L -O https://robotic.forceease.tech/cpp-sdk/current/zeroArm_sdk-linux-x86_64.tar.gz
tar -xzf zeroArm_sdk-linux-x86_64.tar.gz
cd zeroArm_sdk
sudo bash install_zeroarm_sdk.sh

ForceEase 服务器下载入口:

安装完成后可以验证版本和 CMake 示例:

pkg-config --modversion zeroArm_sdk
cmake -S examples -B /tmp/zeroarm_sdk_example_build -DCMAKE_PREFIX_PATH=/usr/local
cmake --build /tmp/zeroarm_sdk_example_build

手动集成时,可在项目的 CMake 配置中链接 SDK:

find_package(zeroArm_sdk 0.2 REQUIRED CONFIG)
target_link_libraries(your_target PRIVATE zeroArm_sdk::zeroArm_sdk)

快速示例

#include <zero_arm_sdk/zero_arm_sdk.h>
#include <chrono>
#include <cstdint>
#include <iostream>
#include <thread>
#include <utility>
#include <vector>

int main() {
    using namespace zeroArm_sdk;
    using namespace std::chrono_literals;

    RobotArm arm;
    if (!arm.auto_discover_and_connect(3s, 5s)) {
        std::cerr << "连接失败\n";
        return 1;
    }

    arm.on_state_update([](const FullArmState& state) {
        if (state.eef_pose) {
            std::cout << "末端 z = " << state.eef_pose->z << "m\n";
        }
    });

    arm.back_to_initial();
    std::this_thread::sleep_for(1s);

    const std::vector<std::pair<int32_t, float>> targets = {
        {1, 0.52f}, {2, -0.35f}, {3, 1.57f},
        {4, 0.0f}, {5, 0.0f}, {6, 0.0f},
    };

    const bool reached = arm.set_joints_batch(
        targets, 0.0f, 0.0f, 0, true, false,
        10.0f, 30.0f, 50.0f, true, 10s, 0.015f);

    std::cout << (reached ? "到位\n" : "超时\n");
    arm.gracefully_shutdown(5s);
    return reached ? 0 : 2;
}

ROS SDK

安装并构建 ROS2 workspace

在 ROS2 workspace 内运行安装脚本,完成 C++ SDK 安装、rosdep 依赖解析和 colcon build。

1. 在 ROS workspace 内运行

cd rosSDK/ROS2
curl -L -O https://robotic.forceease.tech/ros-sdk/install_zeroarm_ros2_sdk.sh
bash install_zeroarm_ros2_sdk.sh

如果使用仓内源码,脚本已经在 workspace 内:

cd rosSDK/ROS2
bash scripts/install_zeroarm_ros2_sdk.sh

2. 常用参数

bash install_zeroarm_ros2_sdk.sh --dry-run
bash install_zeroarm_ros2_sdk.sh --prefix /opt/zeroarm-sdk
bash install_zeroarm_ros2_sdk.sh --skip-cpp-sdk --skip-rosdep

默认 ROS distro 为 humble,默认 C++ SDK prefix 为 /usr/local。

3. 验证 ROS SDK

source install/setup.bash
ros2 pkg list | grep robot_arm_hardware
grep '^zeroArm_sdk_DIR:PATH=' build/robot_arm_hardware/CMakeCache.txt
ros2 launch robot_arm_moveit real_moveit.launch.py

API Reference

常用接口速查

接口 功能 推荐场景
auto_discover_and_connect() 自动搜索并连接第一个可用机械臂 初次使用、单臂实验
connect_with_short_sn() 按序列号前缀连接指定设备 多臂环境、课堂批量设备
set_joints_batch() 批量同步控制多个关节 轨迹规划、演示动作、稳定复现
set_joint() 控制单个关节目标位置 调试、精细调整
set_gripper() 控制夹爪开合 抓取、放置任务
set_tf() 设置末端执行器位姿 笛卡尔空间控制
zero_gravity_mode() 进入手动拖动示教模式 轨迹示教、课程演示
back_to_initial() 回到出厂初始姿态 启动复位、安全关机前
on_state_update() 订阅实时状态回调 状态监控、闭环控制
gracefully_shutdown() 执行安全关机流程 正常结束实验

Safety

安全建议与连接排查

  • 机械臂上电后等待 5-10 秒,再进行连接和控制。
  • 连接成功后建议先调用 back_to_initial(),让机械臂进入可预期姿态。
  • 批量关节控制优先使用等待到达目标的模式,并设置合理超时和容差。
  • 调试阶段优先使用保守速度,确保工作空间内没有人员或障碍物。
  • 连接失败时,请先确认电脑和机械臂连接在同一个网络中。
  • 如果公司、学校或实验室网络限制较多,请确认防火墙没有阻止机械臂通信。
  • 多臂环境中不要使用过短序列号前缀,建议至少使用前 8 位。
  • ROS 构建如果仍解析到 /tmp/zeroarm_cpp_sdk_ros_install,请从 CMAKE_PREFIX_PATH 中移除该旧测试路径后重新构建。
  • C++ SDK 安装后先用 pkg-config --modversion zeroArm_sdk 确认版本,再接入自己的工程。