RDK X5 与 Tuya T5 芯片混合框架
边缘计算+云计算的结合
地瓜机器人 RDK X5 与 Tuya T5 芯片结合,创建了一个简单高效的混合架构系统,实现了强大的语音ASR能力与边缘计算的完美融合。通过串口CLI模式的通信机制,两种硬件可以无缝协作,为嵌入式系统带来革命性的智能交互体验。
技术实现:串口CLI功能与通信协议
Tuya T5 端串口CLI 实现
本混合框架的关键在于将Tuya T5配置为CLI终端。根据TuyaOpen源码(如github.com/tuya/TuyaOpen中的cli_cmd.c),我们可以利用T5的串口功能实现类似CLI的交互模式。通过这种方式,RDK X5可以直接通过字符串发送命令到T5芯片。
static cli_cmd_t s_cli_cmd[] = { {.name = "switch", .func = switch_test, .help = "switch test"}, {.name = "kv", .func = tal_kv_cmd, .help = "kv test"}, {.name = "sys", .func = system_cmd, .help = "system cmd"}, {.name = "reset", .func = reset, .help = "reset iot"}, {.name = "stop", .func = stop, .help = "stop iot"}, {.name = "start", .func = start, .help = "start iot"}, {.name = "mem", .func = mem, .help = "mem size"}, {.name = "netmgr", .func = netmgr_cmd, .help = "netmgr cmd"}, }; /** * @brief * */ void tuya_app_cli_init(void) { tal_cli_cmd_register(s_cli_cmd, sizeof(s_cli_cmd) / sizeof(s_cli_cmd[0])); }
RDK X5 端串口实现
对于RDK X5的UART通信实现,可参考地瓜开发者文档中的 driver_uart_dev 示例。该示例提供了在Linux环境下对串口设备的基本操作,包括初始化、配置波特率、数据位、校验位等参数,以及数据的读写操作。
https://developer.d-robotics.cc/rdk_doc/Advanced_development/linux_development/driver_development_x5/driver_uart_dev
driver_uart_dev Demo:
static void *send_test(void *times) { /*send thread*/ struct timeval start, end; int32_t i = 0; uint32_t j = 0; uint32_t tmp = 0; uint32_t exe_count = 0; int32_t ret = 0; float ts = 0; printf("Start send thread\n"); sleep(1); if (test_count == 0) { tmp = 10; } else tmp = test_count; for (j = 0; j < tmp; j++) { if (test_count == 0) j = 0; sleep(1); printf("This is uart send %d times\n", ++exe_count); gettimeofday(&start, NULL); for (i = 0; i < test_size * 1024; i = i + FRAME_LEN) { ret = write(g_fd, &send_buffer[i], FRAME_LEN); if (ret < FRAME_LEN) { printf("write ttyS2 error\n"); return NULL; } } #if 1 gettimeofday(&end, NULL); // printf("start %ld sec, %ld usec, end %ld sec, %ld usec\n", start.tv_sec, start.tv_usec, end.tv_sec, end.tv_usec); ts = ((end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec)) / 1000; printf("send %dKbytes,time:%fms, BPS:%f\n", test_size, ts, test_size * 1000 / (ts / 1000)); #endif } close(g_fd); return NULL; }
实际应用中,我们需要设计一套简洁而高效的通信协议,定义命令格式、参数传递方式以及错误处理机制,确保两个系统之间的通信可靠性和实时性。
实现场景 Applications
场景应用一:自动跟随机器人
在用户需要机器人跟随行走的场景中,整个系统的工作流程展现了混合框架的高效性。用户通过语音向T5发出指令后,T5将语音数据传输至云端进行意图分析,随后通过数据点(DP)事件反控机制处理用户请求。
当识别到"跟随"意图后,T5芯片通过预设的串口协议向RDK X5发送"start-following"命令。接收到指令后,X5立即启动专门的跟随算法进程,利用摄像头捕获并追踪用户,实现精确的跟随功能。
此处的技术难点在于两个系统间的精确通信时序控制,以及RDK X5需要实时处理图像数据并做出低延迟响应,确保跟随行为的流畅性和安全性。
场景应用二:景区人流量监测系统
RDK X5 AI计算
利用X5强大的计算能力,通过计算机视觉技术实时计算景区内的人流数量,并生成带有时间戳的精确数据。
数据传输与存储
通过串口协议将时间戳和人流数据传输至T5芯片,数据格式为"timestamp xxx: 20人"形式,T5负责记录和存储这些文本数据。
智能分析反馈
当用户通过语音查询"今天有多少人流量"或要求"分析环比流量"时,系统调用AI分析存储的数据,并通过语音形式向用户反馈分析结果。