RoArm-M3
| ||||||||||||||||||||||
| ||||||||||||||||||||||
产品说明
产品介绍
这是一款专为创新应用而设计的 5 + 1 自由度智能机械臂。本产品采用轻量化结构,在抓取距离机械臂原点 0.5m 远的物体时有效负载为 0.2kg,而且可灵活安装在各类移动平台。它的 360°全方位的底座运动范围搭配五个灵活的关节,构建了一个直径达 1m 的工作空间。
本产品的关节直驱设计提高重复定位精度的同时也提高了结构可靠性,采用创新双驱技术使肩关节的力矩成倍增加。主控模组采用 ESP32 MCU,支持多种无线控制方式,提供了灵活的控制接口与丰富的通讯协议,使机械臂可以轻松连接至多种常用设备。同时还兼容 ROS2 和多种上位机,支持多种无线和有线通信方式。
人性化的可跨平台Web应用和简洁直观的坐标控制模式,大幅降低使用难度。此外,还提供了丰富的图文与视频教程将帮助您快速上手学习和使用这款机械臂。同时,RoArm-M3 系列还可支持热门 AI 机械臂项目 LeRobot,集成其预训练模型、示教数据集以及模拟环境,为深度学习、模仿学习和强化学习等研发方向提供强力支撑。通过调用 LeRobot 的示例及算法库,开发者能够更快速地将智能算法部署到 RoArm-M3 上,进一步拓展创新应用的可能性。
RoArm-M3 系列在轻量化、易用性、扩展性和开放创新等多个维度实现出色平衡,是一款集智能控制、人机交互和可定制开发于一体的多功能机械臂。如果您需要一个兼具灵活性、可扩展性和易用性的解决方案,RoArm-M3 系列将是很好的选择,助您实现更多创新。
产品特性
- 全向工作空间:360°全方位旋转的底座搭配灵活的关节运动,创造直径达1m的工作空间,实现全方位运动自如。
- 易用性:提供跨平台 Web 应用和坐标控制模式,降低使用难度,使用户能够轻松操作机械臂。
- 开源代码:开源了 RoArm-M3 机械臂系列的控制代码和通信接口文档,方便用户进行二次开发。
- 关节直驱设计:使用 12 位高精度磁编码器来获取关节角度,使得重复定位精度可达 0.088°,提高了结构可靠性。
- 双驱技术:创新双驱技术增强了机械臂肩关节的力矩,提升机械臂整体负载能力。
- 强大的主控模组:采用 ESP32 主控 MCU,支持多种控制接口和无线通信协议。
- 多平台兼容:兼容 ROS2 和多种上位机,支持多种无线和有线通信方式,为不同的开发和控制需求提供了灵活性。
- 丰富教程资源:提供丰富的图文和视频教程,涵盖多种功能,帮助用户快速上手学习和使用机械臂,从而加速创新应用的实现。
外观介绍
以下是机械臂各个部位以及常用接口的标注:
机器人通用驱动板板载接口
序号 | 资源名称 | 介绍 |
1 | ESP32-WROOM-32 主控模组 | 可使用 Arduino IDE 进行开发 |
2 | IPEX 一代 WIFI接口 | 用于连接IPEX1外螺内孔的天线 |
3 | 激光雷达接口 | 集成了雷达转接板的功能 |
4 | IIC 外设扩展接口 | 可用于连接 OLED 屏幕或其它 IIC 传感器 |
5 | 复位按键(EN) | 按下后松开,ESP32 会重启 |
6 | 下载按键(BOOT) | 按下时开机,ESP32 会进入到下载模式 |
7 | DC-DC 5V 稳压电路 | 可为上位机例如树莓派或Jetson nano等供电 |
8 | Type-C 接口 (LADAR) | 激光雷达数据接口 |
9 | Type-C 接口 (USB) | ESP32 串口通信接口、可为 ESP32 上传程序 |
10 | XH2.54 供电接口 | 输入DC7~12.6V,该接口直接为总线舵机和电机供电 |
11 | INA219 | 电压电流监测芯片 |
12 | 电源开关 | 控制外部供电的开关(上图处于 ON 的位置) |
13 | ST3215 总线舵机接口 | 用于连接 ST3215 总线舵机 |
14 | 电机接口 PH2.0 6P | B 组带编码器的电机接口 |
15 | 电机接口 PH2.0 6P | A 组带编码器的电机接口 |
16 | 电机接口 PH2.0 2P | A 组无编码器的电机接口(该产品中为 LED 灯接口) |
17 | 电机接口 PH2.0 2P | B 组无编码器的电机接口 |
18 | AK09918C | 3 轴电子罗盘 |
19 | QMI8658 | 6 轴运动传感器 |
20 | TB6612FNG | 电机控制芯片 |
21 | 总线舵机控制电路 | 连接多个ST3215总线舵机,并获取舵机反馈 |
22 | SD 卡槽 | 可用于存储日志或 WIFI 配置 |
23 | 40PIN 扩展接口 | 方便接入树莓派4B、树莓派Zero或 Jetson Orin Nano |
24 | 40PIN 扩展接口 | 方便使用安装在驱动板上的上位机的引脚 |
25 | CP2102 芯片 | 串口转 USB,用于雷达数据传输 |
26 | CP2102 芯片 | 串口转 USB,用于 ESP32 串口通信 |
27 | 自动下载电路 | 为 ESP32 上传程序时不需要按 EN 和 BOOT 按键 |
产品使用
使用前注意事项
使用前请务必了解以下内容:
- 本产品出厂时已经组装好,但由于使用的舵机数量比较多,因此不建议拆解该产品。
- 本产品工作电压范围7-12.6V,尽量使用标配的12V 5A电源供电,也可使用3S锂电池供电,注意严禁使用超出产品工作电压范围的电源供电。
- 本产品所使用的舵机扭矩比较大,因而有可能会带来潜在的的风险,使用时要避免眼睛、头部等敏感部位处于舵机的活动范围内。
- 使用该产品时要远离儿童,避免受伤;且该产品不能受到剧烈的撞击。
- 为了安全起见,默认例程的机械臂运行速度比较慢,你可以参考后续教程来更改这个速度,但过低的速度可能会导致机械臂运行到一些特定位置时发生抖动。
开始工作
请先阅读外观介绍部分了解机械臂的结构及各个常用接口。
- 使用配置的 12V 5A 电源线接入机械臂上的电源接口,打开电源开关,通电即开机,产品各个关节都会自动转动到中位。
- 开机后 OLED 屏幕上显示内容含义如下:
- 第一行内容表示此时 WiFi 处于 AP 模式下,WiFi 热点名为 RoArm-M3;
- 第二行表示 STA 模式处于关闭状态,当 WiFi 处于 STA 模式时,路由器会分配一个 IP 地址并显示出来;
- 第三行的内容为本设备的 MAC 地址,该地址是唯一的,用于 ESP-NOW 通信。
- 开机后使用手机或电脑连接 RoArm-M3-S 的WiFi:RoArm-M3,密码是 12345678,连接 WiFi 后打开谷歌浏览器,在网址栏中输入 192.168.4.1 打开 Web 端使用界面。接下来你就可以使用 Web 端的功能来控制机械臂了,Web 端的具体使用请参考基础使用部分。
基础使用
AngleCtrl:舵机角度控制
每一列按钮上面所显示的数字,是各个关节所转动到的角度,以弧度制形式来显示,各个关节的标注见外观介绍部分中的图。所有显示的数字反馈,只有在按键抬起后才会更新,具体更新见如下转动说明。
1.“B L”和“B R”:控制的是基础关节的转动,转动范围为 360°(3.14~-3.14)。产品开机后基础关节会自动转动到中位,此时按钮上的数字为 0。
- 当一直点击“B L”时,基础关节会向左极限转动 180°,数字会由 0 更新为 3.14;
- 再一直点击“B R”时,基础关节会向右极限转动 360°,数字会由 3.14 更新为 -3.14。
2.“S D”和“S U”:控制的是肩关节的转动,转动范围为 180°(1.57~-1.57)。产品开机后肩关节会自动转动到中位,此时按钮上的数字为 0。
- 当一直点击“S D”时,肩关节会向前极限转动 90°,数字会由 0 变为 -1.57;
- 再一直点击“S U”时,肩关节会往反方向极限转动 180°,数字会由 -1.57 变为 1.57。
3.“E D”和“E U”:控制的是肘关节的转动,转动范围为 180°。产品开机后肘关节会自动转动到中位,此时按钮上的数字为 1.57。
- 当一直点击“E D”,肘关节会向下转动,数字会由 1.57 开始增加;
- 再一直点击“E U”时,肘关节会向往反方向转动,数字会由开始减少。
4.“W+ DG”和“W- UG”:控制的是手腕关节 1 的转动,转动范围为 180°(1.57~-1.57)。产品开机后肘关节会自动转动到中位,此时按钮上的数字为 0。
- 当一直点击“W+ DG”,手腕关节 1 会向下极限转动 90°,数字会由 0 变为 1.57;
- 再一直点击“W- UG”时,手腕关节 1 会向往反方向极限转动 180°,数字会由 1.57 变为 -1.57。
5.“R+ DG”和“R- UG”:控制的是手腕关节 2 的转动,转动范围为 360°(3.14~-3.14)。产品开机后肘关节会自动转动到中位,此时按钮上的数字为 0。
- 当一直点击“R+ DG”,手腕关节 2 会向右极限转动 180°,数字会由 0 变为 3.14;
- 再一直点击“R- UG”时,手腕关节 2 会向往反方向极限转动 360°,数字会由 3.14 变为 -3.14。
6.“G+ DG”和“G- UG”:控制的是末端关节的转动,转动范围为 135°(3.14~1.08)。产品开机后肘关节会自动转动到中位,此时按钮上的数字为 3.14。
- 当一直点击“G+ DG”,末端关节会夹紧,默认情况下为夹紧状态;
- 再一直点击“G- UG”时,末端关节会张开,最大张开角度为 135°,数字会由 3.14 变为 1.08。
INIT:点击后各关节会复位至产品开机时的中位。
Torque:扭矩锁控制
点击“Torque OFF”代表扭矩锁关闭,关闭扭矩锁后可以在机械臂接通电源的时候手动使关节转动;点击“Torque ON”代表扭矩锁开启,开启后在机械臂接通电源时不可手动使关节转动。
注意:关闭扭矩锁后,若机械臂某一关节或所有关节接收到其它的转动指令,会自动开启扭矩锁。
DEFA:动态外力自适应控制
点击“DEFA ON”代表该功能开启,开启后使用外力转动机械臂会回弹至转动前的位置;点击“DEFA OFF”代表该功能关闭。
LED:LED灯控制
点击“LED OFF”代表 LED灯关闭;点击“LED ON”代表 LED 灯开启。
HORIZONTAL DRAG:水平平面绘画
页面具体操作请参考【Hotizontal Drag使用说明】部分。
VERTICAL DRAG:垂直平面绘画
页面具体操作请参考【VERTICAL Drag使用说明】部分。
COORDCTRL:末端点坐标控制
- X、Y 和 Z 分别代表的是机械臂末端关节末端点的 X 轴、Y 轴和 Z 轴的位置坐标;
- T 代表的是机械臂末端点在竖直平面内的角度。在保持末端点不变的情况下,通过坐标点逆解出各关节需要转动的角度;
- R 代表的是手腕关节 2 的转动角度,具体可见 AngleCtrl 功能中的“R+ DG”那一列的详细描述;
- G 代表的是末端关节的转动角度,具体可见 AngleCtrl 功能中的“G+ DG”那一列的详细描述,这六个都可通过“+-”进行调节。
INIT:点击后末端点会复位至产品开机时的中位。
FEEDBACK INFOMATION:信息反馈
可以在此处输入控制指令与机械臂进行通信,控制指令反馈的信息会在输入框上方显示。在“SEND”按键以下是机械臂常用的控制指令,点击指令旁的“INPUT”自动输入到输入框中。
进阶使用
在控制机械臂时,我们使用一种特定的控制指令——即 JSON 指令,来告诉机械臂应该执行什么动作。进阶使用中,我们主要介绍如何发送 JSON 指令进行机械臂控制以及机械臂 JSON 指令的使用说明。
什么是 JSON 指令
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,通常用于在不同系统之间传输和存储数据。JSON 最初起源于 JavaScript,但已成为一种独立于编程语言的数据格式,因此可以在各种编程语言中使用和解析。
JSON 指令就像是一张标准化的“点餐单”,它可以告诉机械臂各个关节需要转动的角度,需要机械臂转动到什么位置,以及移动多快等等。
JSON 指令的基本格式
JSON 指令的基本格式是:键:值
- 键必须是字符串,用双引号包围;
- 值可以是多种类型:字符串、数字、对象、数组、布尔值或 null,其中,字符串必须用双引号包围,其它的不需要引号;
让我们通过一个简单的例子来理解 JSON 指令,以下是命令机械臂末端关节释放的指令:
{"T":106,"cmd":1.57,"spd":0,"acc":0}
其中双引号中的 T、cmd、spd、acc 都是键,冒号后的是值。对于这条指令的解释:
- "T":106 代表该指令用来控制机械臂末端关节的转动(CMD_EOAT_HAND_CTRL)。固定值,不可更改,是程序识别该指令用途的数值。
- T 的值在产品下位机程序的头文件 json_cmd.h 中定义。
- 注意:不同的控制指令会使用不同的 T 值。
- "cmd":末端关节需要转动到的角度(以弧度制显示)。末端关节初始位置默认值为 3.14。这里值给的 1.57,因此夹爪即呈现张开的转动。
- "spd":关节转动的速度。速度值为 0 时,以最大速度转动。
- "acc":关节转动的加速度。加速度值为 0 时,以最大加速度转动。
这条指令是告诉机械臂:“请用最大速度和加速度张开夹爪。”
为什么使用 JSON 指令通信?
以下是使用 JSON 格式的指令来控制机器人的优点:
1.可读性好
JSON 是一种轻量级的文本数据格式,易于人类阅读和编写。它使用键-值对的形式,这使得指令易于理解和调试,特别是在开发和测试阶段。
2.易于解析
许多编程语言都提供了JSON解析器,使得解析JSON指令变得非常容易。这使得将指令转化为可执行的操作变得简单。
3.跨平台兼容性
JSON 是一种通用格式,几乎可以在任何编程语言和平台上使用。这意味着您可以使用不同的编程语言来发送和接收 JSON 指令。
4.结构化数据
JSON 支持嵌套的数据结构,可以包含对象和数组。这使得您可以以清晰的方式组织指令,包括参数、选项和子命令等。
5.扩展性
您可以轻松地添加新的字段和参数到JSON指令中,以支持更多的功能和选项,而不必改变指令的整体结构。
6.易于集成
JSON 是许多 API 和 Web 服务的标准输入和输出格式。这使得机器人可以与其他系统和服务进行无缝继承,例如通过 REST API 进行通信。
7.标准化
JSON 是一个标准化的数据格式,受到广泛的支持和采用。这意味着您可以借助各种库和工具来处理和操作 JSON 数据。
8.支持多语言
由于 JSON 可以在多种编程语言中使用,因此可以实现多语言编写的机器人控制系统,而无需重新编写指令解析器。
总的来说,JSON 格式的指令提供了一种简单、灵活、可读性好且易于解析的方式来控制机器人,使得机器人控制系统更加强大和可维护。
发送 JSON 指令的方式
您可以使用以下多种方式发送 JSON 指令对机械臂进行设置与控制等操作。实际上,基础使用中网页操作的底层接口同样也是使用 JSON 指令与机械臂通信的。
网页发送
在 Web 端使用界面中,我们也预留有指令输入框可以发送 JSON 指令对机械臂进行设置或控制等操作。
使用网页发送 JSON 指令有以下优缺点:
- 优点:适合初学者进行简单指令的调试;
- 缺点:部分 JSON 指令需要反馈的内容较长会显示不全。
默认您已经根据开始工作部分连接上机械臂的 WIFI 且打开 Web 端使用界面。
在 Web 端使用界面中,可以看见“FEEDBACK INFOMATION”下有一个输入框,在此处输入对应的 JSON 指令与机械臂进行通信,点击“SEND”发送后,JSON 指令反馈的信息会在输入框上方显示。
Python-HTTP 请求通信
HTTP(Hypertext Transfer Protocol)是一种用于在 Web 上进行数据通信的协议,它是属于应用层的面向对象的协议。
特性:无线通信,基于 WIFI 模块实现的,请求-响应模型,灵活、简单。
点击下载 RoArm-M3-S_Python 例程,其中有两个 Python 例程,HTTP 请求通信的 Python 例程为 http_simple_ctrl.py。例程如下:
import requests import argparse def main(): parser = argparse.ArgumentParser(description='Http JSON Communication') parser.add_argument('ip', type=str, help='IP address: 192.168.10.104') args = parser.parse_args() ip_addr = args.ip try: while True: command = input("input your json cmd: ") url = "http://" + ip_addr + "/js?json=" + command response = requests.get(url) content = response.text print(content) except KeyboardInterrupt: pass if __name__ == "__main__": main()
在运行程序前您需要确认机械臂的 IP 地址。机械臂 IP 地址跟机械臂所处的 WIFI 模式相关。
- 如果机械臂 WIFI 模式仅处于 AP 模式,则 IP 地址为192.168.4.1;
- 如果机械臂 WIFI 模式处于 STA 模式,则可以在机械臂的OLED屏幕上获得该机械臂的 IP 地址。
使用以下命令来运行HTTP请求通信程序。命令中的 IP 地址要更改为您机械臂的 IP 地址。
python http_simple_ctrl.py 192.168.4.1
运行完成后,可以看见返回“input your json cmd:”,在这个后面可以输入 JSON 指令对机械臂进行设置或控制等操作。每次只能发送一条 JSON 指令,也可以在这里获取机械臂的反馈信息。
Python-串口通信
特性:有线连接,默认波特率@115200,双向通信,稳定、低延时。
用途:方便用户使用 PC/树莓派/Jetson Orin Nano 等设备来控制机械臂。
连接方式:(两者连接方式不能同时出现,选其中一种即可)
- 通过外观介绍中的 ESP32 串口通信接口与上述某一设备进行连接;
- 通过机器人通用驱动板板载接口中序号 23 或 24 40 PIN 扩展接口的 TX/RX 引脚与上述某一设备进行连接;
Python例程:serial_simple_ctrl.py
import serial import argparse import threading def read_serial(): while True: data = ser.readline().decode('utf-8') if data: print(f"Received: {data}", end='') def main(): global ser parser = argparse.ArgumentParser(description='Serial JSON Communication') parser.add_argument('port', type=str, help='Serial port name (e.g., COM1 or /dev/ttyUSB0)') args = parser.parse_args() ser = serial.Serial(args.port, baudrate=115200, dsrdtr=None) ser.setRTS(False) ser.setDTR(False) serial_recv_thread = threading.Thread(target=read_serial) serial_recv_thread.daemon = True serial_recv_thread.start() try: while True: command = input("") ser.write(command.encode() + b'\n') except KeyboardInterrupt: pass finally: ser.close() if __name__ == "__main__": main()
通过连接到机械臂运行该程序后,你可以发送JSON格式的指令,并获取机械臂的反馈信息。
功能使用
产品资料
RoArm-M3 相关程序
RoArm-M3 开源程序
RoArm-M3 Python 例程
RoArm-M3 图纸
RoArm-M3 3D 模型
RoArm-M3 2D 尺寸
机器人通用驱动板原理图
软件驱动
软件
串口驱动
FAQ
答:RoArm-M3-S 使用的舵机为工程塑胶外壳的 ST3215 Servo;而 RoArm-M3-Pro 除抓夹关节之外的其余关节使用的舵机为金属外壳的 ST3235 Servo,金属外壳的舵机虚位会更小,不会随着使用时间而增大。
答:首先先检查是否给机械臂供电,电源接口及电源开关标注见【外观介绍】部分中的图,插上电源接口后需要看驱动板上的电源开关是否打开;接着对照【机器人通用驱动板板载接口】部分确保机械臂是插入序号 ⑨ 的 USB 接口;最后检查串口通信的端口号是否正确。若上述检查完毕后控制机械臂仍未有反应,请咨询技术支持。
答:首先先对照【机器人通用驱动板板载接口】部分检查是不是插入序号 ⑨ 的 USB 接口,是的话接着看下电脑的设备管理器是否有新的 COM 口出现,若没有,则看下其它设备中是否有名字中带 CP2102 未识别的设备(如图),有的话则是未安装驱动导致的,可点击安装 CP2102 串口驱动。若其它设备中没有名字中带 CP2102 未识别的设备,则联系店铺客服返厂维修。
答:重新烧录过程序,要串口通信发 {"T":604} 这个指令清空 NVS 区之后,再给机械臂重新上电,忘记 WIFI 重新进行连接。
技术支持
联系人:方工
EMAIL:2355742825@qq.com
QQ:2355742825
微信:扫下方二维码添加