保姆级教程:基于LingBot-Depth的机器人抓取系统快速搭建
保姆级教程基于LingBot-Depth的机器人抓取系统快速搭建1. 引言你有没有想过为什么机器人抓东西有时候会失败明明看着就在那里机械臂伸过去却抓了个空或者把东西碰倒了。问题往往出在“看”这个环节上。机器人不像我们人眼能一眼看清物体的轮廓、距离和细节。它依赖深度相机来感知三维世界但这些相机拍出来的深度图经常像一张被雨水打湿的素描——边缘模糊、细节缺失、有些地方干脆就是一片空白。让机器人用这样的“视力”去抓取一个形状复杂的物体比如带把手的杯子难度可想而知。今天要介绍的 LingBot-Depth就是来解决这个问题的。你可以把它理解为一个“深度图修复大师”。它能把那些模糊、残缺的原始深度数据修复成清晰、完整、精确的三维地图。有了这份高质量的地图机器人才能准确判断“哪里能抓”、“怎么抓”。这篇教程就是手把手教你如何用这个“修复大师”快速搭建一个机器人抓取系统的感知核心。哪怕你之前没怎么接触过机器人视觉跟着步骤走也能让机械臂“看”得更清楚抓得更稳。2. 环境准备与快速部署我们先把运行 LingBot-Depth 所需的环境搭建起来。整个过程就像安装一个软件步骤清晰跟着做就行。2.1 通过镜像一键部署最简单的方法如果你希望跳过所有复杂的安装和配置最快的方法就是使用已经打包好的镜像。这个镜像里模型、代码、环境全都准备好了。找到并部署镜像在你使用的云平台或服务器的镜像市场里搜索镜像名ins-lingbot-depth-vitl14-v1。找到后点击“部署实例”按钮。等待实例启动系统会创建一个新的计算实例。首次启动需要大约1-2分钟进行初始化其中包含约5-8秒的时间将模型加载到显卡内存中。当实例状态变为“已启动”时就准备好了。访问测试界面在实例列表中找到你刚部署的实例通常会有一个“HTTP”或“访问”按钮。点击它浏览器会自动打开一个网页。如果端口是7860你看到的是一个交互式的可视化网页界面Gradio WebUI适合手动上传图片测试。如果端口是8000这是一个程序接口FastAPI REST适合写代码调用。推荐新手先访问 7860 端口的网页界面能最直观地看到模型效果。2.2 在网页界面上快速体验打开http://你的实例IP:7860后你会看到一个简洁的页面。我们来做个快速测试验证一切是否正常上传测试图片在页面上找到上传图片的区域。你可以使用系统自带的示例图片路径通常是/root/assets/lingbot-depth-main/examples/0/rgb.png。点击上传左边会显示一张室内的彩色图片。选择模式确保上方的“Mode”选择为“Monocular Depth”单目深度估计。这个模式只需要彩色图片。生成深度图点击“Generate Depth”按钮。查看结果等待2-3秒页面右侧会生成一张新的图片。这张图用颜色表示深度红色/橙色代表距离近蓝色/紫色代表距离远。同时下方的信息栏会显示处理状态为success以及深度范围等信息。如果你能看到一张清晰的彩色深度图恭喜你LingBot-Depth 已经成功运行了这个网页界面证明了模型是好的接下来我们就可以用代码来调用它为机器人抓取服务了。3. 理解核心从“看到”到“抓到”的关键一步在写代码之前我们花几分钟搞清楚为什么深度图质量对抓取如此重要。想象一下你要捡起地上一张卡片你的眼睛RGB相机告诉你“那里有张卡片”。你的空间感深度感知告诉你“卡片离我多远、它平铺在地上”。你的大脑抓取规划结合以上信息指挥手指以平行的姿态伸过去捏起卡片。对于机器人这个过程是物体识别从彩色图片中找到“目标物体”比如用YOLO这类模型。这一步LingBot-Depth不负责。几何感知获取目标物体精确的三维形状和位置。这正是LingBot-Depth的核心价值所在。原始的深度图在这里可能掉链子卡片边缘很薄深度相机可能测不准地面有纹理深度图可能有噪点。LingBot-Depth的作用就是修复和增强这些数据输出一个干净、可靠的三维点云。抓取点计算在高质量的三维点云上算法可以稳定地计算出哪里最适合抓取。例如对于杯子算法会寻找把手的内侧或杯身平滑的圆柱面对于方块会寻找大的平面。运动执行将计算出的抓取点坐标x, y, z和姿态发送给机器人手臂让它移动过去完成抓取。所以LingBot-Depth 是连接“看到物体”和“计算出怎么抓”之间的桥梁。它不直接输出抓取指令但它提供的精准三维数据是做出正确抓取决策的前提。4. 分步实践构建你的抓取感知流水线现在我们开始用代码搭建一个完整的流程。这个流程输入一张彩色图和一张对应的原始深度图输出一组可能的抓取点三维坐标。4.1 第一步编写深度增强函数首先我们创建一个函数专门用来调用部署好的LingBot-Depth模型API进行深度增强。import requests import json import cv2 import numpy as np import base64 def enhance_depth_via_api(rgb_image_path, raw_depth_path, intrinsic_matrix, api_urlhttp://localhost:8000): 通过REST API调用LingBot-Depth服务增强深度图。 参数: rgb_image_path: 彩色图片文件路径 raw_depth_path: 原始深度图文件路径16位PNG单位毫米 intrinsic_matrix: 相机内参矩阵 (3x3 numpy数组) api_url: LingBot-Depth API服务地址默认为本机8000端口 返回: refined_depth: 增强后的深度图numpy数组单位米 point_cloud: 对应的3D点云numpy数组形状[H, W, 3] # 1. 准备图像数据 # 读取彩色图并编码为base64 rgb_img cv2.imread(rgb_image_path) if rgb_img is None: raise FileNotFoundError(f无法读取RGB图像: {rgb_image_path}) # 模型通常需要RGB顺序而OpenCV读取为BGR rgb_img cv2.cvtColor(rgb_img, cv2.COLOR_BGR2RGB) _, rgb_buffer cv2.imencode(.png, rgb_img) rgb_b64 base64.b64encode(rgb_buffer).decode(utf-8) # 读取原始深度图假设为16位PNG单位毫米 raw_depth cv2.imread(raw_depth_path, cv2.IMREAD_UNCHANGED) if raw_depth is None: raise FileNotFoundError(f无法读取深度图: {raw_depth_path}) # 深度图也编码为base64 _, depth_buffer cv2.imencode(.png, raw_depth) depth_b64 base64.b64encode(depth_buffer).decode(utf-8) # 2. 构建请求数据 # 注意原始深度图单位是毫米需要告知API进行转换 payload { image: rgb_b64, depth: depth_b64, intrinsics: intrinsic_matrix.tolist(), # 3x3矩阵转列表 depth_unit: millimeter, # 指定输入深度单位 mode: depth_completion # 使用深度补全模式需要RGB深度 # 如果只有RGB图mode可设为 monocular } # 3. 发送POST请求到/predict端点 headers {Content-Type: application/json} try: response requests.post(f{api_url}/predict, datajson.dumps(payload), headersheaders) response.raise_for_status() # 检查请求是否成功 result response.json() except requests.exceptions.RequestException as e: print(fAPI请求失败: {e}) if hasattr(e, response) and e.response is not None: print(f错误详情: {e.response.text}) return None, None # 4. 解析返回结果 if result.get(status) ! success: print(f模型处理失败: {result.get(message, 未知错误)}) return None, None # 解码增强后的深度图 (base64 - numpy数组) depth_b64_result result[depth_map] depth_data base64.b64decode(depth_b64_result) depth_np np.frombuffer(depth_data, dtypenp.float32) # 需要知道图像的原始高度和宽度来重塑数组 h, w rgb_img.shape[:2] refined_depth depth_np.reshape((h, w)) # 解码点云数据 (如果API返回) point_cloud None if point_cloud in result: # 点云可能以不同的格式返回这里假设是base64编码的扁平化float32数组 pc_b64 result[point_cloud] pc_data base64.b64decode(pc_b64) pc_np np.frombuffer(pc_data, dtypenp.float32).reshape((h, w, 3)) point_cloud pc_np print(f深度增强完成。深度范围: {result.get(depth_range, N/A)}) return refined_depth, point_cloud这个函数封装了与模型服务通信的所有细节。你只需要提供图片路径和内参它就能返回处理好的结果。注意api_url需要改成你实际部署实例的IP地址。4.2 第二步从点云中寻找抓取点拿到增强后的高精度点云我们就可以在上面“搜索”合适的抓取位置了。这里实现一个简单但有效的思路寻找平坦、朝上的表面。def find_grasp_candidates_simple(point_cloud, refined_depth, num_candidates5): 从点云中简单筛选抓取候选点。 策略寻找局部平坦且法向量朝上的区域。 参数: point_cloud: 3D点云形状[H, W, 3] refined_depth: 深度图形状[H, W]用于快速索引 num_candidates: 需要返回的候选点数量 返回: candidates: 列表每个元素是(x, y, z)坐标 normals: 对应的法向量可用于确定抓取姿态 H, W point_cloud.shape[:2] candidates [] candidate_normals [] # 1. 为每个点计算一个简单的“平坦度”和“朝上度”评分 # 跳过边缘像素因为计算邻域需要 for i in range(1, H-1): for j in range(1, W-1): # 跳过无效点深度为0或NaN if refined_depth[i, j] 0 or np.isnan(refined_depth[i, j]): continue current_point point_cloud[i, j] # 获取3x3邻域内的有效点 neighbor_points [] for di in [-1, 0, 1]: for dj in [-1, 0, 1]: ni, nj idi, jdj if 0 ni H and 0 nj W: if refined_depth[ni, nj] 0 and not np.isnan(refined_depth[ni, nj]): neighbor_points.append(point_cloud[ni, nj]) if len(neighbor_points) 5: # 邻域点太少跳过 continue neighbor_points np.array(neighbor_points) # 2. 简单法向量估计用主成分分析(PCA)求最小特征值对应的特征向量近似法向量 # 计算邻域点云的质心 centroid np.mean(neighbor_points, axis0) # 计算协方差矩阵 cov_matrix np.cov((neighbor_points - centroid).T) # 计算特征值和特征向量 eigenvalues, eigenvectors np.linalg.eigh(cov_matrix) # 最小特征值对应的特征向量近似为法向量 normal eigenvectors[:, 0] # 确保法向量方向一致指向相机外侧即大致朝上 if normal[2] 0: normal -normal # 3. 评分条件 # 条件A法向量是否接近垂直向上与Z轴夹角小 up_score normal[2] # Z分量范围[-1,1]越接近1越朝上 # 条件B局部平坦度特征值比值最小特征值远小于其他两个 # 当表面平坦时前两个特征值代表平面延伸方向远大于第三个代表厚度方向 lambda_sorted np.sort(eigenvalues) if lambda_sorted[1] 1e-6: # 避免除零 flatness_score lambda_sorted[0] / lambda_sorted[1] # 值越小越平坦 else: flatness_score 1.0 # 综合评分这里简单加权你可以调整 total_score up_score * 0.7 (1 - flatness_score) * 0.3 # 4. 如果评分较高加入候选列表 if up_score 0.8 and flatness_score 0.3: # 阈值可调 candidates.append(current_point) candidate_normals.append(normal) # 5. 从所有候选点中选出评分最高或随机选择的几个 if len(candidates) 0: print(未找到符合条件的抓取候选点。) return [], [] # 这里为了简单随机选择。实际应用中应根据total_score排序。 import random if len(candidates) num_candidates: selected_indices list(range(len(candidates))) else: selected_indices random.sample(range(len(candidates)), num_candidates) final_candidates [candidates[i] for i in selected_indices] final_normals [candidate_normals[i] for i in selected_indices] print(f找到 {len(final_candidates)} 个抓取候选点。) return final_candidates, final_normals这个函数的关键在于用PCA方法估计点的法向量并通过法向量方向和平坦度来筛选。这是一个基础方法但已经能应对很多简单物体的抓取场景如方块、平板。4.3 第三步整合流水线并可视化最后我们把前两步连接起来并生成一个可视化结果直观地看到整个过程。def run_full_grasp_pipeline(rgb_path, depth_path, intrinsics, api_urlhttp://localhost:8000): 运行从深度增强到抓取点检测的完整流水线。 print( 开始抓取感知流水线 ) # 步骤A深度增强 print(1. 调用LingBot-Depth API进行深度增强...) enhanced_depth, point_cloud enhance_depth_via_api(rgb_path, depth_path, intrinsics, api_url) if enhanced_depth is None: print(深度增强失败流程终止。) return None # 步骤B抓取点检测 print(2. 在增强点云上检测抓取候选点...) grasp_points, grasp_normals find_grasp_candidates_simple(point_cloud, enhanced_depth) # 步骤C可视化 print(3. 生成可视化报告...) import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig plt.figure(figsize(16, 10)) # 子图1原始RGB rgb_img cv2.cvtColor(cv2.imread(rgb_path), cv2.COLOR_BGR2RGB) ax1 plt.subplot(2, 3, 1) ax1.imshow(rgb_img) ax1.set_title(输入RGB图像) ax1.axis(off) # 子图2原始深度渲染 raw_depth cv2.imread(depth_path, cv2.IMREAD_UNCHANGED) ax2 plt.subplot(2, 3, 2) im2 ax2.imshow(raw_depth, cmapviridis) plt.colorbar(im2, axax2, fraction0.046, pad0.04) ax2.set_title(原始深度图) ax2.axis(off) # 子图3增强深度渲染 ax3 plt.subplot(2, 3, 3) im3 ax3.imshow(enhanced_depth, cmapplasma) plt.colorbar(im3, axax3, fraction0.046, pad0.04) ax3.set_title(LingBot增强深度图) ax3.axis(off) # 子图43D点云可视化俯视图 ax4 plt.subplot(2, 3, 4, projection3d) # 为了清晰下采样点云 stride 4 pc_down point_cloud[::stride, ::stride].reshape(-1, 3) ax4.scatter(pc_down[:, 0], pc_down[:, 1], pc_down[:, 2], cpc_down[:, 2], cmapplasma, s1, alpha0.6) ax4.set_title(3D点云增强后) ax4.set_xlabel(X (m)) ax4.set_ylabel(Y (m)) ax4.set_zlabel(Z (m)) # 子图5抓取点投影到RGB图 ax5 plt.subplot(2, 3, 5) ax5.imshow(rgb_img) ax5.set_title(抓取候选点投影) ax5.axis(off) # 将3D抓取点投影到2D图像需要相机内参 K intrinsics for pt_3d in grasp_points: pt_3d_homo np.array([pt_3d[0], pt_3d[1], pt_3d[2]]) pt_2d_homo K pt_3d_homo pt_2d pt_2d_homo[:2] / pt_2d_homo[2] x, y int(pt_2d[0]), int(pt_2d[1]) if 0 x rgb_img.shape[1] and 0 y rgb_img.shape[0]: ax5.scatter([x], [y], s120, clime, markero, edgecolorsblack, linewidths2, alpha0.8) # 子图6抓取点3D位置侧视图 ax6 plt.subplot(2, 3, 6, projection3d) # 绘制点云背景稀疏 ax6.scatter(pc_down[:, 0], pc_down[:, 1], pc_down[:, 2], cgray, s1, alpha0.2) # 高亮抓取点 if grasp_points: grasp_arr np.array(grasp_points) ax6.scatter(grasp_arr[:, 0], grasp_arr[:, 1], grasp_arr[:, 2], cred, s50, depthshadeFalse) # 绘制法向量缩小的 scale 0.02 for pt, normal in zip(grasp_points, grasp_normals): ax6.quiver(pt[0], pt[1], pt[2], normal[0]*scale, normal[1]*scale, normal[2]*scale, colorblue, linewidth2) ax6.set_title(抓取点3D位置与法向) ax6.set_xlabel(X) ax6.set_ylabel(Y) ax6.set_zlabel(Z) plt.tight_layout() output_path grasp_system_output.png plt.savefig(output_path, dpi150) print(f可视化结果已保存至: {output_path}) plt.show() return grasp_points # 示例用法 if __name__ __main__: # 你需要准备以下文件可以使用镜像自带的例子 RGB_FILE /root/assets/lingbot-depth-main/examples/0/rgb.png DEPTH_FILE /root/assets/lingbot-depth-main/examples/0/raw_depth.png # 示例相机内参需要根据你的相机实际标定填写 # 格式[[fx, 0, cx], [0, fy, cy], [0, 0, 1]] INTRINSICS np.array([ [460.14, 0, 319.66], [0, 460.20, 237.40], [0, 0, 1] ]) # 运行流水线 grasp_pts run_full_grasp_pipeline(RGB_FILE, DEPTH_FILE, INTRINSICS, api_urlhttp://你的实例IP:8000) if grasp_pts: print(f\n抓取系统输出 {len(grasp_pts)} 个候选点坐标单位米:) for i, pt in enumerate(grasp_pts): print(f 点{i1}: ({pt[0]:.3f}, {pt[1]:.3f}, {pt[2]:.3f}))运行这个脚本你会得到一张包含六个子图的综合报告清晰展示了从原始数据到最终抓取点的每一步。这些三维坐标点就是你可以发送给机器人控制系统的“行动目标”。5. 实用技巧与进阶方向现在你已经有了一个能跑通的系统接下来聊聊怎么把它用得更好以及可以往哪些方向深入。关于数据与实时性 我们的例子处理的是单张图片。真实机器人是连续工作的你需要处理视频流。可以把上面的run_full_grasp_pipeline函数放在一个循环里对每一帧RGB-D数据都调用。但要注意API调用和点云处理都需要时间。如果机器人要求很高的实时性比如每秒10帧以上你可能需要优化代码比如只在检测到新物体时才进行完整的抓取点计算。考虑将模型服务部署在性能更强的GPU上。探索更轻量级的抓取点检测算法。关于抓取算法升级 我们实现的法向量筛选法是个不错的起点但工业界有更强大的工具。强烈推荐你了解GPD (Grasp Pose Detection)和6-DoF GraspNet。GPD一个经典的开源库。你直接把LingBot-Depth生成的高质量点云喂给它它就能输出一堆可能的抓取姿势并且给每个姿势打分。用它替换掉我们写的find_grasp_candidates_simple函数效果会提升一个档次。6-DoF GraspNet基于深度学习能预测更精确的六自由度抓取姿态。虽然它本身可能也需要训练但用增强后的点云作为输入同样能大幅提升其表现。关于系统集成 得到(x, y, z)坐标后怎么让机器人动起来这需要与机器人操作系统如ROS集成。坐标变换模型输出的点是在相机坐标系下的。机器人手臂需要知道在自己“世界”里的坐标。你必须通过“手眼标定”得到一个固定的变换矩阵把相机坐标转换成机器人基座坐标。消息传递在ROS里你可以将抓取点坐标封装成一个geometry_msgs/PointStamped类型的消息发布到特定的主题Topic上。运动规划另一个节点比如MoveIt!订阅这个主题收到坐标后开始规划机械臂的运动轨迹避开障碍物最终让夹爪到达指定位置。关于模型选择 教程里用的是通用预训练模型lingbot-depth-pretrain-vitl-14。如果你主要用深度补全功能RGB稀疏深度并且数据非常稀疏可以试试另一个版本lingbot-depth-postrain-dc-vitl14。它在深度补全任务上做了针对性训练处理极端稀疏输入时可能更鲁棒。6. 总结回顾一下我们完成了一件什么事我们利用 LingBot-Depth 这个强大的深度感知增强工具搭建了一个机器人抓取系统的“眼睛”和“大脑”的前半部分。整个过程的核心逻辑非常清晰用更好的三维感知驱动更精准的抓取动作。LingBot-Depth 负责把粗糙的原始数据变成精雕细琢的三维模型而我们写的代码则在这个模型上寻找最佳的“下手”位置。从通过镜像一键部署验证模型到理解深度感知对抓取的重要性再到一步步编写出完整的处理流水线最后看到可视化结果——这个过程本身就是对一个典型机器人视觉模块的开发演练。当然这只是一个强大的起点。把这个模块接入真实的机器人处理更复杂的物体和场景优化整个系统的速度和稳定性这些挑战还在前面等着你。但至少现在你已经掌握了让机器人“看清”物体的关键钥匙。希望这篇教程能帮你顺利打开机器人抓取应用的大门。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻

破坏性测试实战指南:从流程设计到用例优化

破坏性测试实战指南:从流程设计到用例优化

1. 破坏性测试:不只是“搞破坏”,更是“找底线” 很多刚接触测试的朋友,一听到“破坏性测试”,脑子里可能立刻浮现出电影里黑客敲键盘、系统冒红光的画面。其实,它远没有那么戏剧化,但确实比常规的功能测试…

2026/5/17 7:30:04 阅读更多 →
Hotkey Detective:让Windows热键冲突无所遁形的诊断利器

Hotkey Detective:让Windows热键冲突无所遁形的诊断利器

Hotkey Detective:让Windows热键冲突无所遁形的诊断利器 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否经历过这样的场景&…

2026/5/17 7:30:04 阅读更多 →
智能客服系统实战:如何高效接入7×24小时AI客服并保障稳定性

智能客服系统实战:如何高效接入7×24小时AI客服并保障稳定性

在构建现代企业服务门户时,智能客服系统已成为不可或缺的一环。然而,将其从一个“能用”的演示项目,升级为一个支撑724小时不间断服务、稳定可靠的生产级系统,挑战才刚刚开始。今天,我们就来深入聊聊,如何高…

2026/5/17 7:30:02 阅读更多 →

最新新闻

ASM330LHH与PIC18F4525实现低成本运动跟踪方案

ASM330LHH与PIC18F4525实现低成本运动跟踪方案

1. 项目背景与核心组件解析运动跟踪技术正在从工业级应用向消费电子领域快速渗透,而ASM330LHH与PIC18F4525的组合为开发者提供了一个高性价比的解决方案。ASM330LHH是STMicroelectronics推出的6轴MEMS惯性测量单元(IMU),集成了3轴数字加速度计和3轴数字陀…

2026/7/3 0:10:00 阅读更多 →
13DOF传感器与PIC32MZ实现厘米级自主导航方案

13DOF传感器与PIC32MZ实现厘米级自主导航方案

1. 项目背景与核心需求在自主移动机器人、无人机和工业自动化领域,精确定位与导航一直是核心技术挑战。传统GPS在室内环境完全失效,而UWB(超宽带)技术虽然能提供10-30cm的定位精度,但对于需要厘米级精度的应用场景&…

2026/7/3 0:10:00 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
告别复杂制图软件,okbiye AI 科研绘图线上一键生成学术标准图表

告别复杂制图软件,okbiye AI 科研绘图线上一键生成学术标准图表

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/科研绘图科研绘图 - Okbiye智能写作https://www.okbiye.com/drawing 一、科研绘图痛点直击:传统制图模式拖慢整体科研进度 对于本科生、硕博生以及一线科研从业者来说,学术图表是论文…

2026/7/2 23:57:57 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻