1.3. RS232 không dây
Để máy tính có thể điều khiển hoạt động của robot, khóa luận đã sử dụng bộ thu phát RS232 không dây của hãng Maxstream. Trong điều kiện không gian không có nhiều vật cản, khoảng cách mà thiết bị này có thể hoạt động lên đến 11km. Để có thể thực hiện việc truyền thông cần có một cặp thiết bị thu phát này, một chiếc đóng vai trò là bộ phát, cái còn lại đóng vai trò là bộ thu. Trên thực tế, thiết bị này có thể thực hiện việc thu phát song song. Đối với bản khóa luận, một bộ được kết nối trực tiếp với cổng Com của máy tính, và bộ còn lại được kết nối với vi điều khiển sau khi đã đưa qua mạch chuyển đổi tín hiệu từ RS232 sang tín hiệu TTL.
1.4. Hoạt động của Cleaner robot
Hoạt động của cleaner robot dùng trong khóa luận bao gồm 3 chế độ chính, đó là: quét nhà, tìm trạm sạc và sạc pin.
1.4.1. Khởi động
Khi robot được khởi động, nó sẽ kiểm tra giắc cắm adapter của mạch sạc và dung lượng pin để quyết định chế độ làm việc: nếu có cắm sạc pin thì robot sẽ ở chế độ sạc, nếu không cắm sạc pin và dung lượng của pin còn ít, robot sẽ quyết định chế độ tìm trạm sạc, nếu dung lượng pin còn nhiều, robot sẽ thực hiện chế độ quét nhà.
49 trang |
Chia sẻ: Thành Đồng | Ngày: 11/09/2024 | Lượt xem: 36 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế chế tạo robot hút bụi tự động, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
à sạc.
Thiết kế mạch điều khiển
Mạch điều khiển sử dụng vi điều khiển trung tâm là Atmega128 – sản suất bởi hãng Atmel. Đây là vi điều khiển phổ thông và là vi điều khiển đặc trưng của dòng Atmage với rất nhiều tính năng được tích hợp bên trong. Trong bản khóa luận đã sử dụng một bo mạch Atmega128 được lắp sẵn, trên đó đã gắn chíp Atmega128, thạch anh, reset và các kết nối với các cổng vào ra từ chíp.
Giới thiệu về vi điều khiển Atmega128
Hình 2.8: Dạng đóng gói và sơ đồ chân của Atmega128
Các đặc điểm cơ bản của Atmage128
ROM : 128 Kbytes, có khả năng ghi/ xóa lên đến 10,000 lần
SRAM: 4Kbytes
EEPROM : 4Kbytes, có khả năng ghi/ xóa 100,000 lần
Bộ dao động nội RC tần số 1 MHz, 2 MHz, 4 MHz, 8 MHz
Hỗ trợ boot loader
Tần số tối đa 16MHz đối với dòng Atmega128
Tần số tối đa 8MHz đối với dòng Atmega128L
Điện thế : 4.5v - 5.5v đối với Atmega128
Điện thế: 2.7v – 5.5v đối với Atmega128L
Các khối ngoại vi
2 bộ định thời 8 bit (0,2)
2 bộ định thời 16 bit (1,3)
Bộ định thời watchdog
ADC 8 kênh với độ phân giải 10 bit
Bộ so sánh tương tự có thể lựa chọn ngõ vào
2 kênh PWM 8 bit
6 kênh PWM có thể lập trình thay đổi độ phân giải từ 2 tới 16 bit
Hai khối USART lập trình được
Khối truyền nhận nối tiếp SPI
Khối giao tiếp nối tiếp 2 dây TWI
Một số tính năng đặc biệt
Có khả năng nạp chương trình ngay trên bo mạch
6 chế độ tiết kiệm năng lượng
Có khả năng ngắt cả trong và ngoài vi điều khiển
Lựa chọn tần số hoạt động bởi phần mền
Hình 2.9: Sơ đồ khối của Atmega128
Sơ đồ nguyên lý của mạch điều khiển
Hình 2.10: Sơ đồ nguyên lý mạch vi điều khiển
Bảng 11: Mô tả chức năng các chân của vi điều khiển được sử dụng
Tên chân
Stt
Kiểu
Mô tả
XTAL1
24
Vào
Lối vào từ bộ giao động thạch anh
XTAL2
23
Ra
Lối ra từ bộ giao động thạch anh
RESET
20
Vào
Chân reset hệ thông, hoạt động ở mức thấp
VCC
21/52
Nguồn
Lối vào nguồn dương
AVCC
64
Nguồn
Nguồn cho bộ ADC
AREF
62
Tham chiếu
Điện áp tham chiếu cho bộ ADC
GND
22/53/63
Nguồn
Chân nối đất
RX
2
Vào
Chân nhận tín hiệu nối tiếp
TX
3
Ra
Chân truyền tín hiệu nối tiếp
Motor_L_0
10
Ra
Kết hợp với chân Motor_L_1 để thay đổi chiều quay bánh bên trái
Motor_L_1
11
Ra
Kết hợp với chân Motor_L_0 để thay đổi chiều quanh bánh trái
Motor_R_0
12
Ra
Kết hợp với chân Motor_R_1 để thay đổi chiều quanh bánh phải
Motor_R_1
13
Ra
Kết hợp với chân Motor_R_0 để thay đổi chiều quanh bánh phải
Motor_L_E
14
Ra
Chân cho phép bánh trái hoạt động
Motor_R_E
15
Ra
Chân cho phép bánh phải hoạt động
Led_Green
51
Ra
Điều khiển đèn thông báo màu xanh
Led_Red
50
Ra
Điều khiển đèn thông báo màu đỏ
Charge
49
Ra
Điều khiển mạch sạc pin
Buzz
48
Ra
Loa báo hiệu
Camera
47
Ra
Bật/tắt camera
Sensor_right
45
Vào
Nhận tín hiệu từ sensor bên phải
Sensor_left
44
Vào
Nhận tín hiệu từ sensor bên trái
PortC
3542
Điểu khiển LCD
V_sen0
61
Vào
Đây là chân ADC, dùng để kiểm tra có nguồn bên ngoài kết nối với mạch sạc hay không
V_sen1
60
Vào
Đây là chân ADC, dùng để đo dung lượng của pin
Các tài nguyên của vi điều khiển Atmega128 được sử dụng cho robot:
13 chân vào/ra
Bộ truyền thông nối tiếp UART0
2 kênh ADC
Mạch cảm biến và loa báo
Nhiệm vụ của mạch cảm biến và loa báo
Mạch cảm biến và loa báo có 2 cảm biến quang dạng khe, kết hợp với hệ thống cơ khí được gắn ở đầu robot, sẽ truyền tín hiệu về vi điều khiên khi xảy ra va chạm giữa robot và vật cản trên đường đi. Hai cảm biến nằm mỗi bên và lêch về đằng trước cho phép robot cảm nhận va chạm đến từ bên trái, bên phải hay đằng trước.
Loa báo có nhiệm vụ thông báo tình trạng của robot, như: pin yếu, bắt đầu sạc, sạc xong.
Thiết kế mạch cảm biến và loa báo
Hình 2.11: Opto và sơ đồ cấu tạo
Khi robot va chạm với vật cản, hệ thống cơ khí sẽ ngăn cản ánh sáng hồng ngoại truyền từ led phát sang transistor thu. Tín hiệu sau đó được đưa qua bộ so sánh sử dụng chíp LM324 để thành tín hiệu chuẩn đưa vào vi điều khiển.
Hình 2.12: Sơ đồ nguyên lý của mạch cảm biến va chạm
Loa báo hiệu sử dụng một loại còi, khi được cấp điện loại còi này sẽ phát ra âm thanh với tần số 4KHz. Bằng việc thay đổi tần số cấp điện cơ thể tạo ra các âm thanh khác nhau. Loa sử dụng trong khóa luận dùng để thông báo tình trạng của robot như: hết pin, sạc xong
Hình 2.13: Loa và sơ đồ mạch thông báo
Mạch điều khiển động cơ
Động cơ sử dụng giúp cho robot di chuyển là loại động cơ một chiều, điện thê hoạt động từ 5V đến 12V. Robot có 2 động cơ gắn vào 2 bánh chủ động. Chíp L298 là một loại chip công xuất dùng để điều khiển loại động cơ này. Trong L298 có tích hợp 2 mạch cầu H, cho phép điều khiển hoạt động cùng lúc cho 2 động cơ.
Hình 2.14: Sơ đồ nguyên lý của chip L298
Một số thông số kỹ thuật của chip L298:
Nhiệt độ hoạt động:
Điện áp cung cấp tối đa: 50v
Dòng tải tối đa cho mỗi mạch cầu H: 2A
Điện áp điều khiển:
Hình 2.15: Sơ đồ nguyên lý mạch điều khiển motor
Khi động cơ hoạt động, có những lúc động cơ quay hay dừng, quay theo chiều kim đồng hồ hay theo chiều ngược khi đồng hồ. Những lúc chuyển trạng thái như vậy sẽ làm xuất hiện những xung nhiễu gây ảnh hưởng tới mạch điều khiển thậm chí gây cháy chip điều khiển, nên nhất thiết phải sử dụng các diot mắc ngược (Hình 1.13) để triệt tiêu nhiễu.
Mô tả hoạt động của mạch điều khiển động cơ. Vì hai động cơ là tương tự nhau nên chỉ cần mô tả hoạt động của một động cơ.
Bảng 12: Mô tả hoạt động của mạch điều khiển động cơ
Motor_L_E
Motor_L_1
Motor_L_2
OUT1
OUT2
Động cơ B1
0
0
0
0
0
Dừng
1
0
0
Dừng
1
0
0
0
Dừng
1
0
0
Dừng
1
0
0
0
0
Dừng
1
0
1
Ngược chiều kim đồng hồ
1
0
1
0
Cùng chiều kim đồng hồ
1
1
1
Dừng
XỬ LÝ ẢNH
Giới thiệu chung
Như trong phần nhiệm vụ của khóa luận đã trình bày, mục đích của việc xử lý ảnh là tìm ra trạm sạc mỗi khi pin của robot yếu. Một camera không giây sẽ được gắn với robot, thiết bị thu sẽ thu được tín hiệu video, nhưng để đưa được vào máy tính xử lý, tín hiệu đó cẩn phải biến đổi thành tín hiệu composite, đưa vào trong máy tính qua cổng USB. Thiết bị chuyển đổi này là một USB TV BOX. Phần xử lý tín hiệu hình ảnh thu được sẽ được thực hiện trên máy tính, sau đó tín hiệu điều khiển từ máy tính được truyền trở lại robot thông qua cổng nối tiếp RS232 không dây.
Hình 3.1: Sơ đồ thu nhận tín hiệu camera
Chương trình xử lý ảnh trên máy tính chỉ được kích hoạt khi robot thông báo tín hiệu “pin yếu” cho máy tính qua cổng RS232 không dây. Từ đó robot sẽ được điều khiển bởi máy tính. Để có thể tìm chính xác trạm sạc, đầu tiên máy tính sẽ tìm những vật trong phòng có màu phù hợp, điều khiển robot di chuyển tới gần từng vật để kiểm tra. Quá trình kiểm tra được thực hiện bằng phương pháp nhận đạng hình dạng. Do đó, trạm sạc sẽ được gắn một vật để đánh dấu, vật này phải có màu sắc khác biệt với màu sắc của đồ đạc trong phòng và đồng thời vật cũng phải có một hình dạng cụ thể (ví dụ hình chữ nhật). Như vậy công việc xử lý ảnh sẽ bao gồm 2 phần, đó là: nhận dạng vật thể dựa vào màu sắc và nhận dạng vật thể dựa vào hình dạng.
Phần lập trình được thực hiện trên ngôn ngữ C++, bằng phần mềm VisualC++ và sử dụng thư viện xử lý ảnh OpenCV.
Nhận dạng vật thể dựa vào màu sắc
Định nghĩa
Việc nhận dạng ảnh dựa vào màu sắc là duyệt qua toàn bộ ảnh, rồi lọc lấy những điểm ảnh có giá trị màu sắc thích hợp. Phương pháp này rất hiệu quả khi phải nhận dạng những vật ở xa, khi mà hình dạng của vật đã bị biến dạng bởi điều kiện ánh sáng, do đó không thể nhận dạng được vật thể dựa vào hình dạng. Nhược điểm của phương pháp này là bị ảnh hưởng bởi nhiễu khá nhiều và không phân biệt được đâu là vật cần tìm và đâu là nhiễu, do vậy có thể coi đây là bước lọc đầu tiên để tìm vật thể, sau đấy cần nhận dạng vật thể bằng các kỹ thuật khác cao cấp hơn, như: dựa vào hình dạng, dựa vào vân
Có rất nhiều không gian màu dùng để mô tả màu sắc của ảnh, nhưng không phải không gian màu nào cũng thích hợp cho việc tìm kiếm ảnh. Sau đây là những không gian màu cơ bản.
Không gian màu RGB
Không gian màu RGB là sự kết hợp của ba thành phần màu cơ bản: đỏ ( R ), Xanh lá cây ( G ) và xanh lục ( B ). Mỗi thành phần màu có thể nhận các giá trị từ 0 đến 16, 32, 64, 255 tùy thuộc vào số lượng bít dùng để lưu trữ. Ba thành phần màu sắc nhận những giá trị khác nhau được hòa trộn với nhau để tạo ra không gian màu RGB, nếu dùng 8 bit để mã hóa mỗi màu, tức 3 byte cho toàn không gian màu, thì sẽ nhận được tất cả triệu màu khác nhau.
Hình 3.2: Mô hình màu RGB
Không gian màu RGB là định dạng phổ biến nhất của ảnh số, lý do chính là vì nó tương thích với các thiết bị hiển thị điện tử. Tuy nhiên hạn chế lớn nhất của không gian màu RGB là nó không giống như cách con người cảm nhận về màu sắc, do đó không phù hợp cho việc tìm kiếm ảnh dựa vào màu sắc.
Không gian màu CMY
CMY là viết tắt của Cyan-Magenta-Yellow (màu lục lam, màu đỏ tươi, màu vàng), đó là ba màu chính tương ứng với ba màu mực in. Cyan hấp thu sự chiếu sáng của màu đỏ, Magenta hấp thu màu xanh lục, Yellow hấp thu màu xanh dương. Do đó, tạo ra sự phản ánh tương ứng như khi in ảnh được chiếu sáng với ánh sáng trắng. Hệ thống dưới dạng âm tính vì mã hóa theo dạng hấp thụ màu. Có một số mã hóa như sau: trắng (0,0,0) vì không có ánh sáng trắng được hấp thụ, đen (255,255,255) vì tất cả các thành phần của màu trắng đều được hấp thụ.
Hình 3.3: Không gian màu CMY
Hệ thống màu CMY dường như là một sự đảo ngược của hệ thống màu RGB. Đặc tính của nó là sự đơn giản, ứng dụng nhiều trong thực tế. Tuy nhiên khuyết điểm của nó cũng tương tự như không gian màu RGB, tức là cách mã hóa khác với cách mà con người cảm nhận về màu sắc. Không thích hợp cho bài toán tìm kiếm ảnh dựa vào nội dung.
Không gian màu Lab
Không gian màu L*a*b sử dụng 3 thông số L, a, b để biểu diễn màu sắc:
L: Lightness – độ sáng của màu.
a: là giá trị màu chạy từ màu đỏ đến xanh lá cây.
b: là giá trị màu vàng đến màu xanh nước biển.
Hình 3.4: Không gian màu L*a*b
Các mối quan hệ phi tuyến giữa ba thành phần L , a, b được sẳ dụng để bắt trước sự cảm nhận phi tuyến của mắt người về màu sắc. Vì vậy hệ thống màu Lab được dùng nhiều nhất cho việc màu, thí dụ, để pha chế màu hoặc để kiểm tra chất lượng in. Các tông màu và độ bão hòa được vẽ lên các trục a và b, trục độ sáng L chạy từ 0 tới 100. Đây là không gian màu có sự tách biệt giữa độ sáng và mà sắc, dó đó cũng rất thích hợp cho việc nhận dạng bằng màu sắc.
Không gian màu HSV: Hue-Saturation-Value
Hệ thống màu HSV mã hóa thông tin màu sắc bằng cách chia giá trị Value V từ hai giá trị được mã hóa thuộc về độ hội tụ của màu- Hue H và Saturation S.
Hình 3.5: Không gian màu HSV
Thành phần không gian màu HSV gồm có ba phần: Hue được định nghĩa có giá trị 0-2Π , mang thông tin về màu sắc. Saturation có giá trị 0-1, mang giá trị về độ thuần khiết của thành phần Hue. Value (Intensity) mang thông tin về độ sáng của điểm ảnh. Đôi khi hệ thống màu HSV được coi như là hệ thống màu HSI hoặc HSB khi dùng Intensity hoặc Brightness thay vì Value. Có thể hình dung không gian màu HSV như là vật hình nón, với trục chính biểu thị cường độ sáng Value, khoảng cách đến trục biểu thị độ tập chung Saturation, góc xung quanh trục biểu thị cho sắc màu Hue.
Hệ thống màu HSV thì thích hợp hơn với một số thiết kế đồ họa bởi vì nó cung cấp sự điều khiển trực tiếp đến ánh sáng và hue. Hệ thống màu HSV cũng hỗ trợ tốt hơn cho những thuật toán xử lý ảnh vì sự tiêu chuẩn hóa về ánh sáng và tập chung vào hai tham số về độ hội tụ màu, và cường độ màu. Sự giống và khác nhau giữa hai ảnh về mặt màu sắc đối với mắt người chỉ mang ý nghĩa tương đối. Do đó khi áp dụng vào bài toán này trên máy tính thì ta cũng giả lập sự tương đối này.
Tìm kiếm dựa vào màu sắc
Có hai phương pháp để tìm kiếm ảnh dựa vào màu sắc, đó là: sử dụng lược đồ ( histogram) và bắt màu. Phương pháp tìm kiếm dựa vào histogram chỉ có thể áp dụng cho những vật thể ở gần, còn đối với các vật thể ở xa, nhất thiết phải sử dụng phương pháp bắt màu.
Lược đồ Histogram
Định nghĩa Histogram
Histogram là một bảng tóm tắt thông tin về màu sắc cho một ảnh màu bất kỳ. Có nhiều loại lược đồ Histogram, như: histogram thể hiện độ sáng tối, histogram thể hiện sự phân bố màu sắcLược đồ histogram cho biết độ tập chung về độ sáng hoặc màu sắc của ảnh. Trong trường hợp của histogram thể hiện độ sáng tối, trục hoành của lược đồ thể hiện các mức sáng, trục tung của lược đồ thể hiện số lượng điểm ảnh có mức sáng tương ứng với giá trị tại trục hoành. Sự phân bố của các điểm ảnh càng thiên về phía bên trái thì bức ảnh cảng tối, ngược lại, sự phân bố này càng thiên về phía bên phải thì ảnh càng sáng.
Hình 3.6: (a) ảnh gốc, (b) lược đồ độ sáng, (c) lược đồ màu HUE
Lược đồ thể hiện độ sáng chỉ có ý nghĩa trong chỉnh sửa ảnh, đối với vấn đề tìm kiếm ảnh dựa vào màu sắc thì chỉ sử dụng lược đồ màu. Một ảnh có thể có nhiều lược đồ màu khác nhau tùy thuộc vào không gian màu dùng để mã hóa ảnh đó. Ví dụ như ảnh được mã hóa trong không gian màu HSV, sẽ thu được lược đồ Hue của ảnh (Hình 2.6). Trục x của lược đồ màu Hue thể hiện sự biến thiên của màu từ 0 cho tới 360, còn trục y mô tả số lượng pixel có màu tương ứng trên trục x. Đối với ảnh màu RGB sẽ có 3 lược đồ màu tương ứng với 3 đại lượng màu cơ bản, đó là: đỏ, xanh lá cây và xanh da trời. Trục x của lược đồ màu RGB mô tả độ sáng tăng dần, còn trục y mô tả số lượng pixel có mức sáng tương ứng trên trục x (
Hình 3.7: (a) ảnh gốc, (b) lược đồ màu đỏ, (c) lược đồ màu xanh lá cây, (d) lược đồ màu xanh da trời
Mặc dù một ảnh có thể có nhiều lược đồ màu, nhưng lược đồ màu Hue của không gian màu HSV là có ý nghĩa nhất trong tìm kiếm ảnh, vì lược đồ màu Hue mô tả một bức tranh tổng thể các màu có trong ảnh. Nhưng đa số ảnh màu ngày nay được lưu trữ dưới chuẩn RGB, do đó cần chuyển đổi cách mã hóa màu sắc sang chuẩn màu HSV. Việc chuyển đổi này được thực hiện lần lượt trên từng pixel của ảnh. Sau đây là thuật toán chuyển đổi:
double r,g,b,h,s,v,Max,Min;
r = color_rgb.red
g = color_rgb.green;
b = color_rgb.blue
Max = max(max(r,g),b);
Min = min(min(r,g),b);
v = Max;
if (v==0) s = 0;
else s = 255*(Max - Min) /v;
if (s==0) h = -1;
else
{
if (v==r) h=(g-b)/(Max-Min);
if (v==g) h=2+(b-r)/( Max-Min);
if (v==b) h=4+(r-g)/( Max-Min);
}
h=60*h;
if (h<0) h=360+h;
color_hsv.hue = h;
color_hsv.saturation = s*100/255;
color_hsv.value = v*100/255;
Trong thư viện Opencv có một hàm hỗ trợ việc chuyển đổi không gian màu, đó là hàm: cvCvtColor().
void cvCvtColor(
const CvArr* src,
CvArr* dst,
int code
);
Hàm cvCvtColor() cho phép chuyển đổi giữa nhiều không gian màu khác nhau, phụ thuộc và tham số code của hàm, tham số src là ảnh gốc và dst là ảnh thu được.
Ghi chú 2.1: Thuật toán mô tả việc chuyển đổi không gian màu được trình bày minh họa trong phần “còn trống”.
Cách tính Histogram
Về cơ bản việc tính histogram của một bức ảnh chính là việc đếm số pixel thỏa mãn một giá trị nào đấy, lưu số lượng pixel đếm được vào một bin rồi sắp sếp các bin đó theo giá trị tăng dần. Ví dụ như tính histogram độ Hue của một bức ảnh: Đầu tiên đếm số pixel có độ Hue là 0 trước, lưu giá trị đó vào bin thứ nhất, tiếp tục đếm số pixel có độ Hue là 1, lưu vào bin thứ hai, quá trình tiếp tục như vậy cho đến khi k
Các file đính kèm theo tài liệu này:
- de_tai_thiet_ke_che_tao_robot_hut_bui_tu_dong.doc