Preserve acceleration through same-axis velocity reversal and submit retract commands immediately after zero-dwell tactile contact. Capture the applied command's TCP reference and measure signed retract progress, with logging of the maximum sampled forward displacement after reversal starts. Support per-command linear jerk in both touch.speed_l and retract, and cap requested acceleration and jerk at the configured arm limits. Protect command snapshots and stop completion against newer speedL submissions. Include the current QP arm and retract parameter tuning and remove an obsolete config field. Add headless actuator-driven MuJoCo reversal measurement and focused regression coverage for reversal continuity, controller concurrency, limit enforcement, and touch jerk configuration. Validation: cmvr_es and touch_screen_task_test build successfully; 18 focused regression tests pass, along with headless MuJoCo reversal checks. |
||
|---|---|---|
| .vscode | ||
| assets | ||
| cmake | ||
| cmvr-es | ||
| data | ||
| dependency | ||
| docs | ||
| model | ||
| protos/cmvr | ||
| python | ||
| script | ||
| scripts | ||
| .aiignore | ||
| .codex | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| compile_commands.json | ||
| LICENSE | ||
| MUJOCO_LOG.TXT | ||
| README.md | ||
| request.txt | ||
CMVR-ES
简介
CMVR-ES 工程。
安装
1. 拉取 Git 子模块
git submodule update --init --recursive
2. 安装系统依赖
# 基础工具
sudo apt-get update
sudo apt install -y build-essential cmake git pkg-config patchelf libboost-all-dev libssl-dev
# OpenCV
sudo apt install -y \
libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev \
libv4l-dev libxvidcore-dev libx264-dev \
libgtk-3-dev
# PulseAudio
sudo apt-get install libpulse-dev
# OpenGL
sudo apt-get install libgl1-mesa-dev
# GLFW
sudo apt-get install libglfw3-dev
# Assimp
sudo apt-get install libassimp-dev
# visp
sudo apt-get install -y libx11-dev liblapack-dev libzbar-dev libpthread-stubs0-dev libdc1394-dev nlohmann-json3-dev
# RealSense
sudo apt-get install -y \
libusb-1.0-0-dev libudev-dev \
libglu1-mesa-dev
# Matplot++
sudo apt install gnuplot-qt
3. 配置 IgH EtherCAT
工程已内置 IgH EtherCAT 1.7.0 的 userspace 文件:
dependency/x86/third_party/ethercat/v1.7.0
先设置本机路径:
export CMVR_ES_ROOT=/path/to/cmvr-es
export IGH_ETHERCAT_ROOT=$CMVR_ES_ROOT/dependency/x86/third_party/ethercat/v1.7.0
安装当前内核的 header:
sudo apt-get update
sudo apt-get install -y linux-headers-$(uname -r)
如果内置目录里已经有当前内核版本的 EtherCAT 内核模块,直接安装到系统:
sudo mkdir -p /lib/modules/$(uname -r)/ethercat
sudo cp -r $IGH_ETHERCAT_ROOT/lib/modules/$(uname -r)/ethercat/* /lib/modules/$(uname -r)/ethercat/
sudo depmod
内置内核模块只适用于相同内核版本。如果 $IGH_ETHERCAT_ROOT/lib/modules/$(uname -r) 不存在,说明这台机器的内核版本不匹配,需要在这台机器上重新编译安装 IgH EtherCAT:
sudo apt-get update
sudo apt-get install -y \
build-essential autoconf automake libtool pkg-config git \
linux-headers-$(uname -r)
cd /tmp
git clone --branch stable-1.7 --depth 1 https://gitlab.com/etherlab.org/ethercat.git ethercat-stable-1.7
cd ethercat-stable-1.7
./bootstrap
./configure \
--prefix=$IGH_ETHERCAT_ROOT \
--libdir=$IGH_ETHERCAT_ROOT/lib \
--includedir=$IGH_ETHERCAT_ROOT/include \
--sysconfdir=$IGH_ETHERCAT_ROOT/etc \
--with-systemdsystemunitdir=$IGH_ETHERCAT_ROOT/lib/systemd/system \
--enable-generic \
--with-linux-dir=/lib/modules/$(uname -r)/build
make -j$(nproc) all modules
make install
sudo make modules_install
sudo depmod
启动 EtherCAT。eno1 换成实际连接 EtherCAT 从站的网卡:
sudo script/ethercat/start_ethercat.sh eno1
脚本会写入内置 IgH 配置文件:
$IGH_ETHERCAT_ROOT/etc/ethercat.conf
脚本会把该网卡的 MAC 写到 MASTER0_DEVICE,使用 DEVICE_MODULES="generic",把网卡从 NetworkManager 断开,并通过 ethercatctl -c 启动 IgH master。
查看状态:
script/ethercat/status_ethercat.sh
$IGH_ETHERCAT_ROOT/bin/ethercat master
$IGH_ETHERCAT_ROOT/bin/ethercat slaves
$IGH_ETHERCAT_ROOT/bin/ethercat pdos
停止 EtherCAT:
sudo script/ethercat/stop_ethercat.sh eno1
sudo script/ethercat/stop_ethercat.sh eno1 --restore-network