{"id":10246,"date":"2016-06-27T11:17:07","date_gmt":"2016-06-27T09:17:07","guid":{"rendered":"https:\/\/blog.zhaw.ch\/icclab\/?p=10246"},"modified":"2021-03-04T18:51:26","modified_gmt":"2021-03-04T16:51:26","slug":"robotic-service-management-with-roboreg","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/","title":{"rendered":"Robotic Service Management with Roboreg"},"content":{"rendered":"\n<p>by <a href=\"https:\/\/blog.zhaw.ch\/icclab\/josef-spillner\/\">Josef Spillner<\/a><\/p>\n\n\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-10249 size-full\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png\" alt=\"roboreg-busy\" width=\"186\" height=\"235\"><\/a>We all know this tedious situation: Plenty of mobile robots around us, and we&#8217;d just like to use one of them for a specific task, but we don&#8217;t know which one we should take, as they&#8217;re all regularly busy on their own. Perhaps this is not a likely scenario <em>right now<\/em>, but it will be in <a href=\"https:\/\/www.technologyreview.com\/s\/545056\/5-robot-trends-to-watch-for-in-2016\/\">five or six years<\/a> from now and it will require novel approaches of how we manage their functionality in terms of services they offer. The <a href=\"https:\/\/blog.zhaw.ch\/icclab\/category\/research-approach\/themes\/cloud-robotics\/\">Cloud Robotics<\/a> research initiative is thus looking into robotic device management not so much from a hardware perspective but more from an angle of assessing which robotic resources can be used to deploy or run services and value-added applications on single robots, fleets of robots, or hybrid cloud\/fleet constellations. With Roboreg, a first tangible robot-specific registry concept has been realised. The tool will be explained in this blog post.<\/p>\n<p><!--more--><\/p>\n<p>Our vision is that cloud computing concepts, in particular the ones targeting developers such as <a href=\"https:\/\/blog.zhaw.ch\/icclab\/category\/research-approach\/research-themes\/platform-as-a-service-paas\/\">Platform-as-a-Service (PaaS)<\/a>, will enter into new domains. The term Cloud Robotics is therefore referring to the use of cloud applications and services on top of robots as physical resources with a certain amount of virtualisation as some functions (e.g. aggregating sensor data) can be more easily shared than others (e.g. performing movement into conflicting directions).<\/p>\n<p>We have prototyped <strong>Roboreg<\/strong>, a new kind of service registry for robots, to come closer to the vision. For quick prototyping, we heavily used the<a href=\"https:\/\/github.com\/saltstack\"> Salt stack<\/a> as underlying master-slave transport and command framework. Roboreg hence runs as interactive command-line tool or HTTP service attached to the Salt API which in turn allows access to Salt minions, small run-time agents with one instance per robot. A key feature of Salt is that if remote functions on the agents are called, the appropriate code (as in Python modules) is deployed automatically from the master node so that new value-added robotics applications and services only need to be deployed through Roboreg and the Salt API to the Salt Master. The figure below summarises the setup.<\/p>\n<figure id=\"attachment_10247\" aria-describedby=\"caption-attachment-10247\" style=\"width: 690px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-connectivity.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10247 size-full\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-connectivity.png\" alt=\"roboreg-connectivity\" width=\"690\" height=\"450\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-connectivity.png 690w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-connectivity-300x196.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-connectivity-460x300.png 460w\" sizes=\"auto, (max-width: 690px) 100vw, 690px\" \/><\/a><figcaption id=\"caption-attachment-10247\" class=\"wp-caption-text\">Connectivity between Roboreg and the managed robots.<\/figcaption><\/figure>\n<p>Roboreg&#8217;s design foresees intermittent connectivity issues with robots and therefore maintains a strict separation between live mode and disconnected mode. In live mode, the presence of new robots can be discovered (<span style=\"color: #993300\">roboreg scan<\/span>) and their static and dynamic properties can be queried (<span style=\"color: #993300\">roboreg prop<\/span>). In disconnected mode, information about robots can be shown anytime (<span style=\"color: #993300\">roboreg show<\/span>) and sets of robots can be selected based on their characteristics involving functions and properties (<span style=\"color: #993300\">roboreg pick<\/span>). The history of how the fleet of robots changed over time can be audited (<span style=\"color: #993300\">roboreg hist<\/span>). Again in live mode, services of the robots can be invoked (<span style=\"color: #993300\">roboreg call<\/span>) and new applications and services can be deployed (<span style=\"color: #993300\">roboreg push<\/span>).<\/p>\n<p>Through robot function chaining, some of the subcommands can be chained in a single tool invocation, such as: <span style=\"color: #993300\">roboreg pick &#8220;camera=True&#8221; \u00bb call test<\/span>. Future higher-level tools can make use of this feature to orchestrate invocations across a fleet of robots depending on their real-time status.<\/p>\n<p>The software is published as open source software in the <a href=\"https:\/\/github.com\/serviceprototypinglab\/roboreg\">Roboreg<\/a> repository. A <a href=\"https:\/\/youtu.be\/-_J-6FuZVEY\">screencast<\/a> is available (and embedded below) to show how to put the software to good use. The next steps include adding robot-specific functionality and services based on ROS as well as <a href=\"https:\/\/blog.zhaw.ch\/icclab\/challenges-with-running-ros-on-kubernetes\/\">running the platform stack on Kubernetes<\/a>.<\/p>\n<div class=\"lyte-wrapper\" title=\"First steps with Roboreg\" style=\"width:640px;max-width:100%;margin:5px;\"><div class=\"lyMe\" id=\"WYL_-_J-6FuZVEY\"><div id=\"lyte_-_J-6FuZVEY\" data-src=\"https:\/\/blog.zhaw.ch\/icclab\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2F-_J-6FuZVEY%2Fhqdefault.jpg\" class=\"pL\"><div class=\"tC\"><div class=\"tT\">First steps with Roboreg<\/div><\/div><div class=\"play\"><\/div><div class=\"ctrl\"><div class=\"Lctrl\"><\/div><div class=\"Rctrl\"><\/div><\/div><\/div><noscript><a href=\"https:\/\/youtu.be\/-_J-6FuZVEY\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.zhaw.ch\/icclab\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2F-_J-6FuZVEY%2F0.jpg\" alt=\"First steps with Roboreg\" width=\"640\" height=\"340\" \/><br \/>Watch this video on YouTube<\/a><\/noscript><\/div><\/div><div class=\"lL\" style=\"max-width:100%;width:640px;margin:5px;\"><br\/><span class=\"lyte_disclaimer\">Defaulttext aus wp-youtube-lyte.php<\/span><\/div><\/p><div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/broker\/\">broker<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/cloud-robotics\/\">cloud robotics<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/cloud-services\/\">cloud services<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/registry\/\">registry<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/salt\/\">salt<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/splab\/\">splab<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>We all know this tedious situation: Plenty of mobile robots around us, and we&#8217;d just like to use one of them for a specific task, but we don&#8217;t know which one we should take, as they&#8217;re all regularly busy on their own. Perhaps this is not a likely scenario right now, but it will be [&hellip;]<\/p>\n","protected":false},"author":486,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1,943],"tags":[789,743,81,788,790,769],"features":[],"class_list":["post-10246","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-cloud-robotics-articles","tag-broker","tag-cloud-robotics","tag-cloud-services","tag-registry","tag-salt","tag-splab"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Robotic Service Management with Roboreg - Service Engineering (ICCLab &amp; SPLab)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Robotic Service Management with Roboreg\" \/>\n<meta property=\"og:description\" content=\"We all know this tedious situation: Plenty of mobile robots around us, and we&#8217;d just like to use one of them for a specific task, but we don&#8217;t know which one we should take, as they&#8217;re all regularly busy on their own. Perhaps this is not a likely scenario right now, but it will be [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-27T09:17:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-03-04T16:51:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png\" \/>\n<meta name=\"author\" content=\"icclab\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"icclab\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/\"},\"author\":{\"name\":\"icclab\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\"},\"headline\":\"Robotic Service Management with Roboreg\",\"datePublished\":\"2016-06-27T09:17:07+00:00\",\"dateModified\":\"2021-03-04T16:51:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/\"},\"wordCount\":585,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png\",\"keywords\":[\"broker\",\"cloud robotics\",\"cloud services\",\"registry\",\"salt\",\"splab\"],\"articleSection\":[\"*.*\",\"Cloud Robotics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/\",\"name\":\"Robotic Service Management with Roboreg - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png\",\"datePublished\":\"2016-06-27T09:17:07+00:00\",\"dateModified\":\"2021-03-04T16:51:26+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Robotic Service Management with Roboreg\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\",\"name\":\"icclab\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"caption\":\"icclab\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/icclab\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Robotic Service Management with Roboreg - Service Engineering (ICCLab &amp; SPLab)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/","og_locale":"en_US","og_type":"article","og_title":"Robotic Service Management with Roboreg","og_description":"We all know this tedious situation: Plenty of mobile robots around us, and we&#8217;d just like to use one of them for a specific task, but we don&#8217;t know which one we should take, as they&#8217;re all regularly busy on their own. Perhaps this is not a likely scenario right now, but it will be [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2016-06-27T09:17:07+00:00","article_modified_time":"2021-03-04T16:51:26+00:00","og_image":[{"url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png","type":"","width":"","height":""}],"author":"icclab","twitter_card":"summary_large_image","twitter_misc":{"Written by":"icclab","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/"},"author":{"name":"icclab","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563"},"headline":"Robotic Service Management with Roboreg","datePublished":"2016-06-27T09:17:07+00:00","dateModified":"2021-03-04T16:51:26+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/"},"wordCount":585,"commentCount":0,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png","keywords":["broker","cloud robotics","cloud services","registry","salt","splab"],"articleSection":["*.*","Cloud Robotics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/","url":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/","name":"Robotic Service Management with Roboreg - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png","datePublished":"2016-06-27T09:17:07+00:00","dateModified":"2021-03-04T16:51:26+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/roboreg-busy.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/robotic-service-management-with-roboreg\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Robotic Service Management with Roboreg"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563","name":"icclab","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","caption":"icclab"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/icclab\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/486"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=10246"}],"version-history":[{"count":7,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10246\/revisions"}],"predecessor-version":[{"id":12499,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10246\/revisions\/12499"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=10246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=10246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=10246"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=10246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}