Tìm hiểu xe đa hướng sử dụng bánh omni
Trang 1Bài tiểu luận
chủ đề : tìm hiểu xe đa hướng sử dụng bánh omni
I - ứng dụng và giới thiệu về robot sử dụng bánh omni
Trên con đường tiến tới công nghiệp hóa, hiện đại hóa đất nước thì vấn đề phát triển khoa học kỹ thuật cao là mấu chốt hàng đầu, Với xu hướng giảm tối thiểu sức người
và tăng năng suất lao động đòi hỏi phải có nhiều trang thiết bị, nhiều dây chuyền tự động hóa, lấy sức máy móc thay thế sức người….
Để đáp ứng nhu cầu này, chắc chắn cần phải nghiên cứu phát triển các thiết bị tự động để phục vụ cho các nhà máy, xí nghiệp hay sản xuất nông nghiệp… Trong đó Robot là một lĩnh vực mới mà ở nước ta đang nghiên cứu và từng bước chế tạo để ứng dụng vào quá trình sản xuất góp phần nâng cao năng suất lao động Việc nghiên cứu và chế tạo robot nhằm đáp ứng vào nhu cầu thực tế của các dây chuyền sản xuất là rất cần thiết
Việc xây dựng các chương trình hoạt động cho các robot là điều thiết yếu đặc biệt đối với các robot di động Bài toán robot di động bằng bánh xe (Ominidirectional mobile robot – OMR)
được sự quan tâm lớn của nhiều người trong những năm gần đây, vì chúng được ứng dụng rộng rãi trong các ngành khác nhau như công nghiệp, nông lâm nghiệp, y
tế, dịch vụ … do khả năng di chuyển linh hoạt.
Khác với loại robot di động sử dụng bánh truyền thống, robot di động sử dụng bánh
đa hướng (gọi tắt là robot di động đa hướng) có những ưu điểm vượt trội như: khả năng thay đổi vị trí và định hướng linh hoạt, độ chính xác cao , bởi vì chúng có khả năng dịch chuyển và quay đồng thời hoặc độc lập, vì vậy robot di động đa
hướng đã thu hút được nhiều sự chú ý hơn Trong kỹ thuật điều khiển chuyển động của OMR, vấn đề bám quỹ đạo và tác động nhanh là rất cần thiết Có nhiều phương pháp điều khiển rô bốt nhưng có rất ít công trình nghiên cứu dùng điều khiển trượt cho rô bốt đa hướng.
Robot sử dụng bánh omni có thể di chuyển theo bất kỳ hướng nào,ở bất kỳ góc nào
Trang 2Vì có khả năng như vậy nên robot omni có khả năng tiết kiệm năng lượng so với robot sử dụng bánh xe thông thường
Để thực hiện khả năng di chuyển đó,robot omni phải có 3 bậc tự do trong mặt phẳng di chuyển (mp xoy),gồm: di chuyển độc lập theo các trục x,y và xoay theo trục z.
Do đó cần tối thiểu 3 bánh omni với các động cơ điều khiển độc lập,vì mỗi động cơ cho khả năng điều khiển một bậc tự do.
Hình 1: Khả năng di chuyển của robot omni.
Để robot di chuyển đa hướng, cần sử dụng một loại bánh đặc biệt Gồm một bánh lớn và các bánh con có trục theo phương tiếp tuyến với bánh lớn và vuông góc với trục bánh lớn Nhờ đó bánh omni có thể di chuyển theo phương song song với trục.
Trang 3Hình 2:Một số loại bánh omni
Hình 3:Robot sử dụng bánh omni
II- mô hình hóa robot
Trang 4Hình 4: Mô hình robot omni
1.mô hình động học
Robot gồm có ba bánh xe đa hướng cách đều góc 120° Ba bánh xe đa hướng có cùng bán kính r và được đều động bởi các động cơ DC Tâm dịch chuyển của
OMR đặt tại C và giả định trùng với tâm hình học. L là khoảng cách từ tâm bánh xe đến điểm C OXY là hệ tọa độ tham chiếu toàn cục, CX 0Y0 là hệ tọa độ tham chiếu cục bộ, gắn liền với OMR Vị trí của OMR trong hệ tọa độ tham chiếu toàn cục
được xác định bởi tọa độ X , Y và góc lệch Φc giữa hai hệ tọa độ toàn cục và cục bộ, nghĩa là vị trí của OMR trong hệ tọa độ tham chiếu toàn cục được xác định bởi véc
tơ q = [ x, y,φ]T ∈ ℜ3×1,véctơ = x y ∈ ℜ2×1 được xác định là véc tơ
vị trí của điểm C với gốc tọa độ
M a trận quay R(ΦC ) chuyển từ hệ tọa độ dịch chuyển gắn với rô bốt sang
hệ tọa độ toàn cục được biểu thị như sau:
Trang 5
Phương trình động học của robot di động đa hướng có thể được viết như sau:
z = (1/r).H -1 (2)
theo đó z = [ω 1 ω 2 ω 3 ]T là vector vận tốc góc của bánh xe, và ma trận
được biểu thị như sau
từ (2)=> =rHz (4);
2.Mô hình hóa động lực học robot omni
Hình 5 Sắp xếp n bánh omni và phân bố lực
Trang 6Tất cả các góc của trục động cơ được đo theo hướng x trong hệ tọa độ của robot
Gọi góc của trục động cơ của n bánh xe lần lượt là θ1,θ2 ,…, θn.
Hướng dẫn động cho bánh xe thứ i là θi + π/2
Khi n động cơ hoạt động ta nhận được n lực F1,F2,…,Fn từ các động cơ.
Ta có:
Trong đó M là khối lượng robot,R là bán kính ro bot,fi là giá trị của lực
Fi (Fi là một vecto)
Chiếu lên các trục tọa độ
Max=-f1sin θ1-f2sin θ2-…-fn θn
May=f1cos θ1+f2 θ2+…+fn θn
Với khối trụ đồng nhất ta có I=MR2/2,với một vòng I=MR2
Ta có biểu diễn ma trận sau:
Nếu đặt I=αMR2,ta có
Trang 7Gọi vi là vận tốc quay bánh chính của bánh xe omni thứ i (vận tốc quay của động cơ thứ i)
vx,vy là vận tốc tịnh tiến theo phương x và y của robot,ω là vận tốc xoay của robot
Ta có mối liên hệ dưới dạng ma trận sau:
Hình 6:Minh họa vận tốc bánh thứ i của robot trong trường hợp robot đi sang ngang với vận tốc là 1.Vận tốc bánh lớn là -sin θ i ,vận tốc bánh nhỏ là cos θ i
Trang 8III-Giới thiệu sơ đồ điều khiển robot omni
Trang 9với 3 bánh ta co sơ đồ tương tự)
Master chip: thực hiện đọc cảm biến,xử lý ,tính toán hướng và vận tốc di chuyển,tính vận tốc của mỗi bánh,truyền vận tốc về cho mỗi Driver slave
Driver slave:nhận giá trị vận tốc yêu cầu từ vi điều khiển master,thực hiện PID vận tốc để điều khiển vận tốc động cơ cho phù hợp
a.Giới thiệu giao tiếp SPI
SPI (Serial Peripheral Bus) là một chuẩn truyền thông nối tiếp tốc độ cao
do hang Motorola đề xuất Đây là kiểu truyền thông Master-Slave, trong
đó có 1 chip Master điều phối quá trình tuyền thông và các chip Slaves được điều khiển bởi Master vì thế truyền thông chỉ xảy ra giữa Master và Slave SPI là một cách truyền song công (full duplex) nghĩa là tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng thời SPI đôi khi được gọi là chuẩn truyền thông “4 dây” vì có 4 đường giao tiếp trong chuẩn này đó là SCK (Serial Clock), MISO (Master Input Slave Output),
MOSI (Master Ouput Slave Input) và SS (Slave Select) Hình 8 thể hiện
một kết SPI giữa một chip Master và 3 chip Slave thông qua 4 đường
Trang 10Hình 8: Giao diện SPI
SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ
nên cần 1 đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi Đây là điểm khác biệt với truyền thông không đồng bộ mà chúng
ta đã biết trong chuẩn UART Sự tồn tại của chân SCK giúp quá trình tuyền ít bị lỗi và vì thế tốc độ truyền của SPI có thể đạt rất cao Xung nhịp chỉ được tạo ra bởi chip Master
MISO– Master Input / Slave Output: nếu là chip Master thì đây là
đường Input còn nếu là chip Slave thì MISO lại là Output MISO của
Trang 11MOSI – Master Output / Slave Input: nếu là chip Master thì đây là
đường Output còn nếu là chip Slave thì MOSI là Input MOSI của Master
và các Slaves được nối trực tiếp với nhau
SS – Slave Select: SS là đường chọn Slave cần giao tiếp, trên các
chip Slave đường SS sẽ ở mức cao khi không làm việc Nếu chip Master kéo đường SS của một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và Slave đó Chỉ có 1 đường SS trên mỗi Slave nhưng
có thể có nhiều đường điều khiển SS trên Master, tùy thuộc vào thiết kế của người dùng
Hoạt động: mỗi chip Master hay Slave có một thanh ghi dữ liệu 8
bits Cứ mỗi xung nhịp do Master tạo ra trên đường giữ nhịp SCK, một bit trong thanh ghi dữ liệu của Master được truyền qua Slave trên đường MOSI, đồng thời một bit trong thanh ghi dữ liệu của chip Slave cũng được truyền qua Master trên đường MISO Do 2 gói dữ liệu trên 2 chip được gởi qua lại đồng thời nên quá trình truyền dữ liệu này được gọi là
“song công” Hình 6 mô tả quá trình truyền 1 gói dữ liệu thực hiện bởi module SPI trong AVR, bên trái là chip Master và bên phải là Slave
Hình 9:Truyền dữ liệu SPI
Trang 12Cực của xung giữ nhịp, phase và các chế độ hoạt động: cực của xung giữ nhịp (Clock Polarity) được gọi tắt là CPOL là khái niệm dùng chỉ trạng thái của chân SCK ở trạng thái nghỉ Ở trạng thái nghỉ (Idle), chân SCK
có thể được giữ ở mức cao (CPOL=1) hoặc thấp (CPOL=0) Phase (CPHA) dùng để chỉ cách mà dữ liệu được lấy mẫu (sample) theo xung giữ nhịp Dữ liệu có thể được lấy mẫu ở cạnh lên của SCK (CPHA=0) hoặc cạnh xuống (CPHA=1) Sự kết hợp của SPOL và CPHA làm nên 4 chế độ hoạt động của SPI Nhìn chung việc chọn 1 trong 4 chế độ này không ảnh hưởng đến chất lượng truyền thông mà chỉ cốt sao cho có sự tương thích giữa Master và Slave
b.Điều khiển động cơ DC Servo bằng giải thuật PIC
Kỹ thuật điều khiển PID tuy không phải là một kỹ thuật điều khiển mới, nhưng lại là kỹ thuật phổ biến nhất chuyên dùng để điều khiển các hệ thống trong công nghiệp như hệ thống lò nhiệt, điều khiển tốc độ, vị trí, moment động cơ AC và DC Một trong những lý do bộ điều khiển PID trở nên phổ biến như vậy là vì tính đơn giản, dễ triển khai trên những vi
xử lý nhỏ với hiệu năng tính toán hạn chế
Cấu trúc chung của hệ thống vòng kín như sau:
Hình 10: Cấu trúc chung của hệ thống vòng kín
Trong hình vẽ trên:
- Plant: là hệ thống cần được điều khiển
- Controller: Cung cấp tín hiệu điều khiển cho Plant, được thiết kế
để điều khiển toàn bộ đáp ứng của hệ thống
Hàm truyền của bộ điều khiển PID có dạng như sau:
Trang 13Trong đó:
- KP: Độ lợi khâu tỷ lệ
- KI: Độ lợi khâu tích phân
Biến số (e) đại diện cho sai số giữa giá trị mong muốn (R) và giá trị ngõ
ra (Y) Sai số này (e) sẽ được đưa đến bộ điều khiển PID, và bộ điều khiển này sẽ tính toán cả vi phân và tích phân của tín hiệu sai số này Tín hiệu (u) sẽ có giá trị như sau:
Tín hiệu (u) sẽ được đưa đến đối tượng điều khiển và ta sẽ thu được một tín hiệu (Y) mới Tín hiệu này sẽ lại được đưa đến cảm biến để tính toán
ra sai số mới (e) Bộ điều khiển lại tính toán các giá trị vi phân, tích phân của sai số này Quá trình cứ thế lặp đi lặp lại
Đặc tính của bộ điều khiển P, I và D: Bộ điều khiển tỷ lệ (KP) có tác dụng làm giảm thời gian lên và sẽ làm giảm, nhưng không triệt tiêu, sai số ở trạng thái xác lập (steady- state error)
Bộ điều khiển tích phân (KI) sẽ triệt tiêu sai số ở trạng thái xác lập, nhưng lại có thể làm giảm chất lượng của đáp ứng quá độ
Bộ điều khiển vi phân (KD) sẽ làm tăng độ ổn định của hệ thống, giảm độ vọt lố và tăng chất lượng đáp ứng quá độ
Tác động của mỗi bộ điều khiển KP, KI, KD được trình bày trong bảng sau:
Trang 14Thời gian lên Độ vọt lố
Thời gian quá độ
Sai số xác lập
KP Giảm Tăng Thay đổi nhỏTăng
KI Giảm Tăng Tăng Triệt tiêu
KD Thay đổi nhỏGiảm Giảm Thay đổi nhỏ
Cần lưu ý rằng trong bộ điều khiển PID, sự các tác động này có thể không chính xác, vì KP, KI và KD phụ thuộc lẫn nhau Thực ra, thay đổi một trong các thông số này có thể làm thay đổi tác động của hai thông số còn lại
Chỉnh định bộ điều khiển PID bằng phương pháp Zeigler – Nichols: Ban đầu, đặt tất cả các độ lợi KP, KI, KDbằng 0 Sau đó tăng KP lên cho đến khi đạt được giá trị độ lợi Ku, là độ lợi mà ở đó ngõ ra của hệ thống bắt đầu dao động với biên độ không đổi Ku và chu kỳ dao động Tu được dùng để tính toán các độ lợi KP, KI, KD dựa vào công thức sau
Bộ điều
Driver PID cho động cơ DC:
Trang 15Hình 11: Sơ đồ khối phần cứng
Trong mạch điều khiển này, vi điều khiển đóng vai trò quan trọng nhất
Nó nhận tín hiệu điều khiển từ main board, tín hiệu hồi tiếp từ động cơ thông qua incremental encoder để tính toán ra giá trị PWM cần thiết xuất
ra cho bộ khuếch đại công suất điều khiển động cơ đạt tốc độ/vị trí mong muốn Như đã nói ở trên, PID là thuật toán điều khiển khá đơn giản, do
đó, ta có thể sử dụng các vi điều khiển từ dòng 8bit (8051, AVR, PIC16, PIC18) đến những dòng cao cấp hơn như dòng 16bit (dsPIC, PIC24) hoặc 32bit (ARM, PIC 32bit, AVR 32bit)
Incremental encoder cũng là bộ phận không thể thiếu trong hệ thống, nó cung cấp thông tin về trạng thái hiện thời của hệ thống cho vi điều khiển Encoder có độ phân giải càng cao thì cho chất lượng điều khiển càng tốt Tuy nhiên, encoder có độ phân giải cao thì cũng yêu cầu khả năng xử lý của vi điều khiển cao hơn
Khối công suất nhằm cung cấp điện áp chính xác điều khiển động cơ hoạt động dựa trên việc xử lý, tính toán của vi điều khiển Tùy theo công suất của động cơ cần điều khiển mà ta phải thiết khối này cho phù hợp
IV-nguyên lý hoạt động(điều khiển robot)
Trang 16Sắp xếp các bánh omni với θ1= π/2, θ2= π/2+ 2π/3= 7π/6, θ3= π/2-2π/3=- π/6
(các bánh xe tạo thành tam giác có đáy nằm ngang)
Từ ma trận liên hệ vận tốc ở phần mô hình động lực học ta có
V1=-sin(π/2).Vx+cos(π/2).Vy+ Rω = -Vx+Rω
=-V.cos θd +Rω
V2=-sin(7π/6).Vx+cos(7π/6).Vy+ Rω
= -sin(7π/6).cos θd.V+ cos(7π/6).sin θd.V+Rω
= sin(π/6).cos θd.V - cos(π/6).sin θd.V+Rω
=V.sin(π/6- θd)+Rω
V3=-sin(-π/6).Vx+cos(-π/6).Vy+ Rω
= sin(π/6).Vx+cos(π/6).Vy+ Rω
=V.sin(π/6+θd)+Rω
* Điều khiển robot
1.Đầu vào
- Góc yêu cầu θd :góc của chuyển động tịnh tiến của robot so với hệ tọa
độ gắn với thân
Trang 17- Vận tốc xoay Vθ (=Rω)
2.Đầu ra
Đầu ra:là vận tốc cho mỗi bánh của robot để có thể đáp ứng yêu cầu của đầu vào,xác định theo các công thức ở trên
Những giá trị kể trên có thể được hiệu chỉnh bằng một hệ số cho phù hợp với yêu cầu điều khiển hoặc dễ hình dung Ở đây sử dụng khoảng giá trị cho các vận tốc là [-10000;10000];
Dưới đây trình bày chương trình con thực hiện việc điều khiển robot omni
Chú ý là hàm SPI_SendVelocity(1,(int16_t)V1) thực hiện việc truyền yêu cầu cho động cơ số 1 giá trị vận tốc là V1, slave điều khiển động cơ số 1 nhận dữ liệu này qua giao tiếp SPI và thực hiện việc điều khiển vận tốc động cơ cho đúng Ở đây chúng ta có thể thấy ưu điểm của hệ thống master- multi slaves: chip vi điều khiển master chỉ việc tính toán, xử lí, truyền yêu cầu về slave, slave sẽ tự thực thi yêu cầu
/
***********************************************************
************
Trang 18Decription: Control the movement of robot by giving velocity to each motor slave
Input: V: Transition velocity
Theta: angle of velocity
Vtheta: Orientation velocity
Output: None
***********************************************************
************/
void Robot_Move_PID (float V, float Theta, float Vtheta)
{
float V1, V2, V3; // Velocity given to motor slave
float V1_abs, V2_abs, V3_abs, Vmax;
float Temp;
//Calculate Velocity
V1 = -V*cos(theta*3.1416/180)+Vtheta;
V2 = V*sin( (30-theta)* 3.1416/180 )+Vtheta;
V3 = V*sin( (30+theta)* 3.1416/180 )+Vtheta;
//Calculate the ratio
V1_abs=abs(V1);
V2_abs=abs(V2);
Trang 19//Calculate max value of V i
Vmax=V1_abs;
if (V2_abs>Vmax) Vmax=V2_abs;
if (V3_abs>Vmax) Vmax=V3_abs;
if (V4_abs>Vmax) Vmax=V3_abs;
//////////////////////////////////////////////
//reduce V to reach the required range
if (Vmax>10000)
{
Temp=10000/Vmax;
V1= V1*Temp;
V2= V2*Temp;
V3= V3*Temp;
V4= V4*Temp;
}
}
// Put the velocity value into the funtion controlling the speed of
Trang 20SPI_SendVelocity(2,(int16_t)V2);
SPI_SendVelocity(3,(int16_t)V3);
}
3 Hiệu chỉnh chiều quay động cơ
Chiều quay mỗi động cơ có thể bị sai trong quá trình lắp ráp phần cứng,
đi dây điện nên cần hiệu chỉnh chiều quay động cơ cho đúng Để thực hiện việc hiệu chỉnh, gọi hàm Robot_Move_PID(3000, 0, 0) để robot đi thẳng và kiểm tra xem các bánh có quay đúng chiều chưa, nếu sai cần đổi lại dây động cơ và encoder