Môn người máy (robotics) để vui và lợi Gary Pollice Giáo sư thực hành Worcester Polytechnic Institute 08 01 2010 Từ Rational Edge: đọc cách bắt đầu trong lập trình môn người máy, bạn thích dạy các khái niệm cơ sở cho sinh viên hoặc cho chính con cái bạn, hay chỉ đơn giản là phát triển một vài kỹ năng vì lợi ích của chính bạn. Trong khi các sinh viên ghi danh vào các môn số lượng đại học học chính về khoa học máy tính vẫn phát triển ổn định trong vài chục năm qua, con số này vẫn chưa đạt đỉnh cao mà ta thấy được vào thời điểm chuyển sang thế kỷ mới. Ngày càng khó gây được quan tâm của giới trẻ trong thế giới sôi động của máy tính và khoa học máy tính. Một phần của vấn đề là ở chỗ máy tính phổ biến ở khắp nơi, đến nỗi tính mới lạ của chúng đã cũ mòn. Học sinh trong các trường trung học và các lớp dưới đã bị đặt vào tình thế một dạng lập trình nào đó và sự sôi động mà chúng ta đã trải qua khi chúng ta còn trẻ ngày nay khó tìm thấy được. Như vậy, chúng ta làm cách nào để thu hút được sự quan tâm của giới trẻ trong việc theo đuổi một khoá nghiên cứu về khoa học máy tính hoặc một số lĩnh vực liên quan mà cũng phải chịu “sự nuôi dưỡng hiểu biết bị khinh miệt” này? Như tôi đã điểm ra trước đây, khoa học máy tính đã trở nên một bộ phận không thể tách rời của các ngành khác, chẳng hạn như phát triển trò chơi, tin sinh học 2 (bioinformatics), và môn người máy . Như vậy, tôi khuyên rằng bạn và con cái của bạn tham gia vào ngành người máy. Môn người máy rất hay. Môn người máy hấp dẫn những con người khác thường và trở thành một người khác thường là hợp thời. Những người khác thường là thông minh, và có thu nhập tiềm tàng lớn, và họ có nhiều trò vui xung quanh. Hãy hỏi hầu hết trẻ em là chúng thích 2 Bill Gates hay Steve Jobs hay Kim Komando . Bạn sẽ thu hút được chúng. Tôi đang lên kế hoạch viết bài này cho số tháng 12.2007 của Rational Edge, nhưng tính toán thời gian không thích hợp với tôi. (tôi đã hình dung việc khuyến khích bạn ra ngoài và sắm một bộ thiết bị người máy cho bạn và con cái của bạn như một ngày thết đãi.) Nhưng, mặc dù ngày nghỉ đã qua, © Copyright IBM Corporation 2010 Môn người máy (robotics) để vui và lợi Nhẫn hiệu đăng ký Trang 1 của 13 developerWorks® ibm.com/developerWorks/vn/ không bao giờ là quá muộn khi mua một bộ đồ môn người máy cho một sinh nhật hoặc chẳng nhân dịp gì cả. Một chút lai lịch về tôi và môn người máy Tôi phải thừa nhận rằng tôi rất sợ phần cứng. Các đây nhiều năm khi những người có sở thích riêng bắt đầu với tính toán cá nhân thì tôi đã tiết kiệm được khoảng 1.600 đôla đối với bộ lắp ráp máy tính. Tôi kiếm được bộ xử lý SOL-20 mà có một bộ nhớ rất lớn, đến 8K và khả năng kết nối với một 3 máy ghi âm thu băng và một máy vô tuyến truyền hình . Tôi đã lắp các máy thu radio sóng ngắn khi tôi còn là trẻ, nên tôi đã hình dung mình có thể xử lý được việc hàn và lắp bộ SOL-20. Tuy vậy tôi không thật sự cập nhật về các thiết bị điện tử của cuối những năm 1970 và mắc một lỗi khi tôi đang nối tất cả các đầu. Tôi đã gắn sai các chân tiếp điểm làm cho dòng điện chạy ngược và tất cả các điôt trên bảng mạch bị cháy. Suốt từ đó đến giờ tôi rất sợ thử nghiệm quá nhiều với phần cứng. Vợ tôi vẫn chưa cho tôi quên rằng nó mất khoảng 300 đôla để sửa chữa “chuyên nghiệp” sự hư hỏng đó và cho hệ thống chạy được. Và 300 đôla hồi đó là rất lớn. Bạn có thể tưởng tượng sự ân hận của tôi khi tôi thấy rằng năm tới tôi sẽ tham gia vào chương trình giảng dạy môn người máy thống nhất tại Trường Đại học Bách khoa Worcester, ở Massachusetts. Mặc dù tôi được lên lịch dạy kỹ thuật phần mềm ở một phần của khoá học, tôi cảm thấy là phải khá thành thạo về môn người máy nói chung và có một số kinh nghiệm -- nếu không phải là việc thực hành xây dựng người máy, thì ít nhất cũng phải về lập trình chúng. Tôi đã quyết định nhảy xuống vùng nước môn người máy bằng chân đầu tiên và hy vọng rằng nước đó sẽ không cao quá đầu tôi. Hoá ra là có một số điểm vào khá đơn giản về môn người máy mà có một mức chi phí vừa phải. Tôi muốn giới thiệu với bạn hai trong số chúng trong bài viết này và cho bạn một số triển vọng về các tài nguyên môn người máy khác. Legos không chỉ là các khối xây dựng Một trong những nền cho môn người máy thông dụng hơn, thu hút tất cả các mức kinh nghiệm là nền Lego Mindstorms, mà trong đó NXT là phiên bản hiện hành. NXT chứa bộ vi xử lý với bộ nhớ nhanh và có các cổng cho các bộ cảm biến và mô tơ. Nó đưa ra hỗ trợ Bluetooth nên có thể giao tiếp không dây với một máy tính hoặc với các người máy NXT khác. Bộ xử lý của NXT là nâng cấp chính trên nền Mindstorms gốc, làm cho nó có thể chạy được các ứng dụng phần mềm người máy tinh xảo hơn nhiều. Bộ xử lý được bọc trong một thành phần hình chữ nhật với một màn LCD có tên là “cục gạch.” Bất kỳ người máy lego nào mà bạn lắp nên sẽ chứa viên gạch này. NXT có một môi trường lập trình trực quan dựa trên National Instruments LabVIEW, một môi 4 trường lập trình dùng cho các hệ thống nhúng và môn người máy, hỗ trợ một số nền . Một chương trình trong LabVIEW được xây dựng bằng cách soạn ra các khối xây dựng chương trình khác nhau và cung cấp các tham số cho các khối đó. Kiểu lập trình trực quan không thể thu hút các bộ mã hóa lõi cứng, nhưng nó phổ biến với các kỹ sư và những người không phải là lập trình viên, những người cần phải giải quyết các vấn đề thực tế với phần cứng được điều khiển nhờ phần mềm. Tôi sẽ bàn luận về môi trường dựa trên LabVIEW chi tiết hơn dưới đây. Môn người máy (robotics) để vui và lợi Trang 2 của 13 ibm.com/developerWorks/vn/ developerWorks® Điều làm cho hệ thống Lego trở thành một hệ thống lớn để giới thiệu môn người máy cho người trẻ tuổi không chỉ là các khả năng về phần mềm, mà là phần cứng bạn có sẵn sàng hỗ trợ bạn. Phần cứng có kèm khối xây dựng Lego mà nhiều trẻ em gặp phải khi chúng lớn lên. Bạn có thể lấy các khối, đồ gá lắp, và các thiết bị từ các hệ thống Lego khác và gộp chúng vào các người máy mà bạn lắp. Như vậy, nếu con bạn có xu hướng xắn tay áo lên và lắp ráp các đồ vật, nó sẽ thích lắp ráp một người máy rất đẹp và học cách phát triển một chương trình đơn giản để kiểm thử nó. Nếu bạn có con trai mà thích lập trình hơn phần cứng, nó có thể viết ra các chương trình tuyệt hay và học cách lắp một người máy tối thiểu mà sẽ tuân thủ các lệnh của chương trình. 5 Một trong những người máy Lego đơn giản nhất mà bạn có thể làm từ đồ dùng cơ bản là TriBot. Đây là một người máy ba bánh mà chạy xung quanh sàn theo lệnh chương trình của bạn. Nếu bạn làm theo hướng dẫn trong phần RoboCenter của môi trường lập trình hoặc tư liệu mà kèm theo NXT Mindstorms, phiên bản đầu tiên của dự án TriBot mà bạn xây dựng là một người máy với các bánh xe, gạch, và chẳng có gì khác. TribBot này có mọi thứ mà bạn cần cho các bổ sung sau này. Bạn có thể lắp ráp nó, lập trình trình diễn, và kiểm thử nó trong chưa đầy một giờ đồng hồ. Phiên bản thứ hai của TriBot xây dựng trên phiên bản đầu bằng cách bổ sung một bộ giảm chấn mà cảm nhận được khi người máy gặp phải một vật cản. Nó là một thiết bị đơn giản chứa một nút nhạy áp, gửi một tín hiệu khi ấn hoặc nhả nó. Nếu bạn đã quen với việc phát triển các ứng dụng bằng cách sử dụng một giao diện người dùng đồ họa, bạn có thể hình dung ra cách nó làm việc: nó tương tự các nút chuột mà được ấn hoặc nhả. Phiên bản của TriBot với bộ cảm biến giảm chấn như trong Hình 1. Viên gạch nằm trên đỉnh TriBot với hai động cơ mô tơ, điều khiển hai bánh phải trái. Bộ giảm chấn nằm phía dưới hai đòn nhô ra phía trước. Treo từ các đòn này là một thanh ngang chuyển động tự do. Khi TriBot gặp một vật cản, thanh ngang đẩy sang bộ giảm chấn và nhấn nút. Hình 1. TriBot NXT Lego Mindstorms Môn người máy (robotics) để vui và lợi Trang 3 của 13 developerWorks® ibm.com/developerWorks/vn/ Chương trình trình diễn cho TriBot cho phép nó chuyển động tiến lên trước đến khi nó gặp phải bức tường, quay lại, rồi dừng lại. Điều này có lẽ không thật thú vị, nhưng nó chứng tỏ rằng TriBot và bộ cảm biến làm việc chính xác. Trẻ con gần như chắc chắn là khá buồn chán với loại này, do đó bạn có thể đề nghị một chương trình khác. Một chương trình thú vị hơn sẽ cho TriBot gặp phải một vật nào đó, lùi lại, chuyển hướng một chút, và tiếp tục đi. Bạn có thể cho hành vi này chạy mãi hoặc có thể dừng nó sau một số lần đâm va. Tôi đã đặt chương trình của chính mình để dừng nó lại sau mười lần đâm. Việc này bổ sung thêm một số kỹ thuật lập trình mới vào vốn liếng của con bạn, chẳng hạn như tạo vòng lặp. Hãy quan sát chương trình. Hình 2 hiển thị môi trường LabVIEW. Hình 2: Môi trường LabVIEW Môi trường LabVIEW gồm có năm phần. Một bảng công cụ nằm trên phía trái của cửa sổ. Tất cả các khối sẵn có có thể được chọn từ bảng này và chuyển sang khu vực chương trình -- ô lớn bên phải bảng. Dưới ô chương trình là một ô chi tiết hiển thị các chi tiết cho khối chọn hiện thời. Ô trên bên phải cửa sổ là Trung tâm Robo. Trung tâm Robo chứa các dự án hướng dẫn cho hệ thống NXT Mindstorms cơ sở và tư liệu khác. Dưới Trung tâm Robo là một ô với hai phiếu. Một phiếu cung cấp một liên kết dùng cho trợ giúp bổ sung, và phiếu kia cung cấp một khung nhìn hình nhỏ của toàn bộ chương trình của bạn. Từ khung nhìn hình nhỏ bạn có thể nhấn lên một khối và nó trở nên nhìn thấy được trong ô chương trình. Chúng ta hãy quan sát gần hơn chương trình đầy đủ cho TriBot với bộ cảm biến va chạm, như trong Hình 3. Môn người máy (robotics) để vui và lợi Trang 4 của 13 ibm.com/developerWorks/vn/ developerWorks® Một chương trình TriBot đầy đủ Có bảy khối sử dụng trong chương trình. Điểm xuất phát đối với chương trình là điểm xa nhất bên trái. Khối đầu tiên trong chương trình là một khối lặp mà bao quanh năm khối khác trong chuỗi. Vòng lặp sẽ thực hiện qua mười lần lặp như quy định trong ô chi tiết như trong Hình 4. Hình 4. Chi tiết cho các khối lặp Chuỗi năm khối trong vòng lặp chứa các khối sau: 1. Một khối di chuyển mà sẽ di chuyển TriBot lên phía trước với 75% công suất. 2. Một khối đợi sẽ đợi đến khi bộ cảm biến va chạm được nhấn. Có nghĩa là, người máy di chuyển cho đến khi bộ cảm biến được nhấn và sau đó điều khiển cho qua khối này đến khối tiếp theo. 3. Một khối âm thanh mà phát lại một âm thanh kêu la ngắn. 4. Một khối di chuyển sẽ di chuyển trở lại TriBot cho một vòng quay đầy đủ của các bánh xe. 5. Một khối di chuyển mà sẽ chỉ di chuyển được bánh trái ngược lại 1,3 vòng quay của bánh xe. Việc này làm cho TriBot xoay khoảng 45° sang bên trái. Sau khi vòng lặp thực hiện được mười lần, một khối âm thanh thực hiện phát lại lời chào “tạm biệt” và chương trình kết thúc. Hình vuông chứa các điều khiển phía dưới bên phải hình 3 có thể được sử dụng để biên dịch chương trình, tải về vào một viên gạch NXT, và thực hiện nó nếu yêu cầu. Thường bạn sẽ tải về chương trình của bạn vào viên gạch qua một cáp USB, tách đường cáp khỏi gạch rồi sử dụng các điều khiển trên viên gạch để thực hiện chương trình của bạn. Các chi tiết vòng lặp như trong Hình 4 khá đơn giản. Hình 5 hiển thị chi tiết cho khối di chuyển phức tạp hơn. Hình 5. Các chi tiết của một khối di chuyển Gạch tiêu chuẩn chứa ba cổng đối với các kết nối mô tơ. Trong TriBot, bạn nối hai mô tơ với các cổng B và C. Mô tơ bên trái nối với cổng C và bên phải với cổng B. Bạn có thể quy định có di Môn người máy (robotics) để vui và lợi Trang 5 của 13 developerWorks® ibm.com/developerWorks/vn/ chuyển các bánh xe về phía trước hoặc lùi lại bằng cách chọn hướng đi đúng bên dưới phần chọn cổng. Các chi tiết về di chuyển trong Hình 5 cho bạn biết sẽ đặt công suất bằng nhau cho cả hai cổng. Phím gạt ở phía dưới có thể thay đổi để đặt công suất không bằng nhau, làm cho TriBot chuyển hướng. Công suất có thể được điều chỉnh tại đỉnh bên phải của ô chi tiết -- công suất mạnh hơn làm 6 TriBot chuyển động nhanh hơn, nhưng cũng làm tiêu hao công suất sẵn có nhanh hơn . Bên dưới phím gạt công suất là một bộ điều khiển cho phép bạn quy định chuyển động kéo dài bao lâu. Trong ví dụ này, lệnh này sẽ cho chạy mãi mãi, hoặc cho đến khi một điều kiện được đáp ứng như đã quy định bởi khối tiếp theo trong chương trình của chúng ta đợi nhấn nút bộ cảm biến va chạm. Cuối cùng, bạn có thể chọn hành động tiếp theo cho các bánh xe -- sử dụng phanh hoặc cho lao dốc. Mục chi tiết này không phải lúc nào cũng sẵn có. Nó hoạt động trên cơ sở các thiết lập của các chi tiết khác trong bộ điều khiển. Mặc dù tôi không sử dụng nó trong chương trình này, vẫn có một bô phận (màu xanh) bên trái của các chi tiết hiển thị số vòng quay mỗi bánh xe thực hiện. Bạn có thể sử dụng cái này để xác định nó phải mất bao nhiêu vòng để đi được một khoảng cách quy định. Đó là các hộp phản hồi. Đi song song một cách tự nhiên Chúng ta học được tốt nhất khi chúng ta đang có trò vui. Người máy không phải là các hệ thống nối tiếp, đúng hơn là chúng có tính song song rất cao. Khi chúng ta nói về hệ thống song song, các lập trình viên ngay lập tức nghĩ về các chi tiết khó khăn của thiết lập các luồng và các phần tử mức thấp khác của các chương trình. Việc chạy các chương trình song song một cách chính xác là rất khó. Các ngôn ngữ nhất định đang xuất hiện công khai khiến nhiệm vụ dễ dàng hơn, nhưng chúng 7 vẫn chưa được sử dụng rộng rãi . LabVIEW làm cho trạng thái song song dễ đến nỗi thậm chí người ta không nhận thức được là đang viết chương trình song song. Chúng ta có thể quyết định rằng nó sẽ là niềm vui thích khi có màn LCD trên viên gạch hiển thị một trái tim đang đập khi TriBot chuyển động trong lúc học. Chương trình như trong Hình 6 thực hiện chính điều đó. Hình 6. Một chương trình NXT song song Có hai luồng điều khiển như trong Hình 6. Luồng trên đỉnh chứa chương trình gốc của chúng ta để TriBot chuyển động. Luồng thứ hai -- có tên là tín hiệu xâu -- xử lí chương trình bổ sung để hiển thị trái tim đang đập. Chúng ta làm việc này bằng cách hiển thị một biểu tượng hình trái tim lớn, đang Môn người máy (robotics) để vui và lợi Trang 6 của 13 ibm.com/developerWorks/vn/ developerWorks® đợi một nửa thứ hai, hiển thị một biểu tượng hình trái tim nhỏ, đợi một nửa thứ hai khác, và sau đó lặp vô tận vòng lặp này. Tất cả là ở đó! Nếu trẻ con có thể song song hóa từ những cố gắng ban đầu, sau này có thể chúng sẽ gặp phải một số khái niệm khó hơn về môn người máy. Nếu bạn đã dùng phần lớn kinh nghiệm lập trình của bạn để viết mã tuần tự, bạn có thể gặp nhiều phiền toái hơn khi thích ứng tính chất song song của các chương trình người máy của bạn so với con cái bạn. Khả năng mở rộng Hệ thống Lego có thể dễ dàng mở rộng với các bộ cảm biến, mô tơ, và các bộ kích hoạt bổ sung. Có một số nhà cung cấp chế tạo các thành phần cho nền Lego. Một số thành phần đó có giá trị nhỏ chỉ 10 đôla, còn các bộ cảm biến hoặc động cơ phức tạp khác có thể có giá cao hơn vài lần. Các bộ phận từ các tập hợp Lego khác có thể được sử dụng với nền Mindstorms. Bạn cũng có thể sử dụng các thành phần từ các bộ đồ người máy khác và trộn và khớp lại để tạo ra các tác phẩm kỳ ảo. Hệ thống Lego là trên mức đồ chơi. Nó là con đường dẫn sang một thế giới kỳ diệu cho cả bạn lẫn con cái. Nếu bạn không chắc chắn liệu bọn trẻ có thể quan tâm hơn về các lĩnh vực cơ khí, điện, hoặc phần mềm của môn người máy, thì hệ thống Lego là điểm xuất phát đúng. Nếu bạn định sử dụng NXT cho các dự án của chính bạn sau khi con cái ngủ, bạn có thể muốn lập trình bằng một ngôn ngữ mà bạn quen thuộc hơn và cho bạn nhiều quyền điều khiển hơn trên bộ xử lý. Có nhiều tuỳ chọn cho bạn. Có các hệ thống lập trình C và Java™ cũng như một số ngôn ngữ 8 động mà bạn có thể tải về và sử dụng với một chút nỗ lực về cấu hình . Người máy iRobot Create Lego NXT không phải là người máy đầu tiên của tôi. Nó là cái mà tôi đang sử dụng để tìm hiểu nhiều hơn về các khái niệm cơ sở không phải phần mềm. Người máy đầu tiên của tôi là iRobot 9 Create™ của Công ty iRobot -- nơi đã phát triển bộ quét Roomba . Chúng tôi đã có một Roomba trong nhà được vài năm, và khi tôi nghe đến Create tôi muốn nhận được một chiếc để thử bắt tay 10 vào nó . Create gồm có một đế Roomba -- nền hình tròn với hai bánh lái và một bánh líp thứ ba tuỳ chọn, và một số đầu nối đến máy tính của bạn, gồm có một cáp cho sẵn, các bộ cảm biến bên ngoài, và 11 nối với một modul lệnh tuỳ chọn chứa một bộ vi xử lý riêng. (Nếu bạn có kế hoạch thực hiện bất kỳ dự án nào có ích với Create, nhất định sẽ cần modul lệnh.) Create đưa ra hai cách điều khiển thiết bị. Cách thứ nhất là ngôn ngữ mã hoá bytecode đơn giản, cho phép bạn có thể sử dụng để tạo ra các kịch bản lệnh mà bạn tải lên thiết bị. Bạn thực sự không cần một modul lệnh nào cho cái này, nhưng bộ nhớ rất hạn chế. Có một bộ đệm nhỏ 100-byte mà giữ luồng lệnh bằng ngôn ngữ bytecode. Bạn có thể “lập trình” bằng cách sử dụng giao diện mở ngôn ngữ bytecode thông qua nạp trực tiếp kịch bản lệnh vào máy từ một cáp nối trực tiếp với máy Môn người máy (robotics) để vui và lợi Trang 7 của 13 developerWorks® ibm.com/developerWorks/vn/ tính của bạn. Trong khi vệc này là rất hữu ích để bạn tự làm quen với thiết bị, nó lại vô ích đối với các ứng dụng thực, và bạn và con cái sẽ nhanh chóng mất đi sự quan tâm. Việc lập trình cho bộ xử lý của modul lệnh của Create đòi hỏi một trình biên dịch C thực và các công cụ phát triển khác. Cách tiếp cận được khuyến cáo về lập trình cho Create là sử dụng bộ công 12 cụ WinAVR. WinAVR là một tập hợp các công cụ mà là mã nguồn mở và sẵn có miễn phí , Các công cụ WinAVR dựa trên các công cụ biên dịch gcc phổ biến với một bộ tạo mã cho họ các bộ xử lý AVR. Các công cụ chính trong bộ công cụ là các trình biên dịch, một thư viện cung cấp các hàm đặc trưng cho việc truy cập và sửa đổi phần cứng và bộ nhớ AVR, và một chương trình dùng để nạp các chương trình vào Create. Trên hệ thống Macintosh của tôi có một bộ soạn thảo tên là Smultron, dùng như một IDE để phát triển Create. Một công cụ tương tự có để dùng cho phiên bản Windows của các công cụ. Khi bạn có môi trường lập trình đã cài đặt và lập cấu hình, bạn có thể bắt đầu khám phá các bộ cảm biến lắp sẵn của Create. Thiết bị đi kèm một trạm nối đế nhằm nạp lại ắc quy khi thiết bị gắn trạm. Trạm phát ra một tín hiệu hồng ngoại được thu nhận bằng bộ cảm biến hồng ngoại của thiết bị. Một trong những trình diễn lắp vào Create cho phép bạn định vị bất cứ nơi nào của thiết bị trong một phòng và nó đi tìm trạm nối. Nếu nó không vào trạm chính xác thì sẽ đảo lại hướng một chút và thử lại lần nữa cho đến khi nó vào được trạm hoàn toàn. Bộ Create chuẩn có các bộ cảm biến đặc biệt dùng cho các sự kiện khác, chẳng hạn như khi Create va vào một bức tường hoặc vật thể và khi Create thiết bị ở bên cạnh rìa của một bề mặt như một cái bàn. Bạn có thể sắm các bộ cảm biến khác của iRobot hoặc các nguồn khác và nối trực tiếp vào Create hoặc nối với modul lệnh. Một số bộ cảm biến này phản ứng với các hiện tượng vật lý chẳng hạn như ánh sáng, nhiệt độ, v.v…. Khi bạn đã hiểu cách viết các chương trình mà làm việc với một loại bộ cảm biến, bạn sẽ có thể làm việc dễ dàng với hầu hết các loại bộ cảm biến khác. Từ khi tôi bận rộn với người máy Lego của tôi, tôi đã cho một sinh viên mượn Create của tôi để anh ta sử dụng cho một trong các dự án của mình. Anh ta đã nhanh chóng có hành vi thú vị thực hiện trên Create và sau đó tiếp tục bổ sung các phần cứng và chương trình mới. Anh đã xây dựng một 13 nền trên thiết bị, cần máy tính xách tay để kết nối không dây, một kẹp giữ cho một Sun SPOT , và các camera âm thanh nổi để quan sát nơi Create đang đi qua. Kết quả Create của anh như trong Hình 7. Chúng ta đã có nhiều trò vui với Create. Bob, tên người sinh viên, đã đem người máy đến văn phòng của tôi và chúng tôi ngồi tại máy tính xách tay của tôi quan sát khung cảnh từ các camera trên Create khi nó đi lang thang xuống hội trường. Chúng tôi đã sử dụng thiết bị để đưa kẹo cho một số giáo sư khác trên tầng và liếc trộm sang các văn phòng khác. Với chỉ vài phím gõ trên bàn phím máy tính xách tay chúng tôi đã điều khiển người máy bằng cách gửi các tín hiệu qua mạng không dây của chúng tôi đến máy tính xách tay trên thiết bị. Máy xách tay của Create được nối trực tiếp đến Create và dịch các phím gõ thành các lệnh thích hợp để cho máy chuyển động và gửi lại các ảnh. Môn người máy (robotics) để vui và lợi Trang 8 của 13 ibm.com/developerWorks/vn/ developerWorks® Hình 7. iRobot Create với các camera và một Sun SPOT Các khác biệt chủ yếu giữa Create và các hệ thống Mindstorms Lego là: • Bộ khung của Create và các cơ cấu lái được lắp sẵn từ trước, còn bạn phải lắp ráp các người máy Lego. • Create không có nhiều phần cứng cắm là chạy và các chi tiết cấu tạo của bộ cảm biến như hệ thống Lego. Điều này có nghĩa bạn cần cố gắng hơn như thợ sửa chữa phần cứng, nếu muốn mở rộng Create. • Bạn phải quyết tâm lập trình ở một mức thấp hơn với Create, hơn là với Lego. Không có môi trường phát triển tương tự như LabVIEW như tôi biết để bạn có thể sử dụng với Create, mặc dù bạn có thể thực hiện các kịch bản lệnh đơn giản. Khi lần đầu thu được Create, tôi quan tâm nhiều đến lập trình người máy hơn là tự mình xây dựng phần cứng; tôi vẫn bị trói buộc vào nỗi sợ về phần cứng, với lý do là sẽ không thể thực sự xây dựng được thứ gì hữu ích. Từ khi Create được lắp ráp xong, với hệ thống điều khiển sẵn sàng, tôi nghĩ rằng nó sẽ là cách dễ nhất để bắt đầu tìm hiểu về môn người máy. Tôi không chắc chắn là đúng. Hệ thống phù hợp nhất với bạn sẽ phụ thuộc vào nền tảng và sự sẵn lòng của bạn để chuyển sang giao diện vi xử lý với các bộ cảm biến phần cứng ở một mức rất thấp. Nếu bạn chuẩn bị nghiêm chỉnh về môn người máy, bạn sẽ nhanh chóng muốn nhiều hơn một trong hai hệ thống này cung cấp trong bộ đồ dùng cơ bản của chúng. Bạn sẽ gần như chắc chắn muốn thu thập một vài bộ vi xử lý và các thành phần phần cứng và xây dựng các tác phẩm độc đáo của bạn. Rất may là có rất nhiều thông tin và tài nguyên sẵn có cho bạn, có một số mà tôi đã liệt kê trong phần cuối của bài này. Môn người máy (robotics) để vui và lợi Trang 9 của 13 developerWorks® ibm.com/developerWorks/vn/ Kết luận Tôi dám cược rằng nếu các bạn thử môn người máy một lần, nhiều bạn sẽ bị mắc vào nó. Việc lập trình và chỉnh sửa sơ qua phần cứng sẽ đem lại sự hồi tưởng về về một thời gian khi đào sâu một điều gì đó mới mẻ là thật sự vui thích. Có thể nó sẽ gợi bạn nhớ lại việc sử dụng một động cơ máy cắt cỏ cũ để xây dựng chiếc ô tô đua nhỏ của chính bạn. Một số bạn sẽ nhớ lại chương trình BASIC đầu tiên mà bạn đã viết để hiển thị thực tế điều gì đó trên màn hình TV móc nối với máy tính TRS-80 hoặc Commodore của bạn. Các ghi nhớ này sẽ giúp bạn chia sẻ kinh nghiệm của bạn với con cái bạn khi chúng trải nghiệm niềm vui của việc tạo ra một thứ gì đó với phần cứng và phần mềm tốt, và bạn có thể là một bộ phận của trí nhớ của chúng. Bạn sẽ không chỉ thực hiện một điều gì đó với con cái, mà chúng sẽ học được các bài học mà chúng có thể lĩnh hội được và sử dụng ở trường. Chúng cũng có thể tham gia vào các cuộc tranh đua người máy như cuộc đua FIRST. FIRST (For Inspiration and Recognition of Science and Technology) (Cho niềm Cảm hứng và Công nhận Khoa học và Công nghệ) là một tổ chức do Dean Kamen, nhà phát minh của Segway và nhiều công nghệ cải tiến khác, thành lâp ra. FIRST điều khiển một cuộc đua tranh người máy hằng năm ở nơi mà các học sinh trung học lập nhóm lên với những người thầy thông thái từ các trường đại học và ngành công nghiệp để lắp ráp các người máy dùng cho các nhiệm vụ đặc biệt. Các nhóm cạnh tranh với nhau ở cấp địa phương và địa hạt, với những người chiến thắng chuyển tiếp lên các chức vô địch thế giới. Tháng 4 này sẽ có vài nghìn nhà nghiên cứu người máy trẻ tuổi sẽ chứa đầy một vũ đài tại Atlanta để giành giải thưởng FIRST 2008. Nhiều người cũng sẽ thu được các kinh nghiệm rất tuyệt về các ứng dụng trường học của họ. Như vậy, khác với việc chi tiêu một vài trăm đôla vào một hộp trò chơi, tôi khuyên bạn đầu tư vào một bộ đồ người máy. Tôi cược rằng trẻ con sẽ có chính xác nhiều trò vui, và bạn sẽ có khả năng tìm hiểu cùng với chúng. Đó sẽ là việc chi tiêu thời gian tốt. Ghi chú 1. Xem Nơi nào có tất cả các ngành CS đã đi qua?, http://www.ibm.com/developerworks/ rational/library/sep07/pollice/index.html. 2. Nếu bạn không quen thuộc với Kim Komando, bà quản lý một triển lãm rất phổ biến cho những người đam mê máy tính hiện tại và tương lai. http://www.komando.com/. 3. Bạn có thể tìm ra SOL-20 tại http://www.digibarn.com/collections/systems/sol-20/index.html. 4. Bạn có thể tìm thấy nhiều hơn về LabVIEW tại http://www.ni.com/labview/. 5. Có một số bộ phiên bản Mindstorms NXT của Lego. Khi tôi nói chuyện về đồ dùng cơ bản, tôi đề cập đến bộ hướng dẫn (educators set) mà tôi đã đặt mua. Bộ này có giá khoảng 300 đôla. 6. Khối gạch chuẩn có ngăn sử dụng các pin AA. Tuy nhiên, đối với bất kỳ cách sử dụng có ý nghĩa, bạn cần có pin khối nạp lại tuỳ chọn, cho phép sử dụng vài giờ giữa các lần nạp. 7. Xem bài Tháng 12, Tính toán trong một vũ trụ song song. http://www.ibm.com/ developerworks/rational/library/dec07/pollice/index.html. 8. Một danh mục các tuỳ chọn lập trình cho NXT có thể là tìm thấy tại http:// www.teamhassenplug.org/NXT/NXTSoftware.html. 9. Bạn có thể tìm thông tin về iRobot Create tại http://www.irobot.com/create. Môn người máy (robotics) để vui và lợi Trang 10 của 13 ibm.com/developerWorks/vn/ developerWorks® 10. Roomba là một bộ quét người máy vòng tròn nhỏ, đi quanh quẩn qua các tầng nhà của bạn để thu nhặt bụi rác bẩn. Tuy không làm thay một máy hút bụi nhưng nó là một cách tiện lợi để giữ cho sàn nhà sạch sẽ giữa các lần dọn dẹp. 11. Modul lệnh trong hệ thống của tôi sử dụng một bộ vi xử lý ATMega168 Amtel. 12. Các công cụ này có thể lấy được từ các trang iRobot. (http://www.irobot.com/sp.cfm? pageid=305). 13. Sun SPOT là một hộp nhỏ cỡ bàn tay, nó thực thi Công nghệ Đối tượng Lập trình Nhỏ (Small Programmable Object Technology). Nó kèm theo một bảng con, có chứa một bộ cảm biến nhiệt độ, bộ cảm biến ánh sáng, máy đo gia tốc 3-D, tám đèn LED, và hai chuyển mạch. SPOT được lập trình bằng Java. Môn người máy (robotics) để vui và lợi Trang 11 của 13 developerWorks® ibm.com/developerWorks/vn/ Tài nguyên • Số lượng các tài nguyên người máy sẵn có trên web là rất lớn. Đây chỉ là một ít mà bạn có thể xem: bộ đồ dùng người máy VEX là một bộ mà chúng ta dùng cho khoá học nhập môn của chúng ta tại WPI. http://www.vexlabs.com. • Các sản phẩm HiTechnic có một số bộ cảm biến và các thành phần khác cho Lego NXT. http:// hitechnic.com/. • Mindsensors.com có các thành phần dùng cho Lego và các nền người máy phổ biến khác. http://www.mindsensors.com. • Dallas Personal Robotics Group có một số hướng dẫn và thông tin lớn cho những người bắt đầu học và cả các nhà nghiên cứu người máy kinh nghiệm. http://www.dprg.org. • Giáo viên Điện tử (Electronics Teacher) có một số hướng dẫn hay cho những người mới bắt đầu học. http://www.electronicsteacher.com/robotics/robotics-tutorial/beginners-robotics/. • Nếu bạn thực sự muốn bắt đầu ngay từ ban đầu, Hội Người máy (Society of Robots) có một bài hướng dẫn về cách lắp ráp người máy đầu tiên của bạn. http://www.societyofrobots.com/ robot_tutorial.shtml. • Nếu bạn sử dụng các công cụ phát triển của Microsoft bạn có thể quan sát nền người máy và các hướng dẫn của chúng. http://msdn2.microsoft.com/en-us/robotics/aa731536.aspx. • RidgeSoft có một gia đình người máy IntelliBrain một số hướng dẫn về chúng. http:// www.ridgesoft.com/tutorials.htm. • Một diễn đàn mới đã được tạo ra dùng cho cho các bài viết về Rational Edge, vậy bây giờ bạn có thể chia sẻ các suy nghĩ của bạn về bài viết này hoặc các bài khác về các vấn đề hiện tại hoặc quá khứ của chúng ta. Hãy đọc những cái đồng nghiệp của bạn trên thế giới nói, tạo ra các thảo luận chủ yếu của chính bạn, hoặc tham gia vào các thảo luận đang tiến triển. Hãy bắt đầu bằng cách nhấn VÀO ĐÂY. • Cộng đồng Nhóm Người dùng Global Rational. Môn người máy (robotics) để vui và lợi Trang 12 của 13 ibm.com/developerWorks/vn/ developerWorks® Đôi nét về tác giả Gary Pollice Gary Pollice là một giáo sư thực hành tại Trường Đại học Bách khoa Worcester, Worcester, Massachusetts. Ông giảng dạy về kỹ thuật phần mềm, thiết kế, kiểm thử, và các khoá học khác về khoa học máy tính, và cũng chỉ đạo các dự án sinh viên. Trước khi gia nhập vào thế giới học giả, ông đã dành thời gian hơn ba mươi nhăm năm phát triển các loại phần mềm khác nhau, từ các ứng dụng kinh doanh đến các trình biên dịch và công cụ. Công việc cuối cùng của ông về ngành này là với phần mềm Rational của IBM, nơi ông được biết với tên là “Người thô lỗ RUP” (RUP Curmudgeon) và cũng là một thành viên của nhóm Rational Suite ban đầu. Ông là tác giả đầu tiên của Phát triển Phần mềm cho Các Nhóm Nhỏ: một cách tiếp cận lấy RUP làm trung tâm (Software Development for Small Teams: A RUP-Centric Approach), do AddisonWesley xuất bản năm 2004. Ông có một bằng Cử nhân về Toán học và một bằng Thạc sĩ Khoa học về khoa học máy tính © Copyright IBM Corporation 2010 (www.ibm.com/legal/copytrade.shtml) Nhẫn hiệu đăng ký (www.ibm.com/developerworks/vn/ibm/trademarks/) Môn người máy (robotics) để vui và lợi Trang 13 của 13