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

(Đồ án hcmute) mô phỏng mô hình hệ thống lái thi sát hạch b2 trên phần mềm visual studio

121 11 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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHĨA LUẬN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT Ô TÔ MÔ PHỎNG MƠ HÌNH HỆ THỐNG LÁI THI SÁT HẠCH B2 TRÊN PHẦN MỀM VISUAL STUDIO n GVHD: ThS NGUYỄN THIỆN DINH SVTH: DƯƠNG QUỐC THẮNG HỒ HỮU NGHỊ S K L0 Tp Hồ Chí Minh, tháng 7/2022 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP n MƠ PHỎNG MƠ HÌNH HỆ THỐNG LÁI THI SÁT HẠCH B2 TRÊN PHẦN MỀM VISUAL STUDIO Khóa: 2018 Ngành: CƠNG NGHỆ KỸ THUẬT Ô TÔ SVTH: Dương Quốc Thắng 18145238 Hồ Hữu Nghị 18145184 GVHD: ThS Nguyễn Thiện Dinh TP.HCM – 7/2022 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập – Tự – Hạnh Phúc TP Hồ Chí Minh, ngày … tháng … năm 2022 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP TÊN ĐỀ TÀI: MÔ PHỎNG MÔ HÌNH HỆ THỐNG LÁI THI SÁT HẠCH B2 TRÊN PHẦN MỀM VISUAL STUDIO Họ tên sinh viên: Dương Quốc Thắng MSSV: 18145238 Hồ Hữu Nghị MSSV: 18145184 Ngành: Công nghệ kỹ thuật ô tô Lớp: 18145CL3A Nội dung thực đề tài: Nghiên cứu tổng quan Visual Studio - Nghiên cứu tổng quan Unity 3D - Mơ hình hóa hệ thống Unity 3D - Mơ tương đối hệ thống thi lái xe sát hạch B2 n - Các số liệu, tài liệu tham khảo: - Các giáo trình, tài liệu tham khảo Visual Studio - Các giáo trình, tài liệu tham khảo Unity 3D - Mơ hình thi lái xe sát hạch B2 Sản phẩm đề tài: thuyết minh đề tài upload ấn phẩm lên Google Drive Thời gian thực hiện: a Ngày bắt đầu: 14/03/2022 b Ngày hoàn thành: theo kế hoạch khoa ĐTCLC Tp.HCM, ngày 14 tháng 03 Trưởng ngành năm 2022 Giáo viên hướng dẫn Nguyễn Thiện Dinh i CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập – Tự – Hạnh Phúc TP Hồ Chí Minh, ngày … tháng … năm 2022 PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Họ tên sinh viên: Dương Quốc Thắng MSSV: 18145238 Hồ Hữu Nghị MSSV: 18145184 Ngành: Công nghệ kỹ thuật ô tô Lớp: 18145CL3A Giảng viên hướng dẫn: ThS Nguyễn Thiện Dinh ĐT: Tên đề tài: Mô mơ hình hệ thống lái thi sát hạch B2 phần mềm Visual Studio n NHẬN XÉT: Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm: …… ( Bằng chữ ) Tp.HCM, ngày 14 tháng 03 năm 2022 Giáo viên hướng dẫn Nguyễn Thiện Dinh ii CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập – Tự – Hạnh Phúc TP Hồ Chí Minh, ngày … tháng … năm 2022 PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN Họ tên sinh viên: Dương Quốc Thắng MSSV: 18145238 Hồ Hữu Nghị MSSV: 18145184 Ngành: Công nghệ kỹ thuật ô tô Lớp: 18145CL3A Giảng viên hướng dẫn: ThS Nguyễn Thiện Dinh ĐT: Tên đề tài: Mơ mơ hình hệ thống lái thi sát hạch B2 phần mềm Visual Studio NHẬN XÉT: n Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm: …… ( Bằng chữ ) Tp.HCM, ngày 14 tháng 03 năm 2022 Giáo viên hướng dẫn (Ký ghi rõ họ tên) iii LỜI CẢM ƠN Lời đầu tiên, chúng em xin chân thành cảm ơn quý Thầy Cơ giáo tận tình giảng dạy cho chúng em suốt trình học tập nghiên cứu trường Đại học Sư phạm kĩ thuật Thành phố Hồ Chi Minh Đặc biệt cảm ơn Thầy Nguyễn Thiện Dinh với đồng hành hướng dẫn tận tình suốt tháng để hồn thiện đề tài “Mơ mơ hình hệ thống lái thi sát hạch B2 phần mềm Visual Studio” Trong thời gian thực Nghiên cứu, thầy dành thời gian để sai lầm, rắc rối mà nhóm mắc phải Đồng thời hướng dẫn nhóm có hướng cho hướng nghiên cứu nhóm từ nhóm chúng em kịp thời sửa chữa, bổ sung thiếu sót hoàn thành tốt đồ án lần Tuy nhiên khả nhiều hạn chế, thời gian thực có hạn số lý khách quan khác nên chắn tránh khỏi sai sót Rất mong nhận thơng cảm góp ý quý thầy hội đồng để nhóm chúng em hồn thiện để tài cách hoàn chỉnh n Một lần chúng em xin bày tỏ lòng biết ơn sâu sắc tới quý thầy cô khoa, quý thầy cô môn, đặc biệt thầy giáo hướng dẫn - Thầy Nguyễn Thiện Dinh giúp đỡ chúng em hoàn thành tốt nghiên cứu khoa học nhóm Nhóm chúng em xin chân thành cảm ơn iv TÓM TẮT Ngày nay, xã hội không ngừng tiến tới công nghiệp hóa đại hóa bên cạnh ngành tô ngày phát triển vượt bậc trước Không từ công nghệ ứng dụng xe, công nghệ lắp ráp sản xuất xe mà số lượng xe sử dụng ngày tăng Do đó, kéo theo việc tham gia kì thi sát hạch để lấy B2 để tham gia giao thơng cách an tồn ngày nhiều người quan tâm Nhận thấy thực trạng đó, nhóm chúng em định thực đề tài “Mơ mơ hình hệ thống lái thi sát hạch B2 phần mềm Visual Studio” nhằm xây dựng mơ hình có tình tham khảo, dễ dàng tiếp cận đến với người thay phải ngồi trực tiếp xe rèn luyện kỹ lái xe Trong thời gian nghiên cứu thực đồ án, nhóm chúng em hồn thành nhiệm vụ mục tiêu đặt sau:  Cơ sở lý thuyết, cách khởi động vận hành Visual Studio n  Cơ sở lý thuyết, cách khởi động vận hành Unity, đặc biệt Unity 3D  Tiến hành xây dựng mơ hình mơ điều khiển xe phần mềm  Mô thành cơng mơ hình lái thi sát hạch B2 Unity 3D với tính chất vật lý thông số giống thực tế Hướng tiếp cận đến đề tài nhóm nghiên cứu sở lý thuyết, khởi tạo, vận hành khối, phần tử bên phần mềm từ xây dựng mơi trường cho khối vận hành bên Ngồi ra, dựa vào khối phần tử lập trình code cho chúng vận hành theo ý muốn người điều khiển, tạo luật lệ, cách tính điểm số thời gian thực thi nhằm giúp cho người điều khiển tự đánh giá Chúng em xin cảm ơn thầy Nguyễn Thiện Dinh dẫn tận tính giải đáp thắc mắc chúng em suốt trình thực đề tài, qua giúp chúng em hồn thành đề tài lần cách tốt v MỤC LỤC PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ii PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN iii LỜI CẢM ƠN iv TÓM TẮT v MỤC LỤC vi DANH MỤC HÌNH ix DANH MỤC BẢNG xiii CHƯƠNG 1: TỔNG QUAN 1.1 Mục đích đề tài 1.2 Thực trạng 1.2.1 Tình hình nước 1.2.2 Tình hình nước 1.3 Đối tượng phạm vi nghiên cứu n 1.3.1 Đối tượng nghiên cứu 1.3.2 Phạm vi nghiên cứu 1.4 Cách tiếp cận phương pháp nghiên cứu 1.4.1 Cách tiếp cận 1.4.2 Phương pháp nghiên cứu 1.5 Nội dung nghiên cứu 1.6 Các nội dung đề tài CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Phần mềm Visual Studio 2.1.1 Tổng quan Visual Studio (VS) 2.1.2 Thành phần Visual Studio 2.2 Phần mềm Unity 3D 2.2.1 Tổng quan Unity 2.2.2 Khởi động Unity 3D 2.2.3 Các thành phần Unity 3D vi 2.3 Các thi sa hình thực tế [2] [3] [4] 11 2.3.1 Bài 1: Xuất phát 12 2.3.1.1 Chuẩn bị ngồi vào xe 12 2.3.1.2 Các yêu cầu thi 12 2.3.1.3 Các trường hợp lỗi thi 13 2.3.2 Bài 2: Dừng xe nhường đường cho người 13 2.3.2.1 Các yêu cầu thi 13 2.3.2.2 Các trường hợp lỗi thi 14 2.3.3 Bài 3: Dừng xe khởi hành ngang dốc 15 2.3.3.1 Các yêu cầu thi 15 2.3.3.2 Các trường hợp lỗi thi 15 2.3.4 Bài 4: Qua vệt bánh xe đường hẹp vng góc 16 2.3.4.1 Các yêu cầu thi 16 2.3.4.2 Các trường hợp lỗi thi 17 2.3.5 Bài 5: Qua ngã tư có đèn tín hiệu điều khiển giao thơng 17 n 2.3.5.1 Các yêu cầu thi 17 2.3.5.2 Các trường hợp lỗi thi 18 2.3.6 Bài 6: Đường vòng quanh co 18 2.3.6.1 Các yêu cầu thi 18 2.3.6.2 Các trường hợp lỗi thi 19 2.3.7 Bài 7: Ghép xe dọc vào nơi đỗ 20 2.3.7.1 Các yêu cầu thi 20 2.3.7.2 Các trường hợp lỗi thi 21 2.3.8 Bài 8: Ghép xe ngang vào nơi đỗ 21 2.3.8.1 Các yêu cầu thi 21 2.3.8.2 Các trường hợp lỗi thi 22 2.3.9 Bài 9: Tạm dừng nơi có đường sắt chạy qua 22 2.3.9.1 Các yêu cầu thi 22 2.3.9.2 Các trường hợp lỗi thi 23 2.3.10 Bài 10: Thay đổi số đường 23 vii 2.3.10.1 Các yêu cầu thi 23 2.3.10.2 Các trường hợp lỗi thi 24 2.3.11 Bài 11: Kết thúc 24 2.3.11.1 Các yêu cầu thi 24 2.3.11.2 Các trường hợp lỗi thi 25 2.3.12 Bài thi phụ: Dừng xe nguy hiểm 25 CHƯƠNG 3: THIẾT KẾ VÀ MÔ PHỎNG 26 3.1 Thiết kế hệ thống 26 3.1.1 Chèn khối “xe” vào hệ thống 26 3.1.2 Xây dựng môi trường 29 3.1.3 Tạo viết code cho hệ thống hoạt động 33 3.2 Các thành phần hệ thống 36 3.2 Các phần quan trọng code 39 3.3 Thuật tốn mơ hệ thống 41 3.3.1 Lưu đồ thuật toán thi số 41 n 3.3.2 Lưu đồ thuật toán thi số 2, 3, 5, 43 3.3.3 Lưu đồ thuật toán thi số 44 3.3.4 Lưu đồ thuật toán thi số 45 3.3.5 Lưu đồ thuật toán thi số 10 46 3.3.6 Lưu đồ thuật toán thi 11 47 3.3.7 Lưu đồ thuật toán thi phụ 48 CHƯƠNG 4: XUẤT KẾT QUẢ VÀ SO SÁNH THỰC NGHIỆM 50 4.1 Cách sử dụng tính 50 4.2 Hoạt động hệ thống: 60 CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ 72 5.1 Kết luận 72 5.2 Kiến nghị 72 TÀI LIỆU THAM KHẢO 73 PHỤ LỤC 74 viii SS8.gameObject.SetActive(false); SS21.gameObject.SetActive(true); } if (other.gameObject.CompareTag("SS7")) { midtime = Time.time - starttime; if (midtime > 10) { HT.enabled = true; } other.gameObject.SetActive(false); SS9.gameObject.SetActive(false); SS22.gameObject.SetActive(true); SS10.gameObject.SetActive(true); n SS11.gameObject.SetActive(true); SS12.gameObject.SetActive(true); SS13.gameObject.SetActive(true); } if (other.gameObject.CompareTag("SS15")) { cl.enabled = false; A.enabled = false; B.enabled = false; C.enabled = false; D.enabled = false; E.enabled = false; F.enabled = false; G.enabled = false; other.gameObject.SetActive(false); 92 } if (other.gameObject.CompareTag("SS14")) { cl.enabled = true; SS26.gameObject.SetActive(true); if (clutch) { LoseTime(); if (lefttime == || lefttime % == 0) { A.enabled = false; B.enabled = false; C.enabled = false; D.enabled = false; n E.enabled = false; F.enabled = false; G.enabled = false; } if (lefttime == || lefttime % == 1) { A.enabled = true; } if (lefttime == || lefttime % == 2) { A.enabled = true; B.enabled = true; } if (lefttime == || lefttime % == 3) { 93 A.enabled = true; B.enabled = true; C.enabled = true; } if (lefttime == || lefttime % == 4) { A.enabled = true; B.enabled = true; C.enabled = true; D.enabled = true; } if (lefttime == || lefttime % == 5) { A.enabled = true; n B.enabled = true; C.enabled = true; D.enabled = true; E.enabled = true; } if (lefttime == || lefttime % == 6) { A.enabled = true; B.enabled = true; C.enabled = true; D.enabled = true; E.enabled = true; F.enabled = true; } if (lefttime == || lefttime % == 7) 94 { A.enabled = true; B.enabled = true; C.enabled = true; D.enabled = true; E.enabled = true; F.enabled = true; G.enabled = true; } if (A.enabled == true) { motorForce = 50; if (B.enabled == true) { n motorForce = 100; if (C.enabled == true) { motorForce = 250; if (D.enabled == true) { motorForce = 350; if (E.enabled == true) { motorForce = 200; if (F.enabled == true) { motorForce = 100; if (G.enabled == true) { 95 motorForce = 0; if (vertialInput > 0) { frontLeftWheelCollider.motorTorque = vertialInput * motorForce; frontRightWheelCollider.motorTorque = vertialInput * motorForce; } } if (vertialInput > 0) { frontLeftWheelCollider.motorTorque = vertialInput * vertialInput * motorForce; frontRightWheelCollider.motorTorque n motorForce; = } } if (vertialInput > 0) { frontLeftWheelCollider.motorTorque = vertialInput * vertialInput * motorForce; frontRightWheelCollider.motorTorque = motorForce; } } if (vertialInput > 0) { frontLeftWheelCollider.motorTorque = vertialInput * motorForce; 96 frontRightWheelCollider.motorTorque = vertialInput * motorForce; } } if (vertialInput > 0) { frontLeftWheelCollider.motorTorque = vertialInput * motorForce; frontRightWheelCollider.motorTorque = vertialInput * motorForce; } } if (vertialInput > 0) { frontLeftWheelCollider.motorTorque = vertialInput * motorForce; frontRightWheelCollider.motorTorque = vertialInput * motorForce; n } } if (vertialInput > 0) { frontLeftWheelCollider.motorTorque = vertialInput * motorForce; frontRightWheelCollider.motorTorque = vertialInput * motorForce; } } } } } private void OnTriggerExit(Collider other) { if (other.gameObject.CompareTag("SS2")) { 97 midtime = Time.time - starttime; if (midtime < 3) { L3.enabled = true; Esc.enabled = true; } } if(other.gameObject.CompareTag("SS13")) { midtime = Time.time - starttime; if (midtime < 3) { L9.enabled = true; n Esc.enabled = true; } } if (other.gameObject.CompareTag("SS10")) { midtime = Time.time - starttime; if (midtime < 3) { L6.enabled = true; L4.enabled = false; sum = sum - 5; UpdateScoreText(); } } if (other.gameObject.CompareTag("SS11")) 98 { if (Right.color == Color.green) { L7.enabled = false; } else { L7.enabled = true; sum = sum - 5; UpdateScoreText(); } other.gameObject.SetActive(false); } if (other.gameObject.CompareTag("SS12")) n { if (sum > 75) { Esc1.enabled = true; } } } private void OnCollisionEnter(Collision collider) { if (collider.gameObject.CompareTag("cube")) { L.enabled = true; sum = sum - 5; UpdateScoreText(); } 99 if (collider.gameObject.CompareTag("SS3")) { HT.enabled = false; HT1.enabled = true; Esc.enabled = true; } if (collider.gameObject.CompareTag("SS16")) { HT.enabled = false; HT1.enabled = true; Esc.enabled = true; L10.enabled = true; } } n private void OnCollisionExit(Collision collider) { if (collider.gameObject.CompareTag("cube")) { L.enabled = false; } } void UpdateScoreText() { scoreText.text = ""+sum; if (sum 0) { frontLeftWheelCollider.motorTorque = vertialInput * motorForce; frontRightWheelCollider.motorTorque = vertialInput * motorForce; } } else if (pushR) { NumberR.color = Color.yellow; n Number2.color = Color.white; Number1.color = Color.white; NumberN.color = Color.white; motorForce = 110; if (vertialInput < 0) { frontLeftWheelCollider.motorTorque = vertialInput * motorForce; frontRightWheelCollider.motorTorque = vertialInput * motorForce; } } else if (push2) { Number2.color = Color.yellow; Number1.color = Color.white; NumberR.color = Color.white; 103 NumberN.color = Color.white; motorForce = 500; if (vertialInput > 0) { frontLeftWheelCollider.motorTorque = vertialInput * motorForce; frontRightWheelCollider.motorTorque = vertialInput * motorForce; } } if (isBreaking) { frontRightWheelCollider.brakeTorque = breakForce; frontLeftWheelCollider.brakeTorque = breakForce; rearRightWheelCollider.brakeTorque = breakForce; rearLeftWheelCollider.brakeTorque = breakForce; n } else { frontRightWheelCollider.brakeTorque = 0; frontLeftWheelCollider.brakeTorque = 0; rearRightWheelCollider.brakeTorque = 0; rearLeftWheelCollider.brakeTorque = 0; } } private void HandleSteering() { currentsteerAngle = maxSteerAngle * horizontalInput; frontLeftWheelCollider.steerAngle = currentsteerAngle; frontRightWheelCollider.steerAngle = currentsteerAngle; } 104 private void UpdateWheels() { UpdateSingleWheel(frontLeftWheelCollider, frontLeftWheelTransform); UpdateSingleWheel(frontRightWheelCollider, frontRightWheelTransform); UpdateSingleWheel(rearLeftWheelCollider, rearLeftWheelTransformr); UpdateSingleWheel(rearRightWheelCollider, rearRightWheelTransform); } private void UpdateSingleWheel(WheelCollider wheelCollider, Transform wheelTransform) { Vector3 pos; Quaternion rot; wheelCollider.GetWorldPose(out pos, out rot); wheelTransform.rotation = rot; n wheelTransform.position = pos; } } 105 n

Ngày đăng: 20/11/2023, 06:22

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w