Skip to content

SerialArm-Core v0.5.1

Choose a tag to compare

@Kaede-Rei Kaede-Rei released this 18 Sep 09:39
· 76 commits to main since this release

SerialArm-Core v0.5.1

v0.5.1 是一个以运行安全与分发可用性为核心的维护版本

本次更新重点解决两个问题:一是 RobotSession 在可恢复 FAULT 后可能提前结束 worker,导致 Python 会话生命周期无法继续;二是非 ROS 用户安装 Pinocchio 等依赖和使用 Standalone Core / Python Binding 的门槛过高

RobotSession Online FAULT Recovery

  • 可恢复的 FAULT + fault_holding 不再结束 C++ worker
  • worker 会持续调用 maintain_fault_hold(),保持安全反应在线
  • clear_fault()、enter_fault_compliant_recovery()、return_to_fault_rigid_hold() 统一提交给同一个 worker 串行执行
  • 避免 Python 调用线程与控制线程同时修改 Robot 状态机
  • 进入 FAULT 后自动废弃旧 move_to 目标、旧阻抗模式请求和未应用的 gravity scale 请求
  • clear_fault() 成功后固定从 ACTIVE + RIGID_HOLD 恢复
  • 不会自动继续故障前轨迹,也不会自动重新进入 COMPLIANT_DRAG
  • FAULT 期间拒绝新的运动请求
  • worker 停止或 stop() 遇到 FAULT 时使用 force_deactivate(),避免留下无人维护的周期 hold

这使拖拽、手眼标定和其他需要长期保持 RobotSession 在线的流程可以在一次可恢复 FAULT 后继续工作,而不需要重启整个会话

Standalone Dependency Management

新增 Conan 2 Standalone 依赖路径

SerialArm-Core
    ↓
find_package(...)
    ↓
Conan 2 / CMakeDeps / CMakeToolchain
    ↓
Pinocchio + Eigen + yaml-cpp + GTest

Core CMake 仍保持 dependency-manager agnostic:

  • 不 vendor Pinocchio
  • 不使用 git submodule 管理 Pinocchio
  • 不在默认 CMake 中通过 FetchContent 编译 Pinocchio
  • ROS 2 用户继续使用 rosdep + apt
  • Standalone Linux 用户使用 Conan 2

Standalone Core Quick Start

python3 -m pip install --user "conan>=2,<3"
export PATH="$HOME/.local/bin:$PATH"

./tools/bootstrap_standalone.sh
source install/standalone/setup.bash

bootstrap 会自动完成 Conan profile、依赖安装、Core configure/build、ctest 和 install

DM-Arm One-command Bootstrap

仓库内置 DM-Arm 用户可以直接执行

./tools/bootstrap_standalone.sh --robot dm_arm
source install/standalone/setup.bash

serial_arm_terminal --robot-profile dm_arm_gray

该路径会继续安装:

  • Damiao USB2CAN Protocol
  • Damiao Hardware Backend
  • Robot Profiles
  • DM-Arm Description / Config / Model resources

并自动生成统一的 install/standalone/setup.bash

Standalone Python Wheel

修复 standalone wheel 在非 ROS 环境下的安装链:

  • _serial_arm 在无 ament 环境下也会进入 wheel
  • libserial_arm_core.so 随 wheel 一起安装
  • _serial_arm 使用 $ORIGIN RPATH 查找随包安装的 Core shared library
  • 补充 Python package README,保证 PEP 621 metadata 路径有效
  • standalone wheel 不要求 ROS 2 / ament

构建示例:

conan install . \
  --output-folder=build/conan \
  --build=missing \
  -s build_type=Release

source "$PWD/build/conan/conanrun.sh"
export CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=$PWD/build/conan/conan_toolchain.cmake"

cd src/serial_arm/core/python
python3 -m pip install build
python3 -m build --wheel
python3 -m pip install --force-reinstall dist/serial_arm-*.whl
python3 -c "import serial_arm; print(serial_arm.__version__)"

Regression Coverage

新增 / 强化以下回归测试:

  • serial_arm_robot_session_fault_recovery_contract
  • serial_arm_robot_session_fault_recovery_runtime_tests
  • serial_arm_standalone_dependency_contract
  • serial_arm_bootstrap_standalone_cli

其中 RobotSession runtime test 使用故障注入 Hardware Plugin 在控制周期中制造一次可恢复 READ_FAILED,验证:

ACTIVE + tracking
    ↓
recoverable FAULT
    ↓
worker still running
    ↓
FAULT + RIGID_HOLD
    ↓
clear_fault()
    ↓
ACTIVE + RIGID_HOLD
    ↓
re-enter tracking without new goal
    ↓
old move_to target is not resumed

Compatibility

  • Version: 0.5.1
  • C++: C++17
  • ROS 2: Humble path remains supported
  • Standalone: Linux C++ / Python
  • Existing Robot Profile and Hardware Backend interfaces remain unchanged
  • v0.6.0 planned task-space capability is not included in this maintenance release