ROS Robotics By Example - University Of Houston-Clear Lake

Transcription

ROS Robotics By ExampleSecond EditionLearning to control wheeled, limbed, and flying robotsusing ROS Kinetic KameCarol FairchildDr. Thomas L. HarmanBIRMINGHAM - MUMBAI

ROS Robotics By ExampleSecond EditionCopyright 2017 Packt PublishingAll rights reserved. No part of this book may be reproduced, stored in a retrievalsystem, or transmitted in any form or by any means, without the prior writtenpermission of the publisher, except in the case of brief quotations embedded incritical articles or reviews.Every effort has been made in the preparation of this book to ensure the accuracyof the information presented. However, the information contained in this book issold without warranty, either express or implied. Neither the authors, nor PacktPublishing, and its dealers and distributors will be held liable for any damagescaused or alleged to be caused directly or indirectly by this book.Packt Publishing has endeavored to provide trademark information about all of thecompanies and products mentioned in this book by the appropriate use of capitals.However, Packt Publishing cannot guarantee the accuracy of this information.First published: June 2016Second edition: November 2017Production reference: 1301117Published by Packt Publishing Ltd.Livery Place35 Livery StreetBirmingham B3 2PB, UK.ISBN 978-1-78847-959-2www.packtpub.com

CreditsAuthorsCarol FairchildCopy EditorSafis EditingDr. Thomas L. HarmanProofreaderReviewerSafis EditingLentin JosephIndexerAcquisition EditorAishwarya GangawaneFrank PohlmannGraphicsProject EditorKirk D'PenhaAlish FirastaProduction CoordinatorContent Development EditorVenugopal CommuriTechnical EditorBhagyashree RaiNilesh Mohite

About the AuthorsCarol Fairchild is the owner and principal engineer of Fairchild Robotics, arobotics development and integration company. She is a researcher at Baxter's Lab atthe University of Houston–Clear Lake (UHCL) and a member of the adjunct faculty.Her research involves the use of Baxter for expanded applications. Ms. Fairchild hasbeen involved in many aspects of robotics from her earliest days of building her firstrobot, a Heathkit Hero. She has an MS in computer engineering from UHCL and aBS in engineering technology from Texas A&M. Ms. Fairchild has taught middleschool robotics, coached FLL, and volunteered for FIRST Robotics in Houston.Dr. Thomas L. Harman is the chair of the engineering division at UHCL.His research interests are control systems and applications of robotics andmicroprocessors. Several of his research papers with colleagues involve robotic andlaser applications in medicine. In 2005, he was selected as the UHCL DistinguishedProfessor. He has been a judge and safety advisor for the FIRST robotic contests inHouston. Dr. Harman has authored or coauthored 18 books on subjects includingmicroprocessors, MATLAB and Simulink applications, and the National ElectricalCode. His laboratory at UHCL has a Baxter two-armed robot and several TurtleBotsas well as other robots.

About the ReviewerLentin Joseph is an author, entrepreneur, electronics engineer, robotics enthusiast,machine vision expert, embedded programmer, and the founder and CEO of QboticsLabs from India.Lentin completed his bachelor's degree in electronics and communicationengineering at the Federal Institute of Science and Technology (FISAT), Kerala.For his final year engineering project, he made a social robot that can interact withpeople. The project was a huge success and was mentioned in many forms of visualand print media. The main features of this robot were that it could communicatewith people and reply intelligently, and it had some image processing capabilitiessuch as face, motion, and color detection. The entire project was implemented usingthe Python programming language. His interest in robotics, image processing, andPython started with that project.After his graduation, Lentin worked for 3 years at a start-up company focusing onrobotics and image processing. In the meantime, he learned to work with famousrobotics software platforms, such as Robot Operating System (ROS), V-REP,and Actin (a robotic simulation tool), and image processing libraries such asOpenCV, OpenNI, and PCL. He also knows about 3D robot design and embeddedprogramming on Arduino and Tiva Launchpad.After 3 years of work experience, Lentin started a new company called Qbotics Labs,which mainly focuses on research into building some great products in domains suchas robotics and machine vision. He maintains a personal website and a technologyblog called TechnoLabsz. Lentin publishes his works on his tech blog. He was also aspeaker at PyCon2013, India, on the topic Learning Robotics Using Python.

Lentin is the author of the books Learning Robotics Using Python (learn-robotics.com), Mastering ROS for Robotics Programming (mastering-ros.com), and ROSRobotics Project (http://rosrobots.com)—all books were published by PacktPublishing. The first book was about building an autonomous mobile robot usingROS and OpenCV. This book was launched at ICRA 2015 and was featured onthe ROS blog, Robohub, OpenCV, the Python website, and various other suchforums. The second book is on mastering Robot Operating System, which was alsolaunched at ICRA 2016, and is one of the bestselling books on ROS. The third bookis ROS Robotics Project, which was launched in ICRA 2017 and it is also one of thebestselling books on ROS. Along with writing, he reviewed books such as EffectiveRobotics Programming using ROS, Raspberry Pi Image Processing Programming,and Raspberry Pi Supercomputing and Scientific Programming. He started a newplatform called Robocademy.com exclusively for learning robotics using ROS.Lentin and his team were also winners of the HRATC 2016 challenge conducted as apart of ICRA 2016. He was also a finalist in the ICRA 2015 challenge, HRATC.

www.PacktPub.comeBooks, discount offers, and moreDid you know that Packt offers eBook versions of every book published, with PDFand ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy.Get in touch with us at customercare@packtpub.com for more details.At www.PacktPub.com, you can also read a collection of free technical articles, signup for a range of free newsletters and receive exclusive discounts and offers on Packtbooks and eBooks.https://www.packtpub.com/maptGet the most in-demand software skills with Mapt. Mapt gives you full access to allPackt books and video courses, as well as industry-leading tools to help you planyour personal development and advance your career.Why subscribe? Fully searchable across every book published by Packt Copy and paste, print, and bookmark content On demand and accessible via a web browser

Customer FeedbackThanks for purchasing this Packt book. At Packt, quality is at the heart of oureditorial process. To help us improve, please leave us an honest review on thisbook's Amazon page at https://www.amazon.com/dp/1788479599.If you'd like to join our team of regular reviewers, you can email us atcustomerreviews@packtpub.com. We award our regular reviewers with freeeBooks and videos in exchange for their valuable feedback. Help us be relentlessin improving our products!

Table of ContentsPrefaceChapter 1: Getting Started with ROSxi1What does ROS do and what are the benefits of learning ROS?Who controls ROS?Which robots are using ROS?Installing and launching ROSConfiguring your Ubuntu repositoriesSetting up your sources.list fileSetting up your keysInstalling ROS KineticInitialize rosdepEnvironment setupGetting rosinstallTroubleshooting – examining your ROS environmentCreating a catkin workspaceROS packages and manifestROS manifestExploring the ROS packages2335667778889101111ROS nodes, topics, and messagesROS nodesROS topicsROS messagesROS Master1314141515rospack find packagesrospack listInvoking the ROS Master using roscoreROS commands to determine the nodes and topics[i]12121617

Table of ContentsTurtlesim – the first ROS robot simulationStarting turtlesim nodesrosrun command191920Turtlesim nodesTurtlesim topics and messages2123Move the turtle by publishing /turtle1/cmd velMove the turtle using the keyboard or joystickParameter Server of Turtlesim262828ROS services to move turtle30rostopic listrostopic typerosmsg listrosmsg showrostopic echorosparam helprosparam list for the /turtlesim nodeChange parameters for the color of the turtle's backgroundrosservice call242424252528292931ROS commands summarySummaryChapter 2: Creating Your First Two-Wheeled ROS Robot(in Simulation)Introducing rvizInstalling and launching rvizGetting familiar with rvizDisplays panelViews and Time panelsToolbarMain window menu barCreating and building a ROS packageBuilding a differential drive robot URDFCreating a robot chassisUsing roslaunchAdding wheelsAdding a casterAdding colorAdding collisionsMoving the wheelsA word about tf and robot state publisherAdding physical propertiesTrying URDF toolscheck urdfurdf to graphiz[ ii ]323335363638383940414142434448515254555757595959

Table of ContentsGazeboInstalling and launching GazeboUsing roslaunch with GazeboGetting familiar with Gazebo60616263Modifications to the robot URDF68Environment toolbarWorld, Insert and Layers panelsJoints panelMain window menu barSimulation panel6466676868Adding the Gazebo tagSpecifying color in GazeboA word about the visual and collision elements in GazeboVerifying a Gazebo modelViewing the URDF in GazeboTweaking your modelMoving your model aroundOther ROS simulation environmentsSummaryChapter 3: Driving Around with TurtleBotIntroducing TurtleBot 2Loading TurtleBot 2 simulator softwareLaunching TurtleBot 2 simulator in GazeboProblems and troubleshootingROS commands and GazeboKeyboard teleoperation of TurtleBot 2 in simulationSetting up to control a real TurtleBot 2TurtleBot 2 standalone testNetworking the netbook and remote computerTypes of networksNetwork addressesRemote computer network setupNetbook network setupSecure Shell (SSH) connectionSummary of network setupTroubleshooting your network connectionTesting the TurtleBot 2 systemTurtleBot 2 hardware specificationsTurtleBot 2 dashboardMoving the real TurtleBot 2Using keyboard teleoperation to move TurtleBot 2Using ROS commands to move TurtleBot 2 around[ iii 3949496969898100

Table of ContentsWriting your first Python script to control TurtleBot 2Introducing rqt toolsrqt graphrqt message publisher and topic monitorTurtleBot's odometryOdom for the simulated TurtleBot 2Real TurtleBot 2's odometry display in rvizTurtleBot 2 automatic dockingIntroducing TurtleBot 3Loading TurtleBot 3 simulation softwareLaunching TurtleBot 3 simulation in rvizLaunching TurtleBot 3 simulation in GazeboHardware assembly and testingLoading TurtleBot 3 softwareInstalling remote computer softwareInstalling SBC 129130Networking TurtleBot 3 and the remote computerRemote computer network setupTurtleBot 3 network setup135136137Testing the SSH communicationTroubleshooting your network connectionMoving the real TurtleBot 3Using keyboard teleoperation to move TurtleBot 3Summary139139140141143Loading Ubuntu MATELoading ROS packagesLoading TurtleBot 3 packagesSetting up udev rules for TurtleBot 3SSH connectionChapter 4: Navigating the World with TurtleBot3D vision systems for TurtleBotHow these 3D vision sensors workComparison of 3D sensorsMicrosoft KinectASUSPrimeSense CarmineIntel RealSenseHitachi-LG LDSObstacle avoidance drawbacksConfiguring TurtleBot and installing the 3D sensor softwareKinectASUS and PrimeSense[ iv 59159

Table of ContentsIntel RealSenseCamera software structureDefining termsTesting the 3D sensor in standalone modeRunning ROS nodes for visualizationVisual data using Image ViewerVisual data using rvizNavigating with TurtleBotMapping a room with TurtleBot 2160161161162163163165169170Autonomous navigation with TurtleBot 2175Navigating to a designated locationNavigating to waypoints with a Python script using a map183185Defining termsBuilding a mapHow does TurtleBot accomplish this mapping task?Defining termsDriving without steering TurtleBot 2rviz controlHow does TurtleBot accomplish this navigation task?Defining TurtleBot's position on a mapDefining waypoints on a mapUsing Python code to move TurtleBotTurtleBot at final goal pointSLAM for TurtleBot 3Autonomous navigation with TurtleBot 3rqt reconfigureExploring ROS navigation furtherSummaryChapter 5: Creating Your First Robot Arm (in Simulation)Features of XacroBuilding an articulated robot arm URDF using XacroSpecifying a namespaceUsing the Xacro property tagExpanding XacroUsing roslaunch for rrbotUsing the Xacro include and macro tagsAdding mesh to the robot armControlling an articulated robot arm in GazeboAdding Gazebo-specific elementsFixing the robot arm to the worldViewing the robot arm in GazeboAdding controls to XacroDefining transmission elements for 25

Table of ContentsAdding a Gazebo ROS control pluginCreating a YAML configuration fileCreating a control launch fileControlling your robot arm with the ROS command lineControlling your robot arm with rqtTrying more things in rqtSummaryChapter 6: Wobbling Robot Arms Using Joint ControlIntroducing BaxterBaxter, the research robotBaxter SimulatorBaxter's armsBaxter's bend jointsBaxter's twist jointsBaxter's coordinate frameControl modes for Baxter's armsBaxter's grippersBaxter's arm sensorsLoading Baxter softwareInstalling Baxter SDK softwareInstalling Baxter SimulatorConfiguring the Baxter shellInstalling MoveIt!Launching Baxter Simulator in GazeboBringing Baxter Simulator to lifeWarm-up exercisesFlexing Baxter's armsUntucking Baxter's armsWobbling armsControlling arms and grippers with a keyboardControlling arms and grippers with a joystickControlling arms with a Python scriptRecording and replaying arm 67270272Baxter's arms and forward kinematicsJoints and joint state publisherUnderstanding tf273273278Commanding the joint angles directlyrviz tf framesViewing a tf tree of robot elementsIntroducing MoveIt!Planning a move of Baxter's arms with MoveIt!281282283284286A program to move Baxter's arms to a zero angle position[ vi ]279

Table of ContentsAdding objects to a scene288Position of objectsPlanning a move to avoid obstacles with MoveIt!Configuring a real Baxter setupControlling a real BaxterCommanding joint position waypointsCommanding joint torque springsDemonstrating joint velocityAdditional examplesVisual servoing and graspingInverse kinematicsMoving Baxter's arms with IKUsing a state machine to perform YMCASummaryChapter 7: Making a Robot FlyIntroducing quadrotorsWhy are quadrotors so popular?Defining roll, pitch, and yawHow do quadrotors fly?Components of a quadrotorAdding sensorsQuadrotor communicationsUnderstanding quadrotor sensorsInertial measurement unitQuadrotor condition sensorsPreparing to fly your quadrotorTesting your quadrotorPre-flight checklistPrecautions when flying your quadrotorFollowing the rules and regulationsUsing ROS with UAVsIntroducing Hector QuadrotorLoading Hector QuadrotorLaunching Hector Quadrotor in GazeboFlying Hector outdoorsFlying Hector indoorsIntroducing Crazyflie 2.0Controlling Crazyflie without ROSCommunicating using Crazyradio PALoading Crazyflie ROS softwareSetting up udev rules for Crazyradio[ vii 325330334336337338340

Table of ContentsPre-flight checkFlying Crazyflie with teleop341342Details of teleop xbox360.launchFlying with a motion capture systemFlying multiple CrazyfliesIntroducing BebopLoading bebop autonomy softwareTesting Bebop communicationsFlying Bebop using commands344346346347349351352Take offLanding352353SummaryChapter 8: Controlling Your Robots with External DevicesCreating a custom ROS game controller interfaceTesting a game controllerAlternative test of a game controllerUsing the ROS joy packageControlling Turtlesim with a custom game controller interfaceCreating a custom ROS Android device interfaceInstalling Android Studio and toolsInstalling a ROS–Android development environmentDefining termsIntroducing ROS–Android developmentCreating ROS nodes on Arduino or Raspberry PiUsing ArduinoInstalling Arduino IDE softwareInstalling ROS–Arduino softwareUltrasonic sensor control using ROS and ArduinoOther applications using ROS and ArduinoUsing Raspberry PiInstalling ROS on the Raspberry 378386387387SummaryChapter 9: Flying a Mission with CrazyflieMission componentsKinect for Windows v2Crazyflie operationMission software structureOpenCV and ROSLoading software for the missionInstalling libfreenect2Installing iai kinect2[ viii ]388389391391392392394395396399

Table of ContentsUsing the iai kinect2 metapackage402kinect2 bridge and kinect2 viewerkinect2 calibration402403Setting up the missionDetecting Crazyflie and a target408409Using Kinect and OpenCVHow to track CrazyflieHow to control CrazyflieCrazyflie control states414417420420Flying CrazyflieHovering in place426426Identifying markers in a color imageDetecting and viewing markers with OpenCVUsing ROS services to control takeoff and landUsing PID control for hover and flightUsing an observer nodeWhat makes hover work?409412421423425427Flying to a stationary target428Learned lessons431What makes target detection work?430Logging messages with rosout and rospy431Summary432Chapter 10: Controlling Baxter with MATLAB 433Index445Installing the MATLAB Robotics System ToolboxCheck the MATLAB and Robotics System Toolbox versionsView the Robotics System Toolbox commands for ROSUsing MATLAB Robotics System Toolbox and Baxter SimulatorInstalling Baxter messages in MATLABRunning Baxter Simulator and MATLABMaking Baxter moveSummary[ ix ]434434434435435437440444

PrefaceBeing excited about learning ROS and working with ROS robots such as Baxter andTurtleBot is the beginning of a big adventure. The features and benefits of ROS aresubstantial, but the learning curve is steep. Through trial and error, we have forageda path through many of the ROS applications trying everything. In this book, wehope to present to you the best of our knowledge of ROS and provide you withdetailed step-by-step instructions for your journey. Our approach centers on usingthe ROS robots that are featured, namely TurtleBot, Baxter, Crazyflie, and Bebop, aswell as simulated robots—Turtlesim and Hector.This book provides introductory information as well as advanced applicationsfeaturing these ROS robots. The chapters begin with the basics of setting upyour computer and loading ROS and the packages for ROS robots and tools.Straightforward instructions are provided with troubleshooting steps for when thedesired results are not achieved. The building blocks of ROS are described first inthe simulation Turtlesim, then on each of the featured robots. Starting with basicROS commands, the ROS packages, nodes, topics, and messages are explored to gainan overall knowledge of these ROS robotic systems. Technical information on theseexample robots is provided to describe the robot's full capabilities.ROS encompasses a full spectrum of software concepts, implementation, andtools that attempt to provide a homogeneous view of the complex systems andsoftware integration required in robotics. Extensive libraries of sensor and actuatordrivers and interfaces are already in place, as well as the latest and most efficientalgorithms. What ROS doesn't provide directly is imported from other prevailingopen source projects such as OpenCV. ROS also possesses a spectrum of time-savingtools to control, monitor, and debug robot applications: rqt, rviz, Gazebo, dynamicreconfigure, and MoveIt, to name a few.[ xi ]

PrefaceIn the pages that follow, each of these areas will be incrementally introduced to thereader as part of the robot examples. With TurtleBot, the subjects of navigation andmapping are explored. Using Baxter, joint control and path planning are describedfor your understanding. Simple Python scripts are included to provide examples ofimplementing ROS elements for many of these robots. These robots are all availablein simulation to accomplish the exercises in this book. Furthermore, instructions areprovided for you to build and control your own robot models in simulation.The power of ROS, the variety of robots using ROS, and the diversity and support ofthe widespread ROS community make this adventure worthwhile. Extensive onlinetutorials, wiki instructions, forums, and tips and tricks are available for ROS. So diveinto the pages of this book to begin your adventure with ROS robotics!What this book coversChapter 1, Getting Started with ROS, explains to you the advantages of learning ROSand highlights the spectrum of robots currently using ROS. Instructions for installingand launching ROS on a computer running an Ubuntu operating system are provided.An overview of the ROS architecture is given and its components are described. TheTurtlesim simulation is introduced, and used to provide a deeper understanding ofhow the components of ROS work and a familiarity with ROS commands.Chapter 2, Creating Your First Two-Wheeled ROS Robot (in Simulation), introduces youto the ROS simulation environment of Gazebo. We will lead you through the steps tocreate your first robot simulation (a two-wheeled differential-drive base) and teachthe structure of the Universal Robotic Description Format. The use of the ROS toolrviz and Gazebo are detailed to enable you to display your robot and interact with it.Chapter 3, Driving Around with TurtleBot, introduces you to real ROS robots,TurtleBot2 and the recently available TurtleBot 3. These mobile base robots canbe used in the simulation environment of Gazebo if you do not own one. ROScommands and Python scripts are used to control TurtleBot through a variety ofmethods. The ROS tool rqt is introduced, and subsets of its plugins are used tocontrol TurtleBot and monitor its sensor data.Chapter 4, Navigating the World with TurtleBot, explores visual sensors and the abilityfor a robot to map its environment. The 3D sensor options for TurtleBot's visionsystem are described and their setup and operation using ROS enables TurtleBotto navigate autonomously. The knowledge of the Simultaneous Localization andMapping techniques is applied in combination with TurtleBot's navigation stack tomove about in the mapped environment.[ xii ]

PrefaceChapter 5, Creating Your First Robot Arm (in Simulation), provides a gentle introductioninto the complexity of robotic arms. A simulated robot arm is designed and builtusing the macro language of Xacro. Controllers for the arm are created to operate thearm in Gazebo. Through developing the controllers for this arm, an insight into themechanics and physics of a simple robot arm is offered.Chapter 6, Wobbling Robot Arms Using Joint Control, takes a deeper look at theintricacies of controlling robotic arms. Baxter has two 7 degree-of-freedom arms anda number of other sensors. Baxter Simulator is available as open source software touse for the instructions in this chapter. Examples are provided for control of Baxter'sarms using position, velocity, and torque modes with control for both forwardand inverse kinematics. The ROS tool MoveIt is introduced for motion planning insimulation and execution on either a real or simulated Baxter.Chapter 7, Making a Robot Fly, describes a growing area of ROS robotics—unmannedair vehicles. This chapter focuses on quadrotors, and an understanding of quadrotorhardware and flight control is provided. Instructions for downloading andcontrolling the simulated quadrotor Hector are supplied. With skills from flying asimulated quadrotor, you can move on to control a real Bitcraze Crazyflie or ParrotBebop. Quadrotor control is via teleoperation or ROS topic/message commands.Chapter 8, Controlling Your Robots with External Devices, presents a number ofperipheral devices you can use for controlling a ROS robot. Joystick controllers,controller boards (Arduino and Raspberry Pi), and mobile devices have ROSinterfaces that can be integrated with your robot to provide external control.Chapter 9, Flying a Mission with Crazyflie, incorporates many of the ROS componentsand concepts presented in this book into a challenging mission of autonomous flight.The mission involves the Crazyflie quadrotor flying to a "remote" target all mappedthrough a Kinect 3D sensor. This mission uses ROS message communication andco-ordinate transforms to employ the Kinect's view of the quadrotor and targetto orchestrate the flight. Flight control software for Crazyflie using PID control isdescribed and provided as part of the mission software.Chapter 10, Controlling Baxter with MATLAB , delves into a new realm ofcommunicating with and controlling ROS robots through MATLAB and its RoboticsSystem Toolbox. Baxter, the two-armed robot introduced in Chapter 6, Wobbling RobotArms Using Joint Control, will be used to show how to set up a ROS robot in MATLABby adding custom messages into the Robotics System Toolbox. Communication andcontrol of Baxter and his arms will be accomplished using MATLAB scripts and ROScommands.[ xiii ]

PrefaceWhat you need for this bookThe format of this book is intended for the reader to follow along and performthe instructions as the information is provided. The reader will need a computerideally with Ubuntu 16.04 (Xenial Xerus) installed. Other Ubuntu versions andLinux distributions may work, as well as macOS, Android, and Windows, butdocumentation for those versions will need to reference the ROS wiki(http://wiki.ros.org/kinetic/Installation).The version of ROS that this book was written around is Kinetic Kame, which is thecurrent release recommended for stability. Its end of life is targeted for April 2021.All software used in this book is open source and freely available for download anduse. Instructions for downloading the software are found in the chapter where thesoftware is introduced. In Chapter 1, Getting Started with ROS, instructions are givenfor downloading and setting up the ROS software environment.Our preferred method to download software is the use of Debian packages. Whereno Debian packages exist, we refer to downloading the software from repositoriessuch as GitHub.Gazebo simulation performs intensive graphics processing, and the use of adedicated graphics card is advised but not required.Peripheral devices, such as 3D sensors, Xbox or PS3 controllers, Arduino orRaspberry Pi controller boards, and Android mobile devices are optional equipment.Who this book is forIf you are a robotics developer, whether a hobbyist, researcher, or professional, andare interested in learning about ROS through a hands-on approach, then this book isfor you. You are encouraged to have a working knowledge of GNU/Linux systemsand Python.ConventionsIn this book, you will find a number of text styles that distinguish between differentkinds of information. Here are some examples of these styles and an explanation oftheir meaning.[ xiv ]

PrefaceCode words in text, directory names, filenames, file extensions, and pathnames areshown as follows: "The Terminal commands rostopic and rosnode have a numberof options "A block of code is set as follows: ?xml version '1.0'? robot name "dd robot" !-- Base Link -- link name "base link" visual origin xyz "0 0 0" rpy "0 0 0" / geometry box size "0.5 0.5 0.25"/ /geometry /visual /link /robot To avoid repeating previous code blocks, but provide with placement of new codeblocks, previous code left for reference is abbreviated and grayed-out as follows: ?xml version '1.0'? robot name "dd robot" !-- Base Link -- link name "base link" /link !-- Right Wheel -- link name "right wheel" Any command-line input is written as follows: rosrun rqt reconfigure rqt reconfigureOutput from command is written as:[ INFO] [1427212356.117628994]: Starting turtlesim with node name /turtlesimNew terms and key words are shown in bold.Words that you see on the screen, for example, in menus or dialog boxes, appear inthe text like this: "By clicking on the Add button on the Displays panel."[ xv ]

PrefaceURL references are shown as: http://www.ros.org/about-ros/Warnings or important notes appear in a box like this.Tips and tricks appear like this.Reader feedbackFeedback from our readers is always welcome. Let us know what you think aboutthis book—what you liked or disliked. Reader feedback is important for us as it helpsus develop titles that you will really find useful and enjoyable.To send us general feedback, simply email feedback@packtpub.com, and mentionthe book's title in the subject of your message.If there is a topic that you have expertise in and you are interested in either writingor contributing to a book, see our author guide at www.packtpub.com/authors.Customer supportNow that you are the proud owner of a Packt book, we have a number of things tohelp you to get the most from your purchase.Downloading the example codeYou can download the example code files for this book from your account athttp://www.packtpub.com. If you purchased this book elsewhere, you can visithttp://www.packtpub.com/support and register to have the files emailed directlyto you.You can download the code files by following these steps:1. Log in or register to our website using your e-mail address and password.2. Hover the mouse pointer on the SUPPORT tab at the top.3. Click on Code Downloads & Errata.4. Enter the name of the book in the Search box.[ xvi ]

Preface5. Select the book

the Python programming language. His interest in robotics, image processing, and Python started with that project. After his graduation, Lentin worked for 3 years at a start-up company focusing on robotics and image processing. In the meantime, he learned to work with famous robotics software platforms, such as Robot Operating System (ROS), V-REP,