Skip to content

Control unit beta#2

Open
Ashington258 wants to merge 32 commits intomainfrom
Control_Unit_beta
Open

Control unit beta#2
Ashington258 wants to merge 32 commits intomainfrom
Control_Unit_beta

Conversation

@Ashington258
Copy link
Copy Markdown
Owner

No description provided.

此提交添加了一个测试脚本,用于验证与ODrive设备的连接并读取电压值。脚本执行以下操作:
1. 导入odrive模块
2. 查找任何可用的ODrive设备
3. 打印找到的ODrive设备的电压读数
新建requirements.txt文件,并添加项目所需的依赖项:
- odrivetool (通过pip安装)
- pyserial
- keyboard

这些依赖项对于项目运行和控制ODrive电机控制器至关重要。
新增了用于测试 USB CDC 接口的 Python 代码。该代码通过串口与 USB CDC 设备通信,发送测试消息并接收响应。主要功能包括:
- 打开指定的串口并设置波特率
- 发送测试消息到设备
- 接收并打印设备的响应
- 处理串口错误和程序中断
实现了通过键盘控制ODrive电机的速度和方向。使用上下左右键分别控制加速、减速、逆时针和顺时针转动。代码通过串口与ODrive设备通信,发送控制指令并接收实时速度反馈。
在项目的需求文件中添加了PyQt5库,以支持图形界面的开发。这将有助于创建更直观的用户交互界面。
添加了ASCII协议的详细文档,包括命令格式和参考。同时,提供了一个Python类`ODriveAsciiProtocol`,用于通过串口与ODrive进行通信。该类实现了各种命令方法,如电机控制、参数读写和系统命令,简化了ASCII协议的使用。
- 新增`ODriveAsciiProtocol`类,通过串口发送命令和读取响应
- 实现了电机轨迹控制、位置控制、速度控制和电流控制的方法
- 添加了读取和写入参数、请求反馈和更新看门狗的功能
- 提供了系统命令的执行方法
- 添加了串口初始化和关闭的方法
添加了基于PyQt5的电机控制用户界面,实现了连接ODrive、设置电机位置和速度、更新看门狗等功能。界面采用暗黑主题,布局合理,提供了友好的用户交互体验。
- 新增 main 函数作为程序入口点
- 初始化 ODriveAsciiProtocol 对象
- 提供设置电机位置和获取反馈的示例
- 确保在程序结束时关闭 ODrive 连接
修改测试代码以增加设备检测和错误处理

- 在 test_USB_CDC.py 中更改测试消息内容
- 重写 test_odrive.py 以包含设备查找、错误处理和详细信息输出
```
移除了key_board_control.py文件,该文件包含了通过键盘控制ODrive电机的代码。代码通过监听键盘事件来加速、减速或改变电机方向,并通过串口与ODrive进行通信。
- 新增 check_info 方法,用于获取 ODrive 的状态和参数
- 新增 find_odrive 静态方法,用于自动检测和连接 ODrive 设备
- 修改 __init__ 方法,默认波特率改为 115200
- 优化了 send_command 和 motor_velocity 方法
- 新增 hipnuc_serial_parser.py 文件实现数据解析逻辑
- 支持解析 HI91、HI92 和 HI81 三种帧类型
- 提供示例数据解析和打印功能
feat(ch100_protocol): 添加串口数据解析和 ZeroMQ 发布功能

- 新增 hipnuc_serial_parser_zmq.py 文件实现串口数据解析和发布
- 添加 hipnuc_frame 和 hipnuc_parser 类用于数据解析
- 实现 ZeroMQ 发布功能,将解析后的数据发送到指定端口
- 优化日志记录和异常处理
- 新增 test_imu_plot.py 文件,实现 IMU 数据实时采集和绘图功能
- 使用 ZeroMQ 订阅 IMU 数据,通过 matplotlib 动态更新图表
- 绘制温度、压力、系统时间、磁场、加速度、陀螺仪和欧拉角等数据
- 新增 test_tcp_port.py 文件,用于检测指定端口是否被占用
- 实现了 check_port 函数,用于检查单个端口的占用情况
- 主程序可指定多个端口进行检测,并输出结果
- 在 .gitignore 文件中添加 __pycache__ 目录,以忽略 Python 缓存文件
- 新增 ODrive 电机驱动配置文件
- 配置文件包含两个电机轴的详细参数设置
- 设置制动电阻、过电压保护、电流限制等全局配置
- 为每个轴配置电机类型、极对数、编码器模式等
- 设置速度控制模式和相关参数
- 添加校准序列和错误检查步骤
- 启用 UART 通信并设置波特率
- 包含保存配置和重启设备的步骤
- 新增 CH100 使用手册 PDF 文件
- 内容包括芯片版本、USB模块版本、简介、主要特性、硬件及接口参数等
- 覆盖了标定、通讯协议、AT指令、CAN协议等详细信息
- 附录包含固件升级与恢复出厂设置的操作步骤
- 在发送数据帧之前,添加了"topic"字段,值为"imu_data"
- 这样可以更明确地标识数据类型,便于后续处理
- 添加 check_info 方法,用于获取 ODrive 设备的固件版本、电源电压、轴状态等信息
- 实现 find_odrive 静态方法,自动扫描可用串口并尝试连接 ODrive 设备
- 新增 odrive_protocol_zmq.py 文件,实现基于 ZeroMQ 的 ODrive 通信协议
- 更新 USB CDC 端口和测试消息
- 添加 Liveplotter 测试脚本
- 添加 ODrive 官方库测试脚本
- 添加 ZMQ 订阅测试脚本
- 添加 numpy、matplotlib、pyzmq 和 rich 包
- 保持原有依赖不变
- 新增 CH100 和 ODrive 数据采集和发布功能
- 使用 ZeroMQ 进行数据发布
- 在单独的线程中运行 CH100 和 ODrive 进程
- 添加日志记录功能
- 优化了 ODriveAsciiProtocol 类的结构和代码风格
- 改进了 ZeroMQ 相关的代码,使用更清晰的变量名
- 添加了关闭 ZeroMQ 套接字和上下文的逻辑
- 更新了注释,使其更加详细和准确
- 实现了一个 ZeroMQ 订阅者,用于接收 ODrive 发布的消息
- 配置了日志记录,方便调试和监控
- 通过 TCP 连接到本地端口 5556,订阅所有消息
- 在接收到消息时进行日志记录,发生错误时进行异常处理
- 新增 self_check 模块,实现 CH100 和 ODrive 端口的自检功能
- 重构主程序,添加全局事件用于优雅地停止子线程
- 优化异常处理和日志记录,提高系统稳定性和可维护性
feat(self_check): 增加端口检测和释放功能

- 新增端口检测函数 is_port_in_use 和释放端口函数 release_port
- 在自检过程中检查 ZMQ 端口 5555 和 5556 是否被占用
- 如果端口被占用,尝试释放端口上的进程
- 优化自检流程,支持多个设备的自检
Ashington258 and others added 2 commits October 20, 2024 00:30
- 移除了 src/odrive_protocol/__pycache__/__init__.cpython-310.pyc 文件
- 移除了 src/odrive_protocol/__pycache__/odrive_protocol.cpython-310.pyc 文件
✨找到卡顿原因,CH100进程卡顿是因为zmq缓冲区大小和IMU数据量不匹配
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant