尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

六电机 + Qt/ROS2 机器人控制层:专栏开篇

六电机 + Qt/ROS2 机器人控制层:专栏开篇 目标不是讲概念而是让你在 Jetson或同类 Linux ROS2 Humble Qt6上按同样架构把六轴 EtherCAT 控起来B03 占主站Web/TUI 只做 FIFO 客户端。0. 本专栏你将学会什么读完并跟着做应能得到进程B03_dev成功eth_initDLL六轴 CSP 使能ROS2 话题/b03/joint_targets能驱动电机/tmp/rhu_multi_pos_cmd status JSONL 可被 Python 客户端点动可选Web 控制台连上同一套 FIFO且不再起第二个主站。1. 仓库与目录先克隆到同一父目录假设根目录export RHU_ROOT~/rhu_tools # 按你的实际路径改 cd $RHU_ROOT ls ASD_D3_B03 yiyou-ecan-test目录干什么ASD_D3_B03/Qt6/ROS2 框架 进程内主站yiyou-ecan-test/Web / TUI / 应急 daemon / 写齿轮工具docs/csdn-六电机专栏/本系列文稿与配图硬约束全文第一条同一 EtherCAT 网口同一时刻只允许一个主站进程——要么B03_dev要么rhu_multi_pos_daemon绝不并存。2. 硬件与软件前提对照检查2.1 硬件示意拓扑Jetson EtherCAT 口例enP8p1s0 └─ CU1128部分从站 SKIP PDO ├─ PH M5 / M6 └─ RHU M4..M1你必须知道网口名ip -br link看哪块接电机总线从站能否被扫描链路灯、carrier1是否已有进程占着主站pgrep -ax B03_dev; pgrep -ax rhu_multi_pos_daemon。2.2 软件清单项建议版本 / 路径OSUbuntu 20.04/22.04 Jetson Linux 亦可ROS2Humble/opt/ros/humbleQt6.xqmake 用/usr/lib/qt6/bin/qmake不要系统默认 Qt5意优 SDKinclude/lib/libeu_ethercat.so等Python3.8Web/TUI 用标准库即可权限主站通常需要sudo把 SDK 放到 B03 侧或设环境变量# 方式 A符号链接到工程默认位置 mkdir -p $RHU_ROOT/ASD_D3_B03/third_party/eyou_ethercat_sdk # 将厂商包的 include、lib 链到上述目录 # 方式 B运行/编译时指定 export B03_EYOU_SDK_ROOT/path/to/eyou_ethercat_phu_sdk3. 30 分钟「空跑」验收路径先通链路再谈细节下面命令按顺序执行任一步失败先停对照文末排障。步骤 A编译消息包 B03source /opt/ros/humble/setup.bash cd $RHU_ROOT/ASD_D3_B03/RosMsg_dev ./build_ros_msg.sh source $RHU_ROOT/ASD_D3_B03/RosMsg_dev/install/setup.bash mkdir -p $RHU_ROOT/ASD_D3_B03/build-B03_dev cd $RHU_ROOT/ASD_D3_B03/build-B03_dev /usr/lib/qt6/bin/qmake ../B03_dev/B03_dev.pro make -j$(nproc) ls -l ./B03_dev步骤 B改网口配置编辑ASD_D3_B03/B03_dev/config/b03_dev.ini[motor_sdk] ifnameenP8p1s0 ; ← 改成你的 EtherCAT 网口 motor_config_yamlrhu_motors.yaml cycle_ms2 enable_fifo_servertrue cmd_fifo/tmp/rhu_multi_pos_cmd status_file/tmp/rhu_multi_pos_status.jsonl default_rpm0.05 allow_endpoint_plan_stubtrue确认同目录有rhu_motors.yaml。步骤 C清旧主站 → 起 B03sudo pkill -9 rhu_multi_pos_daemon 2/dev/null || true sudo pkill -9 B03_dev 2/dev/null || true export LD_LIBRARY_PATH$RHU_ROOT/ASD_D3_B03/third_party/eyou_ethercat_sdk/lib:${LD_LIBRARY_PATH:-} cd $RHU_ROOT/ASD_D3_B03/build-B03_dev sudo -E env LD_LIBRARY_PATH$LD_LIBRARY_PATH ./B03_dev成功迹象日志大致出现eth_initDLL成功 / 从站数量合理各轴 CSP 使能出现 FIFO / status 路径提示ls -l /tmp/rhu_multi_pos_cmd /tmp/rhu_multi_pos_status.jsonl存在。步骤 D不启 Web先用 CLI 点动一根轴另开终端# 读状态最后一行 tail -1 /tmp/rhu_multi_pos_status.jsonl | python3 -m json.tool # 小角度点动先确认软限内 python3 - PY from pathlib import Path import sys sys.path.insert(0, str(Path.home() / rhu_tools/yiyou-ecan-test/python)) from rhu_motion_client import RhuMotionClient c RhuMotionClient() print(c.status(M1)) c.goto_deg(M1, 2.0, rpm0.05) # 角度按你现场改小 print(c.wait_until_idle(M1, 60)) PY步骤 EROS 侧冒烟可选source /opt/ros/humble/setup.bash source $RHU_ROOT/ASD_D3_B03/RosMsg_dev/install/setup.bash ros2 topic list | grep b03 ros2 topic echo /b03/joint_states --once向/b03/joint_targets发目标时务必落在b03_dev.ini的min/max_angle_deg内第 07 篇细讲。4. 两条控制路径复刻时脑子里要有这张图路径 1正式机器人层 ROS → B03Application → MotorSdkAdapter → EyouMultiPosMaster → EtherCAT 路径 2人机旁路 Web/TUI/CLI → FIFO JSONL → MotorFifoServer在 B03 内→ 同一主站路径 1不经过FIFO。路径 2不能自己再eth_initDLL。5. 专栏怎么读按学习顺序篇你这一步要做成什么01本文环境齐、B03 能起、FIFO 能点动02会清互斥、懂为何不能双主站03知道改代码只动哪几个函数04理解主站如何进进程、如何编链接05自己写/改 FIFO 客户端06搭 Web 技术栈实现向07软限/齿轮/rpm 调对08固化部署与文档边界6. 本篇排障速查现象先做qmake 抱怨 Qt5 / 缺模块用/usr/lib/qt6/bin/qmake检查qt6-base-dev链接找不到eu_ethercatSDKlib是否到位B03_EYOU_SDK_ROOT运行缺.soLD_LIBRARY_PATHsudo -E别丢环境变量eth_initDLL失败网口名、carrier、是否已有主站FIFO 不出现enable_fifo_servertrueInitialize 是否失败提前退出点动无反应status 里enabled/moving软限default_rpm是否过小下一篇专门练**如何确认「只有一个主站」以及双主站时怎么救场。
返回列表