cmvr-es/README.md

3.2 KiB
Raw Blame History

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