Mô hình xe lăn điện

Một phần của tài liệu Dò tìm vật mốc để điều khiển xe lăn điện đến đích dùng stereo camera (Trang 59)

- 52 -

Một chiếc xe lăn điện được trang bị stereo camera Bumblebee được điều khiển bởi một máy tính Apple Mac Mini. Hệ thống stereo camera có hai camera, cả hai đềuhoạt động như hai "mắt" để xem hình ảnh bên trái và bên phải. Các dữ liệu đầu vào cho một chiếc xe lăn được cung cấp từ stereo camera và Joystick thông qua một máy tính Apple Mac Mini. Xe lăn có thể điều khiển bẳng tay bởi Joystick và có thể điều khiển tự động sử dụng stereo camera như hình 5.2. Tín hiệu điều khiển từ máy tính xuống động cơ thông qua thiết bị chuyển đổi Analog - Digital được gọi là DAQmx USB6008. Các thiết bị này được cấp nguồn thông qua mộtbộ chuyển đổi điện DC - AC từ một bình ắc quyxe lăn (loại bình ắc quy 24VDC). Các dữ liệu đầu vào được xử lý và hiển thị trên một màn hình tinh thể lỏng (LCD), tạo ratín hiệu điều khiển đến hệ thốngđiều khiểnđộng cơ củachiếc xe lăn. Yêu cầu hệ thống của xe lăn phụ thuộc vào một loạt các thiết bị phần cứng, cũng như phần mềm xử lý dữ liệuvà kiểm soáthệthống.

- 53 -

Thuật toán nhận dạng và thuật toán phát hiện vật cản, tính toán khoảng trống được thực hiện trên nền Microsoft Visual Studio 2008 với ngôn ngữ C++. Sau đó, các thuật toán sẽ được tổng hợp lại thành các Thư viện liên kết động (DLL). Các DLL này sẽ được nhúng vào môi trường làm việc của phần mềm LabVIEW. Mỗi DLL đảm nhận một vai trò riêng biệt, cung cấp các thông tin đã được xử lý từ Stereo camera. Chương trình trên LabVIEW thực hiện một số tính toán dựa trên các dữ liệu từ các khối DLL và đưa ra các thông số cho việc điều khiển xe lăn. Chương trình này bao gồm ba bước: thu thập dữ liệu, xử lý dữ liệu và điều khiển xe lăn.

Hình 5.3 Sơ đồ khối mô tả hoạt động của hệ thống xe lăn điện

Sau khi chương trình trên LabVIEW được tính toán xong, hai tín hiệu Speed

Steeringđược máy tính truyền tới DAQ USB – 6008 chuyển đổi thành hai ngõ ra tương tựlà điện áp điều khiển hai động cơ điện DC.

Stereo camera DLL Xử lý thông tin 3D từ môi trường DLL Nhận dạng vật mốc DAQ USB-6008 Tính toán điều khiển xe lăn điện Động cơ LabVIEW OpenCV

- 54 -

Góc điều khiển Tín hi u ngõ ra Hướng điều khiển

SPEED STEERING 100 2.003 2.535 LEFT 2.224 2.485 RIGHT 200 2.144 2.613 LEFT 2.213 2.348 RIGHT 300 2.099 2.764 LEFT 2.109 2.192 RIGHT 400 2.150 2.835 LEFT 2.198 2.111 RIGHT 500 2.167 2.903 LEFT 2.159 1.958 RIGHT

Bảng 5.1Các giá trị của tín hiệu điều khiển xe lăn điện

5.2 K t qu thực nghi m

5.2.1 K t qu nh n d ng v t mốc

Khả năng nhận dạng vật mốc với khoảng cách từ vật mốc đến xe lăn từ 0.5m đến 2m trung bình là 92% (92 lần nhận dạng đúng vật mốc trên 100 lần nhận dạng). Thời gian xử lý cho 1 lần nhận dạng đúng nằm trong khoảng 900ms đến 950ms.

Hình 5.4 Biểu đồ so sánh khả năng nhận dạng vật mốc với góc lệch và

- 55 - (a) (b) Hình 5.5 Kết quả nhận dạng vật mốc: số 2 ở hình (a) và số 3 ở hình (b) (a) (b) Hình 5.6 Kết quả nhận dạng vật mốc: số 4 ở hình (a) và số 5ở hình (b) 5.2.2 Các tình huống thực nghi m

Xe lăn được thiết kế để tự động di chuyển dọc theo đường đi đã được thiết lập sẵn bằng việc gắn các vật mốc bên trái của đường. Xe lăn được lập lộ trình để đi từ vị trí vật mốc đầu tiên cho đến vật mốc thứ 5 được xem như là đích đến. Khoảng cách giữa haivật mốc được định trước là Z0 = 2m, khoảng cách từ xe lăn đến tâm vật mốc là X0 = 1m. Các thông số hoạt động khác của xe lăn cũng được qui định trước bao gồm khoảng cách an toàn z > 1m, độ rộng an toàn x > 0.8m, chiều cao an toàn h > 1.2m.

- 56 -

5.2.2.1 Xe lăn di chuyển trên đư ng đi không có v t c n

Kết quả thực nghiệm được chỉ ra trong tình huống cụ thể như trong hình 5.7. Tình huốngđầu tiên là xe lănđi qua mộtvùng trống và sau đó nhận dạng và bám vật mốc để di chuyển ởgiữa đườngđi(từ hình 5.7 đến hình 5.9).

Hình 5.7 Xe lăn nhận biết phía trướclà vùng trống thông qua bản đồ 2D

Hình 5.8 Xe lăn bám theo vật mốc để di chuyển ở giữa đường

(a) (b)

- 57 -

Hình 5.9Xe lăn dừng lại khi đi đến vị trí vật mốc thứ 5 (điểm đích)

5.2.2.2 Xe lăn di chuyển trên đư ng đi có v t c n

Trường hợp đầu tiên là xe lăn nhìn thấytrở ngạighế trên đường và tìm thấy có hai khoảng trống ở phía trước để tránh va chạm (hình 5.10). Xe lăn tính toán khoảng trống bên phải có độ rộng lớn hơn khoảng trống bên trái của ghế, đồng thời lớn hơn đường kính của xe. Liên tục xe lăn đi qua vùng trống và sau đó di chuyển vào giữa đường, tiếp tục dò tìm vật mốc để định vị vị trí và đi về đích.

- 58 -

Hình 5.11Xe lăn phát hiện khoảng trống bên phải và di chuyển vượt qua vật cản

(a) (b)

(c) (d)

- 59 -

Hình 5.12 mô tả trường hợp xe lăn tính toán khoảng trống bên trái có độ rộng lơn hơn khoảng trống bên phải của ghế, đồng thời lớn hơn đường kính của xe. Xe lăn rẽ trái để đi vào vùng trống, vượt qua vật cản và sau đódi chuyển vào giữa đường, tiếp tục dò tìm vật mốc để định vị vị trí và đi về đích.

Hình 5.12Xe lăn phát hiện vật cản và các khoảng trốngdựa vào bản đồ 2D

(a) (b)

- 60 -

Hình 5.13Xe lăn phát hiện khoảng trống bên tráivà di chuyển vượt qua vật cản

Xe lăn tiếp tục đi đến vị trí đích. Khi xác định vật mốc thứ 5, được gọi là đích, xe lănngừngtại vị trí nàynhưthể hiện trong hình 5.14.

Hình 5.14Xe lăn dừng lại khi đi đến vị trí vật mốc thứ 5 (điểm đích)

Kết quảnày cho thấy rằngchiếc xe lănđược trang bị hệ thống stereo camera có thể cung cấp thông tin 3D của vật mốc cho việc định vị xe lăn. Đặc biệt camera có thể nhận dạng vậtmốc là các con số hoặc tranh vẽ. Điều này khác với các cảm biến như laser hoặc siêu âm mà chỉ cung cấp thông tin 2D để phát hiện chướng ngại vật [11, 12]. Vì vậy, rất khó để lập lộ trình cho xe lăn tự hành đi đến đích mong muốn.Trong một nghiên cứu trước đây, Wang và các cộng sựđã phát

- 61 -

triển xe lănđược trang bịvới hai camera để phát hiệnchướng ngại vật và sau đó di chuyển đến đích trên mốc là các bóng đèn trần [19]. Nó khác với nghiên cứu áp dụng một hệ thống stereo camera để xác định các vật mốc được đánh số sao cho xe lăncó thểtự di chuyển đến vị trí đích. Đặc biệt, các thuật toán điều khiển xe lăn điện trong đề tài này chủ yếu sử dụng các phép chiếu hình học dựa trên thông tin vật mốcnên việc tính toán sẽ đơn giản hơn.

- 62 -

Chương 6.

K T LU N

Chương 6 trình bày những kết quả mà đề tài đã đạt được cùng với những hạn chế còn tồn tại. Hướng nghiên cứu tiếp theo để phát triển đề tài cũng được đề cập.

6.1 K t qu đ t được

Trong đề tài này, các thuật toán điều khiển xe lăn điện được đưa ra để nhận dạng các vật mốc và tự động phát hiện, tránh chướng ngại vật nhằm đưa xe lăn đến đích mong muốn.

Thuật toán SURF đã được phát triển để xác định mốc bằng cách sử dụng hệ thống camera "Bumblebee". Thông tin bản đồ 3D thu được để tính toán khoảng cách giữa các vật mốc và xe lăn. Từ các thông số khoảng cách, các thuật toán điều khiển xe lănđược lập trình sử dụng các phép chiếu hình học giúp xe lăn có thể di chuyển ở giữađường hoặc tránh chướng ngại vật, đi quavùng trống và đến đích, trong môi trường trong nhà. Kết quả thực nghiệm cho thấy các phương pháp đề xuấtđể xe lăn bám theo vậtmốcvà tránh vật cản là có hiệu quả.

6.2 H n ch của đề tài

Thông tin trong ảnh chụp được từ camera về môi trường là lớn và phức tạp đòi hỏi phải thực hiện nhiều thuật toán kết hợp cùng lúc để điều khiển xe lăn điện dò tìm vật mốc, tránh vật cản và đi đến đích, do đó các tình huống thực nghiệm chỉ dừng ở môi trường đơn giản.

6.3 Hướng phát triển của đề tài

Từ các kết quả mà đề tài đạt được, có thể kết hợp với các thuật toán huấn luyện thông tin về vị trí của xe lăn và vị trí của các đích đến trong môi trường có nhiều đường đi và đích đến. Từ đó tìm ra đường đi ngắn nhất, thuận tiện nhất trong khoảng thời gian ít nhất để xe lănđến đích.

- 63 -

I LI U THAM KH O

[1] Y. H. S. J. S. Ju, E. Y. Kim, and S. H. Park, "Intelligent wheelchair using face and mouth shape recognition," Consumer Electronics, 2008. ICCE 2008. Digest of Technical Papers. International Conference, Las Vegas,

2008.

[2] J. Z. Yi Zhang, Yuan Luo, "A Novel Intelligent Wheelchair Control System Based," Proceedings of the 2011 IEEE/ICME, International Conference on Complex Medical Engineering, 2011.

[3] A. P. V. S-.Y. Cho, K.W.E. CHENG, "Towards a Brain-Computer Interface Based Control for Next Generation Electric Wheelchairs," 2009 3rd International Conference on Power Electronics Systems and Applications,

2009.

[4] G. M. Tom Carlson, José del R. Millán, "Vision-Based Shared Control for a BCI Wheelchair," International Journal of Bioelectromagnetism, vol. Vol. 13, No. 1, pp. pp. 20 - 21, 2011.

[5] D. C. Abdul R Satti, Girijesh Prasad, "Self-paced Brain-controlled Wheelchair Methodology with Shared and Automated Assistive Control,"

IEEE, 2011.

[6] C. L. T. Qiang Zeng, Brice Rebsamen, and Etienne Burdet, "A Collaborative Wheelchair System," IEEE TRANSACTIONS ON NEURAL SYSTEMS AND REHABILITATION ENGINEERING, vol. VOL. 16, NO. 2, APRIL 2008. [7] M. Zacharie, "GPS and Discrete Kalman Filter for Indoor Robot

Navigation," World Academy of Science, Engineering and Technology 60,

2011.

[8] J. C. Volodymyr Ivanchenko, William Gerrey and Huiying Shen, "Computer Vision-Based Clear Path Guidance for Blind Wheelchair Users," ASSETS’08,

- 64 -

[9] A. P. M. Marcelo R. Petry, Rodrigo A. M. Braga, Luis Paulo Reis, "Shared Control for Obstacle Avoidance in Intelligent Wheelchairs," IEEE, 2010. [10] H. T. N. Hoang T. Trieu, "Shared Control Strategies for Obstacle Avoidance

Tasks in an Intelligent Wheelchair," 30th Annual International IEEE EMBS Conference, Vancouver, British Columbia, Canada, August 20-24, 2008,

2008.

[11] J. M. Aniket Murarka, and Benjamin Kuipers, "Building Local Safety Maps for a Wheelchair Robot using Vision and Lasers," Third Canadian Conference on Computer and Robot Vision (CRV 2006), 7-9 June 2006, Quebec City, Canada. IEEE Computer Society, 2006.

[12] M. D. Ross Desmond, James Fleming, Dmitry Sinyukov, Jerome Schaufeld, Taskin Padir, "Development of Modular Sensors for SemiAutonomous Wheelchairs," Proc. 2013 IEEE International Conference on Technologies for Practical Robot Applications (TePRA), April. 2013.

[13] J. B. a. Y. Koren, "Error eliminating rapid ultrasonic firing for mobile robot obstacle avoidance," Robotics and Automation, IEEE Transactions on, vol. 11, pp. 132-138, 1995.

[14] D. A. B. S. P. Levine, L. A. Jaros, R. C. Simpson, Y. Koren, and J. Borenstein, "The NavChair Assistive Wheelchair Navigation System," IEEE

TRANSACTIONS ON REHABILITATION ENGINEERING, 1999.

[15] D. G. J. Hoey, A. Mihailidis, and P. Elinas, "Obstacle Avoidance Wheelchair System," The International Conference on Robotics and Automation, Orlando, FL, 2006.

[16] T. H. N. Nguyen, J. S. Pham, D. M. Nguyen, H. T., "Real-time obstacle detection for an autonomous wheelchair using stereoscopic cameras," Conf Proc IEEE Eng Med Biol Soc, pp. 4775-8, 2007.

[17] J. M. A. M. Mata, A. de la Escalera and M. A. Salichs, "Learning visual landmarks for mobile robot navigation," 15th Triennial World Congress, Barcelona, Spain, 2002.

- 65 -

[18] S. M. O. P. F. Alcantarilla, G. L. Mariottini, L. M. Bergasa, and F. Dellaert, "Learning visibility of landmarks for vision-based localization," 2010 IEEE International Conference on Robotics and Automation (ICRA), pp. 4881 - 4888, 2010.

[19] H. W. a. T. Ishimatsu, "Vision-Based Navigation for an Electric Wheelchair Using Ceiling Light Landmark," Journal of Intelligent and Robotic Systems,

vol. 41, pp. 283-314, 2004.

[20] J. K. S. S. Y. Ma, and S. S. Sastry, "An Invitation to 3-D Vision From Images to Geometric Models," IEEE Transactions for Pattern Analysis and Machine Intelligence, pp. 920-932, 2004.

[21] K. T. and O. o. M, "A stereo matching algorithm with an adaptive window: theory and experiment," IEEE Transactions for Pattern Analysis and Machine Intelligence, pp. 920-932, 1994.

[22] F. a. L., "Hierarchical block-based disparity estima-tion considering neighbourhood constraints," In Proceedings Inter-national Workshop on SNHC and 3D Imaging, Rhodes, Greece, pp. 115–122, 1997.

[23] H. T. N. Thanh H. Nguyen, "A Bayesian Recursive Algorithm for Freespace Estimation Using a Stereoscopic Camera System in an Autonomous Wheelchair," American Journal of Biomedical Engineering, vol. 1, pp. 44- 54, 2011.

[24] H. Bay, Tuytelaars, T., and Van Gool, L, "Speeded-Up Robust Features (SURF)," in Computer Vision and Image Understanding, ed, 2008, pp. 110(3): p. 346-359.

[25] D. G. Lowe, "Distinctive Image Features from Scale-Invariant Keypoints,"

- 66 -

PH L C

Phụ lục 1: Chương trình lấy thông tin và x lý thông tin 3D từ stereo

camera

// CameraDLL.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include "include/triclops.h" #include "include/digiclops.h" #include "include/pnmutils.h" #include "include/triclops3d.h" #include "include/triclopsbuffer.h" #include "include/triclopscontext.h" #include "include/triclopsvalidation.h" #include "include/triclopsrectify.h" #include "include/triclopsstereo.h" #include "include/triclopsimageio.h"

BOOL APIENTRY DllMain( HANDLE hModule,

DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; }

inline float round2(float x) { return x > 0 ? (float)((int)(x * 100 + 0.5)) / 100 : (float)((int)(x * 100 - 0.5)) / 100; }

//Sort the arrays

//The x array is the x range visible by the camera //The y array is the y range visible by the camera

//The z array is the closed distance of any objects for each value of x within the range y

void q_sort(float x_arr[], float y_arr[], float z_arr[], int left,

int right) {

int l_hold, r_hold, mid;

float x_pivot, y_pivot, z_pivot;

l_hold = left; r_hold = right;

- 67 -

y_pivot = y_arr[left]; z_pivot = z_arr[left]; while (left < right) {

while ((x_arr[right] >= x_pivot) && (left < right)) right--; if (left != right) { x_arr[left] = x_arr[right]; y_arr[left] = y_arr[right]; z_arr[left] = z_arr[right]; left++; }

while ((x_arr[left] <= x_pivot) && (left < right)) left++; if (left != right) { x_arr[right] = x_arr[left]; y_arr[right] = y_arr[left]; z_arr[right] = z_arr[left]; right--; } } x_arr[left] = x_pivot; y_arr[left] = y_pivot; z_arr[left] = z_pivot; mid = left; left = l_hold; right = r_hold; if (left < mid)

q_sort(x_arr, y_arr, z_arr, left, mid - 1); if (right > mid)

q_sort(x_arr, y_arr, z_arr, mid + 1, right); }

void quickSort(float x_arr[], float y_arr[], float z_arr[], int

array_size) {

q_sort(x_arr, y_arr, z_arr, 0, array_size - 1); }

void __declspec(dllexport) TestDLL2(float *xoutarray, float

*zoutarray) { TriclopsInput stereoData; TriclopsInput colorData; TriclopsImage16 depthImage16; TriclopsColorImage colorImage; TriclopsContext triclops; DigiclopsContext digiclops; TriclopsError te;

- 68 - DigiclopsError de; float x, y, z; //zfinal; //int r, g, b; //FILE* pointFile; int nPoints = 0; int pixelinc ; int i, j, k;

unsigned short* row;

unsigned short disparity;

// open the Digiclops

de = digiclopsCreateContext( &digiclops );

de = digiclopsInitialize( digiclops, 0 );

// get the camera module configuration

de = digiclopsGetTriclopsContextFromCamera( digiclops, &triclops );

// set the digiclops to deliver the stereo image and right

(color) image

de = digiclopsSetImageTypes( digiclops, STEREO_IMAGE |

RIGHT_IMAGE );

// set the Digiclops resolution

// use 'HALF' resolution when you need faster throughput,

especially for

// color images

// digiclopsSetImageResolution( digiclops, DIGICLOPS_HALF );

de = digiclopsSetImageResolution( digiclops, DIGICLOPS_FULL );

// start grabbing

de = digiclopsStart( digiclops );

// set up some stereo parameters:

// set to 320x240 output images

te = triclopsSetResolution( triclops, 240, 320 );

// set disparity range

te = triclopsSetDisparity( triclops, 1,89 ); te = triclopsSetStereoMask( triclops, 9 );//11 (3) te = triclopsSetEdgeCorrelation( triclops, 1 );//1

te = triclopsSetEdgeMask( triclops, 7 );//15 (this value reduces many spots between obstacle)

// lets turn off all validation except subpixel and surface

// this works quite well

Một phần của tài liệu Dò tìm vật mốc để điều khiển xe lăn điện đến đích dùng stereo camera (Trang 59)