Effective.Robotics.Programming.with.ROS.3rd.Edition (tạm dịch: Lập Trình Robot Hiệu Quả với ROS, Ấn Bản Lần Thứ 3)

 "Effective.Robotics.Programming.with.ROS"

Tác giả: Anil Mahtani, Luis Sánchez, Enrique Fernández, Aaron Martinez.

Để biết thêm thông tin chi tiết về sách vui lòng liên hệ Zalo theo số 0329318197. 



Các chủ đề chính được đề cập trong sách bao gồm:

  • Cài đặt và Khái niệm cơ bản về ROS: Hướng dẫn cài đặt ROS Kinetic trên Ubuntu (bao gồm cả cài đặt qua VirtualBox hoặc Docker) và giải thích các khái niệm cơ bản của ROS như hệ thống tệp, đồ thị tính toán (nodes, topics, services, parameter server) và cộng đồng ROS.

  • Công cụ trực quan hóa và gỡ lỗi: Giới thiệu các công cụ để gỡ lỗi các node ROS, ghi nhật ký tin nhắn, kiểm tra hệ thống, đặt các tham số động, trực quan hóa dữ liệu và lưu/phát lại dữ liệu.

  • Mô hình hóa và mô phỏng 3D: Hướng dẫn tạo mô hình 3D của robot bằng URDF (Unified Robot Description Format) và sử dụng Gazebo để mô phỏng robot, cảm biến và môi trường.

  • Điều hướng tự hành (Navigation Stack): Bao gồm việc thiết lập và sử dụng Navigation Stack của ROS để tạo ra các robot di động tự hành, bao gồm lập bản đồ và điều hướng.

  • Thao tác với MoveIt!: Hướng dẫn sử dụng thư viện MoveIt! để lập kế hoạch chuyển động và điều khiển các cánh tay robot.

  • Sử dụng cảm biến và thiết bị truyền động: Giải thích cách kết nối và thu thập dữ liệu từ các cảm biến (ví dụ: camera, cảm biến 3D) và điều khiển các thiết bị truyền động.

  • Thị giác máy tính và đám mây điểm: Sử dụng OpenCV 3.0 cho các khả năng thị giác máy tính và PCL (Point Cloud Library) cho nhận thức 3D.

Cuốn sách này phù hợp cho cả những người mới bắt đầu với ROS cũng như các nhà robot học hoặc nhà phát triển ROS có kinh nghiệm muốn tìm hiểu các tính năng của ROS Kinetic để xây dựng robot tự hành.

 Dưới đây là mục lục đã dịch sang tiếng Việt và loại bỏ số trang:


Mục lục

Lời nói đầu


Chương 1: Bắt đầu với ROS

  • Cài đặt trên PC

    • Cài đặt ROS Kinetic bằng kho lưu trữ

      • Cấu hình kho lưu trữ Ubuntu của bạn

      • Thiết lập tệp source.list của bạn

      • Thiết lập các khóa của bạn

      • Cài đặt ROS

      • Khởi tạo rosdep

      • Thiết lập môi trường

      • Tải rosinstall

    • Cách cài đặt VirtualBox và Ubuntu

      • Tải VirtualBox

      • Tạo máy ảo

    • Sử dụng ROS từ ảnh Docker

      • Cài đặt Docker

      • Tải và sử dụng ảnh và vùng chứa ROS Docker

    • Cài đặt ROS trong BeagleBone Black

      • Điều kiện tiên quyết

      • Thiết lập máy cục bộ và tệp source.list

      • Thiết lập các khóa của bạn

      • Cài đặt các gói ROS

      • Khởi tạo rosdep cho ROS

      • Thiết lập môi trường trong BeagleBone Black

      • Tải rosinstall cho BeagleBone Black

      • Ví dụ ROS cơ bản trên BeagleBone Black

  • Tóm tắt


Chương 2: Kiến trúc và Khái niệm của ROS

  • Tìm hiểu cấp độ Hệ thống tệp của ROS

    • Không gian làm việc

    • Gói

    • Metapackages

    • Tin nhắn

    • Dịch vụ

  • Tìm hiểu cấp độ Đồ thị tính toán của ROS

    • Nodes và nodelets

    • Topics

    • Dịch vụ

    • Tin nhắn

    • Bags

    • ROS master

    • Parameter Server

  • Tìm hiểu cấp độ Cộng đồng ROS

    • Hướng dẫn thực hành với ROS

    • Điều hướng qua hệ thống tệp ROS

    • Tạo không gian làm việc của riêng chúng ta

    • Tạo gói ROS và metapackage

    • Xây dựng gói ROS

    • Chơi với các node ROS

    • Tìm hiểu cách tương tác với topics

    • Tìm hiểu cách sử dụng dịch vụ

    • Sử dụng Parameter Server

    • Tạo các node

    • Xây dựng node

    • Tạo tệp msg và srv

    • Sử dụng tệp srv và msg mới

    • Tệp khởi chạy (launch file)

    • Các tham số động

  • Tóm tắt


Chương 3: Công cụ Trực quan hóa và Gỡ lỗi

  • Gỡ lỗi các node ROS

    • Sử dụng trình gỡ lỗi GDB với các node ROS

    • Đính kèm một node vào GDB trong khi khởi chạy ROS

    • Hồ sơ một node với valgrind trong khi khởi chạy ROS

    • Cho phép core dumps cho các node ROS

  • Ghi nhật ký tin nhắn

    • Xuất tin nhắn nhật ký

    • Đặt mức tin nhắn gỡ lỗi

    • Cấu hình mức gỡ lỗi của một node cụ thể

    • Đặt tên cho tin nhắn

    • Tin nhắn có điều kiện và được lọc

    • Hiển thị tin nhắn một lần, điều tiết và các kết hợp khác

    • Sử dụng rqt_console và rqt_logger_level để sửa đổi mức ghi nhật ký ngay lập tức

  • Kiểm tra hệ thống

    • Kiểm tra biểu đồ của node trực tuyến với rqt_graph

    • Đặt các tham số động

    • Đối phó với những điều bất ngờ

    • Trực quan hóa chẩn đoán node

  • Vẽ dữ liệu vô hướng

    • Tạo biểu đồ chuỗi thời gian với rqt_plot

  • Trực quan hóa hình ảnh

    • Trực quan hóa một hình ảnh duy nhất

  • Trực quan hóa 3D

    • Trực quan hóa dữ liệu trong thế giới 3D bằng rqt_rviz

    • Mối quan hệ giữa topics và frames

    • Trực quan hóa các phép biến đổi khung hình

  • Lưu và phát lại dữ liệu

    • Tệp bag là gì?

    • Ghi dữ liệu vào tệp bag với rosbag

    • Phát lại tệp bag

    • Kiểm tra tất cả các topics và tin nhắn trong tệp bag

  • Sử dụng rqt_gui và các plugin rqt

  • Tóm tắt


Chương 4: Mô hình hóa và Mô phỏng 3D

  • Mô hình 3D của robot của chúng ta trong ROS

    • Tạo tệp URDF đầu tiên của chúng ta

    • Giải thích định dạng tệp

    • Xem mô hình 3D trên rviz

    • Tải lưới vào mô hình của chúng ta

    • Làm cho mô hình robot của chúng ta có thể di chuyển

    • Thuộc tính vật lý và va chạm

    • Xacro – một cách tốt hơn để viết các mô hình robot của chúng ta

      • Sử dụng hằng số

      • Sử dụng phép toán

      • Sử dụng macro

    • Di chuyển robot bằng mã

  • Mô hình hóa 3D với SketchUp

  • Mô phỏng trong ROS

    • Sử dụng mô hình 3D URDF của chúng ta trong Gazebo

    • Thêm cảm biến vào Gazebo

    • Tải và sử dụng bản đồ trong Gazebo

    • Di chuyển robot trong Gazebo

  • Tóm tắt


Chương 5: Ngăn xếp Điều hướng – Thiết lập Robot

  • Ngăn xếp điều hướng trong ROS

    • Tạo các phép biến đổi

      • Tạo bộ phát

      • Tạo bộ thu

      • Xem cây biến đổi

    • Xuất thông tin cảm biến

      • Tạo node laser

    • Xuất thông tin odometry

      • Cách Gazebo tạo odometry

      • Sử dụng Gazebo để tạo odometry

      • Tạo odometry của riêng chúng ta

    • Tạo bộ điều khiển cơ sở

      • Tạo bộ điều khiển cơ sở của chúng ta

    • Tạo bản đồ với ROS

      • Lưu bản đồ bằng map_server

      • Tải bản đồ bằng map_server

  • Tóm tắt


Chương 6: Ngăn xếp Điều hướng – Ngoài các Thiết lập

  • Tạo một gói

  • Tạo một cấu hình robot

  • Cấu hình costmaps – global_costmap và local_costmap

    • Cấu hình các tham số chung

    • Cấu hình global costmap

    • Cấu hình local costmap

    • Cấu hình bộ lập kế hoạch cục bộ cơ sở

  • Tạo một tệp khởi chạy cho ngăn xếp điều hướng

  • Thiết lập rviz cho ngăn xếp điều hướng

    • Ước tính tư thế 2D

    • Mục tiêu điều hướng 2D

    • Bản đồ tĩnh

    • Đám mây hạt

    • Dấu chân của robot

    • Local costmap

    • Global costmap

    • Kế hoạch toàn cầu

    • Kế hoạch cục bộ

    • Kế hoạch của bộ lập kế hoạch

    • Mục tiêu hiện tại

  • Định vị Monte Carlo Thích nghi

    • Sửa đổi các tham số với rqt_reconfigure

  • Tránh chướng ngại vật

  • Gửi mục tiêu

  • Tóm tắt


Chương 7: Thao tác với MoveIt!

  • Kiến trúc MoveIt!

    • Lập kế hoạch chuyển động

    • Cảnh lập kế hoạch

    • Giám sát hình học thế giới

    • Động học

    • Kiểm tra va chạm

  • Tích hợp cánh tay vào MoveIt!

    • Có gì trong hộp?

    • Tạo gói MoveIt! với Trợ lý Thiết lập

    • Tích hợp vào RViz

    • Tích hợp vào Gazebo hoặc cánh tay robot thực tế

  • Lập kế hoạch chuyển động đơn giản

    • Lập kế hoạch một mục tiêu duy nhất

    • Lập kế hoạch một mục tiêu ngẫu nhiên

    • Lập kế hoạch một trạng thái nhóm được xác định trước

    • Hiển thị chuyển động mục tiêu

  • Lập kế hoạch chuyển động với va chạm

    • Thêm đối tượng vào cảnh lập kế hoạch

    • Xóa đối tượng khỏi cảnh lập kế hoạch

  • Lập kế hoạch chuyển động với đám mây điểm

  • Nhiệm vụ nhặt và đặt

    • Cảnh lập kế hoạch

    • Đối tượng mục tiêu để nắm

    • Bề mặt hỗ trợ

    • Nhận thức

    • Nắm bắt

    • Hành động nhặt

    • Hành động đặt

  • Chế độ demo

  • Mô phỏng trong Gazebo

  • Tóm tắt


Chương 8: Sử dụng Cảm biến và Bộ truyền động với ROS

  • Sử dụng cần điều khiển hoặc gamepad

    • joy_node gửi chuyển động của cần điều khiển như thế nào?

    • Sử dụng dữ liệu cần điều khiển để di chuyển mô hình robot của chúng ta

  • Sử dụng Arduino để thêm cảm biến và bộ truyền động

    • Tạo một chương trình ví dụ để sử dụng Arduino

    • Nền tảng robot được điều khiển bởi ROS và Arduino

    • Kết nối động cơ robot của bạn với ROS bằng Arduino

    • Kết nối bộ mã hóa với robot của bạn

    • Kiểm soát tốc độ bánh xe

  • Sử dụng IMU chi phí thấp – 9 bậc tự do

    • Cài đặt thư viện Razor IMU ROS

    • Razor gửi dữ liệu trong ROS như thế nào?

    • Tạo một node ROS để sử dụng dữ liệu từ cảm biến 9DoF trong robot của chúng ta

    • Sử dụng định vị robot để tổng hợp dữ liệu cảm biến trong robot của bạn

  • Sử dụng IMU – Xsens MTi

    • Xsens gửi dữ liệu trong ROS như thế nào?

  • Sử dụng hệ thống GPS

    • GPS gửi tin nhắn như thế nào

    • Tạo một dự án ví dụ để sử dụng GPS

  • Sử dụng máy đo khoảng cách laser – Hokuyo URG-04lx

    • Hiểu cách laser gửi dữ liệu trong ROS

    • Truy cập dữ liệu laser và sửa đổi nó

    • Tạo một tệp khởi chạy

  • Sử dụng cảm biến Kinect để xem đối tượng 3D

    • Kinect gửi dữ liệu từ các cảm biến như thế nào và chúng ta thấy nó như thế nào?

    • Tạo một ví dụ để sử dụng Kinect

  • Sử dụng động cơ servo – Dynamixel

    • Dynamixel gửi và nhận lệnh cho các chuyển động như thế nào?

    • Tạo một ví dụ để sử dụng động cơ servo

  • Tóm tắt


Chương 9: Thị giác Máy tính

  • Hỗ trợ driver camera ROS

    • Camera FireWire IEEE1394

    • Camera USB

    • Tạo driver camera USB của riêng bạn với OpenCV

  • Hình ảnh ROS

    • Xuất bản hình ảnh với ImageTransport

  • OpenCV trong ROS

    • Cài đặt OpenCV 3.0

    • Sử dụng OpenCV trong ROS

    • Trực quan hóa hình ảnh đầu vào camera với rqt_image_view

  • Hiệu chuẩn camera

    • Cách hiệu chuẩn camera

    • Hiệu chuẩn stereo

  • Đường ống hình ảnh ROS

    • Đường ống hình ảnh cho camera stereo

  • Các gói ROS hữu ích cho các tác vụ Thị giác Máy tính

  • Odometry hình ảnh

    • Sử dụng odometry hình ảnh với viso2

    • Hiệu chuẩn tư thế camera

    • Chạy demo trực tuyến viso2

    • Thực hiện odometry hình ảnh với viso2 với camera stereo

    • Thực hiện odometry hình ảnh với camera RGBD

      • Cài đặt fovis

      • Sử dụng fovis với camera Kinect RGBD

  • Tính toán đồng hình của hai hình ảnh

  • Tóm tắt


Chương 10: Đám mây điểm

  • Tìm hiểu Thư viện Đám mây điểm (PCL)

    • Các loại đám mây điểm khác nhau

    • Các thuật toán trong PCL

  • Giao diện PCL cho ROS

    • Chương trình PCL đầu tiên của tôi

  • Tạo đám mây điểm

  • Tải và lưu đám mây điểm vào đĩa

  • Trực quan hóa đám mây điểm

  • Lọc và giảm mẫu

  • Đăng ký và khớp

  • Phân vùng đám mây điểm

  • Phân đoạn

  • Tóm tắt


Chỉ mục

Nhận xét

Bài đăng phổ biến từ blog này

"Robotics, Vision and Control: Fundamental Algorithms in MATLAB" - Peter Corke

"An Introduction to MEMs Engineering - Nadim Maluf and Kirt Williams" (Tên sách dịch: "Giới thiệu về Kỹ thuật Hệ thống Cơ Điện Tử Vi Mô (MEMS)")

"XÁC ĐỊNH MA TRẬN MOMENT QUÁN TÍNH BẰNG SOLIDWORKS"