دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش:
نویسندگان: Anil Mahtani et al.
سری:
ISBN (شابک) : 9781788627436
ناشر: Packt Publishing
سال نشر: March 2018
تعداد صفحات: 1295
زبان: English
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 60 مگابایت
در صورت ایرانی بودن نویسنده امکان دانلود وجود ندارد و مبلغ عودت داده خواهد شد
در صورت تبدیل فایل کتاب ROS Programming: Building Powerful Robots به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب برنامه نویسی ROS: ساخت ربات های قدرتمند نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
Title page......Page 2
Copyright and Credits......Page 3
ROS Programming: Building Powerful Robots......Page 4
Packt Upsell......Page 5
Why subscribe?......Page 6
PacktPub.com......Page 7
Preface......Page 42
Who this learning path is for......Page 43
What this learning path covers......Page 44
To get the most out of this learning path......Page 46
Download the example code files......Page 47
Conventions used......Page 48
Get in touch......Page 49
Reviews......Page 50
Effective Robotics Programming with ROS, Third Edition......Page 51
Getting Started with ROS......Page 52
PC installation......Page 55
Installing ROS Kinetic using repositories......Page 56
Configuring your Ubuntu repositories......Page 57
Setting up your source.list file......Page 59
Setting up your keys......Page 60
Installing ROS......Page 61
Initializing rosdep......Page 62
Setting up the environment......Page 63
Getting rosinstall......Page 65
How to install VirtualBox and Ubuntu......Page 66
Downloading VirtualBox......Page 67
Creating the virtual machine......Page 68
Using ROS from a Docker image......Page 71
Installing Docker......Page 72
Getting and using ROS Docker images and containers......Page 73
Installing ROS in BeagleBone Black......Page 75
Prerequisites......Page 77
Setting up the local machine and source.list file......Page 81
Setting up your keys......Page 82
Installing the ROS packages......Page 83
Initializing rosdep for ROS......Page 84
Setting up the environment in the BeagleBone Black......Page 85
Getting rosinstall for BeagleBone Black......Page 86
Basic ROS example on the BeagleBone Black......Page 87
Summary......Page 88
ROS Architecture and Concepts......Page 89
Understanding the ROS Filesystem level......Page 90
The workspace......Page 92
Packages......Page 94
Metapackages......Page 96
Messages......Page 97
Services......Page 99
Understanding the ROS Computation Graph level......Page 100
Nodes and nodelets......Page 102
Topics......Page 104
Services......Page 105
Messages......Page 106
Bags......Page 107
The ROS master......Page 108
Parameter Server......Page 109
Understanding the ROS Community level......Page 110
Tutorials to practise with ROS......Page 111
Navigating through the ROS filesystem......Page 112
Creating our own workspace......Page 113
Creating an ROS package and metapackage......Page 114
Building an ROS package......Page 115
Playing with ROS nodes......Page 116
Learning how to interact with topics......Page 119
Learning how to use services......Page 122
Using Parameter Server......Page 125
Creating nodes......Page 126
Building the node......Page 129
Creating msg and srv files......Page 131
Using the new srv and msg files......Page 134
The launch file......Page 137
Dynamic parameters......Page 139
Summary......Page 143
Visualization and Debugging Tools......Page 144
Debugging ROS nodes......Page 147
Using the GDB debugger with ROS nodes......Page 148
Attaching a node to GDB while launching ROS......Page 149
Profiling a node with valgrind while launching ROS......Page 150
Enabling core dumps for ROS nodes......Page 151
Logging messages......Page 152
Outputting logging messages......Page 153
Setting the debug message level......Page 154
Configuring the debugging level of a particular node......Page 155
Giving names to messages......Page 157
Conditional and filtered messages......Page 158
Showing messages once, throttling, and other combinations......Page 159
Using rqt_console and rqt_logger_level to modify the logging level on the fly......Page 160
Inspecting the system......Page 163
Inspecting the node's graph online with rqt_graph......Page 166
Setting dynamic parameters......Page 169
Dealing with the unexpected......Page 171
Visualizing nodes diagnostics......Page 173
Plotting scalar data......Page 175
Creating a time series plot with rqt_plot......Page 176
Image visualization......Page 179
Visualizing a single image......Page 180
3D visualization......Page 182
Visualizing data in a 3D world using rqt_rviz......Page 183
The relationship between topics and frames......Page 187
Visualizing frame transformations......Page 188
Saving and playing back data......Page 190
What is a bag file?......Page 191
Recording data in a bag file with rosbag......Page 192
Playing back a bag file......Page 193
Inspecting all the topics and messages in a bag file......Page 194
Using the rqt_gui and rqt plugins......Page 196
Summary......Page 197
The Navigation Stack - Robot Setups......Page 198
The navigation stack in ROS......Page 199
Creating transforms......Page 201
Creating a broadcaster......Page 202
Creating a listener......Page 203
Watching the transformation tree......Page 205
Publishing sensor information......Page 206
Creating the laser node......Page 207
Publishing odometry information......Page 209
How Gazebo creates the odometry......Page 211
Using Gazebo to create the odometry......Page 214
Creating our own odometry......Page 216
Creating a base controller......Page 220
Creating our base controller......Page 222
Creating a map with ROS......Page 225
Saving the map using map_server......Page 227
Loading the map using map_server......Page 229
Summary......Page 230
The Navigation Stack - Beyond Setups......Page 231
Creating a package......Page 232
Creating a robot configuration......Page 233
Configuring the costmaps - global_costmap and local_costmap......Page 236
Configuring the common parameters......Page 237
Configuring the global costmap......Page 239
Configuring the local costmap......Page 240
Base local planner configuration......Page 241
Creating a launch file for the navigation stack......Page 242
Setting up rviz for the navigation stack......Page 244
The 2D pose estimate......Page 245
The 2D nav goal......Page 247
The static map......Page 248
The particle cloud......Page 249
The robot's footprint......Page 250
The local costmap......Page 251
The global costmap......Page 252
The global plan......Page 253
The local plan......Page 254
The planner plan......Page 255
The current goal......Page 256
Adaptive Monte Carlo Localization......Page 258
Modifying parameters with rqt_reconfigure......Page 260
Avoiding obstacles......Page 261
Sending goals......Page 263
Summary......Page 266
Manipulation with MoveIt!......Page 267
The MoveIt! architecture......Page 268
Motion planning......Page 270
The planning scene......Page 271
World geometry monitor......Page 272
Kinematics......Page 273
Collision checking......Page 274
Integrating an arm in MoveIt!......Page 275
What's in the box?......Page 276
Generating a MoveIt! package with the Setup Assistant......Page 277
Integration into RViz......Page 285
Integration into Gazebo or a real robotic arm......Page 289
Simple motion planning......Page 290
Planning a single goal......Page 291
Planning a random target......Page 292
Planning a predefined group state......Page 294
Displaying the target motion......Page 295
Motion planning with collisions......Page 296
Adding objects to the planning scene......Page 297
Removing objects from the planning scene......Page 299
Motion planning with point clouds......Page 300
The pick and place task......Page 302
The planning scene......Page 303
The target object to grasp......Page 304
The support surface......Page 305
Perception......Page 307
Grasping......Page 308
The pickup action......Page 311
The place action......Page 313
The demo mode......Page 316
Simulation in Gazebo......Page 317
Summary......Page 318
Using Sensors and Actuators with ROS......Page 319
Using a joystick or a gamepad......Page 320
How does joy_node send joystick movements?......Page 322
Using joystick data to move our robot model......Page 323
Using Arduino to add sensors and actuators......Page 327
Creating an example program to use Arduino......Page 328
Robot platform controlled by ROS and Arduino......Page 331
Connecting your robot motors to ROS using Arduino......Page 333
Connecting encoders to your robot......Page 337
Controlling the wheel velocity......Page 341
Using a low-cost IMU - 9 degrees of freedom......Page 342
Installing Razor IMU ROS library......Page 344
How does Razor send data in ROS?......Page 347
Creating an ROS node to use data from the 9DoF sensor in our robot......Page 349
Using robot localization to fuse sensor data in your robot......Page 351
Using the IMU - Xsens MTi......Page 353
How does Xsens send data in ROS?......Page 354
Using a GPS system......Page 355
How GPS sends messages......Page 357
Creating an example project to use GPS......Page 358
Using a laser rangefinder - Hokuyo URG-04lx......Page 359
Understanding how the laser sends data in ROS......Page 361
Accessing the laser data and modifying it......Page 363
Creating a launch file......Page 365
Using the Kinect sensor to view objects in 3D......Page 366
How does Kinect send data from the sensors, and how do we see it?......Page 367
Creating an example to use Kinect......Page 370
Using servomotors - Dynamixel......Page 372
How does Dynamixel send and receive commands for the movements?......Page 374
Creating an example to use the servomotor......Page 376
Summary......Page 377
Computer Vision......Page 378
ROS camera drivers support......Page 380
FireWire IEEE1394 cameras......Page 381
USB cameras......Page 385
Making your own USB camera driver with OpenCV......Page 387
ROS images......Page 392
Publishing images with ImageTransport......Page 393
OpenCV in ROS......Page 394
Installing OpenCV 3.0......Page 395
Using OpenCV in ROS......Page 396
Visualizing the camera input images with rqt_image_view......Page 397
Camera calibration......Page 398
How to calibrate a camera......Page 399
Stereo calibration......Page 403
The ROS image pipeline......Page 408
Image pipeline for stereo cameras......Page 411
ROS packages useful for Computer Vision tasks......Page 414
Visual odometry......Page 416
Using visual odometry with viso2......Page 417
Camera pose calibration......Page 418
Running the viso2 online demo......Page 421
Performing visual odometry with viso2 with a stereo camera......Page 424
Performing visual odometry with an RGBD camera......Page 425
Installing fovis......Page 426
Using fovis with the Kinect RGBD camera......Page 427
Computing the homography of two images......Page 429
Summary......Page 430
Point Clouds......Page 431
Understanding the PCL......Page 432
Different point cloud types......Page 433
Algorithms in PCL......Page 434
The PCL interface for ROS......Page 435
My first PCL program......Page 437
Creating point clouds......Page 439
Loading and saving point clouds to the disk......Page 442
Visualizing point clouds......Page 445
Filtering and downsampling......Page 449
Registration and matching......Page 453
Partitioning point clouds......Page 457
Segmentation......Page 460
Summary......Page 464
Mastering ROS for Robotics Programming......Page 465
Working with 3D Robot Modeling in ROS......Page 466
ROS packages for robot modeling......Page 467
Understanding robot modeling using URDF......Page 468
Creating the ROS package for the robot description......Page 471
Creating our first URDF model......Page 472
Explaining the URDF file......Page 474
Visualizing the robot 3D model in RViz......Page 476
Interacting with pan and tilt joints......Page 477
Adding physical and collision properties to a URDF model......Page 478
Understanding robot modeling using xacro......Page 479
Using properties......Page 480
Using the math expression......Page 481
Using macros......Page 482
Conversion of xacro to URDF......Page 483
Creating the robot description for a seven DOF robot manipulator......Page 484
Arm specification......Page 485
Type of joints......Page 486
Explaining the xacro model of seven DOF arm......Page 487
Using constants......Page 488
Using macros......Page 489
Including other xacro files......Page 490
Using meshes in the link......Page 491
Working with the robot gripper......Page 492
Viewing the seven DOF arm in RViz......Page 493
Understanding joint state publisher......Page 495
Understanding the robot state publisher......Page 496
Creating a robot model for the differential drive mobile robot......Page 497
Questions......Page 501
Summary......Page 502
Simulating Robots Using ROS and Gazebo......Page 503
Simulating the robotic arm using Gazebo and ROS......Page 504
The Robotic arm simulation model for Gazebo......Page 505
Adding colors and textures to the Gazebo robot model......Page 507
Adding transmission tags to actuate the model......Page 508
Adding the gazebo_ros_control plugin......Page 509
Adding a 3D vision sensor to Gazebo......Page 510
Simulating the robotic arm with Xtion Pro......Page 512
Visualizing the 3D sensor data......Page 513
Moving robot joints using ROS controllers in Gazebo......Page 516
Understanding the ros_control packages......Page 517
Different types of ROS controllers and hardware interfaces......Page 518
How the ROS controller interacts with Gazebo......Page 519
Interfacing joint state controllers and joint position controllers to the arm......Page 521
Launching the ROS controllers with Gazebo......Page 522
Moving the robot joints......Page 524
Simulating a differential wheeled robot in Gazebo......Page 525
Adding the laser scanner to Gazebo......Page 527
Moving the mobile robot in Gazebo......Page 529
Adding joint state publishers in the launch file......Page 530
Adding the ROS teleop node......Page 531
Questions......Page 533
Summary......Page 534
Working with Pluginlib, Nodelets, and Gazebo Plugins......Page 535
Understanding pluginlib......Page 536
Creating plugins for the calculator application using pluginlib......Page 537
Working with pluginlib_calculator package......Page 539
Step 1 - Creating calculator_base header file......Page 540
Step 2 - Creating calculator_plugins header file......Page 541
Step 3 - Exporting plugins using calculator_plugins.cpp......Page 542
Step 4 - Implementing plugin loader using calculator_loader.cpp......Page 543
Step 5 - Creating plugin description file: calculator_plugins.xml......Page 544
Step 6 - Registering plugin with the ROS package system......Page 545
Step 7 - Editing the CMakeLists.txt file......Page 546
Step 8: Querying the list of plugins in a package......Page 547
Step 9 - Running the plugin loader......Page 548
Understanding ROS nodelets......Page 549
Creating a nodelet......Page 550
Step 1 - Creating a package for nodelet......Page 551
Step 2 - Creating hello_world.cpp nodelet......Page 552
Step 3 - Explanation of hello_world.cpp......Page 553
Step 4 - Creating plugin description file......Page 554
Step 5 - Adding the export tag in package.xml......Page 555
Step 6 - Editing CMakeLists.txt......Page 556
Step 7 - Building and running nodelets......Page 557
Step 8 - Creating launch files for nodelets......Page 559
Understanding the Gazebo plugins......Page 561
Creating a basic world plugin......Page 562
Questions......Page 565
Summary......Page 566
Writing ROS Controllers and Visualization Plugins......Page 567
Understanding pr2_mechanism packages......Page 569
pr2_controller_interface package......Page 570
Initialization of the controller......Page 571
Starting the ROS controller......Page 572
Updating ROS controller......Page 573
Stopping the controller......Page 574
pr2_controller_manager......Page 575
Writing a basic real-time joint controller in ROS......Page 576
Step 1 – Creating controller package......Page 577
Step 2 – Creating controller header file......Page 578
Step 3 – Creating controller source file......Page 579
Step 4 – Explanation of the controller source file......Page 580
Step 5 – Creating plugin description file......Page 581
Step 6 – Updating package.xml......Page 582
Step 7 – Updating CMakeLists.txt......Page 583
Step 8 – Building controller......Page 584
Step 9 – Writing controller configuration file......Page 585
Step 10 – Writing launch file for the controller......Page 586
Step 11 – Running controller along with PR2 simulation in Gazebo......Page 587
Understanding ros_control packages......Page 589
Understanding ROS visualization tool (RViz) and its plugins......Page 590
Displays panel......Page 591
RViz toolbar......Page 592
Views......Page 593
Time panel......Page 594
Dockable panels......Page 595
Writing a RViz plugin for teleoperation......Page 596
Methodology of building RViz plugin......Page 597
Step 1 – Creating RViz plugin package......Page 598
Step 2 – Creating RViz plugin header file......Page 599
Step 3 – Creating RViz plugin definition......Page 601
Step 4 – Creating plugin description file......Page 603
Step 5 – Adding export tags in package.xml......Page 604
Step 6 – Editing CMakeLists.txt......Page 605
Step 7 – Building and loading plugins......Page 606
Questions......Page 608
Summary......Page 609
Interfacing I/O Boards, Sensors, and Actuators to ROS......Page 610
Understanding the Arduino-ROS interface......Page 611
What is the Arduino-ROS interface?......Page 613
Understanding the rosserial package in ROS......Page 614
Installing rosserial packages on Ubuntu 14.04/15.04......Page 616
Understanding ROS node APIs in Arduino......Page 619
ROS - Arduino Publisher and Subscriber example......Page 621
Arduino-ROS, example - blink LED and push button......Page 625
Arduino-ROS, example - Accelerometer ADXL 335......Page 628
Arduino-ROS, example - ultrasonic distance sensor......Page 631
Equations to find distance using the ultrasonic range sensor......Page 632
Arduino-ROS, example - Odometry Publisher......Page 635
Interfacing Non-Arduino boards to ROS......Page 637
Setting ROS on Odroid-C1 and Raspberry Pi 2......Page 638
How to install an OS image to Odroid-C1 and Raspberry Pi 2......Page 642
Installation in Windows......Page 643
Installation in Linux......Page 644
Connecting to Odroid-C1 and Raspberry Pi 2 from a PC......Page 645
Configuring an Ethernet hotspot for Odroid-C1 and Raspberry Pi 2......Page 646
Installing Wiring Pi on Odroid-C1......Page 648
Installing Wiring Pi on Raspberry Pi 2......Page 649
Blinking LED using ROS on Odroid-C1 and Raspberry Pi 2......Page 650
Push button + blink LED using ROS on Odroid-C1 and Raspberry Pi 2......Page 652
Running LED blink in Odroid-C1......Page 655
Running button handling and LED blink in Odroid-C1......Page 656
Running LED blink in Raspberry Pi 2......Page 657
Interfacing Dynamixel actuators to ROS......Page 658
Questions......Page 659
Summary......Page 660
Programming Vision Sensors using ROS, Open-CV, and PCL......Page 661
Understanding ROS - OpenCV interfacing packages......Page 662
Understanding ROS - PCL interfacing packages......Page 663
Installing ROS perception......Page 664
Interfacing USB webcams in ROS......Page 666
Working with ROS camera calibration......Page 669
Converting images between ROS and OpenCV using cv_bridge......Page 672
Image processing using ROS and OpenCV......Page 673
Step 1: Creating ROS package for the experiment......Page 674
Step 2: Creating source files......Page 675
Step 3: Explanation of the code......Page 676
Publishing and subscribing images using image_transport......Page 677
Converting OpenCV-ROS images using cv_bridge......Page 678
Finding edges on the image......Page 680
Visualizing raw and edge detected image......Page 681
Step 4: Editing the CMakeLists.txt file......Page 682
Step 5: Building and running example......Page 683
Interfacing Kinect and Asus Xtion Pro in ROS......Page 684
Interfacing Intel Real Sense camera with ROS......Page 687
Working with point cloud to laser scan package......Page 689
Interfacing Hokuyo Laser in ROS......Page 692
Interfacing Velodyne LIDAR in ROS......Page 694
Working with point cloud data......Page 696
How to publish a point cloud......Page 697
How to subscribe and process the point cloud......Page 699
Writing a point cloud data to a PCD file......Page 701
Read and publish point cloud from a PCD file......Page 702
Streaming webcam from Odroid using ROS......Page 705
Questions......Page 708
Summary......Page 709
Building and Interfacing Differential Drive Mobile Robot Hardware in ROS......Page 710
Introduction to Chefbot- a DIY mobile robot and its hardware configuration......Page 711
Flashing Chefbot firmware using Energia IDE......Page 714
Serial data sending protocol from LaunchPad to PC......Page 715
Serial data sending protocol from PC to Launchpad......Page 716
Discussing Chefbot interface packages on ROS......Page 717
Computing odometry from encoder ticks......Page 722
Computing motor velocities from ROS twist message......Page 724
Running robot stand alone launch file using C++ nodes......Page 726
Configuring the Navigation stack for Chefbot......Page 727
Configuring the gmapping node......Page 728
Configuring the Navigation stack packages......Page 730
Common configuration (local_costmap) and (global_costmap)......Page 731
Configuring global costmap parameters......Page 732
Configuring local costmap parameters......Page 733
Configuring base local planner parameters......Page 734
Configuring DWA local planner parameters......Page 735
Configuring move_base node parameters......Page 736
Understanding AMCL......Page 739
Understanding RViz for working with the Navigation stack......Page 742
2D Pose Estimate button......Page 743
Visualizing the particle cloud......Page 744
The 2D Nav Goal button......Page 745
Displaying the static map......Page 746
Displaying the robot footprint......Page 747
Displaying the global and local cost map......Page 748
Displaying the global plan, local plan, and planner plan......Page 749
The current goal......Page 750
Obstacle avoidance using the Navigation stack......Page 751
Working with Chefbot simulation......Page 752
Building a room in Gazebo......Page 753
Adding model files to the Gazebo model folder......Page 755
Sending a goal to the Navigation stack from a ROS node......Page 758
Questions......Page 761
Summary......Page 762
Exploring the Advanced Capabilities of ROS-MoveIt!......Page 763
Motion planning using the move_group C++ interface......Page 764
Motion planning a random path using MoveIt! C++ APIs......Page 765
Motion planning a custom path using MoveIt! C++ APIs......Page 767
Collision checking in robot arm using MoveIt!......Page 769
Adding a collision object in MoveIt!......Page 770
Removing a collision object from the planning scene......Page 775
Checking self collision using MoveIt! APIs......Page 776
Working with perception using MoveIt! and Gazebo......Page 778
Grasping using MoveIt!......Page 784
Working with robot pick and place task using MoveIt!......Page 786
Creating Grasp Table and Grasp Object in MoveIt!......Page 788
Pick and place action in Gazebo and real Robot......Page 791
Understanding Dynamixel ROS Servo controllers for robot hardware interfacing......Page 792
The Dynamixel Servos......Page 793
Dynamixel-ROS interface......Page 795
Interfacing seven DOF Dynamixel based robotic arm to ROS MoveIt!......Page 796
Creating a controller package for COOL arm robot......Page 797
MoveIt! configuration of the COOL Arm......Page 800
Questions......Page 802
Summary......Page 803
ROS for Industrial Robots......Page 804
Understanding ROS-Industrial packages......Page 805
Goals of ROS-Industrial......Page 806
ROS-Industrial - a brief history......Page 807
Benefits of ROS-Industrial......Page 808
Installing ROS-Industrial packages......Page 809
Block diagram of ROS-Industrial packages......Page 810
Creating URDF for an industrial robot......Page 812
Creating MoveIt! configuration for an industrial robot......Page 813
Updating the MoveIt! configuration files......Page 816
Testing the MoveIt! configuration......Page 818
Installing ROS-Industrial packages of universal robotic arm......Page 819
Installing the ROS interface of universal robots......Page 821
Understanding the Moveit! configuration of a universal robotic arm......Page 823
Working with MoveIt! configuration of ABB robots......Page 825
Understanding the ROS-Industrial robot support packages......Page 828
Visualizing the ABB robot model in RViz......Page 830
ROS-Industrial robot client package......Page 831
Designing industrial robot client nodes......Page 832
ROS-Industrial robot driver package......Page 834
Understanding MoveIt! IKFast plugin......Page 836
Creating the MoveIt! IKFast plugin for the ABB-IRB6640 robot......Page 837
Prerequisites for developing the MoveIt! IKFast plugin......Page 838
OpenRave and IK Fast Module......Page 839
MoveIt! IK Fast......Page 840
Installing MoveIt! IKFast package......Page 841
Installing OpenRave on Ubuntu 14.04.3......Page 842
Creating the COLLADA file of a robot to work with OpenRave......Page 844
Generating the IKFast CPP file for the IRB 6640 robot......Page 846
Creating the MoveIt! IKFast plugin......Page 847
Questions......Page 850
Summary......Page 851
Troubleshooting and Best Practices in ROS......Page 852
Setting up Eclipse IDE on Ubuntu 14.04.3......Page 853
Setting ROS development environment in Eclipse IDE......Page 855
Global settings in Eclipse IDE......Page 856
ROS compile script for Eclipse IDE......Page 858
Adding ROS Catkin package to Eclipse......Page 860
Adding run configurations to run ROS nodes in Eclipse......Page 864
Best practices in ROS......Page 866
ROS C++ coding style guide......Page 867
Standard naming conventions used in ROS......Page 868
Code license agreement......Page 869
ROS code formatting......Page 870
ROS code documentation......Page 871
Console output......Page 872
Best practices in the ROS package......Page 873
Important troubleshooting tips in ROS......Page 874
Usage of roswtf......Page 875
Questions......Page 878
Summary......Page 879
ROS Robotics Projects......Page 880
Face Detection and Tracking Using ROS, OpenCV and Dynamixel Servos......Page 881
Overview of the project......Page 882
Hardware and software prerequisites......Page 883
Installing dependent ROS packages......Page 885
Installing the usb_cam ROS package......Page 886
Creating a ROS workspace for dependencies......Page 887
Interfacing Dynamixel with ROS......Page 896
Installing the ROS dynamixel_motor packages......Page 897
Creating face tracker ROS packages......Page 898
The interface between ROS and OpenCV......Page 899
Working with the face-tracking ROS package......Page 901
Understanding the face tracker code......Page 903
Understanding CMakeLists.txt......Page 906
The track.yaml file......Page 908
The launch files......Page 909
Running the face tracker node......Page 910
The face_tracker_control package......Page 911
The start_dynamixel launch file......Page 912
The pan controller launch file......Page 913
The pan controller configuration file......Page 914
The servo parameters configuration file......Page 915
The face tracker controller node......Page 916
Creating CMakeLists.txt......Page 918
Testing the face tracker control package......Page 919
Bringing all the nodes together......Page 921
Fixing the bracket and setting up the circuit......Page 922
The final run......Page 923
Questions......Page 924
Summary......Page 925
Building a Siri-Like Chatbot in ROS......Page 926
Social robots......Page 927
Building social robots......Page 929
Prerequisites......Page 930
Getting started with AIML......Page 931
AIML tags......Page 932
The PyAIML interpreter......Page 934
Installing PyAIML on Ubuntu 16.04 LTS......Page 935
Playing with PyAIML......Page 936
Loading multiple AIML files......Page 938
Creating an AIML bot in ROS......Page 940
The AIML ROS package......Page 941
Installing the ROS sound_play package......Page 942
Installing the dependencies of sound_play......Page 943
Installing the sound_play ROS package......Page 944
Creating the ros_aiml package......Page 945
The aiml_server node......Page 946
The AIML client node......Page 947
The aiml_tts client node......Page 948
The AIML speech recognition node......Page 949
start_chat.launch......Page 950
start_tts_chat.launch......Page 951
start_speech_chat.launch......Page 952
Questions......Page 954
Summary......Page 955
Controlling Embedded Boards Using ROS......Page 956
Getting started with popular embedded boards......Page 957
An introduction to Arduino boards......Page 958
How to choose an Arduino board for your robot......Page 959
Getting started with STM32 and TI Launchpads......Page 960
The Tiva C Launchpad......Page 962
Introducing the Raspberry Pi......Page 963
How to choose a Raspberry Pi board for your robot......Page 964
The Odroid board......Page 965
Interfacing Arduino with ROS......Page 966
Monitoring light using Arduino and ROS......Page 969
Running ROS serial server on PC......Page 971
Interfacing STM32 boards to ROS using mbed......Page 973
Interfacing Tiva C Launchpad boards with ROS using Energia......Page 976
Running ROS on Raspberry Pi and Odroid boards......Page 979
Connecting Raspberry Pi and Odroid to PC......Page 981
Controlling GPIO pins from ROS......Page 983
Creating a ROS package for the blink demo......Page 985
Running the LED blink demo on Raspberry Pi and Odroid......Page 988
Questions......Page 989
Summary......Page 990
Teleoperate a Robot Using Hand Gestures......Page 991
Teleoperating ROS Turtle using a keyboard......Page 992
Teleoperating using hand gestures......Page 993
Setting up the project......Page 996
Interfacing the MPU-9250 with the Arduino and ROS......Page 997
The Arduino-IMU interfacing code......Page 999
Visualizing IMU TF in Rviz......Page 1002
Converting IMU data into twist messages......Page 1004
Integration and final run......Page 1006
Teleoperating using an Android phone......Page 1008
Questions......Page 1011
Summary......Page 1012
Object Detection and Recognition......Page 1013
Getting started with object detection and recognition......Page 1014
The find_object_2d package in ROS......Page 1016
Installing find_object_2d......Page 1017
Installing from source code......Page 1018
Running find_object_2d nodes using webcams......Page 1019
Running find_object_2d nodes using depth sensors......Page 1024
Getting started with 3D object recognition......Page 1028
Introduction to 3D object recognition packages in ROS......Page 1029
Installing ORK packages in ROS......Page 1030
Detecting and recognizing objects from 3D meshes......Page 1031
Training using 3D models of an object......Page 1032
Training from captured 3D models......Page 1034
Recognizing objects......Page 1037
Questions......Page 1039
Summary......Page 1040
Deep Learning Using ROS and TensorFlow......Page 1041
Introduction to deep learning and its applications......Page 1042
Deep learning for robotics......Page 1043
Deep learning libraries......Page 1044
Getting started with TensorFlow......Page 1045
Installing TensorFlow on Ubuntu 16.04 LTS......Page 1046
TensorFlow concepts......Page 1048
Graph......Page 1049
Session......Page 1050
Variables......Page 1051
Fetches......Page 1052
Feeds......Page 1053
Writing our first code in TensorFlow......Page 1054
Image recognition using ROS and TensorFlow......Page 1057
Prerequisites......Page 1058
The ROS image recognition node......Page 1059
Running the ROS image recognition node......Page 1061
Introducing to scikit-learn......Page 1063
Installing scikit-learn on Ubuntu 16.04 LTS......Page 1064
Introducing to SVM and its application in robotics......Page 1065
Implementing an SVM-ROS application......Page 1066
Questions......Page 1069
Summary......Page 1070
ROS on MATLAB and Android......Page 1071
Getting started with the ROS-MATLAB interface......Page 1072
Setting Robotics Toolbox in MATLAB......Page 1073
Basic ROS functions in MATLAB......Page 1074
Initializing a ROS network......Page 1075
Listing ROS nodes, topics, and messages......Page 1076
Communicating from MATLAB to a ROS network......Page 1078
Controlling a ROS robot from MATLAB......Page 1081
Designing the MATLAB GUI application......Page 1083
Explaining callbacks......Page 1086
Running the application......Page 1088
Getting started with Android and its ROS interface......Page 1090
Installing rosjava......Page 1092
Installing from the Ubuntu package manager......Page 1093
Installing from source code......Page 1094
Installing android-sdk from the Ubuntu package manager......Page 1095
Installing android-sdk from prebuilt binaries......Page 1096
Installing the ROS-Android interface......Page 1099
Playing with ROS-Android applications......Page 1100
Troubleshooting......Page 1101
Android-ROS publisher-subscriber application......Page 1103
The teleop application......Page 1105
The ROS Android camera application......Page 1107
Making the Android device the ROS master......Page 1108
Code walkthrough......Page 1109
Creating basic applications using the ROS-Android interface......Page 1111
Troubleshooting tips......Page 1113
Questions......Page 1114
Summary......Page 1115
Building an Autonomous Mobile Robot......Page 1116
Robot specification and design overview......Page 1117
Designing and selecting the motors and wheels for the robot......Page 1118
Computing motor torque......Page 1119
Calculation of motor RPM......Page 1120
Design summary......Page 1121
Building 2D and 3D models of the robot body......Page 1122
The base plate......Page 1123
The pole and tube design......Page 1125
The motor, wheel, and motor clamp design......Page 1126
The caster wheel design......Page 1127
Middle plate and top plate design......Page 1128
The top plate......Page 1129
3D modeling of the robot......Page 1130
Simulating the robot model in Gazebo......Page 1131
Mathematical model of a differential drive robot......Page 1132
Simulating Chefbot......Page 1134
Building the URDF model of Chefbot......Page 1135
Inserting 3D CAD parts into URDF as links......Page 1136
Inserting Gazebo controllers into URDF......Page 1137
Running the simulation......Page 1139
Mapping and localization......Page 1141
Designing and building actual robot hardware......Page 1144
Motor and motor driver......Page 1145
Motor encoders......Page 1146
Tiva C Launchpad......Page 1147
Ultrasonic sensor......Page 1148
OpenNI depth sensor......Page 1149
Intel NUC......Page 1150
Interfacing sensors and motors with the Launchpad......Page 1151
Programming the Tiva C Launchpad......Page 1152
Interfacing robot hardware with ROS......Page 1155
Running Chefbot ROS driver nodes......Page 1157
Gmapping and localization in Chefbot......Page 1159
Questions......Page 1162
Summary......Page 1163
Creating a Self-Driving Car Using ROS......Page 1164
Getting started with self-driving cars......Page 1165
History of autonomous vehicles......Page 1166
Levels of autonomy......Page 1169
Functional block diagram of a typical self-driving car......Page 1170
GPS, IMU, and wheel encoders......Page 1171
Xsens MTi IMU......Page 1173
Camera......Page 1174
Ultrasonic sensors......Page 1175
LIDAR and RADAR......Page 1176
Velodyne HDL-64 LIDAR......Page 1177
SICK LMS 5xx/1xx and Hokuyo LIDAR......Page 1178
Continental ARS 300 radar (ARS)......Page 1179
Delphi radar......Page 1180
On-board computer......Page 1181
Software block diagram of self-driving cars......Page 1182
Simulating the Velodyne LIDAR......Page 1184
Interfacing Velodyne sensors with ROS......Page 1186
Simulating a laser scanner......Page 1188
Explaining the simulation code......Page 1190
Interfacing laser scanners with ROS......Page 1192
Simulating stereo and mono cameras in Gazebo......Page 1193
Interfacing cameras with ROS......Page 1195
Simulating GPS in Gazebo......Page 1196
Interfacing GPS with ROS......Page 1198
Simulating IMU on Gazebo......Page 1199
Interfacing IMUs with ROS......Page 1201
Simulating an ultrasonic sensor in Gazebo......Page 1202
Low-cost LIDAR sensors......Page 1204
Sweep LIDAR......Page 1205
RPLIDAR......Page 1207
Simulating a self-driving car with sensors in Gazebo......Page 1208
Installing prerequisites......Page 1209
Visualizing robotic car sensor data......Page 1211
Moving a self-driving car in Gazebo......Page 1212
Running hector SLAM using a robotic car......Page 1213
Interfacing a DBW car with ROS......Page 1215
Installing packages......Page 1216
Visualizing the self-driving car and sensor data......Page 1217
Communicating with DBW from ROS......Page 1219
Introducing the Udacity open source self-driving car project......Page 1220
MATLAB ADAS toolbox......Page 1224
Questions......Page 1225
Summary......Page 1226
Teleoperating a Robot Using a VR Headset and Leap Motion......Page 1227
Getting started with a VR headset and Leap Motion......Page 1228
Project prerequisites......Page 1230
Design and working of the project......Page 1231
Installing the Leap Motion SDK on Ubuntu 14.04.5......Page 1233
Visualizing Leap Motion controller data......Page 1234
Playing with the Leap Motion visualizer tool......Page 1235
Installing the ROS driver for the Leap Motion controller......Page 1237
Testing the Leap Motion ROS driver......Page 1238
Visualizing Leap Motion data in Rviz......Page 1239
Creating a teleoperation node using the Leap Motion controller......Page 1241
Building a ROS-VR Android application......Page 1243
Working with the ROS-VR application and interfacing with Gazebo......Page 1245
Working with TurtleBot simulation in VR......Page 1247
Troubleshooting the ROS-VR application......Page 1249
Integrating ROS-VR application and Leap Motion teleoperation......Page 1250
Questions......Page 1251
Summary......Page 1252
Controlling Your Robots over the Web......Page 1253
Getting started with ROS web packages......Page 1254
rosbridge_suite......Page 1255
roslibjs, ros2djs, and ros3djs......Page 1257
The tf2_web_republisher package......Page 1258
Setting up ROS web packages on ROS Kinetic......Page 1259
Installing rosbridge_suite......Page 1260
Setting up rosbridge client libraries......Page 1261
Installing tf2_web_republisher on ROS Kinetic......Page 1262
Teleoperating and visualizing a robot on a web browser......Page 1263
Working of the project......Page 1264
Connecting to rosbridge_server......Page 1266
Initializing the teleop......Page 1267
Creating a 3D viewer inside a web browser......Page 1268
Creating a TF client......Page 1269
Creating a URDF client......Page 1270
Creating text input......Page 1271
Running the web teleop application......Page 1272
Controlling robot joints from a web browser......Page 1274
Installing joint_state_publisher_js......Page 1275
Including the joint state publisher module......Page 1276
Creating the joint state publisher object......Page 1277
Creating an HTML division for sliders......Page 1278
Running the web-based joint state publisher......Page 1279
Prerequisites......Page 1281
Installing prerequisites......Page 1282
Explaining the code......Page 1283
Running the robot surveillance application......Page 1284
Web-based speech-controlled robot......Page 1285
Prerequisites......Page 1286
Enabling speech recognition in the web application......Page 1287
Running a speech-controlled robot application......Page 1289
Questions......Page 1291
Summary......Page 1292
Bibliography......Page 1293
Other Books You May Enjoy......Page 1294
Leave a review - let other readers know what you think......Page 1295