復現RoboDK機器人校準功能(以Staubli TX2?90L / TX200機械臂為測試對象,實測精度接近原廠)

本算法復現了 RoboDK 的機器人校準功能:在訓練集的理論校準后精度與 RoboDK 一致,在測試集的實測精度接近 Staubli 原廠

參考:RoboDK 機器人校準功能(https://robodk.com.cn/cn/robot-calibration)


特性

  • 支持 SDH 參數子集選擇(每關節 α/a/θ/d 可獨立選擇是否參與校準)。
  • Base→WorldTool→Flange 外參與 DH 參數 聯合估計
  • 殘差為 TCP 三維位置(mm),輸出統計與直方圖對比。
  • 提供共垂線求解與可視化腳本,便于復核過程。

術語說明

  • 訓練集(Training set):用于本算法與 RoboDK 共同辨識幾何參數,包含 優化后 DH 參數基座到世界坐標系位姿 T_base^worldTCP 到法蘭位姿 T_tcp^flange。由 3 個步驟的數據組成:

    1. 基座坐標系構建:26 組關節序列;
    2. TCP 構建:27 組關節序列;
    3. DH 校準與坐標系優化:≥60 組關節序列。
  • 測試集(Test set):在將辨識結果寫入控制器后,用 ≥40 組 笛卡爾 TCP 位姿 驗證機械臂的絕對定位精度

  • 執行方式:訓練集與測試集均被轉換為 Staubli VAL3 離線程序以驅動機器人(本工程不提供相應 VAL3 程序)。

  • 理論數值計算:以預設關節值經正向運動學求得 T_flange^base,再經坐標變換得到 T_tcp^world,與測量值作差得到位置殘差。

給定關節角 J\mathbf{J}J 與前向運動學公式:
校準前(缺省 SDH)

Ttcpworld=Tbaseworld?Tflangebase(J)(默認?SDH)?Ttcpflange\;\mathbf T_{\text{tcp}}^{\text{world}}\;=\;\mathbf T_{\text{base}}^{\text{world}}\;\cdot\;\underset{\text{(默認 SDH)}}{\mathbf T_{\text{flange}}^{\text{base}}(\mathbf J)}\;\cdot\;\mathbf T_{\text{tcp}}^{\text{flange}}\;Ttcpworld?=Tbaseworld??(默認?SDH)Tflangebase?(J)??Ttcpflange?

校準后(優化 SDH)
Ttcpworld′=Tbaseworld′?Tflangebase′(J)(優化?SDH)?Ttcpflange′\;{\mathbf T_{\text{tcp}}^{\text{world}}}'\;=\;{\mathbf T_{\text{base}}^{\text{world}}}'\;\cdot\;\underset{\text{(優化 SDH)}}{{\mathbf T_{\text{flange}}^{\text{base}}}'(\mathbf J)}\;\cdot\;{\mathbf T_{\text{tcp}}^{\text{flange}}}'\;Ttcpworld?=Tbaseworld??(優化?SDH)Tflangebase?(J)??Ttcpflange?

校準效果

實驗對象:TX2-90L 機械臂

機械臂簡介與原廠精度

數據來源:robodk.com/robot/Staubli/TX2-90L

在這里插入圖片描述

Staubli 原廠絕對定位精度:全工作空間 mean 0.07 mm、90%max 0.11 mm;在 508×508×508 mm 立方體子域內 mean 0.05 mm、90%max 0.08 mm。
數據來源:代碼的工作路徑/doc/TX2-90L/AbsoluteCalibrationQualityReport_TX2-90L.pdf

校準對比與結論

絕對定位精度圖示(單位:mm)

圖片1
本算法(訓練集)校準前、后理論精度直方圖
圖片2
RoboDK(訓練集)校準前、后理論精度直方圖

絕對定位精度數據(單位:mm)
相同顏色為對比項。

算法數據集校準狀態meanmax90%maxσnum of points
本算法訓練集校準前(理論數值)0.4662830.8749760.6478410.1528510.91710860
訓練集校準后(理論數值)0.0391630.0984290.0623820.0176920.10615360
測試集校準后(實際測量)0.05094660.10200010.083898440
RoboDK訓練集校準前(理論數值)0.4660.8750.1540.92960
訓練集校準后(理論數值)0.0390.0980.0180.09360

原始數據與報表見 代碼的工作路徑/RobotCalib/doc/TX2-90L/代碼的工作路徑/RobotCalib/results/TX2-90L/

要點:

  • 與 RoboDK 在同一訓練集上的理論結果一致量級。
  • 寫入控制器后的實測精度位于 Staubli 原廠報告立方體子域水平附近。
  • 測試集位姿分布與訓練集不同,誤差略有上浮,符合預期。

實驗對象:TX200 機械臂

機械臂簡介與原廠精度

數據來源:robodk.com/robot/Staubli/TX200

在這里插入圖片描述

Staubli 原廠絕對定位精度:全工作空間 mean 0.17 mm、90%max 0.26 mm;在 847×847×847 mm 立方體子域內 mean 0.13 mm、90%max 0.18 mm。
數據來源:代碼的工作路徑/doc/TX200/AbsoluteCalibrationQualityReport_TX200.pdf

校準對比與結論

絕對定位精度圖示(單位:mm)

圖片1
本算法(訓練集)校準前、后理論精度直方圖
圖片2
RoboDK(訓練集)校準前、后理論精度直方圖

絕對定位精度數據(單位:mm)
相同顏色為對比項。

算法數據集校準狀態meanmax90%maxσnum of points
本算法訓練集校準前(理論數值)1.2853612.1417031.6733690.3062901.837739107
訓練集校準后(理論數值)0.1424120.4875900.2138810.0713940.428367107
測試集校準后(實際測量)0.1438180.5012940.24605744
RoboDK訓練集校準前(理論數值)1.2692.1280.3092.196107
訓練集校準后(理論數值)0.1420.4880.0720.358107

原始數據與報表見 代碼的工作路徑/RobotCalib/doc/TX200/代碼的工作路徑/RobotCalib/results/TX200/

要點:

  • 與 RoboDK 在同一訓練集上的理論結果一致量級。
  • 實測精度位于原廠全域與立方體子域之間;由于訓練/測試子域范圍較原廠報告的立方體子域更大,誤差略有放大屬預期。
  • 測試集位姿分布更復雜,精度略低于訓練集理論值。

總體結論
在 TX2-90L 與 TX200 兩個樣例上,本算法成功復現了 RoboDK 的校準能力;寫入控制器后的實測絕對精度接近 Staubli 原廠校準水平。


環境依賴

  • C++17 編譯器(GCC 9+/Clang 10+/MSVC 2019+)
  • CMake 3.16+
  • Eigen 3
  • Ceres Solver(含 EigenQuaternionParameterization
  • yaml-cpp
  • Python 3(可視化腳本:numpymatplotlib

Ubuntu 示例:

sudo apt update
sudo apt install -y build-essential cmake libeigen3-dev libyaml-cpp-dev libceres-dev \python3 python3-pip
pip3 install -U numpy matplotlib

macOS (Homebrew):

brew install cmake eigen ceres-solver yaml-cpp
pip3 install -U numpy matplotlib

編譯

終端進入工程目錄

mkdir build && cd build
cmake .. && make -j8

可執行文件輸出:build/RobotCalibration


快速開始(內置樣例)

項目提供兩套樣例數據 TX2-90L / TX200,樣例數據是我在現場使用高精度設備采集的,并提供兩套校準模型選項 simple / complete,推薦使用complete校準模型,本文所有的校準數據均使用complete模型獲得:

# 運行樣例:TX2-90L + complete
./build/RobotCalibration TX2-90L complete# 運行樣例:TX200 + complete
./build/RobotCalibration TX200 complete

命令行參數:

Usage: RobotCalibration <robot_name: TX2-90L|TX200> <calib_mode: simple|complete>

程序會自動讀取:

  • DH:config/DH/<robot_name>-default.yml
  • 選項:config/option/CalibConfig<Simple|Complete>.yml
  • 測量:config/measured/<robot_name>/機器人校準-Calibration.csv(及 Base/Tool 初始化所需 CSV)

輸出默認寫入:results/<robot_name>/


輸出與可視化

運行結束后,results/<robot_name>/ 下包含:

  • OptimalReport_<robot_name>.txt
    • Base/Tool 外參(平移 + 四元數)
    • 原始與優化后的 DH 表
    • 逐樣本三維位置誤差及統計
  • accuracy_stats_hist_<robot_name>.png:校準前后的定位精度對比直方圖

示例,OptimalReport_TX2-90L.txt如下:

========================== Calibration Report ==========================[1]base2world Transformation( [X,Y,Z]mm|Quaternion[q1-q4] ):331.331991,  349.413195,  429.000644,  -0.000022,  0.002251,  0.001411,  0.999996[2]tool2flange Transformation( [X,Y,Z]mm|Quaternion[q1-q4] ):24.990101,  0.213438,  14.899634,  0.000000,  0.000000,  0.000000,  1.000000[3] Original SDH Parameters:
Joint   Alpha(deg)      a(mm)           theta(deg)      d(mm)           
------------------------------------------------------------------------
1       -90.000000      50.000000       0.000000        0.000000        
2       0.000000        500.000000      -90.000000      0.000000        
3       90.000000       0.000000        90.000000       50.000000       
4       -90.000000      0.000000        0.000000        550.000000      
5       90.000000       0.000000        0.000000        0.000000        
6       0.000000        0.000000        0.000000        100.000000      [4] Optimized SDH Parameters:
Joint   Alpha(deg)      a(mm)           theta(deg)      d(mm)           
------------------------------------------------------------------------
1       -89.976980      50.072944       0.000000        0.000000        
2       0.021435        499.915919      -90.052042      0.000000        
3       90.007793       -0.258274       90.043030       50.250723       
4       -90.017136      0.022018        0.113726        549.979965      
5       90.009449       -0.008709       -0.073612       -0.016915       
6       0.000000        0.000000        0.000000        100.000000      
------------------------------------------------------------------------[5] Measurement Errors (per group):測量1:誤差 = 0.026507 mm / 0.664059 mm(校準/未校準)測量2:誤差 = 0.022484 mm / 0.473525 mm(校準/未校準)測量3:誤差 = 0.048078 mm / 0.593382 mm(校準/未校準)測量4:誤差 = 0.017212 mm / 0.286039 mm(校準/未校準)測量5:誤差 = 0.027732 mm / 0.647841 mm(校準/未校準)測量6:誤差 = 0.032805 mm / 0.217326 mm(校準/未校準)測量7:誤差 = 0.035003 mm / 0.285724 mm(校準/未校準)測量8:誤差 = 0.047712 mm / 0.182410 mm(校準/未校準)測量9:誤差 = 0.079666 mm / 0.328047 mm(校準/未校準)測量10:誤差 = 0.063394 mm / 0.456054 mm(校準/未校準)測量11:誤差 = 0.034709 mm / 0.391084 mm(校準/未校準)測量12:誤差 = 0.022172 mm / 0.455564 mm(校準/未校準)測量13:誤差 = 0.036401 mm / 0.372025 mm(校準/未校準)測量14:誤差 = 0.030719 mm / 0.494504 mm(校準/未校準)測量15:誤差 = 0.054269 mm / 0.580226 mm(校準/未校準)測量16:誤差 = 0.034244 mm / 0.375517 mm(校準/未校準)測量17:誤差 = 0.008812 mm / 0.634352 mm(校準/未校準)測量18:誤差 = 0.035747 mm / 0.420587 mm(校準/未校準)測量19:誤差 = 0.048377 mm / 0.445601 mm(校準/未校準)測量20:誤差 = 0.062382 mm / 0.520417 mm(校準/未校準)測量21:誤差 = 0.043945 mm / 0.516382 mm(校準/未校準)測量22:誤差 = 0.028854 mm / 0.294653 mm(校準/未校準)測量23:誤差 = 0.040496 mm / 0.220989 mm(校準/未校準)測量24:誤差 = 0.012670 mm / 0.412269 mm(校準/未校準)測量25:誤差 = 0.098429 mm / 0.802622 mm(校準/未校準)測量26:誤差 = 0.034564 mm / 0.312927 mm(校準/未校準)測量27:誤差 = 0.057626 mm / 0.691680 mm(校準/未校準)測量28:誤差 = 0.017561 mm / 0.374001 mm(校準/未校準)測量29:誤差 = 0.037320 mm / 0.463712 mm(校準/未校準)測量30:誤差 = 0.050038 mm / 0.525567 mm(校準/未校準)測量31:誤差 = 0.038108 mm / 0.874976 mm(校準/未校準)測量32:誤差 = 0.046431 mm / 0.425734 mm(校準/未校準)測量33:誤差 = 0.027192 mm / 0.575715 mm(校準/未校準)測量34:誤差 = 0.016891 mm / 0.355442 mm(校準/未校準)測量35:誤差 = 0.048557 mm / 0.327223 mm(校準/未校準)測量36:誤差 = 0.056675 mm / 0.637538 mm(校準/未校準)測量37:誤差 = 0.069998 mm / 0.400602 mm(校準/未校準)測量38:誤差 = 0.086267 mm / 0.289902 mm(校準/未校準)測量39:誤差 = 0.021268 mm / 0.472069 mm(校準/未校準)測量40:誤差 = 0.035523 mm / 0.566289 mm(校準/未校準)測量41:誤差 = 0.035594 mm / 0.565018 mm(校準/未校準)測量42:誤差 = 0.036709 mm / 0.637583 mm(校準/未校準)測量43:誤差 = 0.026452 mm / 0.207000 mm(校準/未校準)測量44:誤差 = 0.024210 mm / 0.485523 mm(校準/未校準)測量45:誤差 = 0.051299 mm / 0.372913 mm(校準/未校準)測量46:誤差 = 0.053558 mm / 0.368482 mm(校準/未校準)測量47:誤差 = 0.036068 mm / 0.304884 mm(校準/未校準)測量48:誤差 = 0.022227 mm / 0.426705 mm(校準/未校準)測量49:誤差 = 0.045959 mm / 0.338290 mm(校準/未校準)測量50:誤差 = 0.064172 mm / 0.386015 mm(校準/未校準)測量51:誤差 = 0.026428 mm / 0.523266 mm(校準/未校準)測量52:誤差 = 0.017636 mm / 0.647093 mm(校準/未校準)測量53:誤差 = 0.022520 mm / 0.511791 mm(校準/未校準)測量54:誤差 = 0.032559 mm / 0.265368 mm(校準/未校準)測量55:誤差 = 0.031090 mm / 0.471388 mm(校準/未校準)測量56:誤差 = 0.031606 mm / 0.795395 mm(校準/未校準)測量57:誤差 = 0.036189 mm / 0.473452 mm(校準/未校準)測量58:誤差 = 0.035285 mm / 0.610204 mm(校準/未校準)測量59:誤差 = 0.055424 mm / 0.681401 mm(校準/未校準)測量60:誤差 = 0.027973 mm / 0.540605 mm(校準/未校準)[6]校準結果統計(位置誤差,單位:mm)mean       max        90%max     σ         6σ        number_of_points
------------------------------------------------------------------------------
校準前      0.466283   0.874976   0.647841   0.152851   0.917108         60
校準后      0.039163   0.098429   0.062382   0.017692   0.106153         60

示例,accuracy_stats_hist_TX2-90L.png如下:
在這里插入圖片描述

手動生成直方圖(可自定義輸入報告路徑):

python3 code/scripts/visualize_optimal_report.py results/TX200/OptimalReport_TX200.txt

演示平面法向與法向可視化(示例腳本):

python3 code/scripts/visualize_normal_plane.py

Docker(可選)

如需在容器內復現實驗:

# 構建
docker build -t robotcalib -f docker/Dockerfile .# 運行(掛載當前工程,啟用多核)
docker run --rm -it robotcalib \bash -lc "mkdir build && cd build && cmake .. && make -j8 && ./build/RobotCalibration TX2-90L complete"

如需導出圖片到宿主機,確保將 results/ 目錄掛載到宿主機路徑。


技術服務

機械臂絕對精度/外參校準實戰落地:提供線下的校準服務與線上的全量資料包(原理說明+完整代碼+實測數據+軟件操作+一線經驗)。線上可持續答疑。

商業合作與答疑可加V,

可選的機械臂校準資料包

【機械臂校準資料包鏈接1】
【機械臂校準資料包鏈接2】

線上的全量資料包(原理說明+完整代碼+實測數據+軟件操作+一線經驗)包括以下所有內容:

$ tree
.
├── 代碼
│   └── RobotCalib
│       ├── CMakeLists.txt
│       ├── README.md
│       ├── code
│       │   ├── include
│       │   │   ├── core
│       │   │   │   ├── BaseCalib.hpp
│       │   │   │   ├── NormalCrossCompute.h
│       │   │   │   ├── RobotCalib.h
│       │   │   │   └── ToolCalib.hpp
│       │   │   └── tools
│       │   │       ├── DataReader.h
│       │   │       ├── DataStas.h
│       │   │       ├── Forward.h
│       │   │       └── MatrixCompute.h
│       │   ├── scripts
│       │   │   ├── visualize_normal_plane.py
│       │   │   └── visualize_optimal_report.py
│       │   └── source
│       │       ├── core
│       │       │   ├── NormalCrossCompute.cpp
│       │       │   └── RobotCalib.cpp
│       │       ├── main.cpp
│       │       └── tools
│       │           ├── DataReader.cpp
│       │           ├── DataStas.cpp
│       │           └── MatrixCompute.cpp
│       ├── config
│       │   ├── DH
│       │   │   ├── TX2-90L-default.yml
│       │   │   └── TX200-default.yml
│       │   ├── measured
│       │   │   ├── TX2-90L
│       │   │   │   ├── TX2-90L_絕對精度驗證結果(測試集).xlsx
│       │   │   │   ├── 機器人校準-BaseSetup.csv
│       │   │   │   ├── 機器人校準-Calibration.csv
│       │   │   │   └── 機器人校準-ToolSetup.csv
│       │   │   └── TX200
│       │   │       ├── TX200_絕對精度驗證結果(測試集).xlsx
│       │   │       ├── 機器人校準-BaseSetup.csv
│       │   │       ├── 機器人校準-Calibration.csv
│       │   │       └── 機器人校準-ToolSetup.csv
│       │   └── option
│       │       ├── CalibConfigComplete.yml
│       │       └── CalibConfigSimple.yml
│       ├── doc
│       │   ├── TX2-90L
│       │   │   ├── AbsoluteCalibrationQualityReport_TX2-90L.pdf
│       │   │   ├── RoboDK校準報告-TX2-90L.pdf
│       │   │   ├── RoboD校準位置精度截圖-TX2-90L.png
│       │   │   ├── TX2-90L簡介.png
│       │   │   └── 原廠校準位置精度截圖-TX2-90L.png
│       │   ├── TX200
│       │   │   ├── AbsoluteCalibrationQualityReport_TX200.pdf
│       │   │   ├── RoboDK校準報告-TX200.pdf
│       │   │   ├── RoboDK校準位置精度截圖-TX200.png
│       │   │   ├── TX200簡介.png
│       │   │   └── 原廠校準位置精度截圖-TX200.png
│       │   └── 計算共垂線的算法原理.md
│       ├── docker
│       │   └── Dockerfile
│       └── results
│           ├── TX2-90L
│           │   ├── OptimalReport_TX2-90L.txt
│           │   └── accuracy_stats_hist_TX2-90L.png
│           └── TX200
│               ├── OptimalReport_TX200.txt
│               └── accuracy_stats_hist_TX200.png
└── 文檔├── robodk軟件使用說明│   └── robodk進行機械臂校準的流程.vsdx├── 校準原理說明│   └── 工業六軸機械臂標定校準原理說明.docx└── 高級工程師經驗分享└── staubli機械臂標定校準實施標準操作流程(真實工作經歷吐血總結).docx28 directories, 49 files
(base) 

在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95005.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95005.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95005.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue常用指令和生命周期

Vue 是基于 MVVM模型的前端 JavaScript 框架。Vue 核心是數據驅動視圖&#xff0c;通過響應式數據實現視圖自動更新。<template><div>{{ message }}</div><button click"changeMsg">修改內容</button> </template><script se…

深度學習周報(8.25~8.31)

目錄 摘要 Abstract 1 RNN學習意義 2 RNN基礎知識 2.1 核心思想 2.2 傳播 2.3 優缺點 2.4 變體結構與應用場景 3 RNN結構代碼示例 4 總結 摘要 本周主要學習了循環神經網絡的學習意義與基礎知識&#xff0c;重點了解了RNN循環連接的核心思想、前向傳播與反向傳播過程…

借助 LAMBDA 公式,實現單元格區域高效轉換

新特性介紹 “轉換單元格&#xff08;Transform&#xff09;” 功能允許用戶將自定義的單參數 LAMBDA 公式應用于選中的單元格區域。用戶可選擇公式參數的作用域 —— 按單元格、按行、按列或按整個區域。 轉換完成后&#xff0c;源單元格區域會被清空&#xff0c;轉換后的區…

LeetCode 01背包 494. 目標和

494. 目標和給你一個非負整數數組 nums 和一個整數 target 。 向數組中的每個整數前添加 ‘’ 或 ‘-’ &#xff0c;然后串聯起所有整數&#xff0c;可以構造一個 表達式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 ‘’ &#xff0c;在 1 之前…

Dify 1.8.0 全網首發,預告發布

距離Dify 1.7.2過去兩周了 Dify 1.8.0 又跟大伙見面了&#xff01; 1.8.0&#xff0c;屬于主版本號不變、但第二位數字更新的“階段性大更”&#xff0c;意味著功能上的顯著優化和體驗上的重要升級。 根據官方的Github日志&#xff0c;這一版本將繼續聚焦三大核心方向&#x…

基于LangChain框架搭建AI問答系統(附源碼)

AI問答系統1. 背景知識2. 問答系統流程3. 知識問答系統相關組件3.1 文檔加載器3.2 文檔切割器3.3 嵌入模型包裝器3.4 向量存儲庫3.5 模型包裝器3.6 鏈組件4. 問答系統演示4.1 問答程序4.2 演示大模型回答效果5.問答系統代碼1. 背景知識 在人工智能技術飛速發展的今天&#xff…

【Python】QT(PySide2、PyQt5):Qt Designer,VS Code使用designer,可能的報錯

Qt designer&#xff1a;可直接在designer界面&#xff0c;使用拖拽的方式設計需要的界面&#xff0c;可設定部分屬性。安裝Pyside2后&#xff0c;designer默認在python安裝目錄的Lib/sit_packages/PySide2文件夾中。designer使用&#xff1a;① 雙擊打開designer.exe&#xff…

前端常見安全問題 + 防御方法 + 面試回答

目錄 XSS&#xff08;跨站腳本攻擊&#xff09;CSRF&#xff08;跨站請求偽造&#xff09;SQL 注入文件上傳漏洞其他前端常見安全問題面試常見問答 1. XSS&#xff08;跨站腳本攻擊&#xff09; 定義 XSS&#xff08;Cross-Site Scripting&#xff09;是一種 通過注入惡意腳…

jxWebUI--下拉選擇框

下拉選擇框提供了預先定義好的選項&#xff0c;用戶只能在這些選項中選擇輸入。 combobox 定義格式 combobox 控件名 屬性列表 ;屬性 bind 類型&#xff1a;string 缺省值&#xff1a; 輸入控件所綁定的變量名。當給輸入控件bind了一個變量名后【bindbind_var_name】&#xff0…

大模型時代:用Redis構建百億級向量數據庫方

大模型時代&#xff1a;用Redis構建百億級向量數據庫方案第一章&#xff1a;大模型時代的向量數據庫挑戰1.1 大模型時代的特征與需求1.2 向量數據庫的核心價值1.3 百億級向量的技術挑戰第二章&#xff1a;Redis作為向量數據庫的優勢2.1 Redis的核心優勢2.2 Redis向量搜索模塊&a…

jsqlparser(六):TablesNamesFinder 深度解析與 SQL 格式化實現

在數據庫應用開發中&#xff0c;SQL語句的解析和處理是一項常見而重要的任務。本文將深入探討 JSQLParser 中的 TablesNamesFinder 類&#xff0c;分析其核心原理、與 AST 訪問接口&#xff08;CCJSqlParserVisitor &#xff09;的關系、使用場景&#xff0c;并通過實際代碼示例…

Python訓練營打卡Day49-神經網絡調參指南

知識點回顧&#xff1a;隨機種子內參的初始化神經網絡調參指南 參數的分類調參的順序各部分參數的調整心得 作業&#xff1a;對于day41的簡單cnn&#xff0c;看看是否可以借助調參指南進一步提高精度。 隨機種子 import torch import torch.nn as nn# 定義簡單的線性模型&…

Elasticsearch 常用任務管理命令及實戰應用

常用任務管理命令 列出所有任務 curl -X GET "http://<es_host>:<es_port>/_tasks?detailedtrue&pretty" -H Content-Type: application/json獲取特定類型的任務 curl -X GET "http://<es_host>:<es_port>/_tasks?actions<act…

Java試題-選擇題(26)

Java試題-選擇題(26) 題目 下列有關Thread的描述,哪個是正確的 ? A:啟動一個線程的方法是:thread. run() B:結束一個線程的通常做法是:thread. stop() C:將一個線程標記成daemon線程,意味著當主線程結束,并且沒有其它正在運行的非daemon線程時,該daemon線程也會自…

緩存的原理、引入及設計

開篇寄語&#xff1a;緩存&#xff0c;你真的用對了嗎&#xff1f; 我們為什么要學習緩存呢&#xff1f;有必要學習緩存嗎&#xff1f; 緩存的使用&#xff0c;是提升系統性能、改善用戶體驗的唯一解決之道。 其實&#xff0c;作為互聯網公司&#xff0c;只要有直接面對用戶的業…

單片機如何控制模數轉換芯片

一、介紹單片機控制模數轉換&#xff08;ADC&#xff09;芯片的核心是通過通信接口發送控制指令&#xff0c;并讀取轉換后的數字信號&#xff0c;本質是“指令交互數據傳輸”的協同過程&#xff0c;具體實現需分4步完成&#xff0c;關鍵在于接口匹配和時序同步。二、核心1. 先明…

【Proteus仿真】開關控制系列仿真——開關控制LED/撥碼開關二進制計數/開關和繼電器控制燈滅

目錄 0案例視頻效果展示 0.1例子1&#xff1a;開關控制LED燈亮滅 0.2例子2&#xff1a;數碼管顯示撥碼開關二進制計數(000~255) 0.3例子3&#xff1a;開關和繼電器控制燈亮滅 1基礎知識補充 1.1 74LS245雙總線收發器 1.1.1 引腳及功能 1.1.2應用場景 1.1.3真值表 1.2…

Q1 Top IF 18.7 | 基于泛基因組揭示植物NLR進化

文章DOI: 10.1016/j.chom.2025.07.011 標題&#xff1a;Pangenomic context reveals the extent of intraspecific plant NLR evolution 期刊&#xff1a;Cell Hose & Microbe (https://i-blog.csdnimg.cn/direct/0e31f86b94d348b0a1adb084ec4e49b7.png)(https://i-blog.cs…

技術干貨|Prometheus PromQL查詢語言之聚合操作內置函數

聚合操作 Prometheus還提供了下列內置的聚合操作符,這些操作符作用域瞬時向量。可以將瞬時表達式返回的樣本數據進行聚合,形成一個新的時間序列。 sum (求和) min (最小值) max (最大值) avg (平均值) stddev (標準差) stdvar (標準差異) count (計數) count_values …

Redis 哨兵(Sentinel)全面解析

在2025年的數字化浪潮中&#xff0c;想象這樣一個場景&#xff1a;凌晨3點&#xff0c;電商平臺流量突然暴增&#xff0c;主Redis服務器因硬件故障突然宕機。幾年前&#xff0c;這意味著緊急電話、慌亂的運維人員和不可避免的業務中斷。而今天&#xff0c;用戶甚至沒有察覺任何…