| .vscode | ||
| assets | ||
| cmake | ||
| cmvr-es | ||
| data | ||
| dependency | ||
| docs | ||
| model | ||
| protos | ||
| python | ||
| script | ||
| scripts | ||
| test | ||
| .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
组件文档
具体能力、配置、协议和安全边界由对应代码目录下的 README 维护:
- MotorService gRPC 接口
- 电机设备模块
- Modbus TCP PLC runtime
- MotorService 与 CMVR PLC v1 完整协议
- AUBO 控制柜 Standard 数字 IO
- 配置与部署规则
Modbus Quick Stop 只是功能性停止,不能替代硬接线急停或驱动器 STO。AUBO JSON 接口只访问控制柜 Standard 数字 IO,不访问安全 IO。