HexArth
|
| ||||||||||||||||||||||
| ||||||||||||||||||||||
产品介绍
HexArth是一款具有18个自由度的仿生六足机器人,配备了18个30kg.cm大扭矩舵机,结构可靠动作灵活,具有9轴运动跟踪器,并开源了可跨平台使用的Web应用来控制该机器人,手机或电脑只需要安装有浏览器即可访问该机器人的控制界面。以ESP32作为下位机进行连杆逆解和步态生成,为上位机分担算力,也可以安装树莓派作为上位机来进行高阶决策运算。
产品特性
- 18个自由度,动作更加灵活丰富。
- ICM20948 9轴运动跟踪器,可使用自平衡模式。
- 30kg.cm大扭矩舵机,堵转扭矩高达30kg.cm,可扩展性更强。
- 结构件由5052铝合金和PA12尼龙件组成,结构坚固可靠。
- 集成多种交互设备,包括0.96inch OLED屏幕、两颗RGB-LED指示灯等。
- 例程代码使用Arduino IDE开发,不需要手动配置编译环境,ESP32开机自动建立WIFI热点,可使用手机(Android/iOS)或电脑(Linux/Windows/Mac)连接并登录到控制页面,只需安装基于Chromium的浏览器即可,不需要下载app。
- 带有充电接口和自动下载电路,你可以边充电边使用。
- 六节18650电池,4000mAh大容量,输出电流更大,舵机动力更强。
- 电池保护电路,具有防过充、防过放、防过流和短路保护功能。
- 板载INA219采集芯片,方便实时监控电池电压,充电电流。
- 可以安装树莓派作为上位机通过串口与下位机通信,ESP32作为下位机可以分担很多逆解和步态生成的算力,留给树莓派更多的资源用于高阶功能开发。
- 开源step模型,方便进行二次开发;
- 绝大部分配置设置可由 JSON 指令实现,例如不需要连接 USB 线即可为产品配置 WIFI 连接。
- 全部代码开源并提供丰富的开发文档和教程。
产品固件更新
- 如果你的机器人开机时 OLED 屏幕上显示 HexArth Version:0.84 ,说明机器人产品上的驱动程序已经是新版的程序了,就不需要再执行本部分内容给产品进行更新了;
- 如果你的机器人开机时 OLED 屏幕上没有显示 HexArth Version:0.84,说明此时机器人产品上的驱动程序依旧是老版的程序,则需要执行本部分内容给产品进行更新;如果需要恢复出厂设置,也可以通过本部分内容进行。
我们提供 HexArth的 ESP32 下载工具,使用这款工具,用户可以快速给产品更新固件或还原至出厂程序。
1. 首先,使用 USB 线连接机器人和你的电脑。(此步骤需要拆开机器人才能完成,拆开机器人后连接机器人驱动板中间那个的 USB 接口)。
2. 下载 HexArth的 ESP32 下载工具:HexArth的 ESP32 下载工具,下载后解压缩,双击打开“flash_download_tool_3.9.5.exe”程序。打开后,会弹出两个窗口,我们需要操作的是下载工具的 UI 界面,而另一个窗口作为终端来显示下载工具的工作状态。
3. 在“DOWNLOAD TOOL MODE”这个界面,Chip Type 选择为 ESP32,WorkMode 选择为 Factory,使用 Factory,调用二进制文件时才会使用相对路径,就不需要用户手动输入二进制文件路径,选择好后点击OK。
4. 在这个软件界面中,保持“LockSettings”的勾选,右边代表的是可以同时给 8 个 HexArth上传程序。点击“COM”,选择新出现的 COM(我这里新出现的 COM 为 COM3);BAUD 是用于设置下载速度,越高速度越快,ESP32 最高可以使用 921600。
5. 选择好后,点击 START 开始上传程序,上传完成后,“IDLE 等待”会变成“FINISH 完成”,完成后可以断开驱动板与电脑的 USB 连接,打开机器人产品的开关,通电后即可控制机器人。
产品基础使用
使用前注意事项(必读!!)
使用前请务必了解以下内容:
- 该产品出厂未安装锂电池组,需要客户自行安装好锂电池组才可以正常使用。海外版的客户需要自行购买锂电池组,推荐使用 4000mAh或以上容量,放电倍率 10C 的 18650 锂电池组。
- 该产品不能受到剧烈的撞击,且不防水、不防沙。
首次使用
首次使用需要先使用配置的 12.6V 2A 充电器插入至机器人的电源接口中,打开电源开关后机器人会进行初始化,OLED 屏幕会显示初始化的一系列内容。
- 机器人开机后 OLED 屏幕上显示内容含义如下:
- 第一行内容表示此时 WiFi 处于 AP 模式下,机器人创建了一个热点,WiFi 热点名为 HexArth;
- 第二行表示 STA 模式处于关闭状态,当 WiFi 处于 STA 模式时,路由器会给机器人分配一个 IP 地址并显示出来;
- 第三行的内容为本设备的MAC地址,该地址是唯一的,用于ESP-NOW通信;
- 第四行 U 表示机器人产品的电源电压。
- 开机后使用手机或电脑连接机器人的 WiFi:HexArth,密码是 12345678,连接 WiFi 后打开谷歌浏览器,在网址栏中输入 192.168.4.1 打开 Web 端使用界面。接下来你就可以使用 Web 端的按键来控制机器人了,也可以在 Web 控制界面上向机器人发送 JSON 指令。
下位机 Web 端使用
- 这个 Web 端界面会实时显示机器人的电压(VOLTAGE)、STA 模式下的 WIFI 信号强度(RSSI)、IP 和 MAC 地址等信息。
- 通过方向按键可以控制机器人运动,方向按键下面的LEFT、RIGHT 用来控制机器人原地旋转的,INIT用于机器人初始化,STEADY START/END用于打开/关闭机器人的自平衡模式(打开自平衡模式后机器人的运动控制按键会被屏蔽),下面的 SLOW、MIDDLE、FAST 按键用来设置机器人的移动速度。
- 其它按键当机器人外接了其它扩展模块后起作用,IO4、IO5 和 OFF 控制 LED 灯的开关。
- 在 FEEDBACK INFOMATION 这个窗口可以给机器人发送 JSON 指令,输入框以下部分就是具体的 JSON 指令。
- 网页端包含了“心跳检测”,打开网页端控制界面后,Web 端应用会与机器人进行连续通信,如果在机器人的运动过程中断开连接,机器人在短时间内会自动停止运动,避免危险。
- 此 Web 端应用是完全开源的,你可以通过更改开源例程里的 Claws_web_page.h 来更改 Web 端应用的界面和功能。
JSON 使用教程
什么是 JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,通常用于在不同系统之间传输和存储数据。JSON 最初起源于 JavaScript,但已成为一种独立于编程语言的数据格式,因此可以在各种编程语言中使用和解析。
以下是对机器人左右轮速度控制的 JSON 格式的指令案例:
{"T":1,"X":0.02,"Y":0.02,"Yaw":0.3}
对于这条指令的解释:
“T”代表该指令的类型,指令类型在下位机程序的头文件 json_cmd.h 中定义。1 代表这条指令为 CMD_SPEED_CTRL (用来控制机器人X Y速度以及机身旋转)。
为什么使用 JSON 指令与机器人进行交互?
由于机器人驱动板的板载资源比较多、例程功能丰富、同时兼顾方便扩展上位机,让上位机对于机器人的控制功能更加丰富和方便,所以我们使用 JSON 指令通信来与机器人进行交互,同样的,你也可以基于现有的框架对这些功能进行二次开发,让机器人的功能更适合你的使用需求。
支持 JSON 指令的通信方式
机器人可使用多种方式来进行 JSON 格式的指令交互。其中,有线的通信方式可以使用 RX/TX 引脚进行串口通信,或者通过 Type-C 接口接 USB 进行串口通信;无线的通信方式可以使用 HTTP 请求进行通信,或者使用 ESP-NOW 进行通信。你可以通过下面的例程来使用不同的方法发送 对应的 JSON 指令去控制机器人的各项功能。
机器人内置心跳函数:当3秒钟内没有新的移动控制指令下达,机器人会自动停止移动,所以当你通过上位机来控制机器人时,需要定时重复下达移动指令来让机器人连续移动。
1. 串口/USB 通信
特性:有线连接,默认波特率@115200,双向通信,稳定、低延时;
用途:方便使用 PC、树莓派 等上位机来控制机器人;
连接方式:
- 通过机器人 40PIN 的 UART 接口与 树莓派进行连接
- 使用 USB 线将机器人的下位机驱动板的 USB 接口与上位机进行连接(此方法需要拆卸小车)
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()
使用以下命令来运行串口通信程序,注意一定要加上机器人所接入的端口号。将 COM20 更换成机器人在 PC 中新插入的串口设备端口号,如果您使用的是树莓派、Jeston Orin Nano等设备,也要更改为相对应的端口名称。
python serial_simple_ctrl.py COM20
运行完成后,在这个界面中可以发送 JSON 格式的指令,也可以获取机器人的反馈信息,从而与机器人进行通信。
2. HTTP 请求通信
HTTP(Hypertext Transfer Protocol)是一种用于在 Web 上进行数据通信的协议。
特性:基于 WIFI 模块实现的无线通信,请求-响应模型,灵活、简单。
Python 例程:下载http_simple_ctrl.py HTTP 请求通信例程,具体例程内容如下:
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 屏幕上的 ST 这行获得该机器人的 IP 地址。
使用以下命令来运行 HTTP 请求通信程序。命令中的 IP 地址要更改为您机器人的 IP 地址。
python http_simple_ctrl.py 192.168.4.1
注意:无论是哪一种模式下,机器人需要与运行该脚本的设备处于同一个局域网内。
3. 通过 Web 应用下达 JSON 指令
- 开机后使用手机或电脑连接机器人的 WiFi:HexArth,密码是 12345678,连接 WiFi 后打开谷歌浏览器,在网址栏中输入 192.168.4.1 打开Web端使用界面。
- 在 FEEDBACK INFOMATION 这个窗口可以给机器人发送 JSON 指令,窗口下面就是具体的 JSON 指令。

