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

Báo cáo thiết kế hệ thống cơ Điện tử Đề tài robot giải mê cung và Đấu trường sumo

56 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Robot Giải Mê Cung Và Đấu Trường Sumo
Tác giả Đỗ Thành Tân, Nguyễn Văn Tân, Đỗ Xuân Thắng, Đỗ Chí Tâm
Người hướng dẫn TS. Lê Ngọc Trân
Trường học Trường Đại Học Công Nghiệp TP.HCM
Chuyên ngành Công Nghệ Cơ Khí
Thể loại Báo Cáo
Năm xuất bản 2023
Thành phố TP.HCM
Định dạng
Số trang 56
Dung lượng 12,35 MB

Nội dung

Phương án giải thuật để robot có thể thoát khỏi mê cung 1.1 Giới thiệu thuật toán tím kiếm theo chiều rộng BFS 1.1.1 Giới thiệu Thuật toán tìm kiếm theo chiều rộng BFS: là một thuật toán

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM

KHOA CÔNG NGHỆ CƠ KHÍ

TP.HCM, THÁNG 10 NĂM 2023

Trang 2

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM

KHOA CÔNG NGHỆ CƠ KHÍ

-   

-BÁO CÁO THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ Đề tài: Robot giải mê cung và đấu trường sumo Giảng viên hướng dẫn : TS Lê Ngọc Trân Sinh viên thực hiện : Đỗ Thành Tân 20087721

Nguyễn Văn Tân 20096381

Đỗ Xuân Thắng 20075041

Đỗ Chí Tâm 20086971

TP.HCM, THÁNG 10 NĂM 2023

Trang 3

NHẬN XÉT CỦA GIÁO VIÊN

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 4

Lời nói đầu

Thiết Kế Hệ Thống Cơ Điện Tử là nội dung không thể thiếu với chương trình đào tạo kĩ sư cơ điện tử nhằm cung cấp cho sinh viên những kiến thức cơ sở

về kết cấu máy và các quá trình cơ bản khi thiết kế máy Trong quá trình học môn thiết kế hệ thống cơ điện tử nhóm em đã được làm quen với những kiến thức cơ bản về kết cấu máy, các bộ phận của máy và các tính năng cơ bản của các chi tiết máy thường gặp Thiết kế hệ thống cơ điện tử giúp chúng em hệ thống lại các kiến thức đã học và tìm hiểu sâu hơn về nó Thông qua việc hoàn thiện đồ án, em có thể

áp dụng được các kiến thức từ các môn học như: Chi tiết máy, Sức bền vật liệu, Vẽ

kỹ thuật, Dung sai kỹ thuật đo, Nguyên lý máy, Vi xử lý, Kỹ thuật số…

Nhân dịp trường có tổ chức “CUỘC THI ĐẤU TRƯỜNG ROBOT” Chúng

em quyết định tham gia và sử dụng sản phẩm cuộc thi làm báo cáo môn học

Do là lần đầu làm quen với công việc thiết kế hệ thống cơ điện tử,cùng với

sự hiểu biết còn hạn chế cho nên dù đã rất cố gắng tham khảo các tài liệu và bài giảng của các môn có liên quan song bài làm của sinh viên chúng em không thể tránh khỏi những sai sót Kính mong được sự hướng dẫn và chỉ bảo nhiệt tình của các thầy cô trong bộ môn giúp cho những sinh viên như chúng em ngày càng tiến

bộ trong học tập Cuối cùng em xin chân thành cảm ơn các thầy trong bộ môn, đặc biệt là thầy Lê Ngọc Trân đã trực tiếp hướng dẫn, chỉ bảo tận tình để em có thể hoàn thành tốt nhiệm vụ được giao

Em xin chân thành cảm ơn!

Trang 5

CHƯƠNG I Tổng quan về cuộc thi đấu trường robot

1 Lợi ích của Robot trong lao động sản xuất

Hiện nay, việc sử dụng robot trong quy trình sản xuất mang lại nhiều lợi ích đối với các doanh nghiệp Dưới đây là một số lợi ích quan trọng của việc sử dụng robot trong sản xuất:

Tăng cường Năng Suất:

 Robot có khả năng làm việc liên tục 24/7 quá trình làm việc của robot thường nhanh chóng và chính xác, giảm thời gian sản xuất so với việc thực hiện bằng tay

Trang 6

 Mặc dù chi phí đầu tư ban đầu cho robot có thể cao, nhưng trong thời gian dài, chúng có thể giảm chi phí lao động và tăng tính cạnh tranh của doanh nghiệp.

Tăng Cường Khả Năng Đối Phó với Độ Phức Tạp:

 Robot có thể xử lý công việc phức tạp, lặp lại, và chi tiết mà con người có thể gặp khó khăn hoặc mệt mỏi khi thực hiện

Để giúp sinh viên dễ dáng tiếp cận hơn trường đã tạo ra CUỘC THI ĐẤU TRƯỜNG ROBOT nhằm tạo sân chơi trí tuệ sáng tạo, là dịp để các bạn trẻ tiếp cận, là nơi giao lưu, học tập, nâng cao kiến thức cũng như phát huy tính sáng tạo trong nghiên cứu, học tập và lao động chuẩn bị hành trang cho cuộc cách mạng công nhiệp lần thứ 4

2 Giới thiệu về cuộc thi “ Đấu trường Robot ”

Tên gọi: Cuộc thi “Đấu trường Robot” năm 2023

Đối tượng tham gia: Là sinh viên đang theo học tại các trường Đại học, Cao đẳng,

Học viện trên địa bàn Thành phố Hồ Chí Minh

Đơn vị tổ chức: Trường đại học Công Nghiệp thành phố Hồ Chí Minh

Tóm tắt thể lệ thi đấu:

Các đội tối đa 5 thành viên sẽ thi đấu robot với nhau gồm 2 phần Phần đầu là thi thoát khỏi mê cung Phần 2 là thi đấu Sumo Một đội chỉ được dùng một Robot ở chế

độ tự động cho cả 2 vòng thi.Ở phần thi thoát khỏi mê cung, Robot không thoát khỏi được mê cung sau 2 lần thi sẽ bị loại Robot thoát được mê cung trong 2 lần

Trang 7

thi đấu sẽ được vào vòng 2 Kết quả tốt nhất trong 2 lần sẽ được ghi nhận cho Robot.

Ở phần 2, các Robot thi đấu với nhau dựa trên cuộc thi Sumo của người Nhật Các Robot không được phép sử dụng vũ khí và không được phép lật đổ lẫn nhau Nhiệm vụ duy nhất của Robot trong trận đấu là đẩy Robot đội khác ra khỏi vòng tròn của sân thi đấu

Cuộc thi giải mã mê cung

Hỉnh ảnh cuộc thi đấu trường sumo

Trang 8

CHƯƠNG II Tổng hợp lưu đồ giải thuật và thiết kế thuật toán cho

robot giải mê cung và robot sumo

1 Phương án giải thuật để robot có thể thoát khỏi mê cung

1.1 Giới thiệu thuật toán tím kiếm theo chiều rộng (BFS)

1.1.1 Giới thiệu

Thuật toán tìm kiếm theo chiều rộng (BFS): là một thuật toán tìm kiếm trong đồ

thị, được sử dụng để tìm kiếm đường đi từ một đỉnh bắt đầu đến một đỉnh đích trong đồ thị không có trọng số

Cách hoạt động của BFS như sau:

(1) Bắt đầu từ đỉnh bắt đầu, đánh dấu đỉnh này là “đã thăm” và thêm nó vào

hàng đợi

(2) Lặp lại các bước sau đó cho đến khi hàng đợi trống:

 Lấy một đỉnh từ đầu hàng đợi

 Kiểm tra xem đỉnh này có phải là đỉnh đích hay không Nếu có, thuật toán kết thúc và trả về đường đi từ đỉnh bắt đầu đến đỉnh đích

 Nếu không, thêm tất cả các đỉnh kề cận của đỉnh hiện tại mà chưa được thăm vào hàng đợi và đánh dấu chúng là “đã thăm”

(3) Nếu thuật toán không tìm thấy đỉnh đích sau khi đã thăm hết tất cả các

đỉnh có thể, nghĩa là không có đường đi từ đỉnh bắt đầu đến đỉnh đích

BFS đảm bảo tìm ra đường đi ngắn nhất từ đỉnh bắt đầu đến đỉnh đích trong trường

hợp đồ thị không có trọng số Nó duyệt qua các đỉnh theo cấp độ, tức là trước tiên

Trang 9

duyệt qua các đỉnh cách đỉnh bắt đầu 1 bước, sau đó duyệt qua các đỉnh cách đỉnh bắt đầu 2 bước và tiếp tục cho đến khi tìm thấy đỉnh đích hoặc đã thăm hết tất cả các đỉnh có thể

1.1.2 Lưu đồ thuật toán

1.2 Giới thiệu thuật toán tìm kiếm theo chiều sâu DFS

1.2.1 Giới thiệu

Trang 10

Thuật toán tìm kiếm theo chiều sâu (DFS) là một thuật toán tìm kiếm trong đồ

thị, được sử dụng để tìm kiếm đường đi từ một đỉnh bắt đầu đến một đỉnh đích trong một đồ thị không có trọng số

Cách hoạt động của DFS:

(1) Bắt đầu từ đỉnh bắt đầu, đánh dấu đỉnh này là “đã thăm” và thực hiện

các hành động liên quan đến đỉnh này

(2) Lặp lại các bước sao cho tất cả các đỉnh kề cận của đỉnh kề cận của đỉnh

hiện tại mà chưa được thăm:

 Chọn một đỉnh kề cận chưa được thăm

 Đánh dấu đỉnh này là “đã thăm” và thực hiện các hành động liên quanđến đỉnh này

 Tiếp tục thực hiện DFS từ đỉnh này

(3) Nếu không còn đỉnh kề cận nào chưa được thăm, quay lại đỉnh trước đó

và tiếp tục lặp lại bước 2 cho các đỉnh kề cận khác chưa được thăm

(4) Nếu đã thăm hết tất cả các đỉnh có thể mà không tìm thấy đỉnh đích,

thuật toán kết thúc và không có đường đi từ đỉnh bắt đầu đến đỉnh đíchDFS thường được thực hiện bằng cách sử dụng đệ quy hoặc stack để lưu trữ các đỉnh cần thăm Nó khám phá một nhánh của đồ thị càng sâu càng tốt trước khi quay và khám phá các nhánh khác

1.2.2 Lưu đồ giải thuật

Trang 11

1.3 Sử dụng DFS và BFS để giải mê cung

Trang 12

1.2 Xây dựng lưu đồ giải thuật robot giải mê cung

1.2.1 Khai báo mê cung

Trang 13

Khai báo mê cung:

a Thuộc tính

(1) Walls: Một danh sách bốn phần tử biểu diễn tường xung quanh ô, mỗi phần tử

là một giá trị Boolean, nếu True thì có tường và False thì không có tường, thứ tự các phần tử biểu diễn lần lượt là tường phía Bắc, Đông, Nam, Tây của ô

(2) Position: Một danh sách 2 phần tử biển diễn vị trí của ô trong mê cung, phần

tử đầu tiên là tọa độ x (hàng), phần tử thứ hai là tọa độ y (cột)

(3) Visited: Một giá trị bool biểu diễn việc ô đó đã được khám phá hay chưa, nếu True thì ô đã được khám phá và ngược lại False thì ô chưa được khám phá

b Phương thức

(1) Thiết lập thông tin ô (set_position, set_walls, set_visited)

(2) can_move_to: kiểm tra xem có thể di chuyển tử ô này đến ô khác hay không

(hai ô liền kề có liên kề nhau không và không có tường giữa chúng)

Khai báo Robot:

a Thuộc tính

(1) Location: Một đối tượng Location biểu diễn vị trí hiện tại của Robot trong

mê cung

(2) Parent: Một đối tượng State biểu diễn trạng thái trước đó của RoBot Điều

này giúp ta truy vết ngược lại đường đi từ trạng thái hiện tại đến trạng thái bắt đầu

(3) Action: Một số nguyên biễu diễn hành động mà robot đã thực hiện để di

chuyển từ trạng thái parent đến trạng thái hiện tại Giá trị của Action có thể là 0

(không quay), 1 (quay phải), 2 (quay đầu), 3 (quay trái) hoặc -1 là hành động rỗng

Trang 14

(4) Cur_dir: một số nguyên biểu diễn hướng hiện tại của Robot

Trang 15

1.2.3 Lưu đồ tìm đường đi ngắn nhất với thuật toán BFS

2 Phương án giải thuật cho đấu trường Sumo

2.1 Lưu đồ giải thuật Robot Sumo

Trang 16

3 Mô phỏng thuật toán 3.1 Phần mềm mô phỏng

Giao diện chính phần mềm:

Trang 17

1 Khu vực quan sát: mô phỏng cách di chuyển của Robot trong mê cung

2 Khu vực điều khiển cơ bản (Controls):

- Build: Kiểm tra lỗi của đoạn mã hiện tại được nạp trong phần mềm

- Run: chạy mô phỏng

3 Khu vực nạp chương trình (Config)

- Maze: chọn đường dẫn file mô tả mê cung

- Mouse: chọn đường dẫn file chứa mã chương trình robot tìm kiếm

đường đi trong mê cung

3.2 Mã chương trình Robot tìm đường đi ngắn nhất

Lựa chọn ngôn ngữ Python

1

2

3

Trang 18

(1) Định nghĩa class Location để lưu trữ thông tin về một ô trong mê cung Mã:

class Location :

self walls [ = False False False False , , , ]

self position [ , ] = - 1 - 1

self visited = False

if pos is not None :

self position [ 0 ] = pos [ 0 ]

self position [ 1 ] = pos [ 1 ]

self position [ 0 ] = pos [ 0 ]

self position [ 1 ] = pos [ 1 ]

self walls [ 0 ] = walls [ 0 ]

self walls [ 1 ] = walls [ 1 ]

self walls [ 2 ] = walls [ 2 ]

self walls [ 3 ] = walls [ 3 ]

self visited = vis

return ( loc position[ 0 ] == self position [ 0 ] and loc position[ 1 ] - self position [ 1 ] == + 1 and not self walls [ 0 ])\

( or loc position[ 1 ] == self position [ 1 ] and loc position[ 0 ] - self position [ 0 ] == + 1 and not self walls [ 1 ])\

( or loc position[ 0 ] == self position [ 0 ] and loc position[ 1 ] - self position [ 1 ] == - 1 and not self walls [ 2 ])\

( or loc position[ 1 ] == self position [ 1 ] and loc position[ 0 ] - self position [ 0 ] == - 1 and not self walls [ 3 ])

(2) Đinh nghĩa class State để lưu trữ trạng thái của Robot trong mê cung

Mã:

import location

Trang 19

class State :

self location = loc

self cur_dir = cur_dir

self location = loc

self parent = par

self action = act

self cur_dir = cur_dir

return self location position == [ , ] 7 7 or self location position == [ , ] \ 7 8

or self location position == [ , ] 8 7 or self location position == [ , ] 8 8

Trang 20

maze [[ = location Location ([ , i j ]) for j range ( 0 MAZE_WIDTH )] for in range ( 0

cur_position [ 0 ] = cur_position [ 0 ] - move_direction

global cur_direction

cur_direction ( = cur_direction + turn_direction ) % 4

walls [ = False False False False , , , ]

walls [ cur_direction ] = API wallFront ()

walls cur_direction [( ) ] + 1 % 4 = API wallRight ()

walls cur_direction [( ) ] + 2 % 4 = False

API setColor ( pos [ 0 ], pos [ 1 ], "G" )

API setText ( pos [ 0 ], pos [ 1 ], "hit" )

if pos is None :

pos = cur_position

API setColor ( pos [ 0 ], pos [ 1 ], "B" )

API setText ( pos [ 0 ], pos [ 1 ], "Sol" )

if pos is None :

Trang 21

def log ( string ):

sys stderr write ( {} \n" format ( string )) sys stderr flush ()

return

if _dir == ( cur_direction ) : + 2 % 4 turn_right ()

turn_right ()

return

Trang 22

turn_left ()

return

_dir = cur_direction

if cur_position [ 0 ] == loc position[ 0 ]:

if cur_position [ 1 ] - loc position[ 1 ] == : 1

cur_loc = maze [ cur_position [ 0 ]][ cur_position [ 1 ]]

if not cur_loc visited :

cur_loc set_visited ( True )

cur_loc set_walls ( get_walls ())

Trang 23

set_dir (( dir_stack get () ) ) + 2 % 4

move_forward ()

dfs_map_maze ()

return

next_loc = loc_stack get ()

if not next_loc visited:

loc_stack put ( next_loc )

set_dir (( dir_stack get () ) ) + 2 % 4

move_forward ()

for i in range ( 0 , MAZE_HEIGHT ):

for j in range ( 0 , MAZE_WIDTH ):

maze [ i ][ ] j visited = False;

first_state = state State ( maze [ 0 0 ][ ])

frontier put ( first_state )

while not frontier empty ():

next_state = frontier get ()

maze [ next_state location.position[ ]][ 0 next_state location.position[ ]].set_visited( 1 True ) mark_bfs_api ( next_state location.position)

if next_state is_goal():

return next_state

my_loc = next_state location

if not my_loc walls[ ]: 0

north_loc = maze [ my_loc position[ ]][ 0 my_loc position[ 1 ] ] + 1

if not my_loc walls[ ]: 1

east_loc = maze [ my_loc position[ 0 ] + 1 ][ my_loc position[ 1 ]]

if not my_loc walls[ ]: 2

south_loc = maze [ my_loc position[ ]][ 0 my_loc position[ 1 ] ] - 1

if not my_loc walls[ ]: 3

west_loc = maze [ my_loc position[ 0 ] - 1 ][ my_loc position[ 1 ]]

if not my_loc walls[ 0 ] and my_loc can_move_to( north_loc ) and not north_loc visited:

Trang 24

if not my_loc walls[ 2 ] and my_loc can_move_to( south_loc ) and not south_loc visited:

south_state = state State ( south_loc next_state , , ( 2 - next_state cur_dir) , ) % 4 2 frontier put ( south_state )

if not my_loc walls[ 3 ] and my_loc can_move_to( west_loc ) and not west_loc visited:

west_state = state State ( west_loc next_state , , ( 3 - next_state cur_dir) , ) % 4 3 frontier put ( west_state )

while sol parent is not sol :

act_stack put ( sol action)

mark_bktrk_api ( sol location.position)

sol = sol parent

while not act_stack empty

act = act_stack get ()

Trang 25

CHƯƠNG III Lựa chọn thiết bị, xây dựng mô hình điều khiển

1 Tổng quan khối chức năng hệ thống robot giải mê cung và robot sumo

Với những chỉ tiêu về công nghệ và thống nhất các chức năng chính của robot ta tiến hành thiết kế và đưa ra sơ đồ khối chức năng và cấu tạo, hoạt động chitiết của từng khối như mô tả dưới đây:

Sơ đồ khối chức năng của hệ thống robot giải mê cung và robot sumo

2 Chi tiết các khối chức năng

2.1 Khối nguồn

2.1.1 Chức năng:

Trang 26

- Có nhiệm vụ cấp nguồn cho động cơ và toàn bộ mạch điện trên xe.

- Do đó tiêu chí của khối nguồn là phải tạo được công suất đủ lớn và có độ

2.1.2 Lựa chọn linh kiện:

Trang 27

Mạch ổn áp LM2596S nhận nguồn điện vào từ nguồn ngõ vào có thể có điện

áp cao hơn hoặc thấp hơn so với điện áp đầu ra mong muốn

Giao tiếp với Thiết bị Điều Khiển:

Trang 28

Mạch sử dụng một bộ điều khiển để giám sát điện áp đầu ra và điều chỉnh nguồn điện vào để duy trì một điện áp đầu ra ổn định.

Thiết Bị Điều Chỉnh Điện Áp:

Mạch LM2596S có một thiết bị điều chỉnh điện áp tích hợp, thường là một voltage reference (thiết bị tham chiếu điện áp) được xây dựng bên trong IC Nó giúp xác định điện áp đầu ra mong muốn

Cắt/Giảm Điện Áp:

Nếu điện áp đầu ra cao hơn điện áp mong muốn, bộ điều khiển giảm nguồn điện vào thông qua một chopper switch (bộ cắt sóng) tích hợp trong IC Điều này giúp giảm điện áp xuống đến mức mong muốn

2.2 Khối điều khiển động cơ

2.2.1 Chức năng

- Điều khiển hoạt động của động cơ, bao gồm việc điều chỉnh tốc độ, hướng di chuyển và các thao tác liên quan đến động cơ

- Bảo vệ động cơ trong các trường hợp ngắn mạch hay quá tải

2.2.2 Lựa chọn linh kiện

2.2.2.1 Động cơ DC GA25-370 ecoder giảm tốc 280 rpm

Ngày đăng: 27/12/2024, 11:31

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

TÀI LIỆU LIÊN QUAN