WAVEGO Pro

来自Waveshare Wiki
跳转至: 导航搜索
WAVEGO Pro 机器狗
{{{name2}}}
{{{name3}}}
功能简介
特性 WAVEGO Pro 机器狗
适用范围 ESP32/Raspberry Pi
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 UART I2C I/Os

产品简介

这是一款具有12个自由度的仿生四足机器人,配备了12个2.3kg.cm大扭矩舵机,结构可靠动作灵活,集成了摄像头、9轴运动跟踪器、RGB等设备于一身,并开源了可跨平台使用的Web应用来控制该机器人,手机或电脑只需要安装有浏览器即可访问该机器人的控制界面。以ESP32作为下位机进行连杆逆解和步态生成,为上位机分担算力,也可以安装树莓派作为上位机来进行高阶决策运算。

产品特性

  • 12个自由度,动作更加灵活丰富。
  • 多连杆腿部结构+逆运动学算法,提升舵机有效扭矩。
  • ICM20948 9轴运动跟踪器,可使用自平衡模式。
  • 2.3kg.cm大扭矩舵机,堵转扭矩高达5.2kg.cm,可扩展性更强。
  • 结构件由5052铝合金和PA12尼龙件组成,全身各关节共使用40套轴承,结构坚固可靠。
  • 集成多种交互设备,包括0.96inch OLED屏幕、两颗RGB-LED指示灯,有源蜂鸣器等。
  • 例程代码使用Arduino IDE开发,不需要手动配置编译环境,ESP32开机自动建立WIFI热点,可使用手机(Android/iOS)或电脑(Linux/Windows/Mac)连接并登录到控制页面,只需安装基于Chromium的浏览器即可,不需要下载app。
  • 带有充电接口和自动下载电路,你可以边充电边使用。
  • 板载两节串联18650电池,5200mAh大容量,输出电流更大,舵机动力更强。
  • 板载锂电池保护电路,具有防过充、防过放、防过流和短路保护功能。
  • 板载INA219采集芯片,方便实时监控电池电压,充电电流。
  • 为ESP32的剩余IO和串口预留有2*5P扩展接口,功能包括RGB扩展,RX0,TX0,G21,G15,G12,3V3,5V,GND,可用于与上位机通信或外接其它设备。
  • 可以安装树莓派作为上位机通过串口与下位机通信,ESP32作为下位机可以分担很多连杆逆解和步态生成的算力,留给树莓派更多的资源用于高阶功能开发。
  • 树莓派套件配有散热风扇和超广角镜头,树莓派的例程包括基于Flask-Streaming开发的Web应用,可使用人脸识别/颜色追踪/运动检测等基于OpenCV开发的功能。
  • 全部代码开源并提供丰富的开发文档和教程。

产品使用

首次使用

  • 开机后使用手机或电脑连接机器人的 WiFi:WAVEGO,密码是 12345678,连接 WiFi 后打开谷歌浏览器,在网址栏中输入 192.168.4.1 打开 Web 端使用界面。接下来你就可以使用 Web 端的按键来控制机器人了,也可以在 Web 控制界面上向机器人发送 JSON 指令。

下位机 Web 端使用

Wavego web.png

  • 通过方向按键可以控制机器人运动,方向按键下面的 STEADT START 和 STEADT STOP 按键用来打开机器人的自平衡模式。
  • Staylow 按键用于控制机器人的下蹲与站立动作;HandShake 按键用于控制机器人的握手动作;Jump 按键用于控制机器人的跳跃动作

UGV-web界面1.png

  • 在 FEEDBACK INFOMATION 这个窗口可以给机器人发送 JSON 指令,输入框以下部分就是具体的 JSON 指令,JSON 指令具体解释也可见JSON指令集
  • 此 Web 端应用是完全开源的,你可以通过更改开源例程里的 WebPage.h 来更改 Web 端应用的界面和功能。

JSON 使用教程

什么是 JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,通常用于在不同系统之间传输和存储数据。JSON 最初起源于 JavaScript,但已成为一种独立于编程语言的数据格式,因此可以在各种编程语言中使用和解析。

下述内容为针对机器人前进与横移控制功能的 JSON 格式指令案例:

{"T":111,"FB":1,"LR":1}

对于这条指令的解释:

“T”代表该指令的类型,指令类型在下位机程序的头文件 json_cmd.h 中定义。111 代表这条指令为 CMD_BASIC_MOVE 。

我们会在后续【JSON 指令集】中具体介绍每条指令的具体用法和注意事项,当你对每个功能有一定了解后,可参考 JSON 指令集来增加二次开发和使用效率。

为什么使用 JSON 指令与机器人进行交互?

由于机器人驱动板的板载资源比较多、例程功能丰富、同时兼顾方便扩展上位机,让上位机对于机器人的控制功能更加丰富和方便,所以我们使用 JSON 指令通信来与机器人进行交互,同样的,你也可以基于现有的框架对这些功能进行二次开发,让机器人的功能更适合你的使用需求。

支持 JSON 指令的通信方式

机器人可使用多种方式来进行 JSON 格式的指令交互。其中,有线的通信方式可以使用 RX/TX 引脚进行串口通信,或者通过 Type-C 接口接 USB 进行串口通信;无线的通信方式可以使用 HTTP 请求进行通信。你可以通过下面的例程来使用不同的方法发送 对应的 JSON 指令去控制机器人的各项功能。

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 中新插入的串口设备端口号,如果您使用的是树莓派等设备,也要更改为相对应的端口名称。

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

注意:无论是哪一种模式下,机器人需要与运行该脚本的设备处于同一个局域网内。

JSON 指令集

矢量控制 - CMD_BASIC_MOVE

{"T":111,"FB":1,"LR":1}
  • FB为前进或后退,LR 为左移或右移,速度取值范围为 -1 ~ +1,正值前进,负值后退。
  • 推荐使用该指令对产品进行控制。

移动到中位 - CMD_JOINT_MIDDLE

{"T":101}
  • 所有关节移动到中位511的位置。

扭矩锁控制 - CMD_RELEASE_TORQUEE

{"T":102}
  • 所有关节关闭扭矩锁,该指令只在组装模式(将G15引脚接到3.3v进入组装模式)下适用。

舵机控制 - CMD_SINGLE_SERVO_CTRL

{"T":103,"id":21,"goal":511,"time":0,"spd":0}
  • id:表示舵机的标识号,各关节对应的 id 号互不相同,具体分布情况请参阅产品组装教程。
  • goal:表示舵机的目标位置。
  • time:从当前位置到目标位置所需要的时间,速度为0时生效。
  • spd:从当前位置到目标位置所需要的速度。
  • 该指令只在组装模式(将G15引脚接到3.3v进入组装模式)下适用。
  • 由于安装完成后各关节受到结构限制,因此不建议通过该指令实现运动控制,建议优先使用矢量控制指令对产品进行操作。

获取零点位置 - CMD_GET_JOINTS_ZERO

{"T":104}
  • 获取机器人零点位置的pos值。

设置零点位置 - CMD_SET_JOINTS_ZERO

{"T":105,"set":[511,511,511,511,511,511,511,511,511,511,511,511]}
  • 设置机器人的零点位置。

获取舵机位置 - CMD_GET_CURRENT_POS

{"T":106}
  • 获取机器人各关节舵机的pos值。

将当前位置设置为零点位置 - CMD_SET_CURRENT_POS_ZERO

{"T":107}
  • 将机器人当前状态下各关节的pos值设置为零点位置。

WAVEGO 教程目录

资料

机器人图纸

开源资料

树莓派学习资料

树莓派入门教程(新)
树莓派入门教程
树莓派OpenCV教程
树莓派littleGL系列教程
树莓派QT教程
树莓派OpenWrt教程

开发资料



FAQ


答:配2节18650型电池,即直接为18mm,长度为65mm.单节标的电压一般为3.7V,充满电电压一般为4.2V。


答:树莓派系统的默认账号:ws;密码:ws


答:linux系统在输入密码的时候是不打印输入内容,也就是需要盲打。键盘直接输入raspberry然后回车即可。


答:如果舵机无法按照教程指定的方式转动,请检查舵机是否正确安装。在组装模式下,舵机需要按照45度的角度安装白色摆臂。


答:是正常的,由于 RGB-LED 灯颜色更改过,所以现在进入组装模式后 RGB-LED 会呈现绿色的灯。



答:请注意,浏览器必须是谷歌浏览器或者Microsoft浏览器。调节PWM时点一下是微调,动静很小,要多点才比较明显。如果无法调节还有可能是安装舵机的时候出错了,回到Q5。


答:如果在运行setup.py时出现错误,请检查源或网络问题是否导致下载失败。安装完成后,请在终端输入python3进入Python环境,并输入import cv2检查是否有错误报告。如果没有错误报告,则安装成功。如果有错误报告,则您可以多次运行setup.py或直接使用已安装好的镜像。


答:首先检查树莓派是否占用了下位机的串口,若下位机连接了树莓派,请断开连接,再重新上传程序。如果程序自动下载失败,请手动进入下载模式。在编译程序后,上传程序时,请长按boot键,并在按一下rst键期间松开boot键。如果无法解决问题,请退回维修。


答:请检查您在烧录镜像时设置的配置。有关详细信息,请参见WAVEGO树莓派Wiki页面的产品安装教程。如果仍无法自行烧录成功,请通过远程登录帮助客户烧录镜像。


答:WAVEGO Pro 的续航时长取决于使用方式和环境等多种因素。一般情况下,单次充电可支持连续使用1到2个小时,连续的高强度运行可使用20-30分钟。但具体的使用时间会因使用方式(例如不同的功率设置、不同的波长)和工作环境(例如温度、湿度)而有所不同。


技术支持

联系人:方工
EMAIL:2355742825@qq.com
QQ:2355742825
微信:扫下方二维码添加
QRCode YijunFang.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证