|
|
作者:机器谱
配置robodyno 接入Deepseek |
一、 目标描述
二、 VScode 安装步骤
(一)下载
访问 VScode 官方网站:https://code.visualstudio.com/ 。 在官网页面,点击 “Download for Windows” 直接下载 Windows 版本;
若需其他版本或需依据自身 Windows 系统的具体情况(如 32 位或 64 位)挑选对应版本,均可点击 “Download” 进行选择下载 。
(二)安装
1.在下载目录找到 VSCode 安装文件,双击启动安装程序,此时可能会弹出安全警告,点击 “运行” 继续。
2.阅读软件许可协议后,勾选 “我同意此协议”,点击 “下一步”。
3.点击 “浏览”,可自行选择安装路径,默认安装在 C 盘。
4.添加到开始菜单选项默认保持即可,点击 “下一步”。
5.勾选如下选项,并点击下一步
注:
在桌面创建快捷方式:勾选
将VSCode添加到右键菜单,支持打开文件:勾选
将VSCode添加到右键菜单,支持打开目录:勾选
勾选后会把很多文本格式改为用VSCode打开,例如.txt文件:不勾选
添加到PATH(环境变量),自动添加,无需手动配置:勾选
6.确认安装信息无误后,点击 “安装”。
7. 等待安装过程完成,安装结束后点击 “完成安装”。
三、 VScode 环境配置 —— 以 Python 为例
安装完成 VScode 后,进行 Python 环境配置:
1.在界面右侧选择扩展,然后直接搜索需要安装的扩展,直接安装即可:
2. 打开工程文件
选择文件-打开文件夹,找到程序所在文件夹即可:
3.编译、运行工程文件:
在VScode中,点击新建终端,其会在下面打开CMD命令行,我们要注意打开的当前位置,如果不是在程序所在的文件位置,我们需要移动到motor_test1.cpp程序对应文件夹位置。
在命令行中运行下面的命令,会在文件夹中生成motor_test1.exe 的可执行文件。
使用下面命令运行可执行文件,电机会按照程序设定的进行运动(注意电机的ID)
四、 相关工具安装
(一) 安装 Python
可在Python官网 Python Releases for Windows | Python.org 选择安装Python3.8.5版本。
也可安装本地安装包。双击安装包文件按照文件步骤进行操作。
1. 按照框选进行安装,点击进行下一步。
2.安装图进行安装,点击下一步。
3.点击进行下一步,等待安装完成。
(二) 安装OpenAI
在电脑终端中输入命令 pip install OpenAI
点击回车等待安装完成即可。
(三) 安装Robodyno库文件
在电脑终端输入安装命令:pip install robodyno -U
或pip install robodyno==1.7.1
若下载速度过慢,可将 pip 源切换为清华源后再安装:
pip install robodyno -i https://pypi.tuna.tsinghua.edu.cn/simple
确认当前安装版本,可在终端输入:pip show robodyno
或robodyno --version
输入命令后等待下载完成,即可完成 Robodyno 库的安装与版本确认。
五、 资料清单
序号 | 内容 |
| 1 | VScode安装包 |
| 2 | robodyno电机使用文档 |
| 3 | Robodyno的Python库文件 |
| 4 | Python安装包 |
Deepseek-Robodyno电机控制指南-资料下载清单.zip | 187.67MB | 下载6次 | 下载 |
一、获取Deepseek的API-KEY
1. 进入到deepseek官网首页 https://www.deepseek.com/
点击首页右上角 API开放平台
2. 进入之后,有多种登录和注册方式,自行选择方式登录或注册。
3. 登录之后会跳转界面,在左侧菜单栏中点击 API keys,使用API keys需要进行付费使用,在deepseek官网进行充值。
4. 进入后点击中央 创建API key 按钮,使用API keys需要进行付费使用,在deepseek官网进行充值。
5. 创建自己的API key的名称,使用API keys需要进行付费使用,在deepseek官网进行充值。
6. 输入名称点击创建后会弹出窗口,此处弹出的字符串为API key。点击复制按钮即可复制到自己的程序中使用API keys需要进行付费使用,在deepseek官网进行充值。
7. 把自己创建的API key复制到程序中;后面的base url当前使用的是deepseek网址,也可更换其他。,使用API keys需要进行付费使用,在deepseek官网进行充值。
8. 连接robodyno一体化关节模块运行程序即可使用文字语言进行控制电机运动,使用API keys需要进行付费使用,在deepseek官网进行充值。
二、电子硬件
① Robodyno Pro电机;
② CAN数据线;
③ Robodyno pro通信坞;
④ 12.6V电源适配器(或3节18650动力电池);
⑤ TypeC数据线;
电路连接如下图:
三、示例程序
| from openai import OpenAI import json from robodyno.components.can_bus.motor import Motor from robodyno.interfaces.can_bus import CanBus # 初始化 DeepSeek 客户端 client = OpenAI( api_key="sk-cc565b72346b49e28281861536ca229a", base_url="https://api.deepseek.com" ) # 初始化电机对象 can = CanBus() # motor = MiMotor(can, 0x7F) motor = Motor(can, 0x10) # 自然语言解析函数 def parse_natural_language(command): # 设计系统提示(prompt) system_prompt = """ 你是一个控制电机的助手。 电机可以通过三种模式控制:位置模式、速度模式和力矩模式。 你还可以启用或禁用电机。 此外,你可以读取电机的位置、速度、力矩、电压和温度。 电机运动会提高电机温度,温度过高时就需要让电机停下降温。 你的任务是从用户的指令中提取控制模式、目标值或读取的信息类型。 示例: 1. 用户: "将电机转到-1.5弧度。" 返回: {"action": "set", "mode": "position", "value": -1.5} 2. 用户: "将电机转到1圈。" 返回: {"action": "set", "mode": "position", "value": 6.28} 3. 用户: "以-2.0(弧度每秒)运行电机" 返回: {"action": "set", "mode": "velocity", "value": -2.0} 4. 用户: "施加0.5牛米的力矩。" 返回: {"action": "set", "mode": "torque", "value": 0.5} 5. 用户: "启用电机。" 返回: {"action": "enable"} 6. 用户: "禁用电机。" 返回: {"action": "disable"} 7. 用户: "读取电机位置。" 返回: {"action": "get", "info": "position"} 8. 用户: "读取电机速度。" 返回: {"action": "get", "info": "velocity"} 9. 用户: "读取电机力矩。" 返回: {"action": "get", "info": "torque"} 10. 用户: "读取电机电压。" 返回: {"action": "get", "info": "voltage"} 11. 用户: "读取电机温度。" 返回: {"action": "get", "info": "temperature"} 请仅以 JSON 格式返回结果。 """ # 使用 DeepSeek 解析指令 response = client.chat.completions.create( model="deepseek-chat", # 替换为 DeepSeek 的模型名称 messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": command}, ], ) # 提取解析结果 result = response.choices[0].message.content return result # 电机控制函数 def control_motor(action, mode=None, value=None, info=None): if action == "enable": motor.enable() elif action == "disable": motor.disable() elif action == "set": if mode == "position": motor.position_mode() motor.set_pos(value) elif mode == "velocity": motor.velocity_mode() motor.set_vel(value) elif mode == "torque": motor.torque_mode() motor.set_torque(value) else: print("无效的模式。") elif action == "get": if info == "position": print(f"当前电机位置: {motor.get_pos()} 弧度") elif info == "velocity": print(f"当前电机速度: {motor.get_vel()} 弧度/秒") elif info == "torque": print(f"当前电机力矩: {motor.get_torque()} 牛米") elif info == "voltage": print(f"当前电机电压: {motor.get_voltage()} 伏特") elif info == "temperature": print(f"当前电机温度: {motor.get_temperature()} 摄氏度") else: print("无效的信息类型。") else: print("无效的操作。") # 主程序 def motor_control_assistant(): print("欢迎使用电机控制助手!") while True: # 获取用户输入 command = input("\n请输入指令(或输入“退出”以结束):") if command.lower() == "退出": print("程序结束。") break # 解析自然语言指令 try: parsed_result = parse_natural_language(command) # 去除 Markdown 代码块标记(如果有) if parsed_result.startswith("```json") and parsed_result.endswith("```"): parsed_result = parsed_result[7:-3].strip() # 去除 ```json 和 ``` print(f"解析结果: {parsed_result}") # 解析 JSON 结果 data = json.loads(parsed_result) action = data.get("action") mode = data.get("mode") value = data.get("value") info = data.get("info") if action: # 控制电机 control_motor(action, mode, value, info) else: print("无法解析指令,请重试。") except Exception as e: print(f"错误: {e}。请重试。") # 运行电机控制助手 motor_control_assistant() |
运行演示视频如下:
四、资料清单
序号 | 内容 |
| 1 | 源代码 |
Deepseek-Robodyno控制例程.zip | 2.38KB | 下载3次 | 下载 |