#!/usr/bin/env bash # 检查 PC ↔ Flexiv 机器人网络(地址取自 site.yaml) set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" # shellcheck disable=SC1091 source "${ROOT}/scripts/lib/load_site_config.sh" 2>/dev/null || true ROBOT_IP="${ROBOT_IP:-${SITE_ROBOT_IP:-192.168.100.1}}" ROBOT_SN="${ROBOT_SN:-${SITE_ROBOT_SN:-Rizon4-063989}}" PC_IP="${PC_IP:-${SITE_PC_IP:-192.168.100.10}}" pick_iface() { if [[ -n "${IFACE:-}" ]]; then echo "$IFACE" return fi if [[ -n "${SITE_NET_IFACE:-}" && -d "/sys/class/net/${SITE_NET_IFACE}" ]]; then echo "${SITE_NET_IFACE}" return fi local d for d in enp4s0 enp5s0 eth0; do [[ -d /sys/class/net/$d ]] && echo "$d" && return done for d in $(ls /sys/class/net); do [[ "$d" == lo ]] && continue [[ "$d" == en* || "$d" == eth* ]] || continue local state state=$(cat /sys/class/net/"$d"/operstate 2>/dev/null || echo down) [[ "$state" == up ]] && echo "$d" && return done echo enp4s0 } IFACE="$(pick_iface)" echo "=== 本机网卡 ===" ip -4 -br addr echo echo "=== 目标机器人(site.yaml) ===" echo " SN $ROBOT_SN" echo " 标签 ${SITE_ROBOT_LABEL:-}" echo " 目录 ${SITE_ROBOT_CATALOG:-}" echo " IP $ROBOT_IP" echo " 本机 $PC_IP" echo " 网卡 $IFACE" if ping -c 1 -W 1 "$ROBOT_IP" >/dev/null 2>&1; then echo " ping UP — 链路 OK" else echo " ping DOWN — PC 与机器人必须同网段(本机 ${PC_IP} ↔ 机器人 ${ROBOT_IP})" echo echo " 一键修复(交换机 / 有线):" echo " bash ~/ros2/scripts/fix_robot_lan.sh" echo " 独立交换机(不要办公网 DHCP)可用:" echo " bash ~/ros2/scripts/fix_robot_lan.sh --only" fi echo echo "=== 常见地址探测 ===" CANDIDATES=( "$ROBOT_IP" 192.168.2.100 192.168.2.10 192.168.101.1 192.168.101.10 192.168.100.1 192.168.100.10 192.168.100.1 192.168.100.2 192.168.100.10 192.168.1.1 ) seen="" for ip in "${CANDIDATES[@]}"; do [[ " ${seen} " == *" ${ip} "* ]] && continue seen+=" ${ip}" if ping -c 1 -W 1 "$ip" >/dev/null 2>&1; then echo " UP $ip" else echo " down $ip" fi done echo echo "=== 当前邻居 (ARP) ===" ip neigh | grep -v FAILED || true echo echo "说明:" echo "1) 网线接机器人控制柜网口 ↔ 本机 $IFACE。" echo "2) 示教器开启 RDK / 远程控制后再连。" echo "3) RDK 连接用 SN(不是 IP):flexivrdk.Robot('$ROBOT_SN')" echo "4) 切换机械臂:改 ~/ros2/config/site.yaml 的 robot.sn" echo "5) 手册: https://flexiv.cn/software/rdk/manual/index.html"