Mô phỏng trên Gazebo

Một phần của tài liệu nghiên cứu, thiết kế và chế tạo robot di động dẫn đường sử dụng giải thuật cây ngẫu nhiên (Trang 56)

2. 3 Phương pháp điều khiển tránh vật cản

2.6.2 Mô phỏng trên Gazebo

2.6.2.1 Tạo thế giới

Khởi chạy file gazebo

Sau khi làm việc với Gazebo, bây giờ đã đến lúc chạy mô phỏng trên đó và làm việc với một số người máy.

Sau khi cài đặt các gói, chúng ta có thể bắt đầu chạy mô phỏng. Có một số lần ra mắt các tệp bên trong các gói rùa-vọng lâu có các tệp thế giới khác nhau. Một thế giới Gazebo tệp (* .world) là tệp SDF bao gồm các thuộc tính

của các mô hình trong môi trường. Khi tệp world thay đổi, Gazebo sẽ tải với một môi trường khác.

Đến launch file theo đường dẫn: catkin_ws/src/rrt_exploration_tutorials/ launch/single_simulated_house.launch. Open with gedit và sửa lại như sau:

<arg name="world_name" value="$(find

rrt_exploration_tutorials)/launch /includes/worlds/emty.world"/>

Lưu ý: Ở trên là đối với trường hợp có một tệp world trống rỗng và có tên là emty.world (được lưu tại catkin_ws/src/rrt_exploration_tutorials/launch/ include/worlds). Nếu không có thì có thể tạo.

Lệnh sau sẽ bắt đầu một thế giới có một tập hợp các thành phần nhất định: $ cd catkin_ws

$ source devel/setup.bash

$ cd src/rrt_exploration_tutorials/launch $ roslaunch single_simulated_house.launch

Khi chạy mô phỏng lần đầu sẽ mất một khoảng thời gian để tải dữ liệu và khi hoàn tất, ta có được robot với một thế giới trống

Hình 2.23 Mô hình trong trình mô phỏng Gazebo

Bên trên là hình ảnh robot với thế giới mặc định của gazebo có sẵn. Để thực hiện đề tài, trước hết cần tạo một thế thới riêng trên Gazebo

Trên giao diện phần mềm Gazebo. Ở thanh công cụ trên nhấp chọn Edit -> Building Editor

Hình 2.24 Công cụ edit của gazebo

Một giao diện mới được mở ra:

Hình 2.25 Giao diện Building Editor

Với thanh công cụ bên trái, ta có thể thêm những bức tường, cửa, cầu thang,màu sắc,…. Việc vẽ được thực hiện trên phần lưới màu trắng, tương tự như AutoCad nhưng đơn giản hơn.

Lưu ý mọi việc thiết kế đều trên phần lưới màu trắng

Khi thực hiện tạo vật, ta có thể chỉnh sửa bằng cách chuột phải đối tượng chọn Open Wall Inspector hoặc xóa đối tượng

Ta có thể chỉnh sửa tọa độ, chiều dài, dày, cao, màu sắc, tính chất của đối tượng cần chỉnh sửa trong cửa sổ Wall Inspector

Hình 2.27 Cửa sổ Wall Inspector

Lưu file khung gazebo

Sau khi tạo xong phần khung, ta lưu file: File -> Save as.

Hệ thống sẽ tự tạo cho chúng ta 1 folder mới Building_editor_models ở Home và tiến hành lưu phần khung tại đó.

Sau đó thoát khỏi chức năng Building Editor. Khung hiện tại được thiết kế theo môi trường sau:

Xuất khung đã lưu

Bình thường hệ thống sẽ tự động giữ lại khung mà mình đã vẽ trên giao diện của Gazebo. Tuy nhiên nếu bạn quên không lưu file Gazebo vừa tạo, có thể vào lại Gazebo và lấy lại phần thiết kế vừa làm bằng cách chọn mục Insert. Tại mũi tên cuối, chọn tên của khung đã lưu .

Hình 2.29 Công cụ insert Gazebo

Thêm các đối tượng trong Gazebo

Có thể thêm các đối tượng tại mục Insert mũi tên của http:// gazebosim.org/ models Xem tại mục Insert. Tại đó, ta có thể thêm các đối tượng có sẵn trong gazebo hoặc có thể thêm các đối tượng tải trên các gói về. Nhiều gói có chứa cả một khung giống như chúng ta đã làm ở phía trên, thậm chí còn tốt hơn rất nhiều.

Lưu file Gazebo

Sau đó lưu lại file gazebo: File-> save world as : nchouse.world <rand> Ở đây chúng ta sẽ lưu file gazebo này theo đường dẫn sau

catkin_ws/src/rrt_exploration_tutorials/launch/ include/worlds

2.6.2.2 Khởi chạy lại Gazebo với thế giới vừa tạo

Ta vào file dùng để khởi chạy gazebo. Đây là đường dẫn của file

Click chuột phải tại file single_simulated_house.launch chọn open with Gedit

Sửa đổi dòng này trong file:

<arg name="world_name" value="$(find rrt_exploration_tutorials)/ launch /includes/worlds/emty.world"/>

Thành như sau để thay đổi thế giới:

<arg name="world_name" value="$(find rrt_exploration_tutorials)/ launch /includes/worlds/nchouse.world"/>

Ở đây chính là thay đổi thể giới trong gazebo bằng file gazebo vừa lưu. Khởi chạy lại Gazebo và quan sát kết quả đạt được:

$ cd catkin_ws

$ source devel/setup.bash

$ cd src/rrt_exploration_tutorials/launch $ roslaunch single_simulated_house.launch

Ta được giao diện gazebo hoàn chỉnh sau khi tạo thế giới:

Hình 2.30 Giao diện thế giới gazebo hoàn chỉnh

2.6.3 Sử dụng package rrt_exploration

Với package rrt_exploration_tutorials. Việc chạy gazebo đã chạy luôn Rviz để mô phỏng. Vì vậy việc tiếp đến là sử dụng rrt_exploration package kết hợp với Rviz để mô phỏng và quan sát.

Theo đường dẫn catkin_ws/src/rrt_exploration /launch

Sau khi khởi chạy robot thực hiện mô phỏng trên Gazebo và Rviz. Tiếp tục khởi chạy single.launch để sử dụng package rrt_exploration

$ cd catkin_ws

$ source devel/setup.bash $ cd src/rrt_exploration /launch $ roslaunch single.launch

Launch file single.launch dùng để chạy các node đã được nêu tại mục 6.2.2. Điều đó được thể hiện trong launch file như:

<node pkg="rrt_exploration" type="global_rrt_detector" name =" global _detector" outpu t="screen">

<node>

<node pkg="rrt_exploration" type="local_rrt_detector" name="local_detector" output="screen">

<node>

<node pkg="rrt_exploration" type="filter.py" name="filter" output="screen"> <node>

<node pkg="rrt_exploration" type="assigner.py" name="assigner" output ="screen">

<node>

Đi kèm là một số điều kiện đặt ra cho các node cho launch file này. Ở trên đã nêu 5 node được sử dụng, tuy nhiên ở đây chỉ sử dụng 4 node. Node OpenCV được loại bỏ vì nó không thực sự cần thiết khi đã sử dụng 2 node global_rrt_detector

local_rrt_detector.

Sau khi chạy launch file thành công. Mở Rviz và tiến hành mô phỏng.

2.6.4 . Mô phỏng trên Rviz

Các package cho phép chúng ta lựa chọn khu vực hoạt động của thuật toán RRT được cho bởi 5 điểm và được chia làm 2 loại như sau:

- 4 điểm đầu: Dùng để xác định vùng hoạt động của thuật toán, thuật toán sẽ bị giới hạn bởi tứ giác tạo nên bởi 4 điểm này.

- Điểm cuối: Được gọi là điểm gốc hay còn gọi là điểm bắt đầu. Robot sẽ cố gắng tiến đến để cảm biến đọc được dữ liệu từ điểm này. Cây sẽ cố gắng phát triển đến điểm này và tiếp tục phát triển về sau.

Chạy mô phỏng

Ở thanh công cụ bên trên của Rviz, click chọn Publish Point

Hình 2.31 Thanh công cụ trên của rviz

Chọn 4 điểm đầu, ở đây nên chọn 4 điểm này để tạo nên một tứ giác đủ lớn để bao quát bản đồ trong môi trường. Vì dữ liệu đọc được từ cảm biến có thể sẽ nằm ngoài tứ giác này, tuy nhiên nếu thuật toán cây ngẫu nhiên không được phát triển trọn vẹn một khu vực thì có thể dẫn đến thiếu sót. Tiếp đến chọn điểm thứ 5 để bắt đầu thuật toán

Hình 2.32 Các điểm yêu cầu của thuật toán

Khi robot quét được điểm thứ 5, cây toàn cục (rrt_global) bắt đầu từ điểm này và phát triển. Một vài hình ảnh robot trong quá trình hoạt động

Hình 2.33 Quá trình quét của robot

Có thể thấy 2 cây được thể hiện trong trình mô phỏng Rviz. Cây màu đỏ thể hiện cho local_rrt và cây màu xanh được thể hiện cho global_rrt.

- Global_rrt hay còn gọi là cây toàn cục, cây này sẽ liên tục phát triển từ điểm thứ 5 đến khác khu vực không xác định nằm trong tứ giác tạo bởi 4 điểm đầu. Đối với cây này, do liên tục phát triển và vùng phát triển ngày càng lớn nên cây sẽ phát triển chậm dần nhưng theo nhiều hướng khác nhau. Tuy nhiên việc này lại phù hợp với việc khám phá những góc cạnh trên bản đồ, phù hợp với môi trường có nhiều góc cạnh.

- Local_rrt hay còn gọi là cây cục bộ, cũng giống như cây toàn cục nhưng cây này sẽ bắt đầu từ robot và được lặp lại sau mỗi lần tìm thấy điểm biên giới. Chính vì yếu tố này nên nó phù hợp với việc khám phá nhanh nhưng khu vực chưa xác định <unknow>. Phù hợp với môi trường rộng lớn.

Việc kết hợp 2 node này đã đem lại hiệu quả tốt hơn trong việc khám phá tự trị của thuật toán RRT.

Đây là sự khác biệt về việc chọn khu vực hoạt động có thể dẫn đến một vài thiếu sót trong quá trình hoạt động của thuật toán đã nêu ở trên. Để thấy rõ hơn, ở đây sẽ so sánh với hình hoàn chỉnh

2.6.5 Điều hướng robot

Do launch file single_simulated_house.launch đã đồng thời chạy cả gazebo, rviz bên cạnh đó cũng chạy cùng node gmapping và rviz nên có thể điều hướng robot ngay sau khi khám phá tự trị. [1]

Việc điều hướng chỉ có thể xảy ra khi việc khám phá tự trị dừng lại <không nhất thiết phải dừng hoàn toàn>

Sử dụng nút 2D navigation trên thanh công cụ Rviz và tiến hành điều hướng robot. [10]

2.6.5.1 Đồ thị rqt_mutilplot

Để có thể thấy rõ hơn sự thay đổi về vận tốc dài và vận tốc góc của robot trong quá trình chuyển động, ta sử dụng đồ thị rqt_mutilplot trong 3 trường hợp điều hướng robot khác nhau.

Robot của không thể lái sang ngang (tuyến tính.y) hoặc xoay quanh trục x và y. Do đó, sẽ chỉ sử dụng linear.x và angle.z để hiển thị đồ thị

Thao tác với rqt_multiplot

Mở 1 terminal khác và nhập như sau: $ cd catkin_ws

$ source /opt/ros/kinetic/setup.bash $ rosrun rqt_multiplot rqt_multiplot Ta được giao diện rqt_multiplot

Hình 2.35 Giao diện rqt_multiplot

- Run all plots: Chạy tất cả đồ thị - Pause all plots: Dừng tất cả đồ thị

- Delete all line: Xóa các đường đồ thị trước đó - Setting: Cài đặt cho đồ thị

Chọn setting để bắt đầu cài đặt đồ thị. - Phần Title: Tên cho đồ thị sử dụng

- Tiến vào Add curve. Ta có cửa sổ mới. Ở cửa số này ta sẽ thiết lập đường, trục x,y,….

Đồ thị vận tốc

- Ta chọn trục x là Message receipt time nghĩa là thời gian thực trên gazebo: Thời gian bắt đầu từ khi chọn vị trí cho robot di chuyển tự động điều hướng cho đến khi dừng hẳn.

- Trục y: + Mục topic chọn /cmd_vel (Lưu ý với mỗi loại robot khi thiết kế phần này có thể khác nhau cd: /turtlebot/cmd_vel)

+ Mục fiel: chọn linear -> x float

Hình 2.36 Cài đặt đồ thị vận tốc dài rqt

Đồ thị gia tốc

Hình 2.37 Cài đặt đồ thị vận tốc góc rqt

Kết hợp 2 biểu đồ với Plot Table 2x1 ta có giao diện sau:

Hình 2.38 Đồ thị chung

2.6.5.2 Điều hướng và đồ thị

Điều hướng theo đường thẳng

Quan sát robot di chuyển theo đường thẳng và đi đến mục tiêu đã chọn kết hợp với đồ thị, ta thấy vận tốc của robot hầu hết đạt trạng thái lớn nhất trong khi vận tốc góc nhỏ nhất. Cả 2 có sự biến động nhỏ, robot di chuyển thành công đến vị trí đã chọn

Hình 2.39 Điều hướng robot không vật cản

Hình 2.40 Đồ thị điều hướng robot không vật cản

Với dữ liệu từ bản đồ sau khi quét xong, tiến hành điều hướng né vật cản

Hình 2.41 Điều hướng robot có vật cản

Quan sát đồ thị thấy có sự biến đổi lớn về vận tốc góc tại thời điểm robot rẽ (trái >0, phải<0)

Hình 2.42 Đồ thị điều hướng robot né vật cản

Khác với trường hợp trên, tiến hành đặt một vật cản tại một điểm trên đường đi mà dự đoán robot sẽ đi qua khu vực đó và tiến hành quan sát.

Điều hướng robot di chuyển đến một vị trí, để rõ hơn chúng ta sẽ bật thêm bản đồ cục bộ (local costmap)

Hình 2.43 Điều hướng robot né vật cản tức thời

Đặt thêm vật cản trên Gazebo

Hình 2.44 Đặt vật cản tức thời trên gazebo

Quan sát robot di chuyển đến vùng gần vật cản, lúc này cảm biến laser đã phát hiện ra nhưng chi phí lạm phát của vật cản vẫn chưa được hình thành do vật cản chưa nằm trong khu vực phát sinh lạm phát từ robot.

Khi vật cản nằm trong khu vực phát sinh chi phí lạm phát của robot, lúc này chi phí lạm phát của vật cản được tạo nên, tuy nhiên kế hoạch đường đi tổng quát vẫn không thay đổi. Cho đến khi vật cản nằm trong bản đồ cục bộ của robot, đường kế hoạch mới được tạo.

Sau khi robot đến gần hơn, nằm trong vùng hoạt động của bản đồ chi phí cục bộ. Nó sẽ tạo nên chi phí lạm phát của vật cản . Kế hoạch tổng quát trước đó sẽ không còn khả thi nữa. Bản đồ sẽ lập lại kế hoạch cũng như đổi mới dữ liệu và tính toán lại đường tổng quát

Hình 2.45 Đường đi tổng quát mới của robot

Chi phí lạm phát được tạo dựa trên dữ liệu từ cảm biến phát hiện ra góc cạnh của vật cản, những cạnh cảm biến không quét tới thì chi phí lạm phát tại đó chưa hoàn chỉnh. Khi chi phí lạm phát của vật cản đạt đến mức cần thiết để robot di chuyển, một đường kế hoạch tổng quát mới được tạo, robot né vật cản tức thời và di chuyển đến điểm đích.

Hình 2.46 Robot né vật cản tức thời

Quan sát đồ thị thấy robot có một khoảng dừng khi đường di chuyển tổng quát được thay đổi

Hình 2.47 Đồ thị vận tốc và vận tốc góc robot khi né vật cản tức thời

2.6.6 Khảo sát các thông số liên quan 2.6.6.1 Góc quét <α - deg> 2.6.6.1 Góc quét <α - deg>

Quan sát sự ảnh hưởng của góc quét đến việc khám phá tự trị của robot

α Map T (s)

150 221

120 239

90 267

60 309

Từ bảng trên có thể thấy rằng:

Đối với các trường hợp góc quét từ 150-180deg, quá trình lập bản đồ là ổn định. Do yếu tố không xác định của bản đồ nên trên bản đồ có các cạnh nhỏ và hẹp, dẫn đến khi rô bốt sử dụng góc quét tia laze nhỏ sẽ xảy ra hiện tượng các lớp lưới bản đồ bị vỡ. Khi góc quét nhỏ hơn 150 độ (90 độ-120 độ), bản đồ có các lớp lưới bị hỏng. Đặc biệt là ở các góc quét nhỏ (60), bản đồ gần như bị vỡ.

2.6.6.2 Tốc độ tăng trưởng <eta>

Nghiên cứu này cũng tiến hành khảo sát thời gian quét bản đồ dựa trên sự thay đổi của tốc độ sinh trưởng của cây (eta)

Tham số (Eta) xác định tốc độ tăng trưởng của RRT được sử dụng để tìm kiếm các điểm trong vùng biên giới. Khi tăng lên, cây sẽ phát triển nhanh hơn, dẫn đến việc tìm kiếm các điểm ranh giới nhanh hơn. Tuy nhiên, do tốc độ phát triển nhanh nên sẽ có các đỉnh và các cạnh của vật thể bị bỏ sót, dẫn đến việc robot phải quay lại các vị trí đó từ đó làm tăng thời gian quét. Do đó, thông số này cần được điều chỉnh theo địa hình và kích thước của bản đồ.

Với giá trị mặc định ban đầu eta của local và global đều là 10. Tiến hành thay đổi lần lượt 2 loại và xem sự ảnh hưởng của tốc độ tăng trưởng đến thời gian quét

Dưới đây là sự ảnh hưởng của tốc độ tăng trưởng cây của rrt_local

Hình 2.48 Biểu đồ thay đổi eta cục bộ

Với sự thay đổi của rrt_local thì việc tìm ra những điểm biên khi khu vực không xác định và gần robot nhanh hơn tuy nhiên còn phụ thuộc vào địa hình, việc tìm điểm biên quá nhanh có thể dẫn đến tình trạng đi quay trở lại của robot. Vậy nên với một khu vực ít vật cản dạng góc cạnh thì nên để cây cục bộ tăng trưởng nhanh

Hình 2.49 Biểu đồ thay đổi eta toàn cục

Tương tự với cây cục bộ tuy nhiên sự thay đổi của rrt_global lại phù hợp với những góc cạnh còn thiếu sót khi những điểm biên được quét bởi rrt_local. Vì vậy mà rrt_global phù hợp với môi trường nhiều góc cạnh hay vật cản vì cây có xu hướng tăng trưởng rộng nhưng chậm hơn.

CHƯƠNG 3: TÍNH TOÁN, THIẾT KẾ ROBOT 3.1 Tính toán, thiết kế hệ thống cơ khí

Một phần của tài liệu nghiên cứu, thiết kế và chế tạo robot di động dẫn đường sử dụng giải thuật cây ngẫu nhiên (Trang 56)