{"id":5286,"date":"2018-09-06T12:03:32","date_gmt":"2018-09-06T10:03:32","guid":{"rendered":"https:\/\/blog.generationrobots.com\/?p=5286"},"modified":"2023-03-29T14:27:28","modified_gmt":"2023-03-29T12:27:28","slug":"how-to-teleoperate-the-mbot-educational-robot-using-an-xbee-module","status":"publish","type":"post","link":"https:\/\/www.generationrobots.com\/blog\/en\/how-to-teleoperate-the-mbot-educational-robot-using-an-xbee-module\/","title":{"rendered":"How to teleoperate the mBot educational robot using an XBee module"},"content":{"rendered":"\n<html>\n <body>\n  <p>\n   This tutorial explains how you can use a serial protocol to control the mBot educational robot. You can adapt the code to make it more suitable for your project (or for use in RoboCup Jr events for example).\n  <\/p>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/mbot-robocup-jr-maze.jpg\">\n    <img fetchpriority=\"high\" decoding=\"async\" width=\"740\" height=\"360\" alt=\"mbot-robocup-jr-maze\" class=\"wp-image-5266\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/mbot-robocup-jr-maze.jpg\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/mbot-robocup-jr-maze.jpg 740w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/mbot-robocup-jr-maze-300x146.jpg 300w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/>\n   <\/a>\n   <figcaption class=\"wp-element-caption\">\n    The mBot is a very popular robot in RoboCup Jr events.\n   <\/figcaption>\n  <\/figure>\n  \n  \n  <p>\n   Robot teleoperation with an XBee chip offers 2 major advantages:\n  <\/p>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    It is much easier to set up and use compared to controlling a robot via WiFi or Bluetooth\n   <\/li>\n   \n   \n   <li>\n    When used with the XBee module, you can recover data collected by the mBot\u2019s various sensors (not possible with teleoperation from within the Makeblock mBot app)\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-how-does-our-assembly-work\">\n   How does our assembly work?\n  <\/h2>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbee-arduino-grove-systeme.jpg\">\n    <img decoding=\"async\" width=\"582\" height=\"147\" alt=\"xbee-arduino-grove-system\" class=\"wp-image-5267\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbee-arduino-grove-systeme.jpg\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-arduino-grove-systeme.jpg 582w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-arduino-grove-systeme-300x76.jpg 300w\" sizes=\"(max-width: 582px) 100vw, 582px\" \/>\n   <\/a>\n  <\/figure>\n  \n  \n  <p>\n   The system is composed of 2 XBee modules (one acts as a transmitter and the other as a receiver), an\n   <a class=\"catalogue\" href=\"\/blog\/en\/buyers-guide-which-electronics-and-robotics-kits-should-i-choose\/\" title=\"mBot robot compatible with Scratch\">\n    mBot educational\n   <\/a>\n   <a class=\"catalogue\" href=\"\/blog\/en\/buyers-guide-which-electronics-and-robotics-kits-should-i-choose\/\" title=\"mBot robot compatible with Scratch\">\n    robot\n   <\/a>\n   and a module used to send the command.\n  <\/p>\n  \n  \n  <p>\n   In this tutorial, this last module will consist of an Arduino UNO board and a Grove joystick. (This system can be replaced with an ArbotiX Commander controller, which already includes an XBee chip!)\n  <\/p>\n  \n  \n  <p>\n   We will adapt the ArbotiX Commander controller code to the Arduino + Joystick system.\n  <\/p>\n  \n  \n  <p>\n   The data transmission frame used here consists of 8 bytes:\n  <\/p>\n  \n  \n  <figure class=\"wp-block-table\">\n   <table>\n    <tbody>\n     <tr>\n      <th>\n       Index (n\u00b0 octet)\n      <\/th>\n      <th>\n       Description\n      <\/th>\n      <th>\n       Example\n      <\/th>\n     <\/tr>\n     <tr>\n      <td>\n       0\n      <\/td>\n      <td>\n       new packet (0xff)\n      <\/td>\n      <td>\n       1111 1111 (dec: -1)\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       1\n      <\/td>\n      <td>\n       right joystick V\n      <\/td>\n      <td>\n       0100 0000 (dec: 64)\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       2\n      <\/td>\n      <td>\n       right joystick H\n      <\/td>\n      <td>\n       0000 0000 (dec: 0)\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       3\n      <\/td>\n      <td>\n       left joystick V\n      <\/td>\n      <td>\n       0000 0000 (dec: 0)\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       4\n      <\/td>\n      <td>\n       left joystick H\n      <\/td>\n      <td>\n       0000 0000 (dec: 0)\/td&gt;\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       5\n      <\/td>\n      <td>\n       buttons states\n      <\/td>\n      <td>\n       0000 0000 (dec: 0)\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       6\n      <\/td>\n      <td>\n       extra\n      <\/td>\n      <td>\n       0000 0000 (dec: 0)\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       7\n      <\/td>\n      <td>\n       security\n      <\/td>\n      <td>\n       0000 0000 (dec: 0)\n      <\/td>\n     <\/tr>\n    <\/tbody>\n   <\/table>\n  <\/figure>\n  \n  \n  <p>\n   Here, we sent decimal 64 on the second byte (index 1), which translates into 0100 0000 in binary.\n  <\/p>\n  \n  \n  <p>\n   In our Arduino Board + Joystick system, we will use just one joystick, so the only important data are those for byte 0 (new packet), 1 (right joystick V &#8211; Vertical), 2 (right joystick H &#8211; Horizontal) and 7 (security).\n  <\/p>\n  \n  \n  <p>\n   To translate the joystick values into motor commands, you\u2019ll need the following mathematical formulas:\n  <\/p>\n  \n  \n  <p>\n   <em>\n    Right motor speed = right joystick V &#8211; right joystick H\n   <\/em>\n   <br\/>\n   <em>\n    Left motor speed = right joystick V + right joystick H\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Using the packet sent earlier, this gives:\n  <\/p>\n  \n  \n  <p>\n   <em>\n    Right motor speed = 64 &#8211; 0 = 64\n   <\/em>\n   <br\/>\n   <em>\n    Left motor speed = 64 + 0 = 64\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   So the robot will move in a straight line.\n  <\/p>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-software-libraries-and-firmware-resources-required-for-this-tutorial\">\n   Software, libraries and firmware resources required for this tutorial\n  <\/h2>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    <a class=\"catalogue\" href=\"https:\/\/www.arduino.cc\/en\/Guide\/Windows\" rel=\"noopener noreferrer\" target=\"_blank\" title=\"Arduino IDE\">\n     Arduino IDE\n    <\/a>\n   <\/li>\n   \n   \n   <li>\n    <a class=\"catalogue\" href=\"https:\/\/www.poppy-project.org\/?lang=fr\" rel=\"noopener noreferrer\" target=\"_blank\" title=\"XCTU Software\">\n     XCTU Software\n    <\/a>\n   <\/li>\n   \n   \n   <li>\n    <a class=\"catalogue\" href=\"https:\/\/github.com\/Makeblock-official\/Makeblock-Libraries\" rel=\"noopener noreferrer\" target=\"_blank\" title=\"MakeBlock libraries\">\n     MakeBlock libraries\n    <\/a>\n   <\/li>\n   \n   \n   <li>\n    <a class=\"catalogue\" href=\"https:\/\/github.com\/generationrobots-lab\/mbot_XBee_control\" rel=\"noopener noreferrer\" target=\"_blank\" title=\"mBot and Arduino firmware\">\n     mBot and Arduino firmware\n    <\/a>\n   <\/li>\n   \n   \n   <li>\n    <a class=\"catalogue\" href=\"\/media\/Commander.zip\" rel=\"noopener noreferrer\" target=\"_blank\" title=\"Arbotix Commander firmware\">\n     Arbotix Commander firmware\n    <\/a>\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-configuring-xbee-chips\">\n   Configuring XBee chips\n  <\/h2>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbee-explorer-usb-sparkfun.jpg\">\n    <img decoding=\"async\" width=\"150\" height=\"150\" alt=\"xbee-explorer-usb-sparkfun\" class=\"wp-image-5268\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbee-explorer-usb-sparkfun-150x150.jpg\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-explorer-usb-sparkfun-150x150.jpg 150w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-explorer-usb-sparkfun-300x300.jpg 300w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-explorer-usb-sparkfun-140x140.jpg 140w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-explorer-usb-sparkfun.jpg 338w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/>\n   <\/a>\n  <\/figure>\n  \n  \n  <p>\n   You must configure each XBee chip using the\n   <a class=\"catalogue\" href=\"https:\/\/www.poppy-project.org\/?lang=fr\" rel=\"noopener noreferrer\" target=\"_blank\" title=\"Logiciel XCTU\">\n    logiciel XCTU\n   <\/a>\n   . Follow the configuration steps below for each XBee chip.\n   <br\/>\n   1. Connect your XBee chip to the computer using the XBee Explorer USB.\n   <br\/>\n   2. Connect to the XBee chip using the XCTU software. The video below explains how to do this.\n  <\/p>\n  \n  \n  <p class=\"has-text-align-center\">\n   <iframe allowfullscreen=\"allowfullscreen\" frameborder=\"0\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/gmemn4EkA2A\" width=\"560\">\n   <\/iframe>\n  <\/p>\n  \n  \n  <p>\n   3. Then set the parameters for each XBee used (the table below will help you):\n  <\/p>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    Select the XBee on the left\n    <strong>\n     <span style=\"color: #ff0000;\">\n      (1)\n     <\/span>\n    <\/strong>\n    and go to the configuration tab\n    <strong>\n     <span style=\"color: #ff0000;\">\n      (2)\n     <\/span>\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    Change the XBee ID (it must be unique) and the destination address\n    <strong>\n     <span style=\"color: #ff0000;\">\n      (3)\n     <\/span>\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    Check its channel as well as the baud rate (it must be identical for all XBee modules required to communicate with each other)\n    <br\/>\n    <strong>\n     <span style=\"color: #ff0000;\">\n      (3)\n     <\/span>\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    Click on \u201cWrite\u201d to save\n    <span style=\"color: #ff0000;\">\n     <strong>\n      (4)\n     <\/strong>\n    <\/span>\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbee-chiffres.jpg\">\n    <img loading=\"lazy\" decoding=\"async\" width=\"1091\" height=\"647\" alt=\"xbee-figures\" class=\"wp-image-5264\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbee-chiffres.jpg\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-chiffres.jpg 1091w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-chiffres-300x178.jpg 300w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-chiffres-768x455.jpg 768w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-chiffres-1024x607.jpg 1024w\" sizes=\"(max-width: 1091px) 100vw, 1091px\" \/>\n   <\/a>\n  <\/figure>\n  \n  \n  <figure class=\"wp-block-table\">\n   <table>\n    <tbody>\n     <tr>\n      <th>\n       XBee connected to\n      <\/th>\n      <th>\n       Channel\n      <\/th>\n      <th>\n       Destination address\n      <\/th>\n      <th>\n       Source address\n      <\/th>\n      <th>\n       Interface data rate\n      <\/th>\n     <\/tr>\n     <tr>\n      <td>\n       mBot\n      <\/td>\n      <td>\n       C\n      <\/td>\n      <td>\n       2\n      <\/td>\n      <td>\n       1\n      <\/td>\n      <td>\n       38400\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       USB PC\n      <\/td>\n      <td>\n       C\n      <\/td>\n      <td>\n       1\n      <\/td>\n      <td>\n       2\n      <\/td>\n      <td>\n       38400\n      <\/td>\n     <\/tr>\n    <\/tbody>\n   <\/table>\n  <\/figure>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-mbot-robot-connections\">\n   mBot robot connections\n  <\/h2>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbee-10.jpg\">\n    <img loading=\"lazy\" decoding=\"async\" width=\"1010\" height=\"431\" alt=\"xbee-10\" class=\"wp-image-5263\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbee-10.jpg\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-10.jpg 1010w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-10-300x128.jpg 300w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-10-768x328.jpg 768w\" sizes=\"(max-width: 1010px) 100vw, 1010px\" \/>\n   <\/a>\n  <\/figure>\n  \n  \n  <p>\n   Below is a table summarising the different connections between the mBot robot microcontroller and the XBee Explorer USB.\n  <\/p>\n  \n  \n  <figure class=\"wp-block-table\">\n   <table>\n    <tbody>\n     <tr>\n      <th>\n       XBee\n      <\/th>\n      <th>\n       mBot\n      <\/th>\n     <\/tr>\n     <tr>\n      <td>\n       5V\n      <\/td>\n      <td>\n       5V\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       GND\n      <\/td>\n      <td>\n       GND\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       RX\n      <\/td>\n      <td>\n       10\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       TX\n      <\/td>\n      <td>\n       9\n      <\/td>\n     <\/tr>\n    <\/tbody>\n   <\/table>\n  <\/figure>\n  \n  \n  <p>\n   <span style=\"text-decoration: underline;\">\n    <strong>\n     Port 2 of the mBot robot is used by the XBee chip, so make sure you don\u2019t connect anything to it!\n    <\/strong>\n   <\/span>\n  <\/p>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-arduino-connections\">\n   Arduino connections\n  <\/h2>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbeet-arduino-mbot-connexion.jpg\">\n    <img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"461\" alt=\"xbee-arduino-mbot-connection\" class=\"wp-image-5261\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbeet-arduino-mbot-connexion.jpg\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbeet-arduino-mbot-connexion.jpg 707w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbeet-arduino-mbot-connexion-300x196.jpg 300w\" sizes=\"(max-width: 707px) 100vw, 707px\" \/>\n   <\/a>\n  <\/figure>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbee-arduino-mbot-connexion-2.jpg\">\n    <img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"322\" alt=\"xbee-arduino-mbot-connexion-2\" class=\"wp-image-5265\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/09\/xbee-arduino-mbot-connexion-2.jpg\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-arduino-mbot-connexion-2.jpg 602w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/09\/xbee-arduino-mbot-connexion-2-300x160.jpg 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/>\n   <\/a>\n  <\/figure>\n  \n  \n  <p>\n   Below is a table summarising the different connections between the Arduino board, the XBee chip and the Grove joystick.\n  <\/p>\n  \n  \n  <figure class=\"wp-block-table\">\n   <table>\n    <tbody>\n     <tr>\n      <th>\n       XBee\n      <\/th>\n      <th>\n       Joystick\n      <\/th>\n      <th>\n       Arduino\n      <\/th>\n     <\/tr>\n     <tr>\n      <td>\n       Vcc\n      <\/td>\n      <td>\n       &#8211;\n      <\/td>\n      <td>\n       3v3\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       GND\n      <\/td>\n      <td>\n       GND\n      <\/td>\n      <td>\n       GND\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       RX\n      <\/td>\n      <td>\n       &#8211;\n      <\/td>\n      <td>\n       9\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       TX\n      <\/td>\n      <td>\n       &#8211;\n      <\/td>\n      <td>\n       10\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       &#8211;\n      <\/td>\n      <td>\n       Y\n      <\/td>\n      <td>\n       A1\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       &#8211;\n      <\/td>\n      <td>\n       X\n      <\/td>\n      <td>\n       A0\n      <\/td>\n     <\/tr>\n     <tr>\n      <td>\n       &#8211;\n      <\/td>\n      <td>\n       Key (unused)\n      <\/td>\n      <td>\n       &#8211;\n      <\/td>\n     <\/tr>\n    <\/tbody>\n   <\/table>\n  <\/figure>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-installing-the-arduino-board-firmware\">\n   Installing the Arduino board firmware\n  <\/h2>\n  \n  \n  <ol class=\"wp-block-list\">\n   \n   <li>\n    Connect your Arduino to the PC using a USB cable\n   <\/li>\n   \n   \n   <li>\n    Open the Arduino_code.ino file (download link in the resources)\n   <\/li>\n   \n   \n   <li>\n    Change the board type and the serial port according to what you are using\n   <\/li>\n   \n   \n   <li>\n    Upload to the board (Ctrl + U)\n   <\/li>\n   \n  <\/ol>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-installing-the-mbot-robot-firmware\">\n   Installing the mBot robot firmware\n  <\/h2>\n  \n  \n  <ol class=\"wp-block-list\">\n   \n   <li>\n    Connect the mBot to the PC using a USB B cable\n   <\/li>\n   \n   \n   <li>\n    Open the Arduino IDE and install the Makeblock library (Help)\n   <\/li>\n   \n   \n   <li>\n    Open the Mbot_code.ino file (download link in the resources)\n   <\/li>\n   \n   \n   <li>\n    From within the Arduino IDE, change the board type and select Tool -&gt; Board -&gt; Arduino Uno\n   <\/li>\n   \n   \n   <li>\n    Upload to the board (Ctrl + U)\n   <\/li>\n   \n  <\/ol>\n  \n  \n  <p>\n   Once the firmware is correctly installed, restart the robot. And you\u2019re done!\n  <\/p>\n  \n <\/body>\n<\/html>","protected":false},"excerpt":{"rendered":"<p>This tutorial explains how you can use a serial protocol to control the mBot educational robot. You can adapt the code to make it more suitable for your project (or for use in RoboCup Jr events for example). Robot teleoperation with an XBee chip offers 2 major advantages: How does our assembly work? The system[&#8230;]<br \/> <a class=\"button\" href=\"https:\/\/www.generationrobots.com\/blog\/en\/how-to-teleoperate-the-mbot-educational-robot-using-an-xbee-module\/\" style=\"float:right;\">Read this article &gt;&gt;<\/a><\/p>\n","protected":false},"author":188,"featured_media":5273,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1132],"tags":[],"class_list":["post-5286","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-education-en"],"_links":{"self":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/comments?post=5286"}],"version-history":[{"count":5,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5286\/revisions"}],"predecessor-version":[{"id":13119,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5286\/revisions\/13119"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media\/5273"}],"wp:attachment":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media?parent=5286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/categories?post=5286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/tags?post=5286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}