Go to file
lgv ffccdea26d fix(touch): improve reversal planning and enforce speedL limits
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.
2026-09-18 14:40:39 +08:00
.vscode feat: add touch app 2026-03-17 15:59:25 +08:00
assets feat: fix google test 2026-02-27 16:31:37 +08:00
cmake fix: avoid vendor libstdc++ conflicts 2026-09-03 15:12:26 +08:00
cmvr-es fix(touch): improve reversal planning and enforce speedL limits 2026-09-18 14:40:39 +08:00
data refactor:Refactor all the code 2026-06-24 15:45:54 +08:00
dependency feat(motor): initialize motor groups by device entry 2026-09-04 13:05:14 +08:00
docs fix(eyou): make zero calibration transactional 2026-09-03 15:12:26 +08:00
model feat(touch): add eye-to-hand PBVS MuJoCo support 2026-09-09 17:28:24 +08:00
protos/cmvr fix(touch): improve reversal planning and enforce speedL limits 2026-09-18 14:40:39 +08:00
python refactor:Refactor all the code 2026-06-24 15:45:54 +08:00
script fix(touch): improve reversal planning and enforce speedL limits 2026-09-18 14:40:39 +08:00
scripts feat(collision): add collision primitive generation tools 2026-07-27 15:39:54 +08:00
.aiignore fix: readme 2026-02-05 17:31:18 +08:00
.codex feat: add px 6ax gen3 as touch pressure sensor 2026-05-08 16:58:52 +08:00
.gitignore feat: add proto config for camera&hand&micophone 2026-01-21 16:30:13 +08:00
.gitmodules feat:add eye hand calibration and pose follow 2025-08-22 16:57:29 +08:00
CMakeLists.txt fix: avoid vendor libstdc++ conflicts 2026-09-03 15:12:26 +08:00
compile_commands.json feat: add px 6ax gen3 as touch pressure sensor 2026-05-08 16:58:52 +08:00
LICENSE feat:add eye hand calibration and pose follow 2025-08-22 16:57:29 +08:00
MUJOCO_LOG.TXT feat:add pbvs touch 2026-09-15 10:42:56 +08:00
README.md docs(ethercat): add EYOU setup guide and scripts 2026-09-03 15:12:26 +08:00
request.txt docs(ethercat): add EYOU setup guide and scripts 2026-09-03 15:12:26 +08:00

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