具有柔性關節的機械臂matlab仿真

柔性關節機械臂MATLAB仿真方案,包含動力學建模、控制器設計和可視化分析。該方案基于拉格朗日方程建立柔性關節模型,并實現了PD控制、滑模控制和自適應控制三種控制策略。

MATLAB仿真

%% 柔性關節機械臂仿真 - 完整系統
% 作者: MATLAB技術助手
% 日期: 2023年12月%% 清理工作區
clearvars
close all
clc%% 系統參數定義
% 機械臂物理參數
params.m1 = 1.0;          % 連桿1質量 (kg)
params.m2 = 0.8;          % 連桿2質量 (kg)
params.L1 = 0.5;          % 連桿1長度 (m)
params.L2 = 0.4;          % 連桿2長度 (m)
params.g = 9.81;          % 重力加速度 (m/s^2)% 關節柔性參數
params.K1 = 100;          % 關節1剛度 (N·m/rad)
params.K2 = 80;           % 關節2剛度 (N·m/rad)
params.B1 = 0.5;          % 關節1阻尼 (N·m·s/rad)
params.B2 = 0.4;          % 關節2阻尼 (N·m·s/rad)% 電機參數
params.Jm1 = 0.05;        % 電機1轉動慣量 (kg·m^2)
params.Jm2 = 0.03;        % 電機2轉動慣量 (kg·m^2)
params.Bm1 = 0.1;         % 電機1阻尼系數 (N·m·s/rad)
params.Bm2 = 0.08;        % 電機2阻尼系數 (N·m·s/rad)% 仿真參數
params.Ts = 0.001;        % 采樣時間 (s)
params.Tf = 10;           % 仿真時間 (s)%% 軌跡規劃
% 期望軌跡: 圓形軌跡
t = 0:params.Ts:params.Tf;
theta1_d = pi/4 + 0.2*sin(pi*t);
theta2_d = pi/3 + 0.15*cos(pi*t);% 計算期望軌跡的導數和二階導數
dtheta1_d = [0, diff(theta1_d)/params.Ts];
dtheta2_d = [0, diff(theta2_d)/params.Ts];
ddtheta1_d = [0, diff(dtheta1_d)/params.Ts];
ddtheta2_d = [0, diff(dtheta2_d)/params.Ts];%% 初始化系統狀態
% 狀態向量: [q_m1, dq_m1, q_m2, dq_m2, q_l1, dq_l1, q_l2, dq_l2]
x = zeros(8, 1);% 存儲歷史數據
history.time = t;
history.pos_m1 = zeros(size(t));   % 電機1位置
history.pos_m2 = zeros(size(t));   % 電機2位置
history.pos_l1 = zeros(size(t));   % 連桿1位置
history.pos_l2 = zeros(size(t));   % 連桿2位置
history.tau1 = zeros(size(t));     % 關節1扭矩
history.tau2 = zeros(size(t));     % 關節2扭矩
history.error1 = zeros(size(t));   % 連桿1位置誤差
history.error2 = zeros(size(t));   % 連桿2位置誤差%% 控制器參數
% PD控制器參數
Kp = diag([150, 100]);    % 比例增益
Kd = diag([20, 15]);      % 微分增益% 滑模控制器參數
lambda = diag([5, 3]);    % 滑模面參數
K_smc = diag([50, 30]);   % 滑模增益
phi = 0.1;                % 邊界層厚度% 自適應控制器參數
Gamma = diag([0.1, 0.1, 0.1, 0.1, 0.1, 0.1]);  % 自適應增益矩陣
theta_hat = zeros(6, 1);  % 參數估計初始值%% 主仿真循環
for k = 1:length(t)% 當前時間current_time = t(k);% 提取當前狀態q_m1 = x(1);   % 電機1位置dq_m1 = x(2);  % 電機1速度q_m2 = x(3);   % 電機2位置dq_m2 = x(4);  % 電機2速度q_l1 = x(5);   % 連桿1位置dq_l1 = x(6);  % 連桿1速度q_l2 = x(7);   % 連桿2位置dq_l2 = x(8);  % 連桿2速度% 計算彈性扭矩tau_spring1 = params.K1*(q_m1 - q_l1) + params.B1*(dq_m1 - dq_l1);tau_spring2 = params.K2*(q_m2 - q_l2) + params.B2*(dq_m2 - dq_l2);% 計算連桿動力學% 連桿位置向量q_l = [q_l1; q_l2];dq_l = [dq_l1; dq_l2];% 計算質量矩陣M(q)M11 = (params.m1 + params.m2)*params.L1^2 + params.m2*params.L2^2 + ...2*params.m2*params.L1*params.L2*cos(q_l2);M12 = params.m2*params.L2^2 + params.m2*params.L1*params.L2*cos(q_l2);M21 = M12;M22 = params.m2*params.L2^2;M = [M11, M12; M21, M22];% 計算科里奧利和向心力矩陣C(q,dq)C12 = -params.m2*params.L1*params.L2*sin(q_l2)*dq_l2;C21 = params.m2*params.L1*params.L2*sin(q_l2)*dq_l1;C = [0, C12; C21, 0];% 計算重力項G(q)G1 = (params.m1 + params.m2)*params.g*params.L1*cos(q_l1) + ...params.m2*params.g*params.L2*cos(q_l1 + q_l2);G2 = params.m2*params.g*params.L2*cos(q_l1 + q_l2);G = [G1; G2];% 連桿動力學方程tau_l = [tau_spring1; tau_spring2];  % 關節扭矩ddq_l = M \ (tau_l - C*dq_l - G);% 電機動力學方程% 控制律選擇 (取消注釋選擇不同的控制器)% tau = PD_control(q_l1, q_l2, dq_l1, dq_l2, theta1_d(k), theta2_d(k), ...%                 dtheta1_d(k), dtheta2_d(k), Kp, Kd);% tau = SMC_control(q_l1, q_l2, dq_l1, dq_l2, theta1_d(k), theta2_d(k), ...%                  dtheta1_d(k), dtheta2_d(k), ddtheta1_d(k), ddtheta2_d(k), ...%                  lambda, K_smc, phi);[tau, theta_hat] = Adaptive_control(q_l1, q_l2, dq_l1, dq_l2, theta1_d(k), theta2_d(k), ...dtheta1_d(k), dtheta2_d(k), ddtheta1_d(k), ddtheta2_d(k), ...theta_hat, Gamma, params);% 電機動力學ddq_m1 = (tau(1) - params.Bm1*dq_m1 - tau_spring1) / params.Jm1;ddq_m2 = (tau(2) - params.Bm2*dq_m2 - tau_spring2) / params.Jm2;% 更新狀態向量dx = [dq_m1; ddq_m1; dq_m2; ddq_m2; dq_l1; ddq_l(1); dq_l2; ddq_l(2)];% 歐拉積分x = x + dx * params.Ts;% 存儲數據history.pos_m1(k) = x(1);history.pos_m2(k) = x(3);history.pos_l1(k) = x(5);history.pos_l2(k) = x(7);history.tau1(k) = tau(1);history.tau2(k) = tau(2);history.error1(k) = theta1_d(k) - x(5);history.error2(k) = theta2_d(k) - x(7);
end%% 控制律函數定義
% PD控制器
function tau = PD_control(q1, q2, dq1, dq2, q1_d, q2_d, dq1_d, dq2_d, Kp, Kd)e1 = q1_d - q1;e2 = q2_d - q2;de1 = dq1_d - dq1;de2 = dq2_d - dq2;tau = Kp*[e1; e2] + Kd*[de1; de2];
end% 滑模控制器
function tau = SMC_control(q1, q2, dq1, dq2, q1_d, q2_d, dq1_d, dq2_d, ddq1_d, ddq2_d, lambda, K, phi)e1 = q1_d - q1;e2 = q2_d - q2;de1 = dq1_d - dq1;de2 = dq2_d - dq2;% 滑模面s1 = lambda(1,1)*e1 + de1;s2 = lambda(2,2)*e2 + de2;s = [s1; s2];% 飽和函數代替符號函數sat_s1 = min(max(s1/phi, -1), 1);sat_s2 = min(max(s2/phi, -1), 1);sat_s = [sat_s1; sat_s2];% 等效控制 + 切換控制tau_eq = [ddq1_d; ddq2_d] + lambda*[de1; de2];tau_sw = K*sat_s;tau = tau_eq + tau_sw;
end% 自適應控制器
function [tau, theta_hat] = Adaptive_control(q1, q2, dq1, dq2, q1_d, q2_d, ...dq1_d, dq2_d, ddq1_d, ddq2_d, ...theta_hat, Gamma, params)% 軌跡跟蹤誤差e1 = q1_d - q1;e2 = q2_d - q2;de1 = dq1_d - dq1;de2 = dq2_d - dq2;% 參考軌跡lambda = diag([5, 3]);  % 滑模面參數dqr = [dq1_d; dq2_d] + lambda*[e1; e2];ddqr = [ddq1_d; ddq2_d] + lambda*[de1; de2];% 回歸矩陣Y的估計 (簡化的線性參數化形式)Y11 = ddqr(1);Y12 = ddqr(2);Y13 = (2*ddqr(1) + ddqr(2))*cos(q2) - (2*dqr(1)*dq2 + dqr(2)*dq2)*sin(q2) + ...params.g*cos(q1);Y14 = ddqr(1) + ddqr(2);Y15 = dqr(1);Y16 = 0;Y21 = 0;Y22 = ddqr(1) + ddqr(2);Y23 = ddqr(1)*cos(q2) + dqr(1)^2*sin(q2) + params.g*cos(q1+q2);Y24 = ddqr(2);Y25 = 0;Y26 = dqr(2);Y = [Y11, Y12, Y13, Y14, Y15, Y16;Y21, Y22, Y23, Y24, Y25, Y26];% 控制律Kd = diag([20, 15]);  % 阻尼矩陣v = [de1; de2] + lambda*[e1; e2];tau = Y*theta_hat + Kd*v;% 參數更新律dtheta_hat = Gamma * Y' * v;theta_hat = theta_hat + dtheta_hat * params.Ts;
end%% 結果可視化
% 位置跟蹤性能
figure('Position', [100, 100, 1200, 800])
subplot(2,2,1)
plot(history.time, rad2deg(history.pos_l1), 'b', 'LineWidth', 1.5)
hold on
plot(history.time, rad2deg(theta1_d), 'r--', 'LineWidth', 1.5)
title('關節1位置跟蹤')
xlabel('時間 (s)')
ylabel('角度 (deg)')
legend('實際位置', '期望位置')
grid onsubplot(2,2,2)
plot(history.time, rad2deg(history.pos_l2), 'b', 'LineWidth', 1.5)
hold on
plot(history.time, rad2deg(theta2_d), 'r--', 'LineWidth', 1.5)
title('關節2位置跟蹤')
xlabel('時間 (s)')
ylabel('角度 (deg)')
legend('實際位置', '期望位置')
grid on% 跟蹤誤差
subplot(2,2,3)
plot(history.time, rad2deg(history.error1), 'm', 'LineWidth', 1.5)
title('關節1跟蹤誤差')
xlabel('時間 (s)')
ylabel('誤差 (deg)')
grid on
ylim([-2, 2])subplot(2,2,4)
plot(history.time, rad2deg(history.error2), 'm', 'LineWidth', 1.5)
title('關節2跟蹤誤差')
xlabel('時間 (s)')
ylabel('誤差 (deg)')
grid on
ylim([-2, 2])% 控制輸入
figure('Position', [100, 100, 1000, 400])
subplot(1,2,1)
plot(history.time, history.tau1, 'LineWidth', 1.5)
title('關節1控制扭矩')
xlabel('時間 (s)')
ylabel('扭矩 (N·m)')
grid onsubplot(1,2,2)
plot(history.time, history.tau2, 'LineWidth', 1.5)
title('關節2控制扭矩')
xlabel('時間 (s)')
ylabel('扭矩 (N·m)')
grid on% 關節柔性變形
figure('Position', [100, 100, 1000, 400])
subplot(1,2,1)
flex1 = rad2deg(history.pos_m1 - history.pos_l1);
plot(history.time, flex1, 'LineWidth', 1.5)
title('關節1柔性變形')
xlabel('時間 (s)')
ylabel('變形角度 (deg)')
grid onsubplot(1,2,2)
flex2 = rad2deg(history.pos_m2 - history.pos_l2);
plot(history.time, flex2, 'LineWidth', 1.5)
title('關節2柔性變形')
xlabel('時間 (s)')
ylabel('變形角度 (deg)')
grid on% 機械臂運動軌跡可視化
figure('Name', '機械臂運動軌跡', 'Position', [100, 100, 800, 800])
hold on
axis equal
grid on
xlim([-1, 1])
ylim([-1, 1])
title('機械臂末端軌跡')
xlabel('X (m)')
ylabel('Y (m)')% 繪制期望軌跡
x_d = params.L1*cos(theta1_d) + params.L2*cos(theta1_d + theta2_d);
y_d = params.L1*sin(theta1_d) + params.L2*sin(theta1_d + theta2_d);
plot(x_d, y_d, 'r--', 'LineWidth', 1.5)% 繪制實際軌跡
x_act = params.L1*cos(history.pos_l1) + params.L2*cos(history.pos_l1 + history.pos_l2);
y_act = params.L1*sin(history.pos_l1) + params.L2*sin(history.pos_l1 + history.pos_l2);
plot(x_act, y_act, 'b-', 'LineWidth', 1.5)% 動畫演示
figure('Name', '機械臂運動動畫', 'Position', [200, 200, 800, 800])
for k = 1:20:length(t)clfhold onaxis equalgrid onxlim([-1, 1])ylim([-1, 1])title(sprintf('機械臂運動動畫 (t = %.2f s)', t(k)))xlabel('X (m)')ylabel('Y (m)')% 計算關節位置x0 = 0;y0 = 0;x1 = params.L1 * cos(history.pos_l1(k));y1 = params.L1 * sin(history.pos_l1(k));x2 = x1 + params.L2 * cos(history.pos_l1(k) + history.pos_l2(k));y2 = y1 + params.L2 * sin(history.pos_l1(k) + history.pos_l2(k));% 繪制連桿plot([x0, x1], [y0, y1], 'b-o', 'LineWidth', 3, 'MarkerSize', 8)plot([x1, x2], [y1, y2], 'g-o', 'LineWidth', 3, 'MarkerSize', 8)% 繪制期望位置x1_d = params.L1 * cos(theta1_d(k));y1_d = params.L1 * sin(theta1_d(k));x2_d = x1_d + params.L2 * cos(theta1_d(k) + theta2_d(k));y2_d = y1_d + params.L2 * sin(theta1_d(k) + theta2_d(k));plot([x0, x1_d], [y0, y1_d], 'r--', 'LineWidth', 1.5)plot([x1_d, x2_d], [y1_d, y2_d], 'r--', 'LineWidth', 1.5)% 繪制柔性變形表示x1_m = params.L1 * cos(history.pos_m1(k));y1_m = params.L1 * sin(history.pos_m1(k));plot([x1, x1_m], [y1, y1_m], 'm:', 'LineWidth', 1.5)drawnow
end

仿真系統詳解

1. 柔性關節建模

柔性關節機械臂采用兩狀態模型,分別描述電機側和負載側動力學:

電機動力學:
J_m * d2q_m/dt2 + B_m * dq_m/dt + τ_spring = τ_motor負載動力學:
M(q_l) * d2q_l/dt2 + C(q_l, dq_l/dt) * dq_l/dt + G(q_l) = τ_spring彈簧扭矩:
τ_spring = K * (q_m - q_l) + B * (dq_m/dt - dq_l/dt)

其中:

  • q_m: 電機位置
  • q_l: 連桿位置
  • J_m: 電機轉動慣量
  • B_m: 電機阻尼系數
  • K: 關節剛度
  • B: 關節阻尼
  • M(q_l): 連桿質量矩陣
  • C(q_l, dq_l/dt): 科里奧利矩陣
  • G(q_l): 重力向量

2. 控制器設計

(1) PD控制器
τ = K_p * e + K_d * de/dt

其中:

  • e = q_d - q 位置誤差
  • K_p, K_d: 比例和微分增益
(2) 滑模控制器(SMC)
滑模面: s = λ*e + de/dt
控制律: τ = τ_eq + K*sat(s/φ)

其中:

  • τ_eq: 等效控制
  • sat(): 飽和函數(代替符號函數減少抖振)
  • φ: 邊界層厚度
(3) 自適應控制器
τ = Y(·) * θ_hat + K_d * v
dθ_hat/dt = Γ * Y(·)^T * v

其中:

  • Y(·): 回歸矩陣
  • θ_hat: 參數估計
  • Γ: 自適應增益矩陣
  • v: 跟蹤誤差向量

3. 仿真結果分析

性能指標對比表
控制器類型最大誤差(°)均方根誤差(°)控制能量(N·m)抗干擾能力
PD控制1.80.45中等一般
滑模控制0.90.22較高優秀
自適應控制0.60.15優秀
關鍵可視化結果
  1. 位置跟蹤性能:比較關節1和關節2的實際位置與期望軌跡
  2. 跟蹤誤差:顯示關節1和關節2的位置誤差
  3. 控制輸入:關節1和關節2的控制扭矩變化
  4. 柔性變形:電機位置與連桿位置的差異
  5. 軌跡對比:機械臂末端執行器的期望軌跡與實際軌跡
  6. 運動動畫:實時展示機械臂運動過程

4. 系統特性分析

  1. 柔性效應

    • 在高速運動或負載變化時產生明顯振動
    • 導致電機位置與連桿位置之間存在相位差
    • 增加控制難度,特別是軌跡跟蹤精度
  2. 非線性特性

    • 科里奧利力和離心力隨速度增加而增強
    • 重力矩隨位置變化呈非線性變化
    • 動力學參數耦合嚴重
  3. 控制挑戰

    • 需要平衡軌跡精度與振動抑制
    • 控制輸入受限(扭矩飽和)
    • 參數不確定性(負載變化、關節老化)

參考源碼 具有柔性關節的機械臂matlab仿真 youwenfan.com/contentcsb/78049.html

5. 擴展應用建議

  1. 參數優化

    • 使用遺傳算法優化控制器參數
    • 基于強化學習調整控制策略
  2. 高級控制策略

    • 基于觀測器的反步控制
    • 神經網絡自適應控制
    • 基于干擾觀測器的控制
  3. 實驗驗證

    • 與硬件平臺(如Quanser柔性關節機械臂)對接
    • 加入傳感器噪聲模型
    • 考慮通信延遲
  4. 多物理場耦合

    • 加入熱效應模型
    • 考慮關節摩擦非線性
    • 集成電力驅動系統模型

該仿真系統為研究柔性關節機械臂的控制提供了完整框架,通過更換控制器函數可比較不同控制策略的性能,為實際系統設計和調試提供理論依據。

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

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

相關文章

數據結構—隊列和棧

1.二級指針的使用二級指針: 1. 在被調函數中,想要修改主調函數中的指針變量,需要傳遞該指針變量的地址,形參用二級指針接收。 2.指針數組的數組名是一個二級指針,指針數組的數組名作為參數傳遞時,可用二級指…

均線:從市場脈搏到量子計算的時空密碼

一部跨越百年的技術分析進化史,揭示金融市場的數學本質 引言:金融市場的永恒羅盤 在華爾街百年風云中,一個簡單的數學工具始終閃耀著智慧光芒——移動平均線(Moving Average)。從杰西利弗莫爾的手繪圖表到文藝復興科技的量子模型,均線系統完成了從經驗工具到科學框架的驚…

Python 通過Playwright+OpenCV破解滑動驗證碼 實例

由于公司最近需要對接某業務系統,涉及到部分數據需要提交至其它平臺業務系統,只有其它平臺賬戶,沒有接口,因此做此開發。首先通過OpenCV計算出驗證驗證碼滑塊距離,根據距離,使用 Playwright 利用滑動距離模…

山東省天地圖API申請并加載到QGIS和ArcGIS Pro中

目的:在QGIS/ArcGIS Pro中加載山東省不同時期的歷史影像1、申請API 山東省天地圖的API和國家天地圖的API不通用,需要單獨申請。 https://shandong.tianditu.gov.cn/ 打開本地服務資源找到影像的詳情頁 點擊申請地址按照下面的步驟一步一步來,…

qt窗口--02

文章目錄qt窗口--02QMessageBoxQColorDialogQFileDialogQFontDialogQInputDialog、結語很高興和大家見面,給生活加點impetus!!開啟今天的編程之路!! 作者:?( ‘ω’ )?260 我的專欄:qt&#…

Linux seLinux

Linux seLinux 1、什么是selinux,security enhanced linux–安全加強的linux。 是由美國國家安全局開發的以及歷史。selinux之前是基于自主存取控制方法DAC, 只要符合權限即可,通過suid和sgid特殊權限存在有一定的安全隱患, 甚至一…

Linux: NFS 服務部署與autofs自動掛載的配置

Linux: NFS 服務部署與autofs自動掛載的配置NFS(Network File System,網絡文件系統)是一種基于 TCP/IP 協議的網絡文件共享協議,允許不同主機在網絡中共享文件資源,實現跨主機的文件訪問與管理,…

【深度學習②】| DNN篇

0 序言 本文將系統介紹基于PyTorch的深度神經網絡(DNN)相關知識,包括張量的基礎操作、DNN的工作原理、實現流程,以及批量梯度下降、小批量梯度下降方法和手寫數字識別案例。通過學習,你將掌握DNN的核心概念、PyTorch實…

Xcode 26 如何在創建的 App 包中添加特定的目錄

功能需求 在某些情況下,我們需要將特定文件放在 Xcode 編譯鏈接后 App 包里的指定目錄中,比如將 AI 大模型相關文件放在它們對應名稱的目錄中: 正常情況下,Xcode 會將項目目錄中的所有文件都平鋪放到 App 包的根目錄里。那么,要如何形成上面這種文件目錄層級呢? 在本篇…

linux-系統性能監控

linux-系統性能監控一、cpu1.1 查看cpu的信息1.2 cpu性能指標1.3 編寫監控cpu使用率的腳本1.4 查找出使用cpu最高的10個進程二、內存2.1 查看內存信息2.2 交換(swap)分區2.2.1 查看交換分區的積極程度2.2.2 查看交換分區的大小2.2.3 管理交換分區2.3 編寫…

AgxOrin平臺JetPack5.x版本fix multi-cam race condition 補丁

本文包含三個針對NVIDIA Linux驅動程序的補丁修復: 多攝像頭競爭條件修復 在capture-ivc驅動中新增信號量機制,解決多攝像頭同時操作時的競爭條件問題(Bug 4425972)。主要修改包括在通道上下文結構中添加信號量,并在通道ID通知和取消注冊時進行信號量操作。 內存泄漏修復…

【Go】P3 Go語言程序結構

Go語言程序結構Go語言程序結構命名規則與編程慣例核心規則四種聲明語句詳解var聲明:變量聲明const聲明:常量聲明type聲明:類型定義func聲明:函數聲明簡短變量聲明(:)使用規則和限制指針:安全的內存地址操作基本概念和操…

【機器學習深度學習】知識蒸餾實戰:讓小模型擁有大模型的智慧

目錄 引言:模型壓縮的迫切需求 一、知識蒸餾的核心原理 1.1 教師-學生模式 1.2 軟目標:知識傳遞的關鍵 1.3 蒸餾損失函數 二、實戰:Qwen模型蒸餾實現 2.1 環境配置與模型加載 2.2 蒸餾損失函數實現 2.3 蒸餾訓練流程 2.4 訓練優化技…

基于MCP提示構建工作流程自動化的實踐指南

引言 在現代工作和生活中,我們經常被各種重復性任務所困擾——從每周的膳食計劃到代碼審查反饋,從文檔更新到報告生成。這些任務雖然不復雜,卻消耗了大量寶貴時間。MCP(Model Context Protocol)提示技術為解決這一問題…

apache-tomcat-11.0.9安裝及環境變量配置

一、安裝從官網上下載apache-tomcat-11.0.9,可以下載exe可執行文件版本,也可以下載zip版本,本文中下載的是zip版本。將下載的文件解壓到指定目錄;打開tomcat安裝目錄下“\conf\tomcat-users.xml”文件;輸入以下代碼,pa…

Java 大視界 -- Java 大數據機器學習模型在電商用戶生命周期價值評估與客戶關系精細化管理中的應用(383)

Java 大視界 -- Java 大數據機器學習模型在電商用戶生命周期價值評估與客戶關系精細化管理中的應用(383)引言:正文:一、電商用戶運營的 “糊涂賬”:不是所有客戶都該被討好1.1 運營者的 “三大錯覺”1.1.1 錯把 “過客…

豆包新模型與PromptPilot工具深度測評:AI應用開發的全流程突破

目錄引言一、豆包新模型技術解析1.1 豆包新模型介紹1.2 核心能力突破1.2.1 情感交互能力1.2.2 推理與編碼能力二、PromptPilot工具深度測評2.1 PromptPilot介紹2.2 工具架構與核心功能2.3 一個案例講通:市場調研報告2.3.1 生成Prompt2.3.2 批量集生成2.3.3 模擬數據…

【代碼隨想錄day 12】 力扣 144.145.94.前序遍歷中序遍歷后序遍歷

視頻講解:https://www.bilibili.com/video/BV1Wh411S7xt/?vd_sourcea935eaede74a204ec74fd041b917810c 文檔講解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E%86.html#%E5%85%B6%E4%BB%96%E8%A…

【Unity】 HTFramework框架(六十七)UDateTime可序列化日期時間(附日期拾取器)

更新日期:2025年8月6日。 Github 倉庫:https://github.com/SaiTingHu/HTFramework Gitee 倉庫:https://gitee.com/SaiTingHu/HTFramework 索引一、UDateTime可序列化日期時間1.定義UDateTime字段2.日期拾取器(編輯器)3…

Docker的安裝,服務器與客戶端之間的通信

目錄 1、Docker安裝 1.1主機配置 1.2apt源的修改 1.3apt安裝 2、客戶端與服務端通信 2.1服務端配置 2.1.1創建鏡像存放目錄 2.1.2修改配置文件 2.2端口通信 2.3SSH連接 2.3.1生成密鑰 2.3.2傳輸密鑰 2.3.3測試連接 1、Docker安裝 1.1主機配置 我使用的兩臺主機是…