Dobot机械臂木块分拣

1.实验题目:基于opencv的木块分拣实验

1.1实验目的:掌握编写c++程序脚本并部署到硬件设备的能力;内置API配合opencv来操作机械臂进行物块的分拣

2.实验软件环境的搭建

2.1 所需要安装的软件

由于实验使用的是实验室所提供的电脑,所以操作系统使用的是windows,我们需要在其上部署visual studio和Dobot studio(已经安装过),并配置opencv的环境和Dobot的API环境,具体参考的网站:

Dobot下载中心

出于稳定性和配置出现问题的可查性考虑,我下载的是Dobot Demo v2.0版本的文件

压缩包的内容,可供我使用的Dobot Magicain Demo说明的pdf文件,这里我可以查看关于机械臂操作的一些API,还有就是DobotDll/Precompiled/Windows/x64下的DobotDll压缩文件,


在实验和配置过程中会出现如下的错误:

在这里插入图片描述

可以知道这是Dobot的sdk的问题,经过查询网络和实验指导书,通过修改两个地方最终成功通过编译运行: 需要注释掉#include "dobotdll_global.h"头文件 并删掉该文件所有的 DOBOTDLLSHARED_EXPORT 虽然后来证实这是关于dobot提供的摄像头的相关配置文件,我们在实验中并不会用到,但是这确实阻碍了我去在整个visual studio项目中配置我的Dobot API

opencv的安装:

需要将安装好的环境在visual studio中设置环境变量,修改的地方包括系统环境变量、包含目录、库目录、链接器,步骤较多,简单展示部分的配置:

环境变量:

包含目录:

库目录:

链接器:

我将环境配置在我的用户名下,所以最终会包含的文件展示如下:

3.关于手眼标定

3.1 原理

核心思想的公式:

T o b j e c

### Dobot机械串口通信配置与教程 Dobot机械支持通过串口进行通信,用户可以通过自定义代码直接操作串口,而不依赖官方API。这种操作方式提供了更高的自由度,但需要对串口通信协议有深入理解。以下是对Dobot机械串口通信配置和教程的详细说明。 #### 1. 硬件连接 在开始串口通信之前,需要确保Dobot机械与计算机之间的硬件连接正确。通常,Dobot机械通过USB转串口模块与计算机相连。连接成功后,可以通过设备管理器查看分配的COM端口号[^3]。 #### 2. 串口参数配置 Dobot机械的串口通信参数如下: - 波特率:115200 - 数据位:8 - 停止位:1 - 校验位:无 这些参数必须在程序中正确配置,才能实现与机械的有效通信[^2]。 #### 3. 通信协议基础 Dobot机械的通信协议基于命令帧结构。每个命令帧由以下部分组成: - 起始字节:`[5A 5A]` - 地址字节:`[0D 00]` - 指令字节:根据具体功能定义 - 数据长度:表示后续数据的字节数 - 数据内容:指令所需的具体参数 - 校验和:所有字节(不包括起始字节)的累加和,取低8位 具体的命令帧格式和指令集可以参考越疆科技提供的《Dobot通信协议文档》[^2]。 #### 4. Python代码示例 以下是一个使用Python通过串口控制Dobot机械的简单示例: ```python import serial import time def send_command(ser, command): ser.write(command) time.sleep(0.1) # 等待响应 def move_to_position(ser, x, y, z, r): # 构造移动到指定位置的命令帧 cmd = bytearray.fromhex("5A 5A 0D 00 07 01 01") cmd += int(x).to_bytes(4, 'little', signed=True) cmd += int(y).to_bytes(4, 'little', signed=True) cmd += int(z).to_bytes(4, 'little', signed=True) cmd += int(r).to_bytes(4, 'little', signed=True) checksum = sum(cmd[2:]) & 0xFF cmd += checksum.to_bytes(1, 'little') send_command(ser, cmd) # 初始化串口 ser = serial.Serial('COM3', 115200, timeout=1) # 替换为实际的COM端口 try: # 发送移动命令 move_to_position(ser, 100, 0, 0, 0) finally: ser.close() ``` 上述代码实现了通过串口发送命令,使Dobot机械移动到指定位置的功能。需要注意的是,命令帧中的具体参数和校验和计算需严格按照协议文档执行[^2]。 #### 5. 开源资源 GitHub上有一个名为`open-dobot`的开源项目,提供了Dobot机械的串口通信示例代码。用户可以参考该项目中的实现细节,进一步了解如何通过串口控制Dobot机械[^1]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值