PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Công nghệ robot (http://www.picvietnam.com/forum/forumdisplay.php?f=50)
-   -   Cơ bản về bài toán động học cho robot di động 2D (http://www.picvietnam.com/forum/showthread.php?t=222)

falleaf 29-11-2005 11:56 AM

Cơ bản về bài toán động học cho robot di động 2D
 
Trích:

Trích:

Bài toán của bạn là bài toán dead-reckoning, bạn có thể tìm hiểu một số vấn đề về dead-reckoning.
Không biết bác falleaf có thể giải thích chút ít về giải thuật này không, mình có tìm trên mạng nhưng nhiều quá, mà tiếng anh của tui quá tệ nên không hiểu nổi.
Mong bác giúp dùm
Thuật toán tính toán rất đơn giản như sau:

Gọi vị trí đầu là X(0) = 0, Y(0) = 0, góc ban đầu của robot là theta(0) = 0.

Tại bước thứ k+1 sẽ được tính theo vị trí của bước thứ k như sau:

X(k+1) = X(k) + sin[theta(k)].U(k)

Y(k+1) = Y(k) + cos[theta(k)].U(k)

theta(k+1) = theta(k) + {U_R(k) - U_L(k)}/{b}

U(k) = [U_R(k) + U_L(k)]/2

Trong đó,

U_R(k) là quãng đường di chuyển của bánh xe bên phải (encoder đếm nhân với đường kính bánh xe nhân với PI ra quãng đường dịch chuyển của bánh phải). Tương tự U_L(k) của bánh trái.

b = khoảng cách 2 bánh xe.

X là toạ độ X của xe
Y là toạ độ Y của xe
theta là hướng của xe

Đây là bài toán động học thuận và ngược của robot di động 2 chiều, 2 bậc tự do mô hình NEWT. Hầu hết các bạn sinh viên đều làm robot theo mô hình này, nhưng không biết tên của nó.

falleaf 07-12-2005 11:16 PM

UMBmark
 
http://www.picvietnam.com/download/R....DH.061205.pdf

Các bạn có thể download tài liệu theo link trên.

Bài toán này xử lý hơi rắc rối tí, nhưng khi hiểu được nó rồi, thì với công cụ tính toán tôi cung cấp, các bạn có thể sử dụng một cách vô cùng dễ dàng.

Borenstein trình bày 81 trang về thuật toán này và chứng minh nó, tôi đọc và viết lại còn 13 trang, và nếu các bạn đọc để dùng, sau khi tôi gửi chương trình lên, các bạn chỉ việc bấm 1 nút là bài toán coi như giải quyết xong.

Tạm thời dành cho các bạn sinh viên học và nghiên cứu về robot di động. Nếu ai có hứng thú với bài giới thiệu này, muốn làm thực hành, các bạn cứ thảo luận trên diễn đàn, tôi sẽ giúp đỡ.

Chúc vui.

MC12 23-07-2006 08:02 AM

Tại sao ta không gắn 2 encoder độc lập 2 bên thành xe chứ không phụ thuộc vào động cơ nữa . Như vậy sai số do trượt tương đối giữa bánh xe với mặt đường bị loại bỏ . Nếu ta tỳ 2 bánh của encoder xuống đất bằng lò xo thì hầu như không bị trượt , như vậy sẽ chính xác hơn. lúc này khoảng cách 2 bánh xe thay bằng khoảng cách 2 bánh encoder . Như vậy có ảnh hưởng đến bài toán này không anh F ?
anh có đoạn code asm nào cho vấn đề này không post lên em tham khảo với ?
Khi trước làm Robot thi Robocon em đã có ý tưởng không sử dụng các sensor quang nên cũng đã thử cách này tuy nhiên em chỉ làm kiểu nghĩ gì làm nấy thôi chứ không có đúng bài bản như thế này : em làm kiểu cho 1 timer chạy và khi tràn nó gây ngắt , trong CT ngắt em đọc số xung 2 encoder(cũng đọc từ 2 timer đếm sự kiện ) và so sánh với nhau rồi tăng giảm vận tốc 2 động cơ bằng cách thay đổi thông số khi băm xung nhưng em chỉ làm mò mẫm thôi vì chưa xác định quan hệ giữa thông số điều chỉnh và sai lệch ...và em thất bại , hì hì , ở sân chơi Robocon ko cho phép em mạo hiểm, vì lợi ích của cả tập thể chứ không phải chỗ để cá nhân mình khám phá và em không có điều kiện theo đuổi cái này , nên vẫn còn ấm ức lắm ,đó cũng là hạn chế của robocon, nhiều khi vì tính hiệu quả mà dù không muốn ta cũng phải (bị)làm mặc dù không có gì hay về công nghệ .
À, mà bài toán có phụ thuộc hướng đặt robot ban đầu không ? ví dụ em kẻ 1 hình vuông , và Robot phải chạy theo hình vuông đó thì khi đặt Robot vào em nghĩ chưa thể xác định góc ban đầu được vì Robot chưa di chuyển . Vậy phải làm thế nào ?có thể Robot sẽ chạy đúng quỹ đạo hình vuông nhưng để theo hình vuông kẻ sẵn thì liệu có đúng không ?
Sorry anh vì có dính đến Robocon ở đây !!!

falleaf 23-07-2006 10:51 AM

Em hiểu sai bài toán rồi, bài toán này là dùng 2 encoder. Mặc dù có encoder, nhưng nếu bánh xe không quay, mà trượt trên sàn, như vậy, encoder không đọc được. Ngoài ra, việc điều khiển không đơn giản như em nghĩ.

Robocon không phải là cái mà anh gọi là robot.

Chúc vui

friends 25-07-2006 10:45 PM

giup em voi cac anh
 
cac anh, anh nao co so do mach cho pic16f876a (so do mach bat buoc cho con nay de no hoat dong), vi du nhu thach anh bao nhieu meg va mac nhu the nao...co the link cho em duoc khong?

ntc 26-07-2006 02:43 PM

Bạn post bài không đúng luồng rồi. Lần sau rút kinh nghiệm nhé. :)

Bạn qua luồng "Cơ bản về vi điều khiển và PIC". Trong đó có đó.

Có thể download cái tutorial trong luồng này để tham khảo thêm.

http://picvietnam.com/forum/showthread.php?t=238

Mặc dù đây là bài hướng dẫn cho PIC6F877A, nhưng PIC16F876A cũng có thể áp dụng tương tự.

tienminh 12-10-2006 09:58 PM

Bác F up lên chương trình "UMBmark Calculator" cho em tham khảo được không?cảm ơn bác nhiều.

falleaf 12-10-2006 11:13 PM

http://kho.tailieuvietnam.net/index....id=46&Itemid=2

Nó đã nằm trong kho Tài Liệu Việt Nam, keyword: UMBMark. thằng này hình như hồi đó F viết bằng .NET, chưa viết xong nhưng lười vứt đó, còn một đống nút niếc vẫn để đó.

tienminh 18-10-2006 11:50 PM

cảm ơn pác,nếu có thời gian pác đưa ra 1 giải pháp tổng thể cho mobile robot được thì tốt quá

falleaf 19-10-2006 12:11 AM

Đang tiến hành mua đồ chuẩn bị cho dự án Mobile Robot Base, có nghĩa là trang bị một số bánh xe, động cơ, các linh kiện và nguyên vật liệu cần thiết để chuẩn bị cho việc làm ra một cái khung robot nền.

Bao gồm:
- Khung để có thể chồng lên cao (giống như trong luận văn của F làm)
- Bánh xe được điều khiển bằng PID, mỗi bánh có một bộ điều khiển riêng, chạy riêng. Việc còn lại là nhận giá trị đặt qua giao tiếp I2C hoặc RS485, hoặc CAN (đang lựa chọn).
- Phần điện tử sẽ bao gồm một con dsp để thu thập dữ liệu cảm biến, và tất cả đều quy về chuẩn giao tiếp nhấn định, có thể làm dạng CAN là chuẩn nhất.
- Còn tất cả các cảm biến thì sẽ mỗi dạng sẽ có một module riêng.

tóm lại, mô hình chủ yếu sẽ là kiểu mô hình reactive ở mức độ sơ cấp.

Còn sau này khi kết hợp lại xử lý, thì tuỳ mỗi đề tài, mỗi dự án, sẽ tiến hành theo cách riêng.

Khi tiến hành dự án, sẽ cung cấp các thông tin chi tiết.

Chúc vui

tienminh 19-10-2006 12:17 AM

Em giúp dc bác cái gì không,đang rảnh

tienminh 19-10-2006 12:25 AM

Trích:

Nguyên văn bởi falleaf (Post 5602)
Đang tiến hành mua đồ chuẩn bị cho dự án Mobile Robot Base, có nghĩa là trang bị một số bánh xe, động cơ, các linh kiện và nguyên vật liệu cần thiết để chuẩn bị cho việc làm ra một cái khung robot nền.

Bao gồm:
- Khung để có thể chồng lên cao (giống như trong luận văn của F làm)
- Bánh xe được điều khiển bằng PID, mỗi bánh có một bộ điều khiển riêng, chạy riêng. Việc còn lại là nhận giá trị đặt qua giao tiếp I2C hoặc RS485, hoặc CAN (đang lựa chọn).
- Phần điện tử sẽ bao gồm một con dsp để thu thập dữ liệu cảm biến, và tất cả đều quy về chuẩn giao tiếp nhấn định, có thể làm dạng CAN là chuẩn nhất.
- Còn tất cả các cảm biến thì sẽ mỗi dạng sẽ có một module riêng.

tóm lại, mô hình chủ yếu sẽ là kiểu mô hình reactive ở mức độ sơ cấp.

Còn sau này khi kết hợp lại xử lý, thì tuỳ mỗi đề tài, mỗi dự án, sẽ tiến hành theo cách riêng.

Khi tiến hành dự án, sẽ cung cấp các thông tin chi tiết.

Chúc vui

-Về chuẩn giao tiếp bác nên chọn CAN
-Về thu thập dữ liệu CB thì dùng DSP là vung tay quá trán(không đến mức phải như thế) ,nếu CB là tương tự thì dùng ADC 12 bit là ổn,nếu CB là số thì dùng 1 con CPLD cỡ nhỏ (XC9536)cho nó linh động trong việc thay đổi giao tiếp .
-Về MCU thì dùng 1 con tầm tầm là đủ VD: PIC18,ATMEGA128,...

falleaf 19-10-2006 12:38 AM

Dự tính làm dsp vì còn phải làm các bộ lọc. Vì có một số cảm biến không phải là ADC thông thường lấy được.

Vẫn tiếp tục nghe ý kiến.

Chúc vui

odense 13-11-2006 03:54 AM

Trích:

Nguyên văn bởi falleaf (Post 1054)
Thuật toán tính toán rất đơn giản như sau:

Gọi vị trí đầu là X(0) = 0, Y(0) = 0, góc ban đầu của robot là theta(0) = 0.

Tại bước thứ k+1 sẽ được tính theo vị trí của bước thứ k như sau:

X(k+1) = X(k) + sin[theta(k)].U(k)

Y(k+1) = Y(k) + cos[theta(k)].U(k)

theta(k+1) = theta(k) + {U_R(k) - U_L(k)}/{b}

U(k) = [U_R(k) + U_L(k)]/2

Trong đó,

U_R(k) là quãng đường di chuyển của bánh xe bên phải (encoder đếm nhân với đường kính bánh xe nhân với PI ra quãng đường dịch chuyển của bánh phải). Tương tự U_L(k) của bánh trái.

b = khoảng cách 2 bánh xe.

X là toạ độ X của xe
Y là toạ độ Y của xe
theta là hướng của xe

Đây là bài toán động học thuận và ngược của robot di động 2 chiều, 2 bậc tự do mô hình NEWT. Hầu hết các bạn sinh viên đều làm robot theo mô hình này, nhưng không biết tên của nó.

Hi,
Dung day la ly thuyet co ban cua dead-reckoning nhung gio thi no da duoc nang cap rat nhieu cho mobile robots roi. Don gian vi interior sensors thi khong cho ket qua chinh xac vi vay can rat nhieu giai thuat va phuong phap khac nhau de lam dieu do.
SLAM la mot mang co rat nhieu kien thuc lien quan den van de nay. Hi vong Falleaf co nhung bai viet lien quan giup cac ban nang cap kien thuc de lam robots thong minh hon chu khong don thuan la line following nhu Robocon :))
Kalman or Particle fillers co the giup nang cap dead-reckoning cac ban a.

scentoflove 06-10-2007 01:09 PM

Hiện em đang làm mobile robot, 2 bánh xe đk riêng (pic18, giao tiếp i2c), 1 dspic trung tâm sử dụng RTOS, sensor sonar (giao tiếp i2c) và cam (nếu có thể). Nhiệm vụ là phát hiện được mục tiêu (xác định được khoảng cách, góc lệch) thì sẽ chạy tới và trên đường đi có thể tránh vật cản (tự chạy) hoặc chạy chính xác theo 1 lộ trình vẽ trước.
Em đang có 1 số thắc mắc:
_Encoder trên 2 bánh nên gắn sau động cơ (sai số trượt bánh) hay gắn ngoài sát bánh (sai số xe trượt) hay là tì trực tiếp lên bánh.
Em định xài đcơ ko hộp số, truyền động bằng đai. Em nghĩ chọn loại động phụ thuộc vào cách gắn encoder
_Nếu xe chạy theo lộ trình cố đình có thể sử dụng UMBmark như a nói, nhưng khi xe tự chạy sử dụng giải thuật gì để tránh vật cản (ngẫu nhiên). Các giải thuật pathfinding đa số là dựa vào 1 searh space có sẵn, trong khi bài toán của em ko xác định được (nếu ko có vật thì đi thẳng nhưng có vật cản ngẫu nhiên thì sẽ tránh và tiếp tục như vậy). Em xem trong phim một số dề tài làm rất hay mà ko biết kiếm như thế nào


Múi giờ GMT. Hiện tại là 12:23 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam