1. Trang chủ
  2. » Luận Văn - Báo Cáo

HD3 nguyễn văn trường nghiên cứu thiết kế pendubot sử dụng bộ điều khiển thích nghi thông minh

153 91 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 153
Dung lượng 10,98 MB

Nội dung

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CƠ KHÍ - - ĐỒ ÁN TỐT NGHIỆP Nghiên cứu thiết kế Pendubot sử dụng điều khiển thích nghi thơng minh Giáo viên hướng dẫn: T.S Nguyễn Văn Trường Sinh viên thực hiện: Mai Tuấn Anh 2018600921 Giáp Hải Bình 2018604533 Vũ Xuân Thắng 2018604983 Nguyễn Trọng Vũ 2018502588 Hà Nội - 2022 BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CƠ KHÍ - - ĐỒ ÁN TỐT NGHIỆP Nghiên cứu thiết kế Pendubot sử dụng điều khiển thích nghi thơng minh Giáo viên hướng dẫn: T.S Nguyễn Văn Trường Sinh viên thực hiện: Mai Tuấn Anh 2018600921 Giáp Hải Bình 2018604533 Vũ Xuân Thắng 2018604983 Nguyễn Trọng Vũ 2018602588 Hà Nội - 2022 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN GIÁO VIÊN HƯỚNG DẪN NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN GIÁO VIÊN PHẢN BIỆN MỤC LỤC MỤC LỤC I DANH MỤC HÌNH ẢNH IV DANH MỤC BẢNG BIỂU IX DANH MỤC TỪ VIẾT TẮT XI LỜI CẢM ƠN XII LỜI MỞ ĐẦU CHƯƠNG 1: GIỚI THIỆU CHUNG 1.1 Lịch sử nghiên cứu 1.2 Các vấn đề đặt 1.3 Đối tượng nghiên cứu 1.4 Mục tiêu nghiên cứu đề tài 1.5 Phương pháp thực 1.6 Dự kiến kết đạt CHƯƠNG 2: TỔNG QUAN VỀ HỆ THỐNG 2.1 Mơ hình hóa hệ thống pendubot 2.1.1 Mơ hình hóa 2.1.2 Xác định thông số 2.1.3 Sơ đồ giải thuật điều khiển Pendubot 2.2 Giới thiệu phương pháp điều khiển trượt 2.3 Giới thiệu điều khiển trượt nhanh đầu cuối không kỳ dị (NFTSM) 2.3.1 Giới thiệu 2.3.2 Bộ điều khiển NFTSM 10 2.4 Giới thiệu phương pháp điều khiển mờ 14 2.4.1 Giới thiệu điều khiển mờ loại 14 2.4.2 Giới thiệu điều khiển mờ loại 15 2.5 Giới thiệu đại số gia tử 16 i 2.5.1 Đại số gia tử 16 2.5.2 Giải toán mờ nội suy đại số gia tử 20 2.5.3 Ứng dụng giải thuật di truyền để xác định thông số tối ưu cho điều khiển 22 2.6 Giới thiệu học tăng cường 23 2.6.1 Giới thiệu chung 23 2.6.2 Các thuật ngữ thông dụng 24 2.6.3 Khai thác khám phá 28 2.6.4 Phương pháp học sách xác định sâu (Deep deterministic policy gradient) 28 CHƯƠNG 3: THIẾT KẾ BỘ ĐIỀU KHIỂN MƠ HÌNH PENDUBOT 31 3.1 Thiết kệ điều khiển trượt nhanh đầu cuối không kỳ dị (NFTSM) 31 3.1.1 Thiết kế điều khiển NFTSMC 31 3.1.2 Thiết kế điều khiển NFTSMC bù hệ số 35 3.1.3 Thiết kế điều khiển NFTSMC bù nhiễu 41 3.2 Thiết kệ điều khiển mờ loại trượt 48 3.2.1 Thiết kế luật điều khiển trượt phân cấp 48 3.2.2 Thiết kế điều khiển mờ loại trượt 51 3.2.3 Mô matlab đánh giá 59 3.3 Thiết kế điều khiển đại số gia tử dựa lý thuyết mờ tối ưu tham số giải thuật di truyền 66 3.3.1 Xác định tham số định lượng giá trị ngôn ngữ 66 3.3.2 Bộ điều khiển Swing up 69 3.3.3 Bộ điều khiển Balancing 72 3.3.4 Chứng minh tính ổn định 74 3.3.5 Mô đánh giá hệ thống 78 3.4 Thiết kế điều khiển dựa phương pháp học tăng cường 84 3.4.1 Xây dựng mơ hình tốn học cho điều khiển (Agent) 84 3.4.2 Chứng minh ổn định điều khiển 86 ii 3.4.3 Mơ hình hố điều khiển kết 86 3.5 So sánh kết mô 91 CHƯƠNG 4: THIẾT KẾ MƠ HÌNH THỬ NGHIỆM VÀ ĐÁNH GIÁ HỆ THỐNG .93 4.1 Thiết kế hệ thống khí 93 4.1.1 Các phần tử hệ thống khí: 93 4.2 Thiết kế hệ thống điện điều khiển 94 4.2.1 Các phần tử hệ thống: 94 4.2.2 Sơ đồ kết nối 97 4.3 Kết thử nghiệm mơ hình thực tế 98 4.3.1 Bộ điều khiển mờ loại hai kết hợp với trượt 98 4.3.2 Bộ điều khiển HAC 100 4.3.3 Bộ điều khiển trượt đầu cuối không kỳ dị kết với mờ 101 4.3.4 So sánh điều khiển: 102 4.4 Đánh giá hạn chế 103 DANH MỤC TÀI LIỆU THAM KHẢO 104 PHỤ LỤC 106 iii Output3=I3s; Output4=I4s; %Send value to output: OutPort block.OutputPort(1).Data = Output1; block.OutputPort(2).Data = Output2; block.OutputPort(3).Data = Output3; block.OutputPort(4).Data = Output4; FUZZY type2: %convert to type t2fis = convertToType2(t1fis); %define the FOU scale2=[k1 k2 k3 k4]; scale = [k5 k6 k7 k8]; for j = 1:length(t2fis.Inputs(i).MembershipFunctions) t2fis.Inputs(i).MembershipFunctions(j).LowerLag = scale2(i,j); t2fis.Inputs(i).MembershipFunctions(j).LowerScale = scale(i,j); end plot the type input figure subplot(1,2,1) plotmf(t2fis,'input',1) title('Input 1') %t2 control surface figure gensurf(t2fis) title('Control surface of type-2 FIS') save fis writeFIS(t2fis) PHỤ LỤC CHƯƠNG TRÌNH ĐIỀU KHIỂN PENDUBOT /* Includes */ #include "main.h" #include "stm32f4xx_hal.h" /* Private variables -*/ TIM_HandleTypeDef htim2; TIM_HandleTypeDef htim5; TIM_HandleTypeDef htim7; TIM_HandleTypeDef htim8; /* Private function prototypes -*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_TIM5_Init(void); static void MX_TIM8_Init(void); static void MX_TIM7_Init(void); static void MX_TIM2_Init(void); /* USER CODE BEGIN */ // khai bao cac bien #define pi 3.14159265 int xung_en1=0; int xung_en2=0; double q1_dot = 0; double q2_dot = 0; double q1 ; double q2 ; double beta1 = 0.0101; double beta2 = 0.0084; double beta3 = 0.003; double beta4 = 0.0509; doublE beta5 = 0.0195; double g = 9.871; // khai bao cac ham double abs_f(double gia_tri) { if(gia_tri0) return 1; else if(giatria&&valueb&& valuea&&value=b&&valuec&& value15) usb=15; if (usb24) UV=24; if (UV15) usb=15; if (usb24) UV=24; if (UV, double k3=(0.120+0.138)*2.26*1.09/1.66; //0.383//0.120+0.138)*2.26*1.09/1.66 double k4=(0.1 +0.02)/1.1; // 0.1091 double us=0.5; double ue=0.5; double lamda1=0.7;// goc xuong double G=48.7; //42.8//45.5//48.7 x1 = -q1; x2 = x1-q2; x3 = -q1_dot*2; x4 = -q1_dot*2-q2_dot*2; double u_swing=G*(lamda1*(us*tanh(k1*x1)+(1-us)*tanh(k2*x3)) ; double kphi=0.18; double R=0.09; double UV= R/kphi)*u_swing; temp5=UV; if (UV>24) UV=24; if (UV0&&q10.25&&flag==5) flag=4; if(abs_f(q1)0&&q10.25&&flag==5) flag=4; if(abs_f(q1)15) u_ballance=15; if (u_ballance24) UV=24; if (UV4){flag =100; TIM8->CCR1=0;temp6=1;} } void HAC() { if(flag==1) Swing_up(); if(abs_f(q1)CCR1=0;temp6=1;} } void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance==htim7.Instance) { temp1++;temp2++; xung_en1 = (TIM2->CNT); xung_en2 = (TIM5->CNT); q1 = (xung_en1)*0.00392699-pi; q2 = xung_en2*0.0026171215; tempq1=q1+pi/2; tempq2=q2; tempq1_dot=q1_dot; tempq2_dot=q2_dot; if(temp1>count_tim) //3 { temp1=0; q1_dot = (xung_en1 - xung_dem_dc1)*0.003927/0.04; q2_dot = (xung_en2 - xung_dem_dc2)*0.002617/0.04; xung_dem_dc1=xung_en1; xung_dem_dc2=xung_en2; if(set_flag==0) HAC(); if(set_flag==1) FSMC(); if(set_flag==2) FSMC_bn(); if(set_flag==3) FSMC2(); if(q1CCR1=0;temp6=1;} if(q1>6){flag =100; TIM8->CCR1=0;temp6=1;} } } } void SetMode() { if(HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_3)==1) set_flag=1; if(HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_4)==1) set_flag=2; if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_10)==1) set_flag=3; if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_11)==1) set_flag=4; } /* USER CODE END */ int main(void) { /* Reset of all peripherals, Initializes the Flash interface and the Systick */ HAL_Init(); SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_TIM5_Init(); MX_TIM8_Init(); MX_TIM7_Init(); MX_TIM2_Init(); /* USER CODE BEGIN */ HAL_TIM_Base_Start_IT(&htim7); //HAL_TIM_Base_Start_IT(&htim6); HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_1); HAL_TIM_Encoder_Start(&htim2,TIM_CHANNEL_1|TIM_CHANNEL_2); HAL_TIM_Encoder_Start(&htim5,TIM_CHANNEL_1|TIM_CHANNEL_2); flag=1; /* USER CODE END */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { if(set_flag==0) SetMode(); } ... tâm người nghi? ?n cứu điều khiển tự động Với mong muốn nghi? ?n cứu luật điều khiển cho hệ thống Nhóm em chọn đề tài: ? ?Nghi? ?n cứu thiết kế Pendubot sử dụng điều khiển thích nghi thông minh? ?? CHƯƠNG...BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHI? ??P HÀ NỘI KHOA CƠ KHÍ - - ĐỒ ÁN TỐT NGHI? ??P Nghi? ?n cứu thiết kế Pendubot sử dụng điều khiển thích nghi thơng minh Giáo viên hướng dẫn: T.S Nguyễn. .. CHƯƠNG 3: THIẾT KẾ BỘ ĐIỀU KHIỂN MƠ HÌNH PENDUBOT 31 3.1 Thiết kệ điều khiển trượt nhanh đầu cuối không kỳ dị (NFTSM) 31 3.1.1 Thiết kế điều khiển NFTSMC 31 3.1.2 Thiết kế điều khiển NFTSMC

Ngày đăng: 11/06/2022, 17:55

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w