Nguyên tắc thiết kế

Một phần của tài liệu Nghiên cứu phát triển giao diện tương tác người máy trong môi trường thông minh (Trang 30)

Hệ thống được thiết kế và xây dựng tuân thủ các nguyên tắc sau:

- Thiết kế hướng nhu cầu người dùng, lấy người dùng làm trung tâm

- Đảm bảo tính mở, dễ phát triển, dễ sửa đổi

- Đảm bảo tính khả chuyển (portability)

- Đảm bảo tính tin cậy

- Đảm bào khả năng can thiệp của chế độ điều khiển bằng tay

- Đảm bảo tính nhất quán và thống nhất giữa điều khiển bằng tay và điều khiển bằng tiếng nói.

3.2.2.Sơ đồ khối chức năng bên trong hệ thống tƣơng tác

Hình 13. Sơ đồ khối tổng quát của khối tƣơng tác ngƣời-máy bằng tiếng nói.

Bàn phím/chuột Nhận dạng tiếng nói Quản lý tương tác Thông tin cần truyền đạt Tổng hợp và đưa ra Loa/màn hình/Cơ cấu chấp hành

Ngoài phạm vi nghiên cứu của đề tài Phạm vi nghiên cứu của đề tài

Môi trường thông minh

27

Trên cơ sở các nguyên tắc thiết kế và xây dựng trên, kết hợp với các yêu cầu chức năng của bài toán, chúng tôi đã lựa chọn các giải pháp:

- Sử dụng mô hình MVC (Model-View-Controller) trong thiết kế hệ tương tác

bằng tiếng nói.

- Sử dụng cơ chế tín hiệu-khe cắm (signal-slot) để kết nối giữa các module. Module nguồn sẽ phát ra tín hiệu, module đích sẽ nhận tín hiệu và xử lí tương ứng. Việc kết nối do hệ thống quản lí, module nguồn và module đích không cần quan tâm cụ thể mô đun nào đã phát ra tín hiệu và module nào sẽ xử lí tín hiệu.

- Sử dụng lập trình hướng sự kiện khi lập trình giao diện.

3.2.3.Trình tự thiết kế và xây dựng giao diện ngƣời dùng

Về cơ bản, giao diện người dùng trong quá trình tương tác người-máy bằng tiếng nói được thiết kế theo nguyên tắc tín hiệu-khe cắm (signal-slot). Quá trình xây dựng giao diện người dùng được tiến hành như sau.

- Người lập trình xác định các tín hiệu giao tiếp có trong hệ thống và hướng đi

của các tín hiệu này. Đây là các tín hiệu xuất phát từ một hoặc nhiều khối sau (một cách riêng lẻ, tuần tự hoặc đồng thời): khối nhận dạng tiếng nói, bàn phím- chuột, nút bấm, …. Các tín hiệu này hoặc đi đến bộ xử lí trung tâm hoặc từ bộ xử lí trung tâm đến bộ tổng hợp tiếng và chỉ thị (màn hình).

- Người lập trình xác định các khe cắm trên các mô đun. Các khe cắm này sẽ tương ứng với các yêu cầu chức năng của từng mô đun. Việc xác định các khe cắm bao gồm tên khe cắm, các tham số cần truyền, và khe cắm đó thuộc mô đun nào, đối tượng nào. Chú ý, ứng với một bối cảnh tương tác biết trước sẽ có một tập các hành động được phép thực hiện. Người lập trình xác định tập các hành động này dựa trên tác vụ cụ thể của hệ thống cần giám sát đang được xét.

28 Micro

- Trên cơ sở các phân tích trên, người lập trình quyết định các tín hiệu giao tiếp

có trong hệ thống sẽ nối với khe cắm nào và tiến hành kết nối tín hiệu với khe cắm.

- Cuối cùng là tiến hành xây dựng các mô đun theo thiết kế có được.

3.2.3.1. Cơ chế tín hiệu – khe cắm

Với việc sử dụng cơ chế tín hiệu – khe cắm (signal/slot) kết nối giữa các module ta có sơ đồ khối nhƣ Hình 14. Bàn phím/chuột Nhận dạng tiếng nói Quản lý tương tác nhận thức Thông tin cần truyền đạt Tổng hợp và đưa ra Loa/màn hình/Cơ cấu chấp hành Môi trường thông minh

Micro

Signal- slot

29

Hình 14. Sơ đồ khối các khối tƣơng tác và vị trí cơ chế signal slot đƣợc triển khai.

Việc truyền dữ liệu giữa module giao diện người dùng với module tương tác vào ra và với hệ thống trung tâm được thực hiện theo cơ chế tín hiệu-khe cắm (signal-slot). Theo đó, (i) một tín hiệu được có thể được nối đến không hoặc một vài slot, (ii) một hoặc nhiều tín hiệu có thể cùng nối đến một slot, (iii) một tín hiệu cũng có thể được nối với một tín hiệu khác, lúc này, khi tín hiệu thứ nhất được gửi thì tín hiệu thứ hai cũng được gửi theo (Hình 15).

Việc truyền dữ liệu được triển khai trên nền tảng mạng truyền thông TCP/IP giúp nâng cao khả năng tích hợp công nghệ do tương thích với nhiều dạng module khác nhau, độc lập với công cụ triển khai cụ thể của từng module. Đồng thời TCP/IP cũng hỗ trợ nhiều phương thức truyền tin khác nhau, thuận lợi cho việc phát triển ứng dụng.

30

Hình 15. Ví dụ về truyền thông tin giữa các đối tƣợng sử dụng tín hiệu khe cắm.

Tín hiệu-khe cắm là ngôn ngữ được đề xuất để tạo thuận lợi cho việc triển khai Observer pattern. Ý tưởng là các điều khiển có thể gửi các tín hiệu chứa thông tin sự kiện, các tín hiệu này có thể được nhận bởi các điều khiển khác thông qua các khe cắm (slot). Tín hiệu và khe cắm được sử dụng để truyền thông giữa các đối tượng. Với lợi thế kết nối nhiều tín hiệu đến một khe cắm, một tín hiệu đến nhiều khe cắm và nối tiếp các tín hiệu với nhau (tín hiệu A nối với tín hiệu B dẫn đến khi A được gửi thì B cũng được gửi) khiến việc triển khai chương trình giao diện người dùng trở nên dễ dàng và uyển chuyển.

Tín hiệu-khe cắm thích hợp với hệ thống giao diện người dùng đồ họa cũng như các hệ thống vào ra không đồng bộ như trường hợp của hệ thống tương tác bằng tiếng nói, với thời gian phát biểu và xử lí câu lệnh tương đối lâu.

31

3.2.3.2. Mô hình MVC

MVC (Model-View-Controller) là một mẫu kiến trúc phần mềm trong công nghệ phần mềm. Nó giúp người phát triển phần mềm cô lập các nguyên tắc nghiệp vụ và giao diện người dùng một cách rõ ràng. Phần mềm phát triển theo mẫu MVC tạo nhiều thuận lợi cho việc bào trì vì các nguyên tắc nghiệp vụ và giao diện ít liên quan với nhau. Ở đây các nguyên tắc nghiệp vụ bao gồm các mối quan hệ liên động liên quan đến quá trình cần được giám sát điều khiển, và các nguyên tắc vận hành cụ thể khác của quá trình cần giám sát và điều khiển.

Trong MVC (Hình 16), mô hình (model) tượng trưng cho dữ liệu của chương trình phần mềm. Tầm nhìn, khung nhìn (view) bao gồm các thành phần của giao diện người dùng (bao gồm cả bộ tổng hợp tiếng nói trong trường hợp của chúng ta). Bộ kiểm tra hay bộ điều chỉnh (controller) quản lí sự trao đổi giữa dữ liệu và các nguyên tắc nghề nghiệp trong các thao tác liên quan đến mô hình. Bộ điều chỉnh có nhiệm vụ đáp ứng tất cả các sự kiện ảnh hưởng đến mô hình hoặc khung nhìn. Nhờ sự phân tách trên mà nhiều khung nhìn và nhiều điều khiển có thể giao tiếp với cùng một mô hình. Ta có thể dễ dàng thêm bớt, thay đổi các tầm nhìn và bộ điều chỉnh mà không cần thay đổi thiết kế của mô hình. Điều này đồng nghĩa với việc thêm bộ nhận dạng tiếng nói và phản hồi tiếng nói song song và độc lập với hệ thống “hiện tại”.

32

Hình 16. Mô hình MVC.

Trong trường hợp của chúng ta, bộ điều khiển đáp ứng các sự kiện đến từ môi trường, từ tác động bàn phím-chuột của người dùng và từ bộ nhận dạng tiếng nói. Các sự kiện này thường là nguồn gốc của việc thay đổi mô hình, tầm nhìn hoặc cả hai. Ngay khi bộ điều khiển thay đổi mô hình dữ liệu hoặc các thuộc tính của chúng, tất cả các khung nhìn liên quan sẽ được cập nhật.

33

Hình 17 minh họa về cài đặt MVC của một đối tượng tương tác. Ở đây khi thay đổi giá trị bằng mũi tên lên và xuống sẽ tạo các sự kiện gửi đến bộ điều khiển (action listener). Tương ứng với các sự kiện nhận được bộ điều khiển sẽ tăng hoặc giảm một cách tương ứng giá trị trong mô hình. Ngược lại, nếu vì một lí do nào đó, giá trị trong mô hình thay đổi, hàm update view sẽ tự động được gọi để đảm bảo cập nhật trạng thái của khung nhìn.

Hình 18. Mở rộng ví dụ về MVC với nhiều bộ điều khiển

Mở rộng ra, cùng một mô hình và khung nhìn có thể có nhiều bộ điều khiển cùng quản lí. Đây là trường hợp mở rộng bài toán hiện tại với bộ nhận dạng tiếng nói

(bộ điều khiển mới). Bộ điều khiển mới này sẽ nhận các sự kiện từ bộ tổng hợp

tiếng nói và sẽ điều khiển mô hình thay đổi theo cách thích hợp. Như vậy mỗi khi nhận được lệnh tăng/giảm sẽ tạo sự kiện gửi đến bộ điều khiển bằng tiếng nói. Tương ứng với lệnh điều khiển bộ điều khiển sẽ có các thao tác thay đổi mô hình phù hợp (ví dụ tăng/giảm giá trị đặt trong mô hình).

34

Chƣơng 4. : TRIỂN KHAI GIẢI PHÁP CHO ỨNG DỤNG PHÒNG THÔNG MINH CỦA MICA

Tại trung tâm MICA đã xây dựng phòng thông minh với các nhiệm vụ như đã trình bày ở chương 3. Trong chương này đi tìm hiểu nhu cầu tương tác của người dùng, xây dưng kịch bản hoạt động môi trường thông minh ở trung tâm MICA. Chương trình điều khiển đã được viết bằng ngôn ngữ C++, công cụ sử dụng là Qt

4.1. Tìm hiểu nhu cầu tƣơng tác của ngƣời dùng – xây dựng kịch bản hoạt động môi trƣờng thông minh ở trung tâm MICA

Để tìm hiểu nhu cầu người dùng MICA đã xây dựng một kịch bản điều khiển các thiết bị trong phòng thông minh. Các thiết bị trong hệ thống phòng thông minh cần được điều khiển là: Cửa tự động, Đèn, Camera, Quạt, Điều hòa, Tivi.

Trong kịch bản Phòng thông minh của trung tâm MICA, bên cạnh việc sử dụng bàn phím, chuột, người dùng còn có thể sử dụng phương pháp điều khiển qua giọng nói. Kịch bản được xây dựng gồm các quá trình:

- Khi người dùng muốn vào phòng trung tâm MICA người dùng phải trình

thẻ thành viên lên thiết bị quét trên cửa. Khi thiết bị xác định được thẻ của người dùng được chấp nhận, cửa sẽ tự động mở.

- Khi người dùng ở trong phòng, người dùng muốn điều khiển đèn người dùng chỉ cần nói “đèn bật”, hệ thống sẽ tự động bật đèn và khi đèn bật hệ thống sẽ thông báo bằng âm thanh “đèn đã sáng”.

- Người dùng muốn bật camera người dùng chỉ cần nói “camera xem”, trên

màn hình máy tính của hệ thống sẽ hiện hình ảnh camera quay được.

- Người dùng muốn bật quạt người dùng chỉ cần nói “quạt bật”, quạt sẽ tự động bật và khi quạt bật hệ thống sẽ thông báo bằng âm thanh “quạt đã bật”, khi người dùng muốn tắt quạt người dùng chỉ cần nói “quạt tắt” thì

35

quạt sẽ tự động tắt và sau khi tắt sẽ thông báo cho người dùng bằng âm thanh “quạt đã tắt”.

- Khi người dùng nóng và muốn bật điều hòa người dùng chỉ cần nói “điều

hòa bật”, sau khi hệ thống tự động bật điều hòa sẽ thông báo nhiệt độ của điều hòa đang là bao nhiêu độ, nếu người dùng thay đổi nhiệt độ chỉ cần nói “giảm nhiệt độ” hoặc “tăng nhiệt độ”, hệ thống sẽ tự động giảm hoặc tăng và thông báo cho người dùng biết nhiệt độ được giảm xuống hoặc tăng lên bao nhiêu độ.

- Người dùng muốn xem tivi người dùng chỉ cần nói “Tivi bật” hệ thống sẽ

tự động bật Tivi và người dùng muốn thay đổi kênh chỉ cần nói kênh người dùng muốn hoặc người dùng muốn tăng hay giảm âm thanh thì người dùng có thể nói “tăng âm”, “giảm âm” Tivi sẽ tự động được điều khiển theo ý muốn của người dùng.

36

Hình 19. Một số hình ảnh trong kịch bản.

Dựa trên kịch bản này và giải pháp được đề cập ở trên, tôi cài đặt giải pháp cho phòng. Bước đầu tiên là lựa chọn công cụ phát triển.

37 4.2. Lựa chọn công cụ phát triển - công cụ Qt

Chương trình điều khiển được lựa chọn viết bằng ngôn ngữ C++, công cụ sử dụng là Qt. Công cụ này chạy trên nền là Visual Studio 2008. Việc tích hợp công cụ Qt trên nền VS 2008 được trình bày kỹ trong Phụ lục 2.

Qt là một phần mềm được phát triển bởi côngty Trolltech nhằm mục đích phát triển các ứng dụng giao diện và đồ họa trên tất cả các nền khác nhau. Qt có thể dùng cho những người lập trình nhúng, viết những ứng dụng trên điện thoại, các phần mềm quản lý và dùng để phát triển các hệ điều hành mã nguồn mở. Qt mạnh mẽ với hàng trăm thư viện (hơn 400 lớp thư viện khác nhau) được viết trên C++. Qt viết các ứng dụng với 2 ngôn ngữ là C++ và Java. Khi sử dụng Qt ta có thể dễ dàng tìm hiểu được cú pháp ngắn gọn và nhiều tài liệu của nó, tích hợp nó vào Visual Studio, đi kèm với một bộ công cụ hỗ trợ bao gồm cả Designer, Linguist, và QT Creator. Nó tạo ra các ứng dụng một cách dế dàng trên các hệ điều hành Windows, Mac, Linux và các số thiết bị nhúng khác nhau. Dưới đây là bảng mô tả các công cụ và các module trong Qt.

38

Bảng 2. Các công cụ của Qt.

Qt có 4 công cụ phát triển chính:

- Qt designer cung cấp các giao diện GUI và các widget giúp thiết kế nhanh

các ứng dụng.

- Qt Linguist là tập các công cụ được thiết kế để tối ưu các tiến trình công việc.

- Qt Assistant Hỗ trợ đầy đủ tài liệu để làm việc với Qt.

- qmake Công cụ biên dịch của Qt.

Điểm mạnh của Qt là khả năng tách biệt giữa 2 quá trình design user interface (thiết kế giao diện) và các code controller (viết code). Và việc sử dụng file config (file cấu hình).pro và .pri một cách mềm dẻo, khả năng tích hợp một cách linh động vào các IDE khác cũng như quản lý project mạnh mẽ.

39

Qt mạnh mẽ với việc có thể sử dụng trên đa nền tảng. Nó có thể sử dụng trên nhiều hệ điều hành khác nhau như Windows, Embedded Linux, Mac OS X, Symbian.. Qt cung cấp tất cả các chức năng cần thiết để phát triển các GUI ứng dụng nâng cao trên máy tính và các nền nhúng. Qt sử dụng các APIs gốc của từng hệ điều hành mà nó hỗ trợ, lợi dụng tất cả các tài nguyên của hệ thống và đảm bảo rằng những ứng dụng thân thiện với hệ điều hành mà nó chạy trên đó.

Các ứng dụng tiện ích của Qt:

- Xây dựng giao diện điều khiển (widgets) với các nút bấm và hộp thoại, có thể

xem dưới dạng cây và bảng.

- Tự động chọn độ rộng của hộp thoại, font, ngôn ngữ, và định hướng màn hình,

cách bố trí cơ động.

- Hoàn thành các giao diện UI tùy chỉnh với các stype API và widget phong phú.

- Hỗ trợ cho phần cứng việc tăng tốc đồ họa và đa hiển thị.

- Qt có sự thay thế sáng tạo cho việc liên lạc giữa các tín hiệu, gọi là “signals and slots”, nó thay thế việc gọi cũ và không an toàn được sử dụng lại nhiều lần. Qt cũng cung cấp các kiểu sự kiện thích hợp cho việc click chuột bằng tay, nhấn bàn phím và các kiểu đầu vào khác.

- Qt hỗ trợ cho các ứng dụng đã phương tiện và đồ họa 3D.

- Qt cũng có thể tạo ra các cơ sở dữ liệu trên nền độc lập sử dụng các cơ sở dữ liệu

chuần. Ví dụ như SQL Server, My SQL…

- Và nhiều ứng dụng tiện ích khác.

4.3. Ứng dụng để xây dựng chƣơng trình điều khiển môi trƣờng thông minh của trung tâm MICA

Đồ án nằm giữa 2 khối nhận dạng và tổng hợp tiếng nói nên sản phẩm cuối cùng nó sẽ được kết nối hoàn thiện với 2 khối trên. Đầu vào của khối điều khiển này, hay nói cách khác tín hiệu điều khiển được phát từ khâu nhận dạng tiếng nói. Trong đồ

40

án này, các nút bấm được thiết kế để ra lệnh điều khiển chỉ là khâu trung gian tạm thời thay cho các tín hiệu điều khiển từ khối nhận dạng.

Sơ đồ mặt bằng trong thực tế của môi trường thông minh tại trung tâm MICA được trình bày trong Hình 20.

Hình 20. Sơ đồ mặt bằng môi trƣờng thông minh nơi sẽ xây dựng phòng

Một phần của tài liệu Nghiên cứu phát triển giao diện tương tác người máy trong môi trường thông minh (Trang 30)