# embodied-sm4-vision **Repository Path**: silver-guardian/embodied-sm4-vision ## Basic Information - **Project Name**: embodied-sm4-vision - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-07 - **Last Updated**: 2026-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 具身智能 SM4 视觉图像加密传输系统 🤖🔒 *[English Version](README.md)* ## 📖 项目简介 本项目实现了一个基于国家商用密码标准 SM4 算法的具身智能视觉图像安全传输原型系统。 系统通过 ROS 2 框架与 Gazebo 仿真环境采集视觉数据,在边缘计算节点利用 `cryptography` 库(基于 OpenSSL C 语言接口)对图像进行轻量级 SM4 加密,以降低运算延迟。加密后的视频流通过 HTTP 协议传输至部署在云端的 Flask 服务器,最终完成解密与图像重建。本项目旨在验证轻便型国密算法在资源受限边缘设备上进行实时图像传输的工程可行性。 ## ⚙️ 系统工作流 1. **数据采集**:边缘端 ROS 2 节点订阅 Gazebo 仿真环境中的相机图像话题(`/camera/image_raw`)。 2. **边缘预处理与加密**:系统将原始仿真视觉矩阵统一调整至 **1920×1080 (1080p 标准)**,并采用保留度为 **90 的 JPEG 编码策略** 进行空间压缩。该链路将单帧载荷收敛至轻量级字节流后,再调用底层的 SM4 引擎(支持 ECB/CBC 模式切换)完成极速加密。 3. **云端解密**:云端 Flask 服务端接收 Base64 编码的密文数据流,使用预共享的安全密钥进行逆向解密并还原出原始图像帧。 ## 📏 指标定义 边缘节点将封每一帧的以下三个关键指标记录至 `results/streaming_test_results.csv`: | 指标名称 | CSV 列名 | 语义说明 | |---|---|---| | **单张图像加密时间** | `Encrypt_Time_ms` | 从边缘节点读取图像、按需降维压缩,到完全通过 SM4 加密输出密文的总本地处理耗时。 | | **端到端延迟** | `E2E_Latency_ms` | 完整的处理与通信闭环耗时:单张图像加密时间 + HTTP 上行网络传输 + 云端图片解密 + HTTP 响应确认回传至 ROS 2 边缘节点的总耗时。 | ### 2. 静态基准测试 (Offline Benchmark / offline_benchmark.py) 脱离 ROS 2 与网络环境,纯粹测量 SM4 算法在不同高清分辨率下的极限加密性能。记录于 `results/static_test_results.csv`: | 指标名称 | CSV 列名 | 语义说明 | |---|---|---| | **分辨率组别** | `Resolution` | 测试的图像基准分辨率挡位:`720p` / `1080p` / `2K`。 | | **单张耗时** | `Time(ms)` | 该条记录单次执行纯数学 SM4 算法加密所消耗的绝对时间(单位:毫秒)。 | ## 🗂️ 目录架构 ```text embodied-sm4-vision/ ├── ros2_ws/ # 边缘端 ROS 2 工作空间 │ └── src/sm4_edge_node/ # 负责图像采集与加密的 ROS 2 功能包 │ ├── sm4_crypto.py # SM4 密码算法封装接口 │ └── image_encrypt_node.py # 核心通信主循环与网络推流逻辑 ├── sm4_cloud_server/ # 云端 Flask 后台服务 │ └── cloud_server.py # 提供 HTTP 接口,负责密文解密与图像重建 ├── experiment/ # 实验与基准测试套件 │ └── offline_benchmark.py # 静态多分辨率加密性能测试脚本 ├── .env # 全局配置文件(定义 SM4 密钥与加密模式) ├── requirements.txt # 项目 Python 依赖列表 └── streaming_test_results.csv # 实机运行产生的端到端遥测数据日志 ``` ## 🛠️ 环境依赖 (Environment Requirements) 运行本系统前,请确保你的测试机器或虚拟机满足以下核心框架要求: - **ROS 2 框架**:推荐安装 ROS 2 Humble(或 Foxy 等长期支持版本),作为边缘节点底层通信基座。 - **Gazebo 仿真环境**:必须与 ROS 2 配套安装对应的 `gazebo_ros_pkgs` 插件包,以提供虚拟 3D 物理测试世界。 - **Python 3.8+**:边缘 ROS 2 节点与云端 Flask 服务器均依赖 Python 环境。 ## 🚀 快速上手 ### 0. 安装全局依赖 在运行系统前,请在当前 Python 环境中安装所需的底层依赖包: ```bash pip3 install -r requirements.txt ``` ### 1. 启动 Gazebo 物理仿真环境 打开终端并启动包含相机传感器的机器人仿真世界(此处以 TurtleBot3 为例): ```bash source /opt/ros/humble/setup.bash export TURTLEBOT3_MODEL=waffle ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py ``` ### 2. 启动云端接收服务 新开一个终端,运行 Flask 服务端程序: ```bash cd sm4_cloud_server python3 cloud_server.py ``` ### 3. 运行边缘端加密节点 新开一个终端,编译 ROS 2 工作空间并启动图像加密推流节点: ```bash cd ros2_ws colcon build source install/setup.bash ros2 run sm4_edge_node image_encrypt_node ``` ### 运行脱机静态基准测试 如需采集不同分辨率(720p, 1080p, 2K)下的极端加密性能表现及折线图,请在项目根目录运行基准测试脚本: ```bash python3 experiment/offline_benchmark.py ``` 程序运行结束后,会在此目录下自动生成 `results/` 文件夹,其中包含论文所需的高清折线图 `static_benchmark_plot.png` 与原始跑分数据表 `static_test_results.csv`。 h