元驭机器人元驭机器人Hall 传感器教学下载原文件
1# 无硬件也能运行的读取示例23先认识夹爪或滑台的直线位置,再学习关节角度。下面命令都从仓库根目录执行,建议 Python 3.10 或更新版本。默认演示不安装第三方依赖,不访问串口:45```powershell6python software/examples/read_sensor.py7python software/examples/read_sensor.py --demo --profile line --count 58python software/examples/read_sensor.py --demo --profile encoder --count 59```1011输出为每行一个 JSON,保留协议整数、显示单位、SI 单位、三路 ADC、标志和主机时间。`source=simulated_not_hardware` 明确表示模拟数据。模拟波形用于解释数据流和单位,未复现实际磁铁、噪声、安装误差或精度。1213接入一块已配置好的传感器和自动收发 USB-RS485 适配器后,只安装串口依赖:1415```powershell16python -m pip install pyserial17python software/examples/read_sensor.py --port COM7 --id 1 --baud 115200 --count 2018python software/examples/read_sensor.py --port COM7 --id 1 --count 0 --interval-ms 10019```2021将 `COM7` 换成实际端口。Linux 端口示例为 `/dev/ttyUSB0`。真实串口路径先用 `GET_INFO` 读取测量类型,然后只发 `GET_DATA`;不写配置、不切模式、不改零点。固件出厂默认是角度模式,`--profile` 只影响演示,真实模式以设备返回值为准。先按 [直线实验](../../wiki/Labs.md) 完成硬件模式配置后再读直线数据。2223默认读取 20 帧后退出;`--count 0` 表示持续读取,Ctrl+C 停止。`--interval-ms` 是读完一帧后的等待时间,实际间隔还包含串口传输、设备处理和操作系统调度。超时、串口异常或设备错误状态会停止示例、输出错误并返回退出码 2,不把旧值伪装成新采样。2425`host_rx_unix_s` 是主机接收并解码时的 Unix 秒,`host_rx_monotonic_s` 用来计算本机间隔;两者都不是硬件 ADC 采样时间。角度转换为 rad,直线转换为 m。`calibration_valid_flag` 直接反映校准有效位;`measurement_warnings` 明确列出弱磁、校准中、未校准或越界,保留这些原始样本供观察,不把它们认定为控制可用。成功解包不等于测量正确。这个示例没有运动控制、ROS 2 节点、校准命令或产品级可靠性验证。2627读取路径检查返回的类型、模式、波特率、周期、校准位一致性,以及当前固件的角度与 12 位 ADC 格式。未知状态位或不符合格式的数据会停止读取。直线数值不在主机端裁剪到 ±15 mm,因为固件在内部估计限幅后还会减机械零点。解析器在不完整帧后连续 20 ms 没有新字节时重新寻找后续帧,支持截断帧后的恢复;这不替代整体事务超时。2829运行无需硬件的协议检查:3031```powershell32python -m unittest discover -s tests -v33```3435检查覆盖标准 CRC 向量、已核对请求帧、任意字节边界拆包与粘包、CRC/截断帧恢复、长度限制、有符号直线值、两种模式的单位换算、错误状态、配置格式、短写与事务匹配。它们验证软件行为,未替代板级、电磁兼容或机器人闭环验证。3637原工程另有带图形界面的 [上位机](../../wiki/Host-Tools.md),放在 `software/host/`;本目录的示例不依赖 PySide6、PyQtGraph 或 NumPy。