Sơ lược(Sumary) Robot Operating System(ROS)

Vì thấy các bạn từ Việt Nam có sự quan tâm đến phần này nên hôm nay mình sẽ update nội dung tiếp về Robot operating system nhé, cảm ơn đã ủng hộ mình.

Robot operating system is a dedicated software system for programming and controlling robots, including tools for programming, visualizing, directly interacting with hardware, and connecting robot communities around the world. In general, if you want to program and control a robot, using ROS software will make the execution much faster and less painful. And you don’t need to sit and rewrite things that others have already done, but there are things that you want to rewrite are not capable. Like Lidar or Radar driver.

ROS runs on Ubuntu, so to use ROS first you must install Linux. For who do not know how to install Linux and ros, I have this link for you:

Robot operating system  là một hệ thống phần mềm chuyên dụng để lập trình và điều khiển robot, bao gồm các công cụ để lập trình, hiển thị, tương tác trực tiếp với phần cứng, và kết nối cộng đồng robot trên toàn thế giới. Nói chung là nếu bạn muốn lập trình và điều khiển một con robot, sử dụng phần mềm ROS sẽ giúp quá trình thực hiện nhanh hơn và bớt đau khổ hơn rất nhiều. Và bạn không cần ngồi viết lại những thứ mà người khác đã làm rồi, mà có những thứ muốn viết lại cũng không có khả năng. Như Lidar hoặc Radar driver chẳng hạn.

ROS chạy trên nền Ubuntu,  do đó để sử dụng ROS đầu tiền các bạn phải cài Linux. Cho bạn nào chưa biết cài Linux và ros thì mình có link này cho các bạn:

http://wiki.ros.org/kinetic/Installation/Ubuntu

Dưới đây mình sẽ trình bày về luận văn thạc sĩ của mình, phần dưới là 1 phần trích đoạn phần đầu của luận văn. Nếu bạn nào cần full không che thì pm mình bên dưới phần comment nhé:))

1.1 Đề xuất dự án – Robot tự hành di động

Hệ thống robot được sử dụng trong dự án này đã được phát triển trong quá trình nhiều trước các dự án tổng thể và chuyên môn hóa. Mục tiêu dài hạn của các dự án này là phát triển Các khái niệm robot tự động di động để hỗ trợ mọi người trong môi trường trong nhà, như đổ nước và phục vụ cho con người. Đề tài của luận văn này dựa trên đề tài do GS.TS. Nauth tại Bộ phận Công nghệ Thông tin, nơi gợi ý một số ứng dụng khả thi cho một robot như vậy:

• Robot có thể điều hướng tự động trong môi trường trong nhà, như phòng hoặc hành lang.

• Robot phải tránh chướng ngại vật khi di chuyển từ vị trí A đến B, chướng ngại vật ở đây bao gồm các chướng ngại vật tĩnh và động.

• Robot phải phân loại đối tượng, chẳng hạn như nhận dạng cốc và chai, sau khi robot đó có thể rót nước từ chai này sang cốc khác. Mục đích sử dụng trong bệnh viện và trạm xá.

• Cho phép nhân viên thực hiện kiểm tra và bảo trì từ xa thông qua điều khiển từ xa.

1.2 Tổng quan về triển khai

Quyết định Mục tiêu

Để làm cho robot tự động điều hướng trong môi trường, điều hướng dựa trên tầm nhìn là được chứng minh là một thuật toán nổi bật để lựa chọn. Robot có khả năng xây dựng bản đồ môi trường xung quanh và di dời một cách tự chủ được coi là một điểm khởi đầu tốt để tiếp tục phát triển các giải pháp dựa trên tầm nhìn.

Chọn công cụ và phần cứng

Là phần tiếp theo của dự án Volksbot, robot được trang bị máy quét Laser 2D, Cảm biến SICK LMS100 cho phạm vi đo lên đến 20 m. Để tạo bản đồ 3-D, robot đã được trang bị camera 3D, Kinect cho XBOX 360 có khả năng nhận biết hình ảnh có độ sâu ở mức cao tốc độ khung hình (30Hz). Để sử dụng Kinect, trình điều khiển Kinect cần cài đặt trong ROS, trình điều khiển có thể sử dụng có thể là Freenect hoặc openNI, tuy nhiên cái sau đã lỗi thời ngày nay nên ổ Freenect đã được chọn. Các công việc và giải pháp được trình bày trong luận văn này xoay quanh quá trình tích hợp ROS với robot di động. Cài đặt ROS trên Ubuntu Linux cho đến nay là cách dễ dàng nhất để bắt đầu bằng cách sử dụng khuôn khổ. Vì lý do này, và để tránh can thiệp vào dự án khác trên cùng một robot, người ta quyết định rằng một máy tính bổ sung chạy Linux nên được trang bị cho robot. Cấu hình nền tảng robot mới được thể hiện trong hình 1.1. Hai công cụ hỗ trợ đã được triển khai cùng với phần mềm robot: một khái niệm đơn giản về trạm điều khiển với máy tính từ xa và điều khiển từ xa cầm tay trên điện thoại thông minh hoặc máy tính bảng. Tổng quan về hệ thống hoàn chỉnh được thể hiện trong hình.

1.2. Mục tiêu của luận văn

Mục tiêu của luận án này là thực hiện một nghiên cứu về SLAM và cố gắng tạo ra một bản đồ Khuôn viên Đại học đồng thời xác định vị trí của robot trong bản đồ. Đầu tiên, Một máy ảnh Kinect và máy quét laser 2D SICK sẽ được sử dụng để vẽ bản đồ của ba phòng và hành lang trong tòa nhà 8, Đại học Khoa học Ứng dụng Frankfurt. Toàn bộ hệ thống sẽ được đưa vào rô bốt có bánh xe, bộ mã hóa bánh xe sẽ được sử dụng để cung cấp tính năng đo đường của rô bốt. Đây là một cụ thể ứng dụng dựa trên ROS (Hệ điều hành Robot) để trình diễn chế độ hoạt động của ROS. Lý do chọn bản đồ RTAB để thử nghiệm trên robot bao gồm: Thứ nhất, đây là một cách tiếp cận khá mới trong SLAM, phương pháp này cung cấp bản đồ 3D thay vì bản đồ 2D như các phương pháp khác, vì vậy rất nhiều cơ hội nghiên cứu vẫn còn. Thứ hai, thuật toán RTAB nhằm mục đích tìm ra các đường dẫn tối ưu giữa một số mẫu, vì vậy nó cho phép lưu bộ nhớ dài hạn khi robot thực hiện đa ánh xạ.

Chức năng

1.3. CẤU TRÚC LUẬN VĂN

• 1. Bản địa hóa và ánh xạ đồng thời dựa trên thị giác máy tính.

• 2. Lập bản đồ qua nhiều phiên.

• 3. Điều hướng tự động đến một mục tiêu đơn giản.

• 4. Tránh chướng ngại vật 3D và 2D trong chế độ điều hướng.

• 5. Có thể điều khiển robot từ bàn phím trên bo mạch.

• 6. Robot có thể được điều khiển bằng Điều khiển từ xa.

• 8. Robot có thể nhận lệnh vận tốc qua WiFi.

Above is my project with RTAB, HECTOR-SLAM and ROS to program to Volksbot and NAO humanoid robot, all code of the robot in the video above was full describe in the github link:

Feel free to use these code for your project. And I wish you very success!

Trên đây là dự án của tôi với RTAB, HECTOR-SLAM và ROS để lập trình cho Volksbot và rô bốt hình người NAO, tất cả mã của rô bốt trong video trên đều được mô tả đầy đủ trong liên kết github.

Có thể tải sử dụng code này cho dự án của bạn. Chúc bạn rất thành công!

https://github.com/thanh118/RBGD-Mapping-

Authors:

Truong Thanh Nguyen/ Github: thanh118

Software Developer/ DevOps (Autonomous Driving and Machine Learning)Follow 100 follower · 16 following · 

Mùa đông cổ tích của vùng Alsace

Xin chào các bạn, à mà không, xin chào ”các bạn đọc tương lai”  tại vì hiện tại thì mình thấy chưa ai ghé xem cái trang này cả, mà cứ mở miệng ra chào các bạn như đúng rồi thì… hơi kì kì 😀

Đôi dòng giới thiệu (hãy đọc dù nó rất.. không liên quan!) : Giới thiệu luôn nhé, là chuyên mục này không phải do tên chủ nhân của blog này viết. Nhưng do chủ nhân của blog là anh Nguyễn Trương Thành đẹp zai (luôn tự nhận) dụ dỗ mấy lần để mình viết mấy bài về chuyến du lịch của hai đứa, vừa lưu giữ kỉ niệm, vừa màu mè thêm cho cái blog để… hút view ké :))) Chả biết có hút view không nữa…  nhưng vượt qua cái sự lười của bản thân, thì oke, thay vì mình ăn thêm 1 thanh socola, quất thêm một li kem, thì năm 2018 này, mình sẽ dành thời gian để làm 1 chuyện có lợi cho cái… bao tử của mình hơn, đó là quay trở lại việc viết lách, kể từ sau khi cái blog 360 của mình bị khai tử hồi đó (giờ nhớ lại vẫn tiếc, dành cả thanh xuân để viết blog đấy, nên nó hủy là đâm ra lười luôn). Mà tại mình cũng không muốn tự tạo áp lực cho bản thân, nên xài chung một cái mái hiên với anh zai này, thì cũng… được. Mai mốt có bực bội với nhau, người ta đòi quà, mình sẽ… đòi blog và lệ phí viết blog :)))

Ok, xong phần chào hỏi. Thông thường người ta hay có bài mở đầu. Nhưng mình thiết nghĩ, không muốn tốn thời gian của các bạn cho một bài giới thiệu nhàm chán, nên mình lấy chuyến du lịch vui nhất của bọn mình tính đến thời điểm hiện tại làm cảm hứng viết bài đầu tiên: Các ngôi làng Go-thic cổ xưa của miền nam nước Pháp ở vùng Alsace.

 

 

 

Hướng dẫn sử dụng phần mềm DOORS

Xin chào các bạn, trong block này mình sẽ hướng dẫn các bạn cách sử dụng phần mềm DOORS của IBM.

IBM Rational Doors: Getting Started

Đầu tiên phải đăng nhập vào chương trình

1

Ở trang làm việc, những thứ cần chú ý  gồm có hình trụ ở góc trái của màn hình làm việc(work space), ở đó là Database Root, tiếp đến là Folder, và rồi bên trong folder là Project, thanh bar phía trên hiển thị location of current selection. Hình phía dưới hiển thị Default Workbench của DOORS.

 

2

Click chuột phải vào icon project để tạo ra một formal module mới, bạn cũng có thể chọn template ở đây bằng cách click chuột trái vào browse icon.

3

Sau khi các bạn tạo ra formal module cho riêng mình, chuột phải vào module đó để tạo ra một object mới. Các bạn cũng có thể dùng phím tắt để làm điều tương tự.

4

Hình phía dưới giải thích những vị trí của objects, gồm có level1 object, level2 objects là con của level1 object. Ở bên trái là ID của objects.

5

Click chuột phải vào level2 object sau đó click vào properties để thêm text vào object.

6

Đây là access của một object, bạn có thể chọn bằng cách bấm qua chọn access bên cạnh general.

7

Bạn cũng có thể thêm table từ table menu dưới mỗi object, khi add table bạn có thể set hàng và cột. Sau khi add table xong thì sẽ như hình sau.

9

Chúng ta có thể thêm filter bằng cách click chuột vào biểu tượng filter properties.

10.PNG

Thêm một object mới bằng cách click chuột phải vào một object chọn Link, start Link. Sau đó click một cái object Link mới, chọn link from start để hoàn thành quá trình link.

Để tạo ra một document, chọn File -> Export -> Document Generation như hình bên dưới.

11

 

Occupancy-Grid Maps

Occupancy-grid maps (H.P. Moravec, 1988; H.P. Moravec et al, 1989; A. Elfes, 1987, A. Elfes, 1989; S. Thrun et al, 2005) :

Occupanny-grid map (bản đồ lưới) thể hiện môi trường được chia nhỏ thành các mắt lưới, các ô này có thể tự do( free) hoặc bị chiếm giữ( occupied), mỗi ô đại diện cho một diện tích thực tế trong môi trường thực và mỗi ô sẽ có một giá trị biểu diễn xác xuất nó có đang bị chiếm giữ hoặc tự do (chiếm giữ ở đây nghĩa là ở đó có vật cản, hoặc tường .., tự do(free) nghĩa là tại vị trí đó không có gì cả, và chúng ta có thể đi qua khu vực đó.

Giá trị occupancy của ô thứ nhất trong occupancy grid-map tại thời điểm t được biểu diễn bởi xác xuất p, .. P tại thời điểm t phải nằm trong khoảng từ 0 tới 1. Ta có thể hiểu rằng P= 1 nghĩa là ô đó bị chiếm giữ(occupied), P=0 nghĩa là ô đó trống(free), P=0.5 nghĩa là không biết(unknown) hoặc khu vực chưa khám phá (unexplored area).

Các bạn có đồng ý rằng, Robot không có bất kì nhận định nào về thế giới mà lần đầu nó bị đặt vào trong đó. Cũng như bạn bị bắt cóc đến một nơi xa lạ vậy, bạn hoàn toàn mất phương hướng. Do đó P sẽ có giá trị P=0.5 co tất cả i tại thời điểm t=0. Map sẽ được cập nhật thông qua log odds của occupancy. Sự vượt trội của log odd là nó có thể tránh được sự nhập nhằng giữa 0 và 1, vì đôi khi giá trị của nó sẽ là 0,3 hoặc 0,7. Do đó, ta có cách tính tình trạng bị chiếm giữ của ô thứ n trong grid-map theo công thức sau:

 { l }_{ t,f\quad }=\quad { l }_{ t-1,f }\quad +\quad { l }_{ sensor }

với lt-1 là log odds được tính từ giá trị occupancy của ô tại thời điểm t-1. Hình 1(a) miêu tả quá trình cập nhật của map. Ô màu đen thể hiện tia laser gặp phải vật cản ở đó ngược lại  các ô màu trắng thể hiện là những vị trí có tia laser đi qua nhưng không bị cản trở, ô màu xám là nơi tia laser không đi qua. Hình 1(b) thể hiện trường hợp tia laser không gặp vật cản nào nhưng đạt mức maximum của nó.

12

Hình ảnh dưới đây là Occupancy Grid map trong thực tế được tạo bởi một máy quét laser, khu vực rìa màu đen thể hiện vật cản, khu vực trắng là trống và khu vực màu xám là tia laser chưa đi qua.

13

Topological  Maps,

Không giống như occupancy grid map, topological maps (D. Kortenkamp et al, 1994; H. Choset, 1996; H. Choset et al, 1996) không thể hiện môi trường xung quanh một cách trực quan bằng cách chia nhỏ bản đồ ra như trên. Thay vào đó, topological map thể hiện môi trường quanh nó như một đồ thị (graph).

Giống như trong hình 3. Một danh sách những khu vực quan trọng như tường, góc, cửa hoặc hành lang, những khu vực này được thể hiện dưới dạng các điểm(node) m. Sự liên kết giữa các điểm m được thể hiện dưới các liên kết Uk. Trong rất nhiều topological map, khoảng cách giữa các khu vực cũng được thể hiện trong các sợi dây liên kết các nodes này. Sự ưu việt của topological map là nó thể hiện các khu vực trong map rất chi tiết, ta có thể zoom vào để xem đặc tính từng khu vực, điều này lý giải tại sao topological map được dùng để phát triển 3D-map.

14

Topological maps là sự lựa chọn tối ưu hơn nếu người dùng quan tâm dung lượng bộ nhớ. Trong trường hợp chúng ta sử dụng laptop hay raspberry pi có dung lượng bộ nhớ thấp. Đó là bởi vì ít memory cần để lưu giữ nodes so với một số lượng lớn các ô được sử dụng trong grid-map. Tuy nhiên điều này cũng đồng nghĩa với, graph-map sẽ ít chính xác hơn grid-map. Lý do là một số thông tin quan trọng ví dụ như vị trí của các ô màu xám mà tia laser không đến được sẽ không được hiển  thị trong bản đồ. Do đó khi robot sử dụng graph-map sẽ không thể di chuyển nhanh mà vẫn giữ an toàn như sử dụng grid-map, lời khuyên là khi sử dụng topological map thì nên cho robot di chuyển chậm thôi.