{"action":"created","comment":{"url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/comments/177347790","pull_request_review_id":107197329,"id":177347790,"diff_hunk":"@@ -0,0 +1,1434 @@\n+{\n+ \"cells\": [\n+  {\n+   \"cell_type\": \"markdown\",\n+   \"metadata\": {\n+    \"toc\": true\n+   },\n+   \"source\": [\n+    \"<h1>Table of Contents<span class=\\\"tocSkip\\\"></span></h1>\\n\",\n+    \"<div class=\\\"toc\\\"><ul class=\\\"toc-item\\\"><li><span><a href=\\\"#What-is-Gazebo\\\" data-toc-modified-id=\\\"What-is-Gazebo-1\\\"><span class=\\\"toc-item-num\\\">1&nbsp;&nbsp;</span>What is Gazebo</a></span><ul class=\\\"toc-item\\\"><li><span><a href=\\\"#Mobile-robot-in-a-Gazebo-environment\\\" data-toc-modified-id=\\\"Mobile-robot-in-a-Gazebo-environment-1.1\\\"><span class=\\\"toc-item-num\\\">1.1&nbsp;&nbsp;</span><u>Mobile robot in a Gazebo environment</u></a></span></li></ul></li><li><span><a href=\\\"#Linking-Gazebo-and-ROS\\\" data-toc-modified-id=\\\"Linking-Gazebo-and-ROS-2\\\"><span class=\\\"toc-item-num\\\">2&nbsp;&nbsp;</span>Linking Gazebo and ROS</a></span><ul class=\\\"toc-item\\\"><li><span><a href=\\\"#Overview-of-Gazebo-ROS-packages\\\" data-toc-modified-id=\\\"Overview-of-Gazebo-ROS-packages-2.1\\\"><span class=\\\"toc-item-num\\\">2.1&nbsp;&nbsp;</span><u>Overview of Gazebo ROS packages</u></a></span></li></ul></li><li><span><a href=\\\"#Universal-Robotic-Description-Format-(URDF)\\\" data-toc-modified-id=\\\"Universal-Robotic-Description-Format-(URDF)-3\\\"><span class=\\\"toc-item-num\\\">3&nbsp;&nbsp;</span>Universal Robotic Description Format (URDF)</a></span></li><li><span><a href=\\\"#Simulate-differential-drive-mobile-robot-in-Gazebo-and-ROS\\\" data-toc-modified-id=\\\"Simulate-differential-drive-mobile-robot-in-Gazebo-and-ROS-4\\\"><span class=\\\"toc-item-num\\\">4&nbsp;&nbsp;</span>Simulate differential drive mobile robot in Gazebo and ROS</a></span></li><li><span><a href=\\\"#Creating-your-Gazebo-Launch-File\\\" data-toc-modified-id=\\\"Creating-your-Gazebo-Launch-File-5\\\"><span class=\\\"toc-item-num\\\">5&nbsp;&nbsp;</span>Creating your Gazebo Launch File</a></span></li><li><span><a href=\\\"#Creating-your-own-Robot-Model\\\" data-toc-modified-id=\\\"Creating-your-own-Robot-Model-6\\\"><span class=\\\"toc-item-num\\\">6&nbsp;&nbsp;</span>Creating your own Robot Model</a></span></li><li><span><a href=\\\"#XACRO-Concepts\\\" data-toc-modified-id=\\\"XACRO-Concepts-7\\\"><span class=\\\"toc-item-num\\\">7&nbsp;&nbsp;</span>XACRO Concepts</a></span></li><li><span><a href=\\\"#Connect-your-Robot-to-ROS\\\" data-toc-modified-id=\\\"Connect-your-Robot-to-ROS-8\\\"><span class=\\\"toc-item-num\\\">8&nbsp;&nbsp;</span>Connect your Robot to ROS</a></span></li><li><span><a href=\\\"#Let's-Add-a-Sensor\\\" data-toc-modified-id=\\\"Let's-Add-a-Sensor-9\\\"><span class=\\\"toc-item-num\\\">9&nbsp;&nbsp;</span>Let's Add a Sensor</a></span></li><li><span><a href=\\\"#Autonomous-Operation-of-Simulated-Differential-Wheeled-Robot\\\" data-toc-modified-id=\\\"Autonomous-Operation-of-Simulated-Differential-Wheeled-Robot-10\\\"><span class=\\\"toc-item-num\\\">10&nbsp;&nbsp;</span>Autonomous Operation of Simulated Differential Wheeled Robot</a></span></li></ul></div>\"\n+   ]\n+  },\n+  {\n+   \"cell_type\": \"markdown\",\n+   \"metadata\": {},\n+   \"source\": [\n+    \"<h1><strong><u>Gazebo and ROS</strong></u></h1>\\n\",\n+    \"\\n\",\n+    \"<h2>What is Gazebo</h2>\\n\",\n+    \"\\n\",\n+    \"<p>Gazebo is a 3D simulator with the ability to accurately and efficiently simulate populations of robots in complex indoor and outdoor environments. While similar to game engines, Gazebo offers physics simulation at a much higher degree of fidelity, a suite of sensors, and provides both a graphical and a command line interface. In the world of robotics, it is a very popular simulator and has even been selected as the official simulator for the <a href=\\\"http://www.darpa.mil/program/darpa-robotics-challenge\\\">DARPA robotics challenge</a>.\\n\",\n+    \"</p>\\n\",\n+    \"\\n\",\n+    \"<p>Typical uses of Gazebo include:</p>\\n\",\n+    \"\\n\",\n+    \"<ul>\\n\",\n+    \"    <li>testing robotics algorithms</li>\\n\",\n+    \"    <li>designing robots</li>\\n\",\n+    \"    <li>performing regression testing with realistic scenarios</li>\\n\",\n+    \"</ul>\\n\",\n+    \"    \\n\",\n+    \"<p>A few key features of Gazebo include:</p>\\n\",\n+    \"\\n\",\n+    \"<ul>\\n\",\n+    \"    <li>multiple physics engines such as ODE(Open Dynamics Engine), Bullet, Simbody and Dart</li>\\n\",\n+    \"    <li>a rich library of robot models and environments, with the option to define your own</li>\\n\",\n+    \"    <li>a wide variety of possible sensors</li>\\n\",\n+    \"    <li>convenient programmatic and graphical interfaces</li>\\n\",\n+    \"</ul>\\n\",\n+    \"\\n\",\n+    \"<img src=\\\"http://www.pirobot.org/wordpress/wp-content/uploads/2014/09/gazebo_kinect_challenge.png\\\" alt=\\\"\\\">\\n\",\n+    \"<h3 style=\\\"padding-left:32%\\\"><u>Mobile robot in a Gazebo environment</u></h3>\\n\",\n+    \"\\n\",\n+    \"<h1>User Interface</h1>\\n\",\n+    \"\\n\",\n+    \"<p>This is an introduction to the Gazebo Graphical User Interface, or GUI. We will learn interface basics like what the buttons do and how to navigate in the scene. </p>\\n\",\n+    \"\\n\",\n+    \"<p>By now, you should have Gazebo <a href=\\\"http://gazebosim.org/tutorials?cat=guided_b&amp;tut=guided_b1&amp;branch=ftu2\\\">installed</a>. </p>\\n\",\n+    \"\\n\",\n+    \"<p>Start by opening Gazebo. Press Alt-F2, type Gazebo, and then press Enter. </p>\\n\",\n+    \"\\n\",\n+    \"<h2>GUI</h2>\\n\",\n+    \"\\n\",\n+    \"<p>This is what you should see:</p>\\n\",\n+    \"\\n\",\n+    \"<p><img src='https://bitbucket.org/osrf/gazebo_tutorials/raw/default/guided_b/files/ftu3-boot-screen.png' width='800px'/></p>\\n\",\n+    \"\\n\",\n+    \"<p>Note that the Gazebo interface consists of multiple sections, explained below. </p>\\n\",\n+    \"\\n\",\n+    \"<h3>The Scene</h3>\\n\",\n+    \"\\n\",\n+    \"<p>The Scene is the main part of the simulator. This is where the simulated\\n\",\n+    \"objects are animated and you interact with the environment. </p>\\n\",\n+    \"\\n\",\n+    \"<p><img src='https://bitbucket.org/osrf/gazebo_tutorials/raw/default/guided_b/files/ftu3-scene.png' width='800px'/></p>\\n\",\n+    \"\\n\",\n+    \"<h3>The Panels</h3>\\n\",\n+    \"\\n\",\n+    \"<p>Both side panels—right and left—can be displayed, hidden or resized by dragging\\n\",\n+    \"the bar that separates them from the Scene.</p>\\n\",\n+    \"\\n\",\n+    \"<p><img src='https://bitbucket.org/osrf/gazebo_tutorials/raw/default/guided_b/files/ftu3-panels.png' width='800px'/></p>\\n\",\n+    \"\\n\",\n+    \"<h4>Left Panel</h4>\\n\",\n+    \"\\n\",\n+    \"<p>The left panel appears by default when you launch Gazebo. There are three tabs\\n\",\n+    \"in the panel:</p>\\n\",\n+    \"\\n\",\n+    \"<ul>\\n\",\n+    \"<li><p><strong>WORLD</strong>: The World tab displays the models that are currently in the\\n\",\n+    \"scene, and allows you to view and modify model parameters, like their\\n\",\n+    \"pose. You can also change the camera view angle by expanding the\\n\",\n+    \"&quot;GUI&quot; option and tweaking the camera pose. </p></li>\\n\",\n+    \"<li><p><strong>INSERT</strong>: The Insert tab is where you add new objects (models) to the\\n\",\n+    \"simulation. To see the model list, you may need to click the arrow to expand the \\n\",\n+    \"folder. Click (and release) on the model you want to insert, and click\\n\",\n+    \"again in the Scene to add it. </p></li>\\n\",\n+    \"<li><p><strong>LAYERS</strong>: The Layers tab organizes and displays the different\\n\",\n+    \"visualization groups that are available in the simulation, if any. A layer\\n\",\n+    \"may contain one or more models. Toggling a layer on or off will display\\n\",\n+    \"or hide the models in that layer. </p>\\n\",\n+    \"\\n\",\n+    \"<p>This is an optional feature, so this tab will be empty in\\n\",\n+    \"  most cases. To learn more about Layers, check out the \\n\",\n+    \"  <a href=\\\"http://gazebosim.org/tutorials?tut=visual_layers&amp;cat=build_robot\\\">Visibility Layers</a> \\n\",\n+    \"  tutorial. </p></li>\\n\",\n+    \"</ul>\\n\",\n+    \"\\n\",\n+    \"<h4>Right Panel (hidden by default)</h4>\\n\",\n+    \"\\n\",\n+    \"<p>The right panel is hidden by default. Click and drag the bar to open it. The right panel can \\n\",\n+    \"be used to interact with the mobile parts of a selected model (the joints). If there are no \\n\",\n+    \"models selected in the Scene, the panel does not display any information.</p>\\n\",\n+    \"\\n\",\n+    \"<h3>The Toolbars</h3>\\n\",\n+    \"\\n\",\n+    \"<p>The Gazebo interface has two Toolbars. One is located just above the Scene, and\\n\",\n+    \"the other is just below.</p>\\n\",\n+    \"\\n\",\n+    \"<h4>Upper Toolbar</h4>\\n\",\n+    \"\\n\",\n+    \"<p>The main Toolbar includes some of the most-used options for interacting with\\n\",\n+    \"the simulator, such as buttons to: select, move, rotate, and scale objects;\\n\",\n+    \"create simple shapes (e.g. cube, sphere, cylinder); and copy/paste. Go ahead and play \\n\",\n+    \"around with each button to see how it behaves.</p>\\n\",\n+    \"\\n\",\n+    \"<p><img src='https://bitbucket.org/osrf/gazebo_tutorials/raw/default/guided_b/files/ftu3-top-toolbar.png' width='1200px'/></p>\\n\",\n+    \"\\n\",\n+    \"<p>Select mode: Navigate in the scene</p>\\n\",\n+    \"\\n\",\n+    \"<p>Translate mode: Select models you want to move</p>\\n\",\n+    \"\\n\",\n+    \"<p>Rotate mode: Select models you want to rotate </p>\\n\",\n+    \"\\n\",\n+    \"<p>Scale mode: Select models you want to scale</p>\\n\",\n+    \"\\n\",\n+    \"<p>Undo/Redo: Undo/redo actions in the scene</p>\\n\",\n+    \"\\n\",\n+    \"<p>Simple shapes: Insert simple shapes into the scene</p>\\n\",\n+    \"\\n\",\n+    \"<p>Lights: Add lights to the scene</p>\\n\",\n+    \"\\n\",\n+    \"<p>Copy/paste: Copy/paste models in the scene</p>\\n\",\n+    \"\\n\",\n+    \"<p>Align: Align models to one another</p>\\n\",\n+    \"\\n\",\n+    \"<p>Snap: Snap one model to another</p>\\n\",\n+    \"\\n\",\n+    \"<p>Change view: View the scene from various angles</p>\\n\",\n+    \"\\n\",\n+    \"<h4>Bottom Toolbar</h4>\\n\",\n+    \"\\n\",\n+    \"<p>The Bottom Toolbar displays data about the simulation, like the simulation time\\n\",\n+    \"and its relationship to real-life time. &quot;Simulation time&quot; refers to how quickly\\n\",\n+    \"time is passing in the simulator when a simulation is running.  Simulation can\\n\",\n+    \"be slower or faster than real time, depending on how much computation is\\n\",\n+    \"required to run the simulation. </p>\\n\",\n+    \"\\n\",\n+    \"<p>&quot;Real time&quot; refers to the actual time that is passing in real life as the\\n\",\n+    \"simulator runs. The relationship between the simulation time and real time is\\n\",\n+    \"known as the &quot;real time factor&quot; (RTF). It&#39;s the ratio of simulation time to real\\n\",\n+    \"time. The RTF is a measure of how fast or slow your simulation is running\\n\",\n+    \"compared to real time. </p>\\n\",\n+    \"\\n\",\n+    \"<p>The state of the world in Gazebo is calculated once per iteration. You can\\n\",\n+    \"see the number of iterations on the right side of the bottom toolbar. Each\\n\",\n+    \"iteration advances simulation by a fixed number of seconds, called the step\\n\",\n+    \"size. By default, the step size is 1 ms. You can press\\n\",\n+    \"the pause button to pause the simulation and step through a few steps at\\n\",\n+    \"a time using the step button.</p>\\n\",\n+    \"\\n\",\n+    \"<p><img src='https://bitbucket.org/osrf/gazebo_tutorials/raw/default/guided_b/files/ftu3-bottom-toolbar.png' width='1200px'/></p>\\n\",\n+    \"\\n\",\n+    \"<h3>The Menu</h3>\\n\",\n+    \"\\n\",\n+    \"<p>Like most applications, Gazebo has an application menu up top. Some of the menu\\n\",\n+    \"options are duplicated in the Toolbars or as right-click context menu options\\n\",\n+    \"in the Scene. Check out the various menus to familiarize yourself. </p>\\n\",\n+    \"\\n\",\n+    \"<p><img src='https://bitbucket.org/osrf/gazebo_tutorials/raw/default/guided_b/files/ftu3-menu-options.png' width='1200px'/></p>\\n\",\n+    \"\\n\",\n+    \"<p>NOTE: Some Linux desktops hide application menus. If you don&#39;t see the\\n\",\n+    \"menus, move your cursor to the top of the application window, and the menus\\n\",\n+    \"should appear. </p>\\n\",\n+    \"\\n\",\n+    \"<p><img src='https://bitbucket.org/osrf/gazebo_tutorials/raw/default/guided_b/files/ftu3-gazebo-menu.png' width='1200px'/></p>\\n\",\n+    \"\\n\",\n+    \"<h2>Mouse Controls</h2>\\n\",\n+    \"\\n\",\n+    \"<p>The mouse is very useful when navigating in the Scene. We highly recommend\\n\",\n+    \"using a mouse with a scroll wheel.  Below are the basic mouse operations for\\n\",\n+    \"navigating in the Scene and changing the view angle.</p>\\n\",\n+    \"\\n\",\n+    \"<p>Right-clicking on models will open a context menu with various options.\\n\",\n+    \"Right-click on a model now to see what&#39;s available. </p>\\n\",\n+    \"\\n\",\n+    \"<p><img src='https://bitbucket.org/osrf/gazebo_tutorials/raw/default/guided_b/files/ftu3-mouse-controls.png' width='800px'/></p>\\n\",\n+    \"\\n\",\n+    \"<h2>Linking Gazebo and ROS</h2>\\n\",\n+    \"\\n\",\n+<<<<<<< HEAD\n+    \"<p>To achieve ROS integration with stand-alone Gazebo, a set of ROS packages named gazebo_ros_pkgs provides wrappers around the stand-alone Gazebo. They provide the necessary interfaces to simulate a robot in Gazebo using ROS messages and services</p>\\n\",\n+=======\n+    \"<p>To achieve cooperation between stand-alone Gazebo and ROS, a set of ROS packages named gazebo_ros_pkgs provide wrappers around the stand-alone Gazebo core. They enable the necessary interfaces to simulate a robot in Gazebo using ROS messages, services and dynamic reconfigure.</p>\\n\",\n+>>>>>>> c06619525d69b37e68d5dcb93bb28c37360636c2\n+    \"\\n\",\n+    \"<img src=\\\"https://bitbucket.org/osrf/gazebo_tutorials/raw/default/ros_overview/figs/775px-Gazebo_ros_api.png\\\">\\n\",\n+    \"<h3 style=\\\"padding-left:32%\\\"><u>Overview of Gazebo ROS packages</u></h3>\\n\",\n+    \"\\n\",\n+    \"<h2>TF Package</h2>\\n\",","path":"tutorials/2_Gazebo_and_ROS.ipynb","position":200,"original_position":200,"commit_id":"0f8e29b470f2bd9909ab5846a892d1bef77b7912","original_commit_id":"0f8e29b470f2bd9909ab5846a892d1bef77b7912","user":{"login":"ratking82","id":20764954,"avatar_url":"https://avatars2.githubusercontent.com/u/20764954?v=4","gravatar_id":"","url":"https://api.github.com/users/ratking82","html_url":"https://github.com/ratking82","followers_url":"https://api.github.com/users/ratking82/followers","following_url":"https://api.github.com/users/ratking82/following{/other_user}","gists_url":"https://api.github.com/users/ratking82/gists{/gist_id}","starred_url":"https://api.github.com/users/ratking82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ratking82/subscriptions","organizations_url":"https://api.github.com/users/ratking82/orgs","repos_url":"https://api.github.com/users/ratking82/repos","events_url":"https://api.github.com/users/ratking82/events{/privacy}","received_events_url":"https://api.github.com/users/ratking82/received_events","type":"User","site_admin":false},"body":"TF section not showing up!","created_at":"2018-03-27T08:38:34Z","updated_at":"2018-03-27T08:44:13Z","html_url":"https://github.com/RobinAmsters/ROS_workshop/pull/27#discussion_r177347790","pull_request_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/27","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/comments/177347790"},"html":{"href":"https://github.com/RobinAmsters/ROS_workshop/pull/27#discussion_r177347790"},"pull_request":{"href":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/27"}}},"pull_request":{"url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/27","id":175187862,"html_url":"https://github.com/RobinAmsters/ROS_workshop/pull/27","diff_url":"https://github.com/RobinAmsters/ROS_workshop/pull/27.diff","patch_url":"https://github.com/RobinAmsters/ROS_workshop/pull/27.patch","issue_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/issues/27","number":27,"state":"open","locked":false,"title":"Gazebo","user":{"login":"alibinjunaid","id":6667834,"avatar_url":"https://avatars1.githubusercontent.com/u/6667834?v=4","gravatar_id":"","url":"https://api.github.com/users/alibinjunaid","html_url":"https://github.com/alibinjunaid","followers_url":"https://api.github.com/users/alibinjunaid/followers","following_url":"https://api.github.com/users/alibinjunaid/following{/other_user}","gists_url":"https://api.github.com/users/alibinjunaid/gists{/gist_id}","starred_url":"https://api.github.com/users/alibinjunaid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alibinjunaid/subscriptions","organizations_url":"https://api.github.com/users/alibinjunaid/orgs","repos_url":"https://api.github.com/users/alibinjunaid/repos","events_url":"https://api.github.com/users/alibinjunaid/events{/privacy}","received_events_url":"https://api.github.com/users/alibinjunaid/received_events","type":"User","site_admin":false},"body":"1st version of Gazebo and ROS tutorial","created_at":"2018-03-15T09:16:43Z","updated_at":"2018-03-27T08:44:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3ef3c547b7f6281a99bd0d06a010926a1e5c116c","assignee":null,"assignees":[],"requested_reviewers":[{"login":"RobinAmsters","id":24735023,"avatar_url":"https://avatars2.githubusercontent.com/u/24735023?v=4","gravatar_id":"","url":"https://api.github.com/users/RobinAmsters","html_url":"https://github.com/RobinAmsters","followers_url":"https://api.github.com/users/RobinAmsters/followers","following_url":"https://api.github.com/users/RobinAmsters/following{/other_user}","gists_url":"https://api.github.com/users/RobinAmsters/gists{/gist_id}","starred_url":"https://api.github.com/users/RobinAmsters/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RobinAmsters/subscriptions","organizations_url":"https://api.github.com/users/RobinAmsters/orgs","repos_url":"https://api.github.com/users/RobinAmsters/repos","events_url":"https://api.github.com/users/RobinAmsters/events{/privacy}","received_events_url":"https://api.github.com/users/RobinAmsters/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":837063416,"url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/labels/workshop","name":"workshop","color":"e592c1","default":false}],"milestone":{"url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/milestones/4","html_url":"https://github.com/RobinAmsters/ROS_workshop/milestone/4","labels_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/milestones/4/labels","id":3165587,"number":4,"title":"Tutorial 2","description":"ROS simulation tutorial","creator":{"login":"RobinAmsters","id":24735023,"avatar_url":"https://avatars2.githubusercontent.com/u/24735023?v=4","gravatar_id":"","url":"https://api.github.com/users/RobinAmsters","html_url":"https://github.com/RobinAmsters","followers_url":"https://api.github.com/users/RobinAmsters/followers","following_url":"https://api.github.com/users/RobinAmsters/following{/other_user}","gists_url":"https://api.github.com/users/RobinAmsters/gists{/gist_id}","starred_url":"https://api.github.com/users/RobinAmsters/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RobinAmsters/subscriptions","organizations_url":"https://api.github.com/users/RobinAmsters/orgs","repos_url":"https://api.github.com/users/RobinAmsters/repos","events_url":"https://api.github.com/users/RobinAmsters/events{/privacy}","received_events_url":"https://api.github.com/users/RobinAmsters/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":0,"state":"open","created_at":"2018-03-06T13:57:23Z","updated_at":"2018-03-15T09:16:43Z","due_on":"2018-03-09T08:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/27/commits","review_comments_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/27/comments","review_comment_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/comments{/number}","comments_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/issues/27/comments","statuses_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/statuses/0f8e29b470f2bd9909ab5846a892d1bef77b7912","head":{"label":"RobinAmsters:gazebo","ref":"gazebo","sha":"0f8e29b470f2bd9909ab5846a892d1bef77b7912","user":{"login":"RobinAmsters","id":24735023,"avatar_url":"https://avatars2.githubusercontent.com/u/24735023?v=4","gravatar_id":"","url":"https://api.github.com/users/RobinAmsters","html_url":"https://github.com/RobinAmsters","followers_url":"https://api.github.com/users/RobinAmsters/followers","following_url":"https://api.github.com/users/RobinAmsters/following{/other_user}","gists_url":"https://api.github.com/users/RobinAmsters/gists{/gist_id}","starred_url":"https://api.github.com/users/RobinAmsters/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RobinAmsters/subscriptions","organizations_url":"https://api.github.com/users/RobinAmsters/orgs","repos_url":"https://api.github.com/users/RobinAmsters/repos","events_url":"https://api.github.com/users/RobinAmsters/events{/privacy}","received_events_url":"https://api.github.com/users/RobinAmsters/received_events","type":"User","site_admin":false},"repo":{"id":121491298,"name":"ROS_workshop","full_name":"RobinAmsters/ROS_workshop","owner":{"login":"RobinAmsters","id":24735023,"avatar_url":"https://avatars2.githubusercontent.com/u/24735023?v=4","gravatar_id":"","url":"https://api.github.com/users/RobinAmsters","html_url":"https://github.com/RobinAmsters","followers_url":"https://api.github.com/users/RobinAmsters/followers","following_url":"https://api.github.com/users/RobinAmsters/following{/other_user}","gists_url":"https://api.github.com/users/RobinAmsters/gists{/gist_id}","starred_url":"https://api.github.com/users/RobinAmsters/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RobinAmsters/subscriptions","organizations_url":"https://api.github.com/users/RobinAmsters/orgs","repos_url":"https://api.github.com/users/RobinAmsters/repos","events_url":"https://api.github.com/users/RobinAmsters/events{/privacy}","received_events_url":"https://api.github.com/users/RobinAmsters/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/RobinAmsters/ROS_workshop","description":"Introductory one-day workshop about the Robotic Operating System (ROS)","fork":false,"url":"https://api.github.com/repos/RobinAmsters/ROS_workshop","forks_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/forks","keys_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/teams","hooks_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/hooks","issue_events_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/issues/events{/number}","events_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/events","assignees_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/assignees{/user}","branches_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/branches{/branch}","tags_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/tags","blobs_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/git/refs{/sha}","trees_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/statuses/{sha}","languages_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/languages","stargazers_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/stargazers","contributors_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/contributors","subscribers_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/subscribers","subscription_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/subscription","commits_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/commits{/sha}","git_commits_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/git/commits{/sha}","comments_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/comments{/number}","issue_comment_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/issues/comments{/number}","contents_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/contents/{+path}","compare_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/merges","archive_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/downloads","issues_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/issues{/number}","pulls_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls{/number}","milestones_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/milestones{/number}","notifications_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/labels{/name}","releases_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/releases{/id}","deployments_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/deployments","created_at":"2018-02-14T09:14:15Z","updated_at":"2018-03-27T07:49:50Z","pushed_at":"2018-03-27T08:43:43Z","git_url":"git://github.com/RobinAmsters/ROS_workshop.git","ssh_url":"git@github.com:RobinAmsters/ROS_workshop.git","clone_url":"https://github.com/RobinAmsters/ROS_workshop.git","svn_url":"https://github.com/RobinAmsters/ROS_workshop","homepage":null,"size":8597,"stargazers_count":1,"watchers_count":1,"language":"Jupyter Notebook","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":9,"license":null,"forks":1,"open_issues":9,"watchers":1,"default_branch":"master"}},"base":{"label":"RobinAmsters:master","ref":"master","sha":"c81db701b0d2b23cd752ae631978583e88120052","user":{"login":"RobinAmsters","id":24735023,"avatar_url":"https://avatars2.githubusercontent.com/u/24735023?v=4","gravatar_id":"","url":"https://api.github.com/users/RobinAmsters","html_url":"https://github.com/RobinAmsters","followers_url":"https://api.github.com/users/RobinAmsters/followers","following_url":"https://api.github.com/users/RobinAmsters/following{/other_user}","gists_url":"https://api.github.com/users/RobinAmsters/gists{/gist_id}","starred_url":"https://api.github.com/users/RobinAmsters/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RobinAmsters/subscriptions","organizations_url":"https://api.github.com/users/RobinAmsters/orgs","repos_url":"https://api.github.com/users/RobinAmsters/repos","events_url":"https://api.github.com/users/RobinAmsters/events{/privacy}","received_events_url":"https://api.github.com/users/RobinAmsters/received_events","type":"User","site_admin":false},"repo":{"id":121491298,"name":"ROS_workshop","full_name":"RobinAmsters/ROS_workshop","owner":{"login":"RobinAmsters","id":24735023,"avatar_url":"https://avatars2.githubusercontent.com/u/24735023?v=4","gravatar_id":"","url":"https://api.github.com/users/RobinAmsters","html_url":"https://github.com/RobinAmsters","followers_url":"https://api.github.com/users/RobinAmsters/followers","following_url":"https://api.github.com/users/RobinAmsters/following{/other_user}","gists_url":"https://api.github.com/users/RobinAmsters/gists{/gist_id}","starred_url":"https://api.github.com/users/RobinAmsters/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RobinAmsters/subscriptions","organizations_url":"https://api.github.com/users/RobinAmsters/orgs","repos_url":"https://api.github.com/users/RobinAmsters/repos","events_url":"https://api.github.com/users/RobinAmsters/events{/privacy}","received_events_url":"https://api.github.com/users/RobinAmsters/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/RobinAmsters/ROS_workshop","description":"Introductory one-day workshop about the Robotic Operating System (ROS)","fork":false,"url":"https://api.github.com/repos/RobinAmsters/ROS_workshop","forks_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/forks","keys_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/teams","hooks_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/hooks","issue_events_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/issues/events{/number}","events_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/events","assignees_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/assignees{/user}","branches_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/branches{/branch}","tags_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/tags","blobs_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/git/refs{/sha}","trees_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/statuses/{sha}","languages_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/languages","stargazers_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/stargazers","contributors_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/contributors","subscribers_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/subscribers","subscription_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/subscription","commits_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/commits{/sha}","git_commits_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/git/commits{/sha}","comments_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/comments{/number}","issue_comment_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/issues/comments{/number}","contents_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/contents/{+path}","compare_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/merges","archive_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/downloads","issues_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/issues{/number}","pulls_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls{/number}","milestones_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/milestones{/number}","notifications_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/labels{/name}","releases_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/releases{/id}","deployments_url":"https://api.github.com/repos/RobinAmsters/ROS_workshop/deployments","created_at":"2018-02-14T09:14:15Z","updated_at":"2018-03-27T07:49:50Z","pushed_at":"2018-03-27T08:43:43Z","git_url":"git://github.com/RobinAmsters/ROS_workshop.git","ssh_url":"git@github.com:RobinAmsters/ROS_workshop.git","clone_url":"https://github.com/RobinAmsters/ROS_workshop.git","svn_url":"https://github.com/RobinAmsters/ROS_workshop","homepage":null,"size":8597,"stargazers_count":1,"watchers_count":1,"language":"Jupyter Notebook","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":9,"license":null,"forks":1,"open_issues":9,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/27"},"html":{"href":"https://github.com/RobinAmsters/ROS_workshop/pull/27"},"issue":{"href":"https://api.github.com/repos/RobinAmsters/ROS_workshop/issues/27"},"comments":{"href":"https://api.github.com/repos/RobinAmsters/ROS_workshop/issues/27/comments"},"review_comments":{"href":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/27/comments"},"review_comment":{"href":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/RobinAmsters/ROS_workshop/pulls/27/commits"},"statuses":{"href":"https://api.github.com/repos/RobinAmsters/ROS_workshop/statuses/0f8e29b470f2bd9909ab5846a892d1bef77b7912"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"ratking82"}}