Joseph | Robot Operating System (ROS) for Absolute Beginners | E-Book | www.sack.de
E-Book

E-Book, Englisch, 294 Seiten

Joseph Robot Operating System (ROS) for Absolute Beginners

Robotics Programming Made Easy
1. ed
ISBN: 978-1-4842-3405-1
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark

Robotics Programming Made Easy

E-Book, Englisch, 294 Seiten

ISBN: 978-1-4842-3405-1
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark



Learn how to get started with robotics programming using Robot Operation System (ROS). Targeted for absolute beginners in ROS, Linux, and Python, this short guide shows you how to build your own robotics projects.

ROS is an open-source and flexible framework for writing robotics software. With a hands-on approach and sample projects, Robot Operating System for Absolute Beginners will enable you to begin your first robot project. You will learn the basic concepts of working with ROS and begin coding with ROS APIs in both C++ and Python.
What You'll LearnInstall ROSReview fundamental ROS concepts
Work with frequently used commands in ROS
Build a mobile robot from scratch using ROS

Who This Book Is For
Absolute beginners with little to no programming experience looking to learn robotics programming.

Lentin Joseph is an author, entrepreneur, electronics engineer, robotics enthusiast, machine vision expert, embedded programmer, and the founder and CEO of Qbotics Labs from India. He completed his bachelor's degree in electronics and communication engineering at the Federal Institute of Science and Technology (FISAT), Kerala. After graduating, Lentin worked for three years at a start-up company focusing on robotics and image processing. During that time he learned to work with various robotics software platforms such as Robot Operating System (ROS), V-REP, and Actin (a robotic simulation tool) and image processing libraries such as OpenCV, OpenNI, and PCL. He also has experience with 3D robot design and embedded programming on Arduino and Tiva Launchpad. 
He recently started a new company called Qbotics Labs, which mainly focuses on research into building some great products in domains such as robotics and machine vision.

Joseph Robot Operating System (ROS) for Absolute Beginners jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


1;Table of Contents;5
2;About the Author;10
3;About the Technical Reviewer;11
4;Chapter 1: Getting Started with Ubuntu Linux for Robotics;12
4.1;Getting Started with GNU/Linux;12
4.1.1;What Is Ubuntu?;13
4.1.2;Why Ubuntu for Robotics?;14
4.2;Installing Ubuntu;14
4.2.1;Recommended PC Requirements;15
4.2.2;Downloading Ubuntu;15
4.2.3;Installing VirtualBox;16
4.2.4;Creating a VirtualBox Machine;17
4.2.4.1;Step 1: Adding a New Virtual Machine;17
4.2.4.2;Step 2: Naming the Guest Operating System;18
4.2.4.3;Step 3: Allocating RAM for the Guest OS;19
4.2.4.4;Step 4: Creating a Virtual Hard Disk;20
4.2.4.5;Step 5: Configuring the Type of Virtual Disk;21
4.2.4.6;Step 6: Choosing Ubuntu DVD Image;23
4.2.4.7;Step 7: Starting Virtual Machine;28
4.2.5;Installing Ubuntu on VirtualBox;29
4.2.6;Installing Ubuntu on a PC;39
4.3;Playing with the Ubuntu Graphical User Interface;40
4.3.1;The Ubuntu File System;41
4.3.2;Useful Ubuntu Applications;44
4.4;Getting Started with Shell Commands;45
4.4.1;Terminal Commands Cheat Sheet;46
4.4.1.1;man: Manual Pages for Shell Commands;46
4.4.1.2;ls: List Directory Content;47
4.4.1.3;cd: Change Directory;48
4.4.1.4;pwd: Current Terminal Path;48
4.4.1.5;mkdir: Create a Folder;49
4.4.1.6;rm: Delete a File;49
4.4.1.7;rmdir: Delete a Folder;50
4.4.1.8;mv: Move a File from One Place to Another;51
4.4.1.9;cp: Copy a File from One Path to Another;52
4.4.1.10;dmesg: Display a Kernel Message;52
4.4.1.11;lspci: List of PCI Devices in the System;53
4.4.1.12;lsusb: List of USB Devices in the System;54
4.4.1.13;sudo: Run a Command in Administrative Mode;54
4.4.1.14;ps: List the Running Process;55
4.4.1.15;kill: Kill a Process;56
4.4.1.16;apt-get: Install a Package in Ubuntu;57
4.4.1.17;dpkg -i: Install a Package in Ubuntu;60
4.4.1.18;reboot: Reboot the System;61
4.4.1.19;poweroff: Switch off the System;62
4.4.1.20;htop: Terminal Process View;62
4.4.1.21;nano: Text Editor in Terminal;63
4.5;Summary;65
5;Chapter 2: Fundamentals of C++ for Robotics Programming;66
5.1;Getting Started with C++;67
5.1.1;Timeline: The C++ Language;67
5.2;C/C++ in Ubuntu Linux;67
5.2.1;Introduction to GCC and G++ Compilers;68
5.2.2;Installing C/C++ Compiler;68
5.2.3;Verifying Installation;69
5.2.4;Introduction to GNU Project Debugger (GDB);70
5.2.4.1;Installing GDB in Ubuntu Linux;70
5.2.4.2;Verifying Installation;71
5.2.4.3;Writing Your First Code;71
5.2.4.3.1;Explaining Code;73
5.2.4.4;Compiling Your Code;74
5.2.4.5;Debugging Your Code;76
5.3;Learning OOP Concepts from Examples;80
5.3.1;The Differences Between Classes and Structs;80
5.3.2;C++ Classes and Objects;84
5.3.3;Class Access Modifier;86
5.3.4;C++ Inheritance;87
5.3.5;C++ Files and Streams;93
5.3.6;Namespaces in C++;95
5.3.7;C++ Exception Handling;96
5.3.8;C++ Standard Template Libraries;99
5.4;Building a C++ Project;99
5.4.1;Creating a Linux Makefile;99
5.4.2;Creating a CMake File;103
5.5;Summary;105
6;Chapter 3: Fundamentals of Python for Robotics Programming;106
6.1;Getting Started with Python;107
6.1.1;Timeline: The Python Language;107
6.2;Python in Ubuntu Linux;108
6.2.1;Introduction to Python Interpreter;108
6.2.2;Installing Python on Ubuntu 16.04 LTS;109
6.2.3;Verifying Python Installation;109
6.2.4;Writing Your First Code;110
6.2.4.1;Running Python Code;113
6.2.5;Understanding Python Basics;114
6.2.5.1;What’s New in Python?;115
6.2.5.1.1;Static and Dynamic Typing;115
6.2.5.1.2;Code Indentation;115
6.2.5.1.3;Semicolons;116
6.2.5.2;Python Variables;116
6.2.5.3;Python Input and Conditional statement;118
6.2.5.4;Python: Loops;120
6.2.5.5;Python: Functions;123
6.2.5.6;Python: Handling Exception;125
6.2.5.7;Python: Classes;126
6.2.5.8;Python: Files;128
6.2.5.9;Python: Modules;130
6.2.5.10;Python: Handling Serial Ports;132
6.2.5.11;Installing PySerial in Ubuntu 16.04;132
6.2.5.12;Python: Scientific Computing and Visualization;135
6.2.5.13;Python: Machine Learning and Deep Learning;135
6.2.5.14;Python: Computer Vision;136
6.2.5.15;Python: Robotics;136
6.2.5.16;Python: IDEs;136
6.3;Summary;137
7;Chapter 4: Kick-Starting Robot Programming Using ROS;138
7.1;What Is Robot Programming?;138
7.1.1;Why Robot Programming Is Different;140
7.2;Getting Started with ROS;143
7.2.1;The ROS Equation;146
7.2.2;Robot Programming Before and After ROS;146
7.2.3;The History of ROS;146
7.2.4;Before and After ROS;149
7.2.5;Why Use ROS?;149
7.2.6;Installing ROS;150
7.2.7;Robots and Sensors Supporting ROS;157
7.2.8;Popular ROS Computing Platforms;159
7.2.9;ROS Architecture and Concepts;160
7.2.10;The ROS File System;163
7.2.11;ROS Computation Concepts;165
7.2.12;The ROS Community;166
7.2.13;ROS Command Tools;166
7.2.14;ROS Demo: Hello World Example;171
7.2.15;ROS Demo: turtlesim;173
7.2.15.1;Moving the Turtle;176
7.2.15.2;Moving the Turtle in a Square;178
7.2.16;ROS GUI Tools: Rviz and Rqt;179
7.3;Summary;181
8;Chapter 5: Programming with ROS;182
8.1;Programming Using ROS;182
8.2;Creating a ROS Workspace and Package;183
8.2.1;ROS Build System;187
8.2.2;ROS Catkin Workspace;188
8.2.2.1;src Folder;188
8.2.2.2;build Folder;188
8.2.2.3;devel Folder;188
8.2.2.4;install Folder;189
8.2.3;Creating a ROS Package;189
8.3;Using ROS Client Libraries;191
8.3.1;roscpp and rospy;192
8.3.1.1;Header Files and ROS Modules;192
8.3.1.2;Initializing a ROS Node;194
8.3.1.3;Printing Messages in a ROS Node;194
8.3.1.4;Creating a Node Handle;195
8.3.1.5;Creating a ROS Message Definition;195
8.3.1.6;Publishing a Topic in ROS Node;196
8.3.1.7;Subscribing a Topic in ROS Node;197
8.3.1.8;Writing the Callback Function in ROS Node;198
8.3.1.9;The ROS Spin Function in ROS Node;199
8.3.1.10;The ROS Sleep Function in ROS Node;199
8.3.1.11;Setting and Getting a ROS Parameter;199
8.3.2;The Hello World Example Using ROS;200
8.3.2.1;Creating a hello_world Package;200
8.3.2.2;Creating a ROS C++ Node;203
8.3.2.3;Editing the CMakeLists.txt File;205
8.3.2.4;Building C++ Nodes;206
8.3.2.5;Executing C++ Nodes;207
8.3.2.6;Creating Python Nodes;209
8.3.2.7;Executing Python Nodes;211
8.3.2.8;Creating Launch Files;211
8.3.2.9;Visualizing a Computing Graph;214
8.3.3;Programming turtlesim Using rospy;215
8.3.3.1;Moving turtlesim;215
8.3.3.2;Printing the Robot’s Position;220
8.3.3.3;Moving the Robot with Position Feedback;224
8.3.3.4;Reset and Change the Background Color;228
8.3.4;Programming TurtleBot Simulation Using rospy;232
8.3.4.1;Installing TurtleBot 2 Packages;233
8.3.4.2;Launching the TurtleBot Simulation;233
8.3.4.3;Moving a Fixed Distance Using a Python Node;235
8.3.4.4;Finding Obstacles;238
8.4;Programming Embedded Boards Using ROS;238
8.4.1;Interfacing Arduino with ROS;239
8.4.2;Installing ROS on a Raspberry Pi;245
8.4.2.1;Burning an Ubuntu Mate Image to a Micro SD Card;246
8.4.2.2;Booting to Ubuntu;247
8.4.2.3;Installing ROS on a Raspberry Pi;247
8.5;Summary;247
9;Chapter 6: Robotics Project Using ROS;248
9.1;Getting Started with Wheeled Robots;248
9.2;Differential Drive Robot Kinematics;249
9.3;Building Robot Hardware;253
9.3.1;Buying Robot Components;254
9.3.1.1;Robot Chassis;254
9.3.1.2;Additional Motors and Wheels;255
9.3.1.3;Motor Driver;256
9.3.1.4;Magnetic Quadrature Encoder;256
9.3.1.5;Microcontroller Board;258
9.3.1.6;Bluetooth Breakout;259
9.3.1.7;Ultrasonic Sensor;259
9.3.2;Block Diagram of the Robot;260
9.3.3;Assembling Robot Hardware;262
9.4;Creating a 3D ROS Model Using URDF;263
9.5;Programming Robot Firmware;268
9.6;Programming Robot Using ROS;273
9.6.1;Creating a Bluetooth-ROS Driver for the Robot;274
9.6.2;The Teleop Node;279
9.6.3;The Twist Message to Motor Velocity Node;280
9.6.4;The Odometry Node;281
9.6.5;The Dead-Reckoning Node;281
9.7;Final Run;283
9.8;Summary;285
10;Erratum;286
11;Index;287



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.