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
Đăng nhận xét