Robot operating system (ROS) the complete reference (volume 2) ( TQL )

652 94 1
Robot operating system (ROS)  the complete reference (volume 2) ( TQL )

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Studies in Computational Intelligence 707 Anis Koubaa Editor Robot Operating System (ROS) The Complete Reference (Volume 2) Studies in Computational Intelligence Volume 707 Series editor Janusz Kacprzyk, Polish Academy of Sciences, Warsaw, Poland e-mail: kacprzyk@ibspan.waw.pl About this Series The series “Studies in Computational Intelligence” (SCI) publishes new developments and advances in the various areas of computational intelligence—quickly and with a high quality The intent is to cover the theory, applications, and design methods of computational intelligence, as embedded in the fields of engineering, computer science, physics and life sciences, as well as the methodologies behind them The series contains monographs, lecture notes and edited volumes in computational intelligence spanning the areas of neural networks, connectionist systems, genetic algorithms, evolutionary computation, artificial intelligence, cellular automata, self-organizing systems, soft computing, fuzzy systems, and hybrid intelligent systems Of particular value to both the contributors and the readership are the short publication timeframe and the worldwide distribution, which enable both wide and rapid dissemination of research output More information about this series at http://www.springer.com/series/7092 Anis Koubaa Editor Robot Operating System (ROS) The Complete Reference (Volume 2) Special focus on Unmanned Aerial Vehicles (UAVs) with ROS 123 Editor Anis Koubaa Prince Sultan University Riyadh Saudi Arabia and CISTER Research Unit Porto Portugal and Gaitech Robotics Hong Kong China ISSN 1860-949X ISSN 1860-9503 (electronic) Studies in Computational Intelligence ISBN 978-3-319-54926-2 ISBN 978-3-319-54927-9 (eBook) DOI 10.1007/978-3-319-54927-9 Library of Congress Control Number: 2017933861 © Springer International Publishing AG 2017 This work is subject to copyright All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed The use of general descriptive names, registered names, trademarks, service marks, etc in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use The publisher, the authors and the editors are safe to assume that the advice and information in this book are believed to be true and accurate at the date of publication Neither the publisher nor the authors or the editors give a warranty, express or implied, with respect to the material contained herein or for any errors or omissions that may have been made The publisher remains neutral with regard to jurisdictional claims in published maps and institutional affiliations Printed on acid-free paper This Springer imprint is published by Springer Nature The registered company is Springer International Publishing AG The registered company address is: Gewerbestrasse 11, 6330 Cham, Switzerland Acknowledgements The Editor would like to thank the Robotics and Internet of Things (RIoT) Unit at Center of Excellence of Prince Sultan University for their support to this work Furthermore, the Editor thanks Gaitech Robotics in China for their support v Acknowledgements to Reviewers The Editor would like to thank the following reviewers for their great contributions in the review process of the book by providing a quality feedback to authors Anis Koubâa Francisco Grau Michael Bence Maram Marc Andre Marco Walter Péter Christoph Carroll Magyar Alajlan Morenza-Cinos Oliveira Wehrmeister Fetter Lages Fankhauser Rösmann Francesco Christopher-Eyk Guilherme Andreas Juan Timo Zavier Myrel Junhao Huimin Alfredo Dinesh Rovida Hrabia Sousa Bastos Bihlmaier Jimeno Röhling Lee Alsayegh Xiao Lu Soto Madusanke Prince Sultan University, Saudi Arabia/CISTER Research Unit, Portugal CATEC (Center for Advanced Aerospace Technologies) Robotic Paradigm Systems PAL Robotics Al-Imam Mohamed bin Saud University UPF UTFPR Federal University of Technology – Parana Universidade Federal Rio Grande Sul ETH Zurich Institute of Control Theory and Systems Engineering, TU Dortmund University Aalborg University of Copenhagen Technische Universität/DAI Labor UNIFEI Karlsruhe Institute of Technologie (KIT) linorobot.org Fraunhofer FKIE Henan University of Science and Technology RST-TU Dortmund National University of Defense Technology National University of Defense Technology Freescale Semiconductors University of Moratuwa (continued) vii viii Acknowledgements to Reviewers (continued) Roberto Ingo Brad Yasir Mohamed-Foued Murilo Guzman Lütkebohle Bazemore Javed Sriti Martins Robotnik Robert Bosch GmbH University of Georgia Prince Sultan University, Saudi Arabia Al-Imam Muhammad Ibn Saud Islamic University Centro Universitario da FEI Contents Part I Control of UAVs Model Predictive Control for Trajectory Tracking of Unmanned Aerial Vehicles Using Robot Operating System Mina Kamel, Thomas Stastny, Kostas Alexis and Roland Siegwart Designing Fuzzy Logic Controllers for ROS-Based Multirotors Emanoel Koslosky, André Schneider de Oliveira, Marco Aurélio Wehrmeister and João Alberto Fabro 41 Flying Multiple UAVs Using ROS Wolfgang Hönig and Nora Ayanian 83 Part II Control of Mobile Robots SkiROS—A Skill-Based Robot Control Platform on Top of ROS 121 Francesco Rovida, Matthew Crosby, Dirk Holz, Athanasios S Polydoros, Bjarne Großmann, Ronald P.A Petrick and Volker Krüger Control of Mobile Robots Using ActionLib 161 Higor Barbosa Santos, Marco Antônio Simões Teixeira, André Schneider de Oliveira, Lúcia Valéria Ramos de Arruda and Flávio Neves, Jr Parametric Identification of the Dynamics of Mobile Robots and Its Application to the Tuning of Controllers in ROS 191 Walter Fetter Lages Online Trajectory Planning in ROS Under Kinodynamic Constraints with Timed-Elastic-Bands 231 Christoph Rösmann, Frank Hoffmann and Torsten Bertram ix x Part III Contents Integration of ROS with Internet and Distributed Systems ROSLink: Bridging ROS with the Internet-of-Things for Cloud Robotics 265 Anis Koubaa, Maram Alajlan and Basit Qureshi ROS and Docker 285 Ruffin White and Henrik Christensen A ROS Package for Dynamic Bandwidth Management in Multi-robot Systems 309 Ricardo Emerson Julio and Guilherme Sousa Bastos Part IV Service Robots and Fields Experimental An Autonomous Companion UAV for the SpaceBot Cup Competition 2015 345 Christopher-Eyk Hrabia, Martin Berger, Axel Hessler, Stephan Wypler, Jan Brehmer, Simon Matern and Sahin Albayrak Development of an RFID Inventory Robot (AdvanRobot) 387 Marc Morenza-Cinos, Victor Casamayor-Pujol, Jordi Soler-Busquets, José Luis Sanz, Roberto Guzmán and Rafael Pous Robotnik—Professional Service Robotics Applications with ROS (2) 419 Roberto Guzmán, Román Navarro, Miquel Cantero and Jorge Ariño Using ROS in Multi-robot Systems: Experiences and Lessons Learned from Real-World Field Tests 449 Mario Garzón, Jỗo Valente, Juan Jesús Roldán, David Garzón-Ramos, Jorge de León, Antonio Barrientos and Jaime del Cerro Part V Perception and Sensing Autonomous Navigation in a Warehouse with a Cognitive Micro Aerial Vehicle 487 Marius Beul, Nicola Krombach, Matthias Nieuwenhuisen, David Droeschel and Sven Behnke Robots Perception Through 3D Point Cloud Sensors 525 Marco Antonio Simões Teixeira, Higor Barbosa Santos, André Schneider de Oliveira, Lucia Valeria Arruda and Flavio Neves, Jr VIKI—More Than a GUI for ROS 641 After completing these steps, the setup is now ready The user can now hit the green run button on top of the screen, indicated by number in Fig This will open a new terminal providing some text feedback to the user, regarding the status of the setup More importantly in this tutorial, a window with a turtle in it should also appear By clicking at any point of the text window, it becomes possible to use the arrow keys to control the turtle in the other window In order to close the turtlesim application, it is possible to select the terminal window and press Ctrl + C, which will kill its processes After gracefully shutting down, the terminal window will disappear, and the user is free to run again the canvas setup It is important to point out that after pressing the launch button, VIKI will actually launch a seperate process in a new terminal window In case something goes wrong during launch, it is by default impossible to see what actually went wrong, since the terminal closes automatically, due to the process finishing This is due to the default setting in Ubuntu In order to avoid this, thus giving the user the possibility to check the output of the processes that are displayed in the VIKI terminal, the following procedure needs to be completed: Open a terminal window In the menubar, click on edit → Profile preferences A configuration window should now open up Click on the tab Title and command The last option When command exists:, choose Hold the terminal open, instead of Exit the terminal, as shown in Fig 4.2 Flying the Parrot A.R Drone After the demonstration of the basic functionalities of VIKI in the previous section, the reader is guided through a more advanced tutorial, showing the possibilities of using of VIKI modules and system setup The system that is chosen for this tutorial is a Parrot A.R Drone, as it is a commonly used platform for experimentation with drones, as well as a commercially affordable system for educational purposes In this tutorial, the reader will be shown how to launch this drone and fly it with a joystick In the actual implementation of VIKI, out of the box packages are provided in the form of existing VIKI modules Whereas the desired module is not available yet in the VIKI module repository, the user is invited to follow the documentation available on http://viki.readthedocs.io In order to complete this part of the tutorial, the hardware necessary to launch the system needs to be available and ready to be used The Parrot A.R Drone and the joystick are the elements that need to be set up Important information for a proper configuration of the modules are the IP address of the drone, as well as the device location of the joystick In order to set up the drone, it must be turned on and the computer running VIKI should be connected to its wireless network This network 642 R Hoogervorst et al Fig Set the terminal window to hold open after launch to be able to read the errors that ROS may raise during runtime is usually called ardrone_xxxx, with xxxx being an identifier If all is correct, the default IP for it is 192.168.1.1 More complex network set ups are possible, but this is out of the scope of this tutorial and will therefore not be covered hereafter The setup of the joystick requires the knowledge of the device name This can be discovered by opening a terminal and typing the command: ls -al /dev/input |grep js This will provide a list of all the devices that are recognized as joystick by the machine Most likely, the joystick device will be listed as /dev/input/js0 In case multiple joysticks are found, it is possible to test and find the correct joystick location by using a program called jstest After setting up the hardware for this tutorial, the software architecture can be designed in a similar manner as in the previous tutorial The steps that are necessary to so are: • launch VIKI • drag the modules called Joystick node, Parrot A.R Drone and Image view to the canvas (Fig 7) • setup the desired connections as illustrated in Fig 8: drag from the cmd_vel_joy to the input cmd_vel of the Parrot A.R Drone module VIKI—More Than a GUI for ROS 643 Fig The modules that are needed for launching the Parrot A.R Drone Fig Modules on the canvas connected in the right way The Joystick node will read from the joystick and publishes cmd_vel messages on the cmd_vel_joy topic The Parrot A.R Drone and Image view modules are wrappers for existing ROS packages, providing functionality to launch the parrot and visualize image topics respectively Note that while dragging, it is possible to see that this input of the Parrot A.R Drone turns green, while the reset, land and takeoff entry points turn red VIKI colours the in- and outputs while dragging based on topic type This prohibits linking wrong topics to each other You should now also be able to drag the right topics from the joystick module to the Parrot module The Parrot module also provides an video stream from its front camera By linking this to the Image view module, VIKI will show you this video stream to a window on your screen By click on the Joystick module, it is possible to configure the joystick parameters (Fig 9) On the right-hand side, in the properties panel (as indicated by in Fig 3), you should see a set of possible parameters, mostly for configuring the buttons that the user may like to use The most important setting is the dev setting, which configures the joystick device to be used These parameters are for reference shown in Fig Enter the address of the device previously discovered here The Parrot should be configured correctly by default If this is not the case, it will be necessary to reconfigure the software in order for the Parrot to respond to any command The ardrone autonomy package uses arguments to configure the drone These arguments can be set using VIKI as well In order to so, it is necessary to select the Parrot module and click on add/edit arguments on the right column A window should open up, similar to the one of Fig 10 Change the text field to “-ip [ip]”, where the user needs to substitute the IP address of the ardrone in this field 644 R Hoogervorst et al Fig The properties panel for the joystick, where dev can be set to /dev/input/js0 Fig 10 The arguments panel in which extra launch arguments for VIKI can be added Following these instructions should achieve proper setup of the necessary hardware and VIKI software architecture By pressing the big green RUN button it is possible to launch the set up that has just been created By doing so, a video stream should pop-up displaying the videostream of the front camera of the A.R Drone, thus enabling an on-eye viewpoint when piloting The user can finally save the configuration VIKI—More Than a GUI for ROS 645 4.3 SSH The previous two sections have guided the reader through setting up the VIKI canvas and module configurations to launch an UAV using VIKI In practical situations, these UAVs are often controlled on a distributed system (e.g an onboard computer connected to a ground station) ROS provides the functionality to delegate launches to other machines, using SSH The GUI of VIKI has support to configure this and automatically generate it as well, by exploiting the capabilities of the roslaunch runtime layer This section is based on the documentation on distributed systems, that can be found in the main documentation of VIKI This section is split in two parts The first part covers the network configuration that needs to be applied to run a distributed system This makes sure that the computers can reach each other using SSH The second part shows how to launch the complete software architecture from the centralised VIKI canvas Network configuration: this section introduces the inexperienced user to configure two computers on the same local network In case a different setup has to be configured, the user should make sure to access the PCs by hostname More precisely, this section guides the user through the setup of one master computer, which will run VIKI, and a slave which will launch ROS nodes First of all, make sure the following prerequisites are satisfied: • the computers used are connected on the same network where a wireless networking adapter is also available • there is no firewall between the computers that may block the connections between them When on a local network, this is usually the case by default • VIKI is installed on the master computer • ROS is installed on both computers.3 For the computers to find each other, usually a DNS server is used Since the discussed setup does not use it, the hostnames have to be added by hand to the hosts file of the computer, which takes care of resolving hostnames as well To so, it is necessary to open a terminal and run these two seperate commands on each computer to retrieve the local IP address and hostname: • ifconfig: this will show, among other information, the IP address of the machine This is located at the inet addr field, under the adapter that you are using • hostname: this will print out a single line with the default hostname of your computer This information needs to be known to each of the computers and can be added to the /etc/hosts file To this, open up this file in an editor by, e.g Note that ROS versions not need to be the same, however VIKI is follows the ROS updates and this might change in the future 646 R Hoogervorst et al sudo gedit /etc/hosts For each external host that needs to be reached from this computer, a line for that computer has to be added If this is done correctly, it should now be possible to reach each other computer from this one This can be tested by typing ping < hostname > Once the hostnames are set up correctly, we can use specific capabilities of this in VIKI In case of any issue on this system configuration, the reader is invited to make a quick search on the ROS documentation on distributed systems, or at the VIKI documentation itself Launching distributed systems inside VIKI: in this last part of the tutorial, the Parrot AR Drone will be launched from inside VIKI, which is ran on the master computer, while the parrot is connected to the slave PC In order to prepare the hardware to allow this tutorial to be executed, it is necessary to make sure that the slace PC has both an ethernet adapter If this is the case, perform the following steps: • connect the slave PC to your local network using the ethernet adapter • connect the Parrot A.R Drone to the slave PC using the wireless adapter At completion of the hardware connections, perform the following steps: launch VIKI on the master open the configuration from the previous section, including the modules for the joystick node, parrot and image view Click the harddrive icon in the toolbar, Open Machine list, to show the list with machines A panel as shown in Fig 11 should open up change the hostname to the hostname of your master PC by pressing the edit sign in the corner to the right click on plus sign to add a machine, which should show a panel as in Fig 12 the name is used to reference this machine later on in VIKI For hostname, username and password, enter the necessary values to be able to connect to the slave PC and click Save twice to go back to the main canvas click on the Parrot Module on the right bar, click on Select Machine This opens up a panel as in Fig 13 select the machine you just created 10 click Save changes The full configuration is now completed Pressing the RUN button launches this setup The outcome of this tutorial should behave similarly as in the previous section, with the difference that modules are now running on two different machines We understand that this specific example is difficult to copy without having the proper hardware available, but to our believe it is necessary to include, as it proves that VIKI is very capable of handling these kind of tasks VIKI—More Than a GUI for ROS 647 Fig 11 The overview of machines within VIKI Note that the R O S M AST E RU R I can also be set here, as well as viewing/editing the list of remote machines Fig 12 The screen to add a machine within VIKI Fig 13 The panel in which a machine for a specific module can be chosen Technical Overview This section provides a technical overview of VIKI and the components it is build of, and it relates VIKI to the other tools putting VIKI in perspective with most of the tools that are originally available by the ROS environment 5.1 VIKI Architecture From a broad perspective, VIKI can be considered as a tool that provides an interface between the user and low-level software It assists the user in interacting with ROS, 648 R Hoogervorst et al Fig 14 Overview of the structure of VIKI in the environment The user interacts with VIKI, while VIKI interacts with ROS, git and the File System to provide the functionality version control systems like git and mercurial, and the file system, as shown in Fig 14 This allows users to use VIKI as an interface to configure, create environments and start their projects, without requiring them to re implement or make explicit use of these specific details and tools In this context, ROS is used to launch the setup and execute the software of the end user Version Control is used for updating and creating VIKI modules, and the file system is used for storing configurations and finding available modules In this sense, VIKI aims to enhance, rather than replace other ROS tools More precisely, the authors aim at providing a tool that can be used by both new and experienced ROS users, without affecting the options to use existing runtime tools, such that the user can still take advantage of these.4 As Fig 14 shows, VIKI is a level of abstraction between the user and ROS, and not between ROS and the environment After the user presses the RUN button present inside the VIKI GUI interface, ROS is launched using an automatically generated launch file Note that this does not prevent other applications to interact with the ROS-based software, thus making it possible to use the developers’ preferred debugging and monitoring tools From a lower level, architectural point of view, the structure of VIKI is defined by distinct components; being the Command line interface (CLI), Graphical User Interface (GUI), Configuration Component and the Backend Component The architecture of these components is shown in Fig 15 The Backend handles all main functionalities of VIKI The user can access these functionalities by launching the GUI The GUI only provides an interface and does not handle any logic specific to VIKI In order to support the GUI, an CLI is provided to aid in small configuration tasks More preciseli, the CLI is used for configuration, installation of module repositories and other support features When the CLI has created the configuration, Note that VIKI is still under strong development after the first release Some of the advanced ROS tools, such as the multi-master, could not be yet fully integrated at the moment of reading this chapter For an update on the current status of the installation, the interested user may refer to the online documentation VIKI—More Than a GUI for ROS 649 Fig 15 Overview of the internal structure of VIKI VIKI provides both a CLI and GUI as interface for the user The backend handles functionality using ROS and the File System The GUI provides the interface to this backend for the user The CLI is used for configuration, to be used by the backend the GUI runs using this configuration When modifications need to be done by the user, the CLI provides a quick and solid way to change allow these changes The configuration component is seperate and is used for internal configuration purposes It only stores information coming from the CLI and Backend, but does not provide additional functionality 5.2 Modules One of the core concepts in VIKI are modules For a user familiar with ROS it may be difficult at first to differentiate between packages or nodes and VIKI’s modules This may be very well due to the deliberate design decision that a VIKI module could act as a single node, or as a package The goal of a module is to provide coherent functionality for a specific use case VIKI handles abstraction of ROS packages by providing these as modules, as shown in Fig 16 The first level shows available ROS packages Using module description files, the ROS packages are predefined for the end-user as modules Using VIKI, these modules can be arranged in a configuration file, which can be processed to a ROS launch file, which will be launched using ROS By predefining essential information of these packages in the module description files, users can use these modules directly Module description files are always named viki.xml and put into separate directories inside the ROS workspace These description files are of the type XML A default module existing in VIKI for instance called twist_from_joy consists of two nodes: • the joy_node node from the joy package • a custom node fly_from_joy that translates joy messages into sensible twist messages for the operation of, e.g., a multicopter 650 R Hoogervorst et al Fig 16 Visual overview of the abstraction layer in VIKI VIKI modules are build on top of ROS packages, embedded with extra information With these modules, a configuration file is built, which is converted to a ROS launch file This launch file is used by VIKI during runtime Note that these two nodes are not in the same package, but are in the same module The user will thus, on first sight, only see one VIKI module This module provides a single output which in the back end corresponds with a ROS topic on which the twist messages are published This is an important aspect of the back end: it leaves the regular ROS structure completely intact If one were to run a tool to visualize the running nodes and active topics (e.g rqt_graph) both nodes mentioned above will be active and connected through a uniquely named relay node This provides experienced users with the possibility to leave their existing ROS work flow unaltered Even though modules may be a simplification of a sub-system within a desired configuration of ROS nodes, VIKI allows to fully customize how these nodes are launched by passing parameters, command line arguments or launch prefixes similar to how ROS launch does In light of the desire to run certain nodes on other machines, support for adding SSH required tags to a launch file has been implemented For most of the VIKI users, a complete combination of all possible functionalities will not be provided in terms of available modules belonging to the VIKI module library Therefore, this requires the user to define custom modules where it is considered necessary Creating a module is done by creating an XML file describing the properties of the module This XML file contains: • Meta information, such as title and description • Inputs and outputs of the module These provide the interface of the module and are linked to the in- and outputs of executables • Executables, which are ROS nodes These contain information about the node such as the inputs, outputs and a set of default parameters to be used • Extra configuration options, which can be used to link executables internally or add extra options VIKI—More Than a GUI for ROS 651 This information is stored in a viki.xml file using the XML format, and is placed in the ROS workspace An example of such a file is shown in listing The next section elaborates on the organisation of modules and how to increase the reusability More information about the internals of the XML file can be found in the documentation online PID controller An example node with a PID controller → → Listing 1: Possible contents of a viki.xml file that holds the information about the ROS packages in the module 652 R Hoogervorst et al 5.3 Modularity and Reusability One of the main requirements in the design of VIKI is that the additional abstraction layer should not conflict with the modularity that ROS packages and nodes offer It in fact stimulates the user to leverage the powerful ROS structure that is built around reliable communication between independent nodes Thanks to the ease of adding modules to the system and connecting them to other modules by simply draggingand-dropping, VIKI promotes having modules that have a small, but well-defined functionality (as the example module twist_from_joy demonstrates) VIKI relies on two principles to maintain full modularity and promote code reusability: It uses existing communication infrastructure, thus relying on ROS topics, topic name spaces and the ROS topic_tools to abstract the process of connecting nodes It requires no change to existing node logic Combining existing nodes and packages into a module will never require developers to change the code of their nodes An additional XML-formatted file instructs VIKI on how to combine existing nodes These principles not only guarantee that VIKI will always be compatible with existing ROS infrastructure, but it greatly promotes abstracting projects in small, reusable parts VIKI scans the specified ’root module directory’ recursively for viki.xml files on startup This means all module definition files live in subfolders inside this root folder This gives the user flexibility on how to organise his or her personal modules In order to keep overview, VIKI encourages two seperate methods of locating module files To allow for modules to be shared and used between different developers, VIKI introduces the concept of module repositories These are git repositories that include a set of module description files The second option is to include a viki.xml file directly in the repository of a ROS package Parts of the modules used in projects can originate from the original, open-source VIKI module repository, while other parts can be located in a private repository for the project team These built-in functionalities prove that VIKI is designed with sharing well-defined, reusable modules in mind Thus, there are two different methods for sharing module description files, each with their own goal • Using module repositories VIKI makes it possible to add different module repositories and manage these using version control When a new module is required, the user can create a new folder inside this repository and add a new viki.xml file to this folder This module file can use packages that are available on the system (e.g using apt-get), or include code for a small package itself inside a subfolder This approach is preferred when a binary installation of the ROS packages requires to be added to a VIKI module, or when it is desired to combine nodes of several packages into one module When it is required to include a large package inside a repository, it is encouraged to put this in a seperate repository and include this as VIKI—More Than a GUI for ROS 653 a dependency in the description file, as this keeps module repositories small and easy to use • Add viki.xml file to the ROS package This is the preferred method when using the ROS package directly from source when designing a VIKI module specifically for that package Note that in this case, it is important that the ‘root module directory’ is specified as the root of the catkin workspace (in the config.json file), such that all directories in the workspace are scanned All modules for the first method live within the viki_modules directory inside the catkin workspace A good use-case for these repositories would be a project inside a research group For this project, a new repository could be created which includes all these module files The users can easily pull these repositories from remote storage locations and use them directly within VIKI to browse the different modules that are available This gives users inside this project a quick overview of what is already available and the components that can be used directly 5.4 GUI Many tools within ROS are aimed at providing overview after the software has launched (see Sect 2.1) The VIKI GUI, on the other hand, aims at creating a visual building space to compose projects and complex software architectures, while providing the user with a direct overview This is done at the abstraction level of VIKI, providing overview at a higher level When detailed overview at ROS level is needed, rqt_graph can still be used While rqt_graph provides a graphical overview of all nodes and topics after launch, VIKI provides this overview between a set of modules with a subset of topics From within the GUI, all available modules are listed in a palette which can be searched through quickly based on module name or description From there modules can easily be dragged onto the canvas and connected to other modules The canvas then provides a visual representation of the architecture Modules can be connected via dragging and dropping arrows representing data flow The GUI will provide visual feedback on which topic types match For every module it is possible to edit settings on the executable (ROS node) level The GUI provides an all-in-one run button, which starts the created project Behind the scenes, VIKI generates a ROS launch file which is launched within a seperate thread While the steps from GUI to launch are abstracted from the end-user, they are easy to run independently It is possible to generate a launch file using VIKI, copy it to another computer and launch from there, provided that the ROS packages are available 654 R Hoogervorst et al 5.5 Future Goals VIKI is under heavy development At the time of writing, the latest version is 0.2, which is the version this chapter is based on The goal of VIKI is to reduce time researchers, students, as well as software integrators spend on setting up a robotic experiment The vision behind the development of VIKI is to let users use it as a main design tool, while still allowing ease of access and use of the most important tools provided by ROS (and compatible with it), in order to boost the time of development of complex behaviors for robots For this reason, VIKI has been designed to be opensource, and it is licenced5 under an MIT license This has been chosen in order to allow building a community around VIKI To reach this goal, focus has to be put on integrating VIKI, as well as enhancing the VIKI modules’ repository, with existing ROS tools and packages that will guarantee better usability for the end user and more functionality within VIKI Development of VIKI’s features will be based on the community and the feedback that is provided The authors find it important to interact with the users and focus on building features that are requested most Users can therefore obtain the required information for development by getting into contact with the authors through github Among the major functinalities that are still under development, is the possibility to use multi-master tools that allow full distribution of the ROS executables, while minimising the use of the communication bandwidth It has been mentioned that VIKI has support for launching nodes using the distributed capabilities of ROS itself, but the correct functioning at the current version requires the startup of one single ROS core Future goals on the short term include incorporating at least one method of running multiple masters Besides that, future goals will also aim at better integration with the existing ROS environment and improving the workflow during package and module development, to ensure users are not bound to only use VIKI Features that support this might include automatic or interactive module generation and generating VIKI configuration or modules based on launch files Specific decisions on the implementation of this will be discussed with the community and tailored to their needs, as already mentioned before References Quigley, Morgan et al 2009 ROS: an open-source Robot Operating System In ICRA Workshop on Open Source Software Muellers, Filip 2012 rxDeveloper 1.3b with sourcecode generators http://www.ros.org/news/ 2012/04/rxdeveloper-13b-with-sourcecode-generators.html (visited on 17 April 2016) BRIDE BRICS Integrated Developement Environment 2014 http://www.best-of-robotics org/bride/ At the moment of writing of this chapter VIKI—More Than a GUI for ROS 655 Fraunhofer FKIE Node Manager FKIE 2016 https://fkie.github.io/multimaster_fkie/node_ manager.html (visited on 13 May 2016) Robotnik ROS graphic user interfaces 2013 http://www.robotnik.eu/ros-graphic-userinterfaces/ (visited on 17 April 2016) Price, John H Creating a Graphical user Interface for Joint Position Control in Controlit! https://robotcontrolit.com/documentation/gui_jpos (visited on 17 April 2016) Stumm, Elena 2010 ROS/Web based Grahical User Interface for the sFly Project Semester-Thesis ETH Zurich http://students.asl.ethz.ch/upl_pdf/289-report.pdf?aslsid= c472f08de49967cf2e11840561d8175a Willow Garage ROS GUI 2012 http://www.willowgarage.com/blog/2012/10/21/ros-gui (visited on 17 April 2016) Kaestner, Ralf 2016 Plugins Related to ROS TF Frames https://github.com/ethz-asl/ros-tfplugins (visited on 17 April 2016) 10 James (Techsource Systems) ROS GUI 2015 https://de.mathworks.com/matlabcentral/ fileexchange/50640-ros-gui (visited on 17 April 2016) 11 Linkbot Linkbot Labs 2016 http://www.barobo.com/downloads/ (visited on 17 April 2016) 12 Hoogervorst, Robin, Alex Kamphuis, and Cees Trouwborst VIKI documentation 2016 http:// viki.readthedocs.io (visited on 09 Sep 2016) Author Biographies Robin Hoogervorst is a Master student Computer Science at the University of Twente He has successfully completed the Bachelor Advanced Technology Based on the research from his Bachelor Assignment, a paper called ‘Vision-IMU based collaborative control of a blind UAV’ has been published on RED-UAS Mexico His main interests are in the field of Software Engineering, more specifically at creating solid and dynamic software which people love Cees Trouwborst is a Master student Systems and Control at the University of Twente, specializing in Robotics and Mechatronics Before this, he finished the Bachelor Advanced Technology with a bachelor thesis on “Control of Quadcopters for Collaborative Interaction” His areas of interest include autonomous systems, machine learning, Internet-of-Things and software architecture Alex Kamphuis is a Mechanical Engineering student at the University of Twente He was awarded a bachelor of science degree in Advanced Technology after the completion of his thesis on the ‘implementation of the velocity obstacle principle for 3D dynamic obstacle avoidance in quadcopter waypoint navigation’ Since then he pursues a master of science degree at the multiscale mechanics group Part of his current research on sound propagation through granular media is conducted at the German Aerospace center in Cologne It entails cooperation with experienced researchers on topics such as stress birefringence and zero gravity environments As such he has performed experiments in over 60 zero-g parabolas His other interests are running, reading and music Matteo Fumagalli is Assistant Professor in Mechatronics within the Department of Mechanical and Manufacturing Engineering at Aalborg University He received his M.Sc in 2006 from Politecnico di Milano, and his PhD at University of Genoa, where he worked in collaboration with the IIT - Istituto Italiano di Tecnologia He has been post-doc at the Robotics and Mechatronics group of the University of Twente, where he carried out research on advanced robotic system design and control ... tracking The optimization problem for nonlinear MPC is formulated in Eq (7 ) T U h (x(t), u(t )) − yr e f (t) t=0 subject to Q dt + m (x(T )) − yr e f (T ) x˙ = f(x(t), u(t )) ; u(t) ∈ UC x(t) ∈ XC P (7 ). .. 0 Ax 0 v˙ (t) = R ( , θ, ) ⎝ ⎠ + ⎝ ⎠ − ⎝ A y ⎠ v(t) + d(t) T −g 0 Az ˙ = φ(t) K φ φd (t) − φ(t) τφ θ˙ (t) = (K θ θd (t) − θ (t )) τθ (3 7) where v indicates the vehicle velocity, g is the gravitational... ,L,τ,Ω,Γ τ (3 4) s.t C (A xk|k + BV ) + Γ ≤ τ −C (A xk|k + BV ) + Γ ≤ τ C (G + BL) ≤ Γ −C (G + BL) ≤ Γ E x (A xk|k + BV ) E x (A xk|k + BV ) Fx + Ω1 ≤ Eu V Fu E x (G + BL) ≤Ω Eu L (3 5) Model Predictive

Ngày đăng: 29/04/2020, 15:00

Từ khóa liên quan

Mục lục

  • Acknowledgements

  • Acknowledgements to Reviewers

  • Contents

  • Editor and Contributors

  • Part I Control of UAVs

  • Model Predictive Control for Trajectory Tracking of Unmanned Aerial Vehicles Using Robot Operating System

    • 1 Introduction

    • 2 Background

      • 2.1 Concepts of Receding Horizon Control

      • 2.2 Linear Model Predictive Control

      • 2.3 Nonlinear Model Predictive Control

      • 2.4 Linear Robust Model Predictive Control

      • 3 Model-Based Trajectory Tracking Controller for Multi-rotor System

        • 3.1 Multirotor System Model

        • 3.2 Linear MPC

        • 3.3 Nonlinear MPC

        • 4 Model-Based Trajectory Tracking Controller for Fixed-Wing UAVs

          • 4.1 Fixed-Wing Flight Dynamics and Identification

          • 4.2 Nonlinear MPC

          • 5 Conclusion

          • References

          • Designing Fuzzy Logic Controllers for ROS-Based Multirotors

            • 1 Introduction

            • 2 Brief Overview of Multirotors

            • 3 Fuzzy Control System for Hexacopters

              • 3.1 Brief Overview of Fuzzy Logic

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan