# pyRob_Course **Repository Path**: aha-abc/pyRob_Course ## Basic Information - **Project Name**: pyRob_Course - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-29 - **Last Updated**: 2025-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Modeling ## 概述 `PythonRoboticsMathModeling` 是一个用于教学的 Python 库,主要用于双连杆机器人的数学建模和可视化。通过这个项目,学生可以学习如何使用 Python 进行机器人学中的数学建模和模拟。 ## 安装指南 ### 依赖库 确保你已经安装了以下 Python 库: - `numpy` - `matplotlib` 你可以使用 `pip` 安装这些库: ```bash pip install numpy matplotlib ``` ### 克隆仓库 ```bash git clone https://github.com/yourusername/PythonRoboticsMathModeling.git cd PythonRoboticsMathModeling ``` ## 使用示例 ### 运行示例代码 ```bash python lesson07.py ``` ### 代码说明 `lesson07.py` 是一个示例脚本,展示了如何使用 `Rob_mod_v2` 模块中的 `robot` 类进行双连杆机器人的模拟和可视化。 ```python from Rob_mod_v2 import robot import matplotlib.pyplot as plt import numpy as np from matplotlib.widgets import Slider, RangeSlider l1 = 1 l2 = 1 theta_1_0 = 45 theta_2_0 = 45 rob = robot(np.array([0, 0]), l1, l2, theta_1_0, theta_2_0) fig, ax = plt.subplots() plt.subplots_adjust(bottom=0.25) # 绘制初始位置 rob.forward(theta_1_0, theta_2_0) # 创建滑动条轴 ax_theta_1 = plt.axes([0.25, 0.025, 0.65, 0.03]) ax_theta_2 = plt.axes([0.25, 0.05, 0.65, 0.03]) ax_theta_1_adj = plt.axes([0.25, 0.075, 0.65, 0.03]) ax_theta_2_adj = plt.axes([0.25, 0.1, 0.65, 0.03]) ax_l1_adj = plt.axes([0.25, 0.125, 0.65, 0.03]) ax_l2_adj = plt.axes([0.25, 0.15, 0.65, 0.03]) # 创建滑动条 theta_1 = Slider(ax_theta_1, 'theta_1', 0, 90, valinit=theta_1_0) theta_2 = Slider(ax_theta_2, 'theta_2', 0, 90, valinit=theta_2_0) theta_1_adj = Slider(ax_theta_1_adj, 'theta_1_adj', -90, 90, valinit=0) theta_2_adj = Slider(ax_theta_2_adj, 'theta_2_adj', -90, 90, valinit=0) l1_adj = Slider(ax_l1_adj, 'l1_adj', 0.01, 1, valinit=l1) l2_adj = Slider(ax_l2_adj, 'l2_adj', 0.01, 1, valinit=l2) def forward_trigger(val): rob.forward(theta_1.val, theta_2.val) ax.clear() rob.draw(ax, workspace_points=True) fig.canvas.draw_idle() def workspace_trigger(val): rob.set_theta_adj(theta_1_adj.val, theta_2_adj.val) rob.forward(theta_1.val, theta_2.val) ax.clear() rob.draw(ax, workspace_points=True) fig.canvas.draw_idle() def links_trigger(val): rob.set_l(l1_adj.val, l2_adj.val) rob.forward(theta_1.val, theta_2.val) ax.clear() rob.draw(ax, workspace_points=True) fig.canvas.draw_idle() # 将更新函数绑定到滑动条 theta_1.on_changed(forward_trigger) theta_2.on_changed(forward_trigger) theta_1_adj.on_changed(workspace_trigger) theta_2_adj.on_changed(workspace_trigger) l1_adj.on_changed(links_trigger) l2_adj.on_changed(links_trigger) rob.draw(ax) plt.show() ``` ## 功能说明 ### 主要功能 - **正向运动学模拟**:计算双连杆机器人的末端执行器位置。 - **交互式滑动条**:调整关节角度和连杆长度。 - **工作空间生成**:生成并绘制机器人可达的工作空间点。 ### 类和方法 - **`robot` 类** - `__init__`: 初始化机器人参数。 - `forward`: 计算末端执行器位置。 - `draw`: 绘制机器人臂。 - `workspace_points_gen`: 生成工作空间点。 - `set_theta_adj`: 设置关节角度调整值。 - `set_l`: 设置连杆长度。 ## 贡献指南 欢迎对本项目进行贡献!你可以通过以下方式参与: - **提交问题**:如果你发现任何问题或有改进建议,请在 [Issues](https://github.com/yourusername/PythonRoboticsMathModeling/issues) 页面提交。 - **提交拉取请求**:如果你有代码改进或新功能,请按照以下步骤操作: 1. Fork 本仓库。 2. 创建一个新的分支 (`git checkout -b feature/your-feature-name`)。 3. 提交你的更改 (`git commit -am 'Add some feature'`)。 4. 推送到分支 (`git push origin feature/your-feature-name`)。 5. 打开一个拉取请求。 ## 许可证 本项目采用 [MIT 许可证](LICENSE)。请参阅 [LICENSE](LICENSE) 文件获取更多详细信息。