基于Jetson平台的危险行为监控的伴老机器人视觉系统设计 📅 2026/7/22 19:18:44 一、引言随着中国老龄化的加剧居家养老成为一种重要的养老方式。然而老年人在居家生活中存在着诸多危险行为隐患因此研究如何有效地监测老年人的危险行为具有重要的现实意义和社会价值。伴老机器人系统的设计与研究旨在利用先进的视觉算法和机器人技术提供实时准确的危险行为检测功能、及时报警功能、视频监控和远程控制功能以保障老年人的安全和健康提高居家养老的质量和效果。二、伴老机器人系统设计2.1 伴老机器人系统总体设计本系统由伴老机器人-云服务器-客户端软件三部分组成其中最复杂的是伴老机器人部分其硬件包括视觉处理器、运动控制器底盘、云台、激光雷达、陀螺仪、蓝牙、电机驱动板、WIFI。这些控制器与控制器外设与控制器之间的连接如图2-1所示串口1和CAN接口的设计是为了给以后拓展外设留的接口。机器人采用双处理器架构视觉处理器具备较高的算力能够运行复杂的视觉算法但由于运行分时操作系统对中断响应较慢运动控制器则运行实时操作系统专门弥补视觉处理器在中断响应方面的不足。这种双控制器设计既保证了视觉算法所需的强大计算能力又满足了外设中断请求的快速响应需求实现了高算力与快速响应的有机结合两者之间通过串口进行通信。系统的三个组成部分——机器人、云服务器和客户端——均通过Wi-Fi连接。云服务器拥有公网IP地址机器人将摄像头采集的数据和报警信息发送至服务器服务器再转发给客户端软件。这样的架构确保了机器人能够稳定联网同时客户端可以远程控制机器人并实时查看其摄像头数据。机器人的外设激光雷达和陀螺仪用于对室内环境进行三维建模建立全局坐标系。蓝牙模块则支持用户通过蓝牙连接机器人实现对机器人的运动操控。机器人云台的设计旨在实现相机360度旋转从而无死角地监测老人。云台与运动底盘的电机均采用PWM波控制且每个电机都配备编码器以实现PID闭环控制精确输出速度并计算运动的距离和方向进而确定机器人在前述全局坐标系中的位姿。以下是该系统的大致工作流程首先系统的三个部分建立通信连接机器人通过Wi-Fi与云服务器建立TCP和UDP通信云服务器与客户端软件也通过Wi-Fi建立TCP和UDP通信。TCP协议用于传输机器人信息如机器人ID、云服务器返回的UDP端口号等以及来自客户端的运动控制命令UDP协议则用于传输视频流数据。视觉处理器与运动控制器之间通过串口建立通信。视觉处理器首先对相机进行配置并开启三个线程这些线程均位于2.2.3小节ROS节点图中的视觉检测节点第一个是视频监控线程负责将摄像头数据发送至云服务器第二个是跌倒检测线程在相机开启后运行跌倒检测算法一旦检测到跌倒便通过跌倒标识符通知第三个线程——报警线程同时视觉系统通过发布导航话题给导航节点引导机器人移动到老人身边进行进一步查看报警线程则通过Wi-Fi将跌倒事件发送至云服务器。云服务器在接收到机器人上传的报警信息后将跌倒事件转发给客户端同时它也能将来自客户端的控制命令转发给机器人。客户端可通过云服务器远程查看机器人摄像头数据、远程控制机器人并在发生跌倒时及时接收报警信息并生成报警日志。报警日志内容包括跌倒时间和跌倒图像文件路径。综上所述整个伴老机器人的总体系统结构从硬件和通信的角度能够实现自动避障、运行视觉跌倒检测算法、远程控制运动、远程视频监控以及物联网等功能。本章后续将围绕伴老机器人的视觉与运动控制系统设计以及两者之间的协同配合进行详细阐述。2.2 伴老机器人运动控制系统2.2.1 硬件组成1全向轮底盘伴老机器人选择全向轮底盘是为了满足研究目标中机器人全向移动的要求。全向轮的轮子由双层被动辊子组成两个辊子之间相互借位。这样设计的目的是避免单盘的全向轮存在死区的问题。在三轮全向移动底盘中三个双排全向轮以120°分布在底盘架上每一个轮子都有独立的直流减速电机每一个直流减速电机都在尾部安装编码器可以测量电机的转速进而得到轮子的转速再通过速度的合成最终得到运动的速度和方向。2二自由度云台云台的主要作用是支撑和固定相机并实现两个自由度的运动。这两个自由度分别是偏航旋转和俯仰旋转用于实现摄像头的四周旋转和俯仰运动通过这两个关节的配合机器人的头部能够灵活地移动实现全方位扫描周围区域的功能。3激光雷达机器人想要在居家环境下自由地运动其避障、导航和对地图建模是必不可少的。所以需要给机器人选择一个能够感知周边环境信息的传感器而激光雷达就是一种常用的传感器它可以采集精度较高的点云数据然后利用这些数据进行环境建模和机器人定位。 在本文设计的机器人系统中使用型号为上海思岚科技有限公司开发的RPLIDAR A2。在本系统中激光雷达主要作用一是来对居家环境进行建模建立全局坐标系二是扫描机器人运动过程中出现的障碍物进行避障三是对机器人的位置进行全局坐标系下的定位。4运动控制器机器人的运动控制器是用PCB设计的上边集成了三路带编码器的电机接口 、主控芯片STM32f407、蓝牙芯片、IMU陀螺仪传感器、CP2102电平转换串口通讯接口和云台接口。STM32控制器的作用是控制底盘运动和采集里程计信息、电池信息、IMU信息、并与视觉处理器通过串口通信接收视觉处理器传过来的运动指令配置视觉处理器完成跌倒后移动到老人身边的任务。2.2.2机器人运动与视觉系统通讯接口设计设计视觉处理器和STM32运动控制器之间通讯目的如下一是确保视觉处理器能够实时获取机器人在全局坐标系下的位置信息二是向运动控制器传递运动指令以配合视觉系统完成各项任务。两者采用串口通讯STM32控制器占用串口3波特率115200。通讯过程包括STM32控制器向视觉处理器发送采集到的里程计信息、电池电压信息等数据视觉系统向运动控制系统发布导航话题运动控制系统将会在解析话题之后通过串口给STM32发送数据帧。本文把STM32向视觉处理器发送数据打包成一个28位的数组这个数组记为一个数据帧。数据帧的第一位和最后一位都是固定值帧头、帧尾第2位是机器人使能控制位默认打开即允许机器人执行动作第3位到第20位为机器人底盘三个轴的速度、加速度信息第21到24位为云台两个角度第25和26位是电池电压信息第27位为数据校验位本文校验方式采用CRC循环冗余检验。 以上通讯的软件实现为在STM32运动控制器上运行的FreeRTOS实时操作系统上创建一个date_task 任务在任务内以20hz的频率将上述数据帧通过串口3发送到视觉处理器这样视觉处理器就能时刻知道机器人硬件的各种信息了。2.2.3 机器人运动与视觉系统交互机器人在居家环境下安全稳定地运动必须满足以下要求1对家庭环境进行建图建立全局坐标系2机器人时刻知道当前在全局坐标系下位姿3具备自动导航且避障的能力。本文已经在2.2.1小节完成激光雷达传感器的选型关于激光雷达的开发本文使用ROS操作平台其具有很多机器人开源的算法比如上述提到的建图可以用gmapping 算法、机器人定位可以用amcl功能包、导航可以用move_base功能包只要确定机器人在地图上的目标位置和朝向机器人就能够根据最佳路径在地图上到达该目标位置 所以极大减少很多非关键程序的开发而且ROS平台上也便于修改代码方便调试。基于此本文采用ROS系统实现机器人的以上运动功能因本文的重点是聚焦视觉系统故重点阐述视觉系统和运动控制系统如何进行交互不再对运动系统中正逆运动学等进行详细描述。在本节重点讲解视觉和运动之间是怎么配合工作的。按照业务逻辑当视觉检测节点检测出老人跌倒时机器人需要移动到老人旁边进行查看因此视觉检测节点需要知道老人的跌倒位置并把跌倒位置信息发布给导航节点。在ROS系统中不同节点之间的数据传递可以通过订阅、发布话题的方式进行通信在图 2-6 中/fall_detection/fall_position 节点通过订阅/odom 话题获取机器人当前位姿当发生跌倒时又通过坐标转换计算出老人的跌倒位置xy坐 标然后把跌倒位置作为导航的目标位置发布为/move_base_simple/goal 话题给 /move_base 节点当/move_base 导航节点收到后机器人将按照导航算法移动到老人身边。2.3 伴老机器人视觉系统2.3.1 硬件组成1深度相机本文的目标是基于视觉技术进行跌倒检测其技术路线又是利用3D视觉进行算法设计故本文伴老机器人视觉系统需要选择一款深度相机需要满足以下几个方面① 适用于室内环境下工作稳定。② 开发方便有成熟的SDK能够使用。③ 接口丰富数据线和电源线符合常规硬件接口能够和视觉处理器配套使用。④ 图像质量高能够准确、快速获取深度信息。2视觉处理器本文的目标之一是在机器人上运行视觉跌倒检测算法所以需要选择一款合适的视觉处理器满足以下几个方面的要求① 运算性能强大能够快速完成图像处理和模型运行的任务② 体积适中能够适应机器人身上的空间限制不影响机器人的移动和平衡③ 接口和扩展能力丰富能够与STM32、KinectDK等其它外设配套使用④ WIFI模块支持能够连接网络与云服务器之间发送和接收数据。2.3.2 机器人视觉处理器选型RaspberryPi 4B 与 Jetson Nano 都是主流的机器人视觉处理器一款是经典的单板计算机适合用于低功耗、成本敏感的应用场景。另一款JetsonNano是NVIDIA推出的人工智能开发板拥有GPU加速能力。经过对比得出JetsonNano在运行人脸识别、 图像传输、彩色图跟随程序时发布话题的频率更高树莓派在运行深度图色块跟随时更 快综合来看JetsonNano的运行效果更好。 综上所述树莓派在CPU性能更强JetsonNano在图像处理和内存方面更有优势 因为本文目标在处理器上运行视觉程序所以将选择JetsonNano作为视觉处理器。2.3.3 机器人视觉系统算法经过对传统视觉跌倒检测技术的对比其中利用骨骼关键点的方法在跌倒危险行为检测具有明显优势。通过识别人体关键部位的骨骼关键点可以更准确地捕捉人体姿态和动作信息从而实现对跌倒行为的高效检测和分析。与传统方法相比骨骼关键点的技术不会受到背景干扰的影响具有更强的抗干扰能力。同时由于关键点信息更为精细和准确因此可以提供更可靠的跌倒预警和风险评估。骨骼关键点识别是计算机视觉领域中的重要任务 旨在从图像或视频中检测和定位人体关节。目前的骨骼关键点识别方法主要分为两类自底向上和自顶向下。自顶向下方法自顶向下方法首先对整张图像进行人体检测识别出所有可能的人体区域然后分别对每个检测到的人体区域进行关键点检测和定位。这种方法通常包括以下两个步骤人体检测在这一步中通常使用预训练的目标检测模型如FasterR-CNN、SSD或YOLO等对图像中的人体进行检测。检测结果包括多个边界框每个边界框对应一个人体实例。关键点检测对于每个检测到的人体实例使用预训练的关键点检测模型如OpenPose、Hourglass 或 CPM 等对其关键点进行检测和定位。最后通过关键点之间的连线构建出完整的人体姿态。自底向上方法自底向上方法直接在整张图像上直接检测关键点然后根据特定规则将检测到的关键点分组从而形成不同人体的姿态。这种方法主要包括以下两个步骤关键点检测使用预训练的关键点检测模型如OpenPose、Hourglass、higherhrnet 或CPM等对整张图像进行关键点检测。与自顶向下方法不同自底向上方法不需要进行人体检测。关键点分组将检测到的关键点根据一定的规则如距离、方向、颜色等进行分组形成不同人体的姿态。分组方法通常包括启发式搜索、图分割或者使用图神经网络等。本文对伴老机器人视觉系统的功能定位主要是视频监控和跌倒检测其中跌倒检测算法是关键技术本文的视觉跌倒检测算法目标是基于2D骨骼关键点检测算法和坐标转换设计一套3D视觉跌倒检测算法首先比较两类主流的2D骨骼关键点检测算法从实验中挑选效果最好的一个作为3D视觉跌倒检测算法的基础在此之上进行坐标转换制作3D视觉跌倒检测算法的数据集然后训练、测试和优化模型。