1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(Tiểu luận) báo cáo đồ án 2 xây dựng hệ thống handheld indoor mapping sử dụng rgbd camera

26 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo Cáo Đồ Án 2 Xây Dựng Hệ Thống Handheld Indoor Mapping Sử Dụng RGBD Camera
Tác giả Nguyễn Trung Nguyên
Người hướng dẫn Nguyễn Vĩnh Hảo
Trường học Trường Đại Học Bách Khoa, Đại Học Quốc Gia TP. Hồ Chí Minh
Chuyên ngành Khoa Học Máy Tính Và Công Nghệ Thông Tin
Thể loại Báo cáo đồ án
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 26
Dung lượng 2,48 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Những năm gần đây, xuhướng nghiên cứu ứng dụng loại camera này phát triển nhanh chóng do giá thành khôngquá cao mà thông tin nhận được lại khá chi tiết, đủ để áp dụng lên các mô hình ngh

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ

-o0o -BÁO CÁO ĐỒ ÁN 2 XÂY DỰNG HỆ THỐNG HANDHELD INDOOR

MAPPING SỬ DỤNG RGBD-CAMERA

GVHD: Nguyễn Vĩnh HảoSVTH: Nguyễn Trung NguyênMSSV: 1910393

TP HỒ CHÍ MINH, THÁNG 12 NĂM 2022

Trang 2

MỤC LỤC

1 Giới thiệu đề tài 1

2 Mục tiêu của đề tài 1

3 Giới thiệu RGB-D camera (Asus xtion pro) 1

4 Giới thiệu về ROS 3

5 Sơ đồ giải thuật cho bài toán SLAM 4

6 Phần mềm sử dụng 5

7 Point Cloud 16

8 Kết quả 17

9 Nhận xét và đề xuất cải tiến 22

TÀI LIỆU THAM KHẢO 24

Trang 3

1 Giới thiệu đề tài

Hiện nay hướng nghiên cứu về robot tự hành đang phát triển rất mạnh mẽ trên toànthế giới Nhờ sự phát triển vượt bậc về công nghệ chế tạo cảm biến mà ngày càng cónhiều lựa chọn cho các nhà phát triển dựa vào mục đích xây dựng mô hình (chủ yếu là dođặc điểm môi trường hoạt động)

Trong các bài toán về robot tự hành, bài toán về định vị robot được xem là một bàitoán nền tảng để có thể thực hiện các tác vụ thông minh kế tiếp Bài toán định vị là bàitoán ước lượng hệ tọa độ gắn với robot bằng cách thu thập các thông tin từ cảm biến,trong đó, thông tin từ môi trường hoạt động (bản đồ) là có thể biết trước hoặc không Với môi trường hoạt động không biết trước thì bài toàn định vị robot sẽ bao gồm 2thành phần chính: xây dựng bản đồ của môi trường xung quanh và định vị trí của nó trênbản đồ mới xây dựng được đó Quá trình xử lý đồng thời cả 2 bài toán trên cùng lúc đượcgọi là SLAM (Simultaneous Localization And Mapping)

Với mong muốn thực hiện một ứng dụng xây dựng bản đồ có tính di động và thiết

bị camera Xtion Pro Live có sẵn do công ty PIFlab cung cấp nên nhóm chọn đề tài

“Thực hiện 3D-MAPPING sử dụng RGB-D camera”

2 Mục tiêu của đề tài

Thiết bị cảm biến được lựa chọn là camera RGB-D Điểm yếu của loại camera này

là tầm hoạt động không rộng, chỉ được trong khoảng cách 5m Những năm gần đây, xuhướng nghiên cứu ứng dụng loại camera này phát triển nhanh chóng do giá thành khôngquá cao mà thông tin nhận được lại khá chi tiết, đủ để áp dụng lên các mô hình nghiêncứu thuật toán

Để tiếp cận cách giải quyết bài toán SLAM nhanh chóng, nhóm sẽ sử dụng hệ điềuhành robot ROS Cộng đồng sử dụng ROS cung cấp nhiều project đã thực hiện về bàitoán SLAM thích hợp để tham khảo và phát triển, cải tiến giải thuật Lợi ích thiết thựccủa việc sử dụng ROS là có tính kế thừa Điều này sẽ rút ngắn thời gian nghiên cứu lạinhững điều đã được nghiên cứu

3 Giới thiệu RGB-D camera (Asus xtion pro)

Camera RGB-D là loại camera tạo được hai ảnh: một ảnh màu như thông thường(ảnh RGB), và một ảnh thể hiện chiều sâu (ảnh Depth – D), thể hiện khoảng cách từcamera đến một điểm trong không gian Thông tin về độ sâu thu được do sự kết hợp giữamột thiết bị chiếu tia hồng ngoại và một camera hồng ngoại (tích hợp trên RGB-Dcamera)

Trang 4

Camera này sử dụng bộ driver là OpenNI2 (Open Natural Interface 2) Bộ drivernày với file thông tin calibration xử lý 2 ảnh RGB và độ sâu nhằm đảm bảo sự tương ứngthông tin giữa 2 hình ảnh này.

Ảnh màu RGB và ảnh độ sâu Depth trên Asus Xtion Pro qua các bước xử lý tạo ra

dữ liệu 3D dưới dạng point cloud (đám mây điểm) Đám mây điểm là một bộ các điểmtrong không gian ba chiều, mỗi điểm bao gồm tọa độ XYZ của nó Ngoài ra, mỗi điểmcũng có thể chứa thêm thông tin về màu Nói chung, đám mây điểm là kiểu dữ liệu thuđược từ các thiết bị quét 3D Các thiết bị này cảm nhận bề mặt các vật thể theo nguyêntắc phát ra một chùm sóng điện từ (hồng ngoại hoặc laser) và thu về sóng phản xạ Kếtquả của quá trình đo từ máy quét là tập dữ liệu gồm bộ các điểm thu được, dưới dạngđám mây điểm Cảm biến RGB-D cũng là một dạng máy quét 3D khi sử dụng cảm biến

độ sâu theo nguyên lý quét và kết hợp với cảm biến màu Ngoài ra, dữ liệu kiểu đám mâyđiểm cũng có thể được tạo ra từ các mô hình 3D như mô hình CAD

Dữ liệu kiểu đám mây điểm được sử dụng trong robot và đa robot với các cảm biếnRGB-D, hay ngành viễn thám với các thiết bị quét 3D địa hình bằng máy quét gắn trênmáy bay không người lái

Trang 5

4 Giới thiệu về ROS

ROS là một hệ điều hành mã nguồn mở, dùng cho các ứng dụng robot Về cơ bản,ROS có những đặc tính thiết yếu của một hệ điều hành như khả năng thực hiện các tác vụ(task) song song, giao tiếp, trao đổi dữ liệu với nhau giữa các tác vụ, quản lý dữ liệu,…Hơn thế nữa, để ROS có thể ứng dụng trong lĩnh vực robotics, ROS còn được phát triểnriêng biệt về các thư viện, công cụ dành cho việc thu thập, xử lý, hiển thị, điều khiển,…ROS có thể kết hợp, tương tác với nhiều robot framework khác như Player, YARP,Orocos, CARMEN, Orca, Moos, và Microsoft Robotics Studio

ROS là hệ điều hành được phát triển chuyên dụng cho các ứng dụng điều khiểnrobot, với ROS ta có thể lập trình, biên dịch, chạy thực thi chương trình điều khiển quanhiều máy tính và nhiều hệ thống robots khác nhau

Graph trong ROS có thể được hiểu như cây (tree graph) biểu diễn quan hệ giữa cácthành phần trong hệ điều hành này, như là nodes, topics, messages, services,… (các kháiniệm cụ thể được giải thích rõ hơn trong mục 3.2)

Về mặt trao đổi dữ liệu và giao tiếp trong ROS: ROS tích hợp một vài chuẩn giaotiếp khác nhau, bao gồm giao tiếp đồng bộ theo chuẩn RPC qua các services, truyền dữliệu bất đồng bộ qua topics, và lưu trữ dữ liệu trên Parameter Server

Ưu điểm của ROS:

Xây dựng ứng dụng robotics trên nền ROS sẽ giảm đi một lượng đáng kể các côngviệc lập trình, thiết lập hệ thống Những phần này có thể tận dụng nguồn tài nguyên mãnguồn mở vô cùng phong phú của cộng đồng

Theo [13], ta có thể so sánh khối lượng công việc kỹ thuật cơ bản (requiredengineering) và khối lượng nghiên cứu khoa học nòng cốt (Core Research) như sau:

Trang 6

Từ đó, ta thấy rằng, với sự hiệu quả từ ROS, thời gian dành cho các công việc kỹthuật cơ bản sẽ được giảm xuống rất đáng kể, và do đó, tăng thời gian cho công việcnghiên cứu chuyên sâu, hàm lượng khoa học đạt được trong đề tài sẽ lớn hơn nhiềulầnMột số đặc điểm làm cho ROS là một hệ điều hành nên được sử dụng, đó là:

- ROS là hệ điều hành mã nguồn mở

- Các tài liệu kỹ thuật, tài liệu hướng dẫn và các kênh hỗ trợ đầy đủ

- Một trong những vẫn đề cốt lõi nhất khiến ROS trở nên mạnh mẽ đó là tính cộngđồng rất lớn Nguồn tài nguyên được cộng đồng đóng góp hầu như được xây dựng, pháttriển từ những viện nghiên cứu và những trường đại học hàng đầu

- Những tài nguyên được cung cấp từ ROS thể hiện được sức mạnh trong các lĩnhvực robotics như là:

Trang 7

Trong sơ đồ trên thì các đặc trưng ảnh được xử lý qua 2 bước là trích đặc trưng ảnh(feature detection) và đánh dấu điểm đặc trưng (feature description) Trích đặc trưng ảnhnghĩa là tìm các điểm hoặc vùng trong ảnh có sự thay đổi về độ sáng (intensity) mạnhnhư một cạnh hoặc một góc sự vật trong ảnh, sau đó lấy điểm trung tâm của điểm, vùngảnh đó là điểm đặc trưng Đánh dấu đặc trưng ảnh nghĩa là tạo cho điểm đặc trưng đómột giá trị riêng biệt dựa vào đặc điểm (độ sáng) của các điểm lân cận Nhờ quá trìnhđánh dấu đặc trưng ảnh này mà các điểm đặc trưng trong 2 frame ảnh khác nhau có thểđược nhận biết thành từng cặp, tạo tiền đề cho việc tính toán tọa độ tương đối của cameratrong 2 frame ảnh đó.

6 Phần mềm sử dụng

Ứng dụng được thực hiện trên nền tảng hệ điều hành robot ROS Nhóm sẽ sử dụngcác package mã nguồn mở sau: openni2_launch, rtabmap_ros, robot_localization,tinyImu

- Package openni2_launch

Package này là bộ driver openni2 cho camera Asus Xtion Pro Live Chạy packagenày với node openni2_launch ta sẽ có được các topic data ảnh RGB và ảnh độ sâu Vớipackage này thì ta sẽ sử dụng 3 topic: /camera/rgb/camera_info,/camera/rgb/image_rect_color, /camera/depth_registered/image_raw để tính toán vị trícủa camera

Trang 8

Hình 1 Run package openni2_launch

- Package rtabmap_ros

Package này được phát triển bởi Mathieu Labbé, phòng lab IntRoLab,Interdisciplinary Institute of Technological Innovation, Université de Sherbrooke.Package này cung cấp các giải thuật cần thiết cho bài toán SLAM từ trích đặc trưng, đánhdấu đặc trưng, matching các đặc trưng ảnh đến ước lượng vị trí camera dựa vào thông tinảnh RGB và tối ưu bản đồ

Package này gồm 2 node quan trọng:

Node rgbd_odometry tính toán vị trí của camera qua từng frame ảnh Sau tính toánthì node này sẽ publish một message với kiểu nav_msg/odometry Một số thông số cầnđiều chỉnh của node này gồm:

Feature: lựa chọn thuật toán trích đặc trưng, đánh dấu đặc trưng ảnh Học viên lựachọn thuật toán ORB

Minimum inlier: số lượng tối thiểu cặp đặc trưng là inlier để phép tính chuyển vị tríđược chấp nhận

Node rtabmap có nhiệm vụ nhận thông tin odometry, các frame ảnh, các điểm đặctrưng để dựng bản đồ

Trang 9

Hình 2 Run package rtabmap_ros

- Package robot_localization

Robot_localization là tập hợp các nút ước tính trạng thái, mỗi nút là một triển khaicủa bộ ước tính trạng thái phi tuyến tính cho rô-bốt di chuyển trong không gian 3D Nóchứa hai nút ước tính trạng thái, ekf_localization_node và ukf_localization_node Ngoài

ra, robot_localization cung cấp navsat_transform_node, hỗ trợ tích hợp dữ liệu GPS.Tất cả các nút ước tính trạng thái trong robot_localization đều có chung các tínhnăng, cụ thể là:

Có thể kết hợp nhiều cảm biến tùy ý Các nút không hạn chế số lượng nguồn đầuvào Ví dụ: nếu robot có nhiều IMU hoặc nhiều nguồn thông tin đo đường, các nút ướctính trạng thái trong robot_localization có thể hỗ trợ tất cả chúng

Hỗ trợ nhiều loại tín hiệu ROS Tất cả các nút ước tính trạng thái trongrobot_localization có thể nhận các thông báo nav_msgs/Odometry, sensor_msgs/Imu,

geometry_msgs/TwistWithCovarianceStamped

Tùy chỉnh đầu vào trên mỗi cảm biến Nếu một thông báo cảm biến nhất định chứa

dữ liệu mà bạn không muốn đưa vào ước tính trạng thái của mình, thì các nút ước tínhtrạng thái trong robot_localization cho phép loại trừ dữ liệu đó trên cơ sở từng cảm biến.Ước lượng liên tục Mỗi nút ước tính trạng thái trong robot_localization bắt đầu ướctính trạng thái của phương tiện ngay khi nhận được một phép đo duy nhất Nếu có một

Trang 10

khoảng nghỉ trong dữ liệu cảm biến (nghĩa là một khoảng thời gian dài không nhận được

dữ liệu nào), bộ lọc sẽ tiếp tục ước tính trạng thái của rô-bốt thông qua mô hình chuyểnđộng nội

Trong đồ án này sử dụng nút ekf_localization_node ứng dụng bộ lọc Kalmann mởrộng tích hợp sẵn kết hợp thông tin từ IMU, cụ thể là tín hiệu sensor_msgs/imu và thôngtin từ rtabmap để xây dựng bản đồ 3D

Launch file kết hợp gốc tọa độ IMU và camera ASUS:

<include file="$(find robot_localization)/launch/sensor_fusion.launch">

<arg name="frame_id" value="base_link"/>

<arg name="localization" value="$(arg localization)"/>

<arg name="imu_remove_gravitational_acceleration" default="true" />

<arg name="frame_id" default="base_link" />

<arg name="rgb_topic" default="/camera/rgb/image_rect_color" />

<arg name="depth_topic" default="/camera/depth_registered/image_raw" />

<arg name="camera_info_topic" default="/camera/rgb/camera_info" />

<arg name="imu_topic" default="/imu_msgs" />

Trang 11

<arg name="imu_ignore_acc" default="true" />

<arg name="imu_remove_gravitational_acceleration" default="true" />

<! Localization-only mode >

<arg name="localization" default="false"/>

<arg if="$(arg localization)" name="rtabmap_args" default=""/>

<arg unless="$(arg localization)" name="rtabmap_args" default=" delete_db_on_start"/>

<group ns="rtabmap">

<! Visual Odometry >

<node pkg="rtabmap_ros" type="rgbd_odometry" name="rgbd_odometry">

<remap from="rgb/image" to="$(arg rgb_topic)"/>

<remap from="depth/image" to="$(arg depth_topic)"/>

<remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>

<remap from="odom" to="/vo"/>

<param name="frame_id" type="string" value="$(arg frame_id)"/>

<param name="publish_tf" type="bool" value="false"/>

<param name="publish_null_when_lost" type="bool" value="false"/>

<param name="guess_from_tf" type="bool" value="true"/>

<param name="Odom/FillInfoData" type="string" value="true"/>

<param name="Odom/ResetCountdown" type="string" value="1"/>

<param name="Vis/FeatureType" type="string" value="6"/>

<param name="OdomF2M/MaxSize" type="string" value="1000"/>

</node>

<! SLAM >

<node name="rtabmap" pkg="rtabmap_ros" type="rtabmap" output="screen" args="$(arg rtabmap_args)">

<param name="frame_id" type="string" value="$(arg frame_id)"/>

<remap from="rgb/image" to="$(arg rgb_topic)"/>

<remap from="depth/image" to="$(arg depth_topic)"/>

<remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>

<remap from="odom" to="/odometry/filtered"/>

<param name="Kp/DetectorStrategy" type="string" value="6"/> <! use same features as odom >

Trang 12

<! localization mode >

<param name="Mem/InitWMWithAllNodes" type="string" value="$(arg localization)"/>

<param if="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="false"/>

<param unless="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="true"/>

</node>

</group>

<! Odometry fusion (EKF), refer to demo launch file in robot_localization for more info >

<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization" clear_params="true" output="screen">

<param name="frequency" value="10"/>

<param name="sensor_timeout" value="0.5"/>

<param name="two_d_mode" value="false"/>

<param name="odom_frame" value="odom"/>

<param name="base_link_frame" value="$(arg frame_id)"/>

<param name="world_frame" value="odom"/>

<param name="transform_time_offset" value="0.0"/>

<param name="odom0" value="/vo"/>

<param name="imu0" value="$(arg imu_topic)"/>

<! The order of the values is x, y, z, roll, pitch, yaw, vx, vy, vz, vroll, vpitch, vyaw, ax, ay, az > <rosparam param="odom0_config">[true, true, true,

false, false, false,

true, true, true,

false, false, false,

false, false, false]</rosparam>

<rosparam if="$(arg imu_ignore_acc)" param="imu0_config">[

Trang 13

true, true, true,

false, false, false,

true, true, true,

false, false, false] </rosparam>

<rosparam unless="$(arg imu_ignore_acc)" param="imu0_config">[

false, false, false,

true, true, true,

false, false, false,

true, true, true,

true, true, true] </rosparam>

<param name="odom0_differential" value="true"/>

<param name="imu0_differential" value="false"/>

<param name="odom0_relative" value="false"/>

<param name="imu0_relative" value="true"/>

<param name="imu0_remove_gravitational_acceleration" value="$(arg imu_remove_gravitational_acceleration)"/>

<param name="print_diagnostics" value="true"/>

<! ======== ADVANCED PARAMETERS ======== >

<param name="odom0_queue_size" value="5"/>

<param name="imu0_queue_size" value="50"/>

<! The values are ordered as x, y, z, roll, pitch, yaw, vx, vy, vz,

vroll, vpitch, vyaw, ax, ay, az >

Ngày đăng: 10/05/2023, 15:18

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[3] Ros Tutorials, Bách Khoa toàn thư mở Wikipedia.Available:http://wiki.ros.org/ROS/Tutorials Link
[1] Vũ Minh Hoàng, Luận văn Thạc sĩ: Xây dựng bản đồ sử camera RGBD kết hợp IMU trên nền tảng ROS, Trường Đại Học Công Nghệ, Đại Học Quốc Gia Hà Nội, Hà Nội, 2016 Khác
[2] Nguyễn Sỹ Anh Luận văn Thạc sĩ: Nhận diện các dạng bề mặt phục vụ phân loại vật thể sử dụng camera RGBD, Trường Đại Học Bách Khoa, Đại Học Quốc Gia Thành Phố Hồ Chí Minh, Thành phố Hồ CHí Minh, thánh 12 năm 2015 Khác
[5] Felix Endres, PhD. Thesis, ‘Robot Perception of Indoor Navigation’, Technical Faculty, Albert-Ludwigs University of Freiburg, 4. August, 2015 Khác
[6] Alfredo Chavez, Henrik Karstoft, ‘Map Building Based on a Xtion Pro Live RGBD and a Laser Sensors’, Faculty of Information Technology (FIT), Brno University of Technology, Czech Republic, Aarhus University, School of Engineering, Finlandsgade 22, 8200 Aarhus, Denmark, 2014 Khác
[7] Craig Mouser, Realtime 3D Mapping, Optimization and Rendering Based on a Depth Sensor’, Bachelor of Science in Computer Engineering, Kansas State University, 2012 Khác

HÌNH ẢNH LIÊN QUAN

5. Sơ đồ giải thuật cho bài toán SLAM - (Tiểu luận) báo cáo đồ án 2 xây dựng hệ thống handheld indoor mapping sử dụng rgbd camera
5. Sơ đồ giải thuật cho bài toán SLAM (Trang 6)
Sơ đồ khối hệ thống: - (Tiểu luận) báo cáo đồ án 2 xây dựng hệ thống handheld indoor mapping sử dụng rgbd camera
Sơ đồ kh ối hệ thống: (Trang 6)
Hình  1  Run package openni2_launch - (Tiểu luận) báo cáo đồ án 2 xây dựng hệ thống handheld indoor mapping sử dụng rgbd camera
nh 1 Run package openni2_launch (Trang 8)
Hình  2  Run package rtabmap_ros - (Tiểu luận) báo cáo đồ án 2 xây dựng hệ thống handheld indoor mapping sử dụng rgbd camera
nh 2 Run package rtabmap_ros (Trang 9)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w