Cài đặt thuật toán xác định đƣờng đi cho Robot

Một phần của tài liệu Nghiên cứu một số phương pháp phát hiện biên và ứng dụng vào bài toán robot di chuyển dọc theo hành lang luận văn thạc sĩ (Trang 66 - 69)

Mô tả

Trong cuộc sống robot có thể giúp ta làm các công việc nặng nhọc, nguy hiểm cho sức khỏe ch ng hạn nhƣ trong các nhà máy hóa chất, nơi có nhiều chất phóng xạ. Những dây chuyền cần tự động hóa không thể thiếu

robot, đặc biệt robot có thể làm việc liên tục trong thời gian dài với độ chính xác cao.

Đối với ứng dụng này ta thiết kế robot di chuyển dọc theo hành lang bằng cách gắn thêm vào robot một camera để thu nhận hình ảnh, sau đó những hình ảnh này đƣợc gửi về máy tính phân tích và xử lý. Sau khi xử lý xong máy tính tìm đƣợc đƣờng đi và điều khiển robot di chuyển theo đƣờng đi này. Quá trình thu nhận ảnh và tìm đƣờng đi cho robot đƣợc lặp đi lặp lại cho đến khi robot đi đƣợc đến đích.

Do điều kiện về thời gian nên tôi chƣa kịp nghiên cứu để thiết kế robot thật vì vậy tôi sử dụng đoạn video clip để mô phỏng hành động di chuyển dọc theo hành lang của robot và thuật toán sẽ duyệt từng frame của đoạn video này cho đến khi kết thúc, ứng với mỗi frame thuật toán sẽ tiến hành thực hiện các bƣớc sau:

1. Xác định tọa độ robot (là tọa độ đƣợc xác định từ frame trƣớc) 2. Xác định biên dựa vào thuật toán Canny [3] [5] [6]

3. Xác định các đƣờng th ng Hough [7] [8] [9] [10] 4. Xác định tọa độ tiếp theo mà robot cần di chuyển tới 5. Di chuyển robot đến tọa độ mới

6. Quay lại bƣớc 2 cho đến khi đọc hết frame.

Ghi chú: Frame chính là hình ảnh ghi nhận tiếp theo của robot khi di chuyển sang vị trí mới.

Lưu đồ End. Đ S Begin img:=SelectFrameFromVideo(v) Canny(img) Lines:=HoughLine(img) Frame cuối cùng ? Video và độ dài bƣớc đi của robot

StartPosition(x,y) là tọa độ ban đầu của robot

NextPosition:= GetNextPosition(lines)

StartPosition.x = NextPosition.x StartPosition.y = NextPosition.y MoveRobotToPosition(StartPosition)

Thuật toán xác định đường đi

Input : Video, độ dài bƣớc đi của robot Output : Tọa đô robot cần di chuyển đến Procedure XacDinhDuongDi (v:Video) Begin

Var img : ImagePointer;

lines : array of StructLine; StartPosition: Point;

NextPosition: Point;

img := SelectFrameFromVideo(v);

StartPosition.x = {tọa độ x0 ban đầu của robot}; StartPosition.y = {tọa độ y0 ban đầu của robot};

While (img) Begin

Canny(img);

lines := HoughLine(img);

NextPosition := GetNextPosition (img,bƣớc đi,lines,StartPosition);

MoveRobotToPosition (NextPosition); StartPosition.x = NextPosition.x; StartPosition.y = NextPosition.y;

End; End.

Một phần của tài liệu Nghiên cứu một số phương pháp phát hiện biên và ứng dụng vào bài toán robot di chuyển dọc theo hành lang luận văn thạc sĩ (Trang 66 - 69)

Tải bản đầy đủ (PDF)

(81 trang)