{"action":"created","comment":{"url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/comments/228582473","pull_request_review_id":168881695,"id":228582473,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyODU4MjQ3Mw==","diff_hunk":"@@ -16,147 +16,155 @@ LinkAttacherServerImpl::LinkAttacherServerImpl()\n LinkAttacherServerImpl::~LinkAttacherServerImpl()\n {}\n \n-bool LinkAttacherServerImpl::attachUnscoped(const string& model_name, const std::string& model_link_name, const std::string& robot_name, const string& robot_link_name)\n+bool LinkAttacherServerImpl::attachUnscoped(const string& parent_model_name, const string& parent_model_link_name, const string& child_model_name, const string& child_model_link_name)\n {\n-\n     #if GAZEBO_MAJOR_VERSION >= 8\n-    gazebo::physics::ModelPtr object_model = _world->ModelByName(model_name);\n+    gazebo::physics::ModelPtr parent_model = _world->ModelByName(parent_model_name);\n     #else\n-    gazebo::physics::ModelPtr object_model = _world->GetModel(model_name);\n+    gazebo::physics::ModelPtr parent_model = _world->GetModel(parent_model_name);\n     #endif\n \n-    if(!object_model)\n+    if(!parent_model)\n     {\n-        yError() << LogPrefix << \"Attach: \" << model_name << \" does not exist in gazebo\";\n+        yError() << LogPrefix << \"Attach: \" << parent_model_name << \" model does not exist in gazebo\";\n         return false;\n     }\n     else\n     {\n-      yInfo() << LogPrefix << \"Attach: \" << object_model->GetName() << \" found\";\n+      yInfo() << LogPrefix << \"Attach: \" << parent_model->GetName() << \" model found\";\n     }\n \n-    gazebo::physics::LinkPtr object_link = object_model->GetLink(model_link_name);\n-    if(!object_link)\n+    //Get the exact link with only link name instead of full_scoped_link_name\n+    gazebo::physics::Link_V parent_model_links = parent_model->GetLinks();\n+    gazebo::physics::LinkPtr parent_model_link;\n+    for(int i=0; i < parent_model_links.size(); i++)\n     {\n-        yError() << LogPrefix << \"Attach: \" << model_link_name << \" is not found\";\n-        return false;\n+        std::string candidate_parent_model_link_name = parent_model_links[i]->GetScopedName();\n+\n+        if(GazeboYarpPlugins::hasEnding(candidate_parent_model_link_name, parent_model_link_name))\n+        {\n+            parent_model_link = parent_model_links[i];\n+            yInfo() << LogPrefix << \"Attach: \" << parent_model_link->GetName() << \" link found\";\n+            break;\n+        }\n     }\n-    else\n+    if(!parent_model_link)\n     {\n-      yInfo() << LogPrefix << \"Attach: \" << object_link->GetName() << \" found\";\n+    \tyError() << LogPrefix << \"Attach: \" << parent_model_link_name << \" link is not found\";\n+    \treturn false;\n     }\n \n     #if GAZEBO_MAJOR_VERSION >= 8\n-    gazebo::physics::ModelPtr robot_model = _world->ModelByName(robot_name);\n+    gazebo::physics::ModelPtr child_model = _world->ModelByName(child_model_name);\n     #else\n-    gazebo::physics::ModelPtr robot_model = _world->GetModel(robot_name);\n+    gazebo::physics::ModelPtr child_model = _world->GetModel(child_model_name);\n     #endif\n \n-    if(!robot_model)\n+    if(!child_model)\n     {\n-        yError() << LogPrefix << \"Attach: \" << robot_name << \" does not exist in gazebo\";\n+        yError() << LogPrefix << \"Attach: \" << child_model_name << \" model does not exist in gazebo\";\n         return false;\n     }\n     else\n     {\n-      yInfo() << LogPrefix << \"Attach: \" << robot_model->GetName() << \" found\";\n+      yInfo() << LogPrefix << \"Attach: \" << child_model->GetName() << \" model found\";\n     }\n \n     //Get the exact link with only link name instead of full_scoped_link_name\n-    gazebo::physics::Link_V robot_model_links = robot_model->GetLinks();\n-    for(int i=0; i < robot_model_links.size(); i++)\n+    gazebo::physics::Link_V child_model_links = child_model->GetLinks();\n+    gazebo::physics::LinkPtr child_model_link;\n+    for(int i=0; i < child_model_links.size(); i++)\n     {\n-        //E.g iCub::l_hand::l_hand_base_link\n-\n-        std::string candidate_robot_link_name = robot_model_links[i]->GetScopedName();\n+        std::string candidate_child_model_link_name = child_model_links[i]->GetScopedName();\n \n-        std::size_t lastcolon = candidate_robot_link_name.rfind(\":\");\n-        std::string unscoped_robot_link_name = candidate_robot_link_name.substr(lastcolon+1,std::string::npos);\n-\n-        if(unscoped_robot_link_name == robot_link_name)\n+        if(GazeboYarpPlugins::hasEnding(candidate_child_model_link_name, child_model_link_name))\n         {\n-            yInfo() << LogPrefix << \"Attach: Full scoped Candidate robot link name: \" << candidate_robot_link_name << \" found\";\n-            gazebo::physics::LinkPtr robot_link = robot_model_links[i];\n-            if(!robot_link)\n-            {\n-                yError() << LogPrefix << \"Attach: \" << robot_link_name << \" is not found\";\n-                return false;\n-            }\n-            else\n-            {\n-              yInfo() << LogPrefix << \"Attach: \" << robot_link->GetName() << \" found\";\n-            }\n-\n-            //This is joint creation\n-            gazebo::physics::JointPtr joint;\n+            child_model_link = child_model_links[i];\n+            yInfo() << LogPrefix << \"Attach: \" << child_model_link->GetName() << \" link found\";\n+            break;\n+        }\n+    }\n+    if(!child_model_link)\n+    {\n+    \tyError() << LogPrefix << \"Attach: \" << child_model_link_name << \" link is not found\";\n+    \treturn false;\n+    }\n \n-            #if GAZEBO_MAJOR_VERSION >= 8\n-            joint = _world->Physics()->CreateJoint(\"fixed\",object_model);\n-            #else\n-            joint = _world->GetPhysicsEngine()->CreateJoint(\"fixed\",object_model);\n-            #endif\n+    //This is joint creation\n+    gazebo::physics::JointPtr joint;\n \n-            if(!joint)\n-            {\n-                yError() << LogPrefix << \"Attach: Unable to create joint\";\n-                return false;\n-            }\n+    #if GAZEBO_MAJOR_VERSION >= 8\n+    joint = _world->Physics()->CreateJoint(\"fixed\",parent_model);\n+    #else\n+    joint = _world->GetPhysicsEngine()->CreateJoint(\"fixed\",parent_model);\n+    #endif\n \n-            std::string joint_name = model_link_name + \"_magnet_joint\";\n-            joint->SetName(joint_name);\n-            yInfo() << LogPrefix << \"Attach: Magnet joint: \" << joint->GetName() << \" created\";\n+    if(!joint)\n+    {\n+        yError() << LogPrefix << \"Attach: Unable to create joint\";\n+        return false;\n+    }\n \n-            joint->SetModel(object_model);\n+    std::string joint_name = parent_model_link_name + \"_magnet_joint\";\n+    joint->SetName(joint_name);\n+    yInfo() << LogPrefix << \"Attach: Magnet joint: \" << joint->GetName() << \" created\";\n \n-            #if GAZEBO_MAJOR_VERSION >= 8\n-            joint->Load(object_link,robot_link,ignition::math::Pose3d());\n-            #else\n-            joint->Load(object_link,robot_link,gazebo::math::Pose());\n-            #endif\n+    joint->SetModel(parent_model);\n \n-            //Attach(prent_link,child_link)\n-            joint->Attach(object_link,robot_link);\n+    #if GAZEBO_MAJOR_VERSION >= 8\n+    joint->Load(parent_model_link,child_model_link,ignition::math::Pose3d());\n+    #else\n+    joint->Load(parent_model_link,child_model_link,gazebo::math::Pose());\n+    #endif\n \n-            break;\n-        }\n-    }\n+    //Attach(prent_link,child_link)","path":"plugins/linkattacher/src/linkattacherserverimpl.cpp","position":170,"original_position":170,"commit_id":"10b8c6d127ffe80eb75f32c8efbdd0b76d032ca9","original_commit_id":"10b8c6d127ffe80eb75f32c8efbdd0b76d032ca9","user":{"login":"Yeshasvitvs","id":6505998,"node_id":"MDQ6VXNlcjY1MDU5OTg=","avatar_url":"https://avatars2.githubusercontent.com/u/6505998?v=4","gravatar_id":"","url":"https://api.github.com/users/Yeshasvitvs","html_url":"https://github.com/Yeshasvitvs","followers_url":"https://api.github.com/users/Yeshasvitvs/followers","following_url":"https://api.github.com/users/Yeshasvitvs/following{/other_user}","gists_url":"https://api.github.com/users/Yeshasvitvs/gists{/gist_id}","starred_url":"https://api.github.com/users/Yeshasvitvs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Yeshasvitvs/subscriptions","organizations_url":"https://api.github.com/users/Yeshasvitvs/orgs","repos_url":"https://api.github.com/users/Yeshasvitvs/repos","events_url":"https://api.github.com/users/Yeshasvitvs/events{/privacy}","received_events_url":"https://api.github.com/users/Yeshasvitvs/received_events","type":"User","site_admin":false},"body":"my bad `parent` misspelled  :see_no_evil: ","created_at":"2018-10-26T16:04:38Z","updated_at":"2018-10-26T16:06:51Z","html_url":"https://github.com/robotology/gazebo-yarp-plugins/pull/393#discussion_r228582473","pull_request_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/393","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/comments/228582473"},"html":{"href":"https://github.com/robotology/gazebo-yarp-plugins/pull/393#discussion_r228582473"},"pull_request":{"href":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/393"}}},"pull_request":{"url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/393","id":225824217,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI1ODI0MjE3","html_url":"https://github.com/robotology/gazebo-yarp-plugins/pull/393","diff_url":"https://github.com/robotology/gazebo-yarp-plugins/pull/393.diff","patch_url":"https://github.com/robotology/gazebo-yarp-plugins/pull/393.patch","issue_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/issues/393","number":393,"state":"open","locked":false,"title":"Refactoring of linkattacher plugin","user":{"login":"lrapetti","id":35487806,"node_id":"MDQ6VXNlcjM1NDg3ODA2","avatar_url":"https://avatars2.githubusercontent.com/u/35487806?v=4","gravatar_id":"","url":"https://api.github.com/users/lrapetti","html_url":"https://github.com/lrapetti","followers_url":"https://api.github.com/users/lrapetti/followers","following_url":"https://api.github.com/users/lrapetti/following{/other_user}","gists_url":"https://api.github.com/users/lrapetti/gists{/gist_id}","starred_url":"https://api.github.com/users/lrapetti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lrapetti/subscriptions","organizations_url":"https://api.github.com/users/lrapetti/orgs","repos_url":"https://api.github.com/users/lrapetti/repos","events_url":"https://api.github.com/users/lrapetti/events{/privacy}","received_events_url":"https://api.github.com/users/lrapetti/received_events","type":"User","site_admin":false},"body":"As it was originally implemented, the `linkattacher` device was though to attach the link of a robot (`robot_model`) to that of an object (`object_model`).\r\n\r\nIn order to have a general device (to be used for example in order to simulate contacts in robot-robot interaction), it was not only necessary to change the name of the variables to more proper names (`parent_model` and `child_model`) but it was also necessary to be able to detect the link of both the models from scoped names (to understand why see https://github.com/robotology/gazebo-yarp-plugins/issues/342 ) instead of using [`GetLink()`](https://github.com/robotology/gazebo-yarp-plugins/compare/devel...lrapetti:linkattacher_refactoring?expand=1#diff-7e1089c30889bd5585eeb97aae62e840L38).\r\n\r\nIn addiction, I have used the [hasEnding()](https://github.com/robotology/gazebo-yarp-plugins/blob/master/libraries/common/include/GazeboYarpPlugins/common.h#L52) in place of the previous implementation of the search of the link from unscoped name, in this way it is possible to use both the scoped or unscoped name as input (this can be helpful to distinguish between links with the same unscoped name).\r\n\r\n#### Further Implementation\r\nGiven that the search for the link from `model_name` and `link_name` is repeated along the code, and could be useful also for other plugins, I was thinking that it would be better to have this function defined only once in a shared place ([`common.h`](https://github.com/robotology/gazebo-yarp-plugins/blob/master/libraries/common/include/GazeboYarpPlugins/common.h)??) as something like:\r\n```\r\ngazebo::physics::LinkPtr GetLinkFromName(const string& model_name, const string& link_name)\r\n```","created_at":"2018-10-25T16:24:32Z","updated_at":"2018-10-26T16:06:50Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3bf500d893263eedf2ae23bab884dfaa1b0f5168","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/393/commits","review_comments_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/393/comments","review_comment_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/comments{/number}","comments_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/issues/393/comments","statuses_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/statuses/10b8c6d127ffe80eb75f32c8efbdd0b76d032ca9","head":{"label":"lrapetti:linkattacher_refactoring","ref":"linkattacher_refactoring","sha":"10b8c6d127ffe80eb75f32c8efbdd0b76d032ca9","user":{"login":"lrapetti","id":35487806,"node_id":"MDQ6VXNlcjM1NDg3ODA2","avatar_url":"https://avatars2.githubusercontent.com/u/35487806?v=4","gravatar_id":"","url":"https://api.github.com/users/lrapetti","html_url":"https://github.com/lrapetti","followers_url":"https://api.github.com/users/lrapetti/followers","following_url":"https://api.github.com/users/lrapetti/following{/other_user}","gists_url":"https://api.github.com/users/lrapetti/gists{/gist_id}","starred_url":"https://api.github.com/users/lrapetti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lrapetti/subscriptions","organizations_url":"https://api.github.com/users/lrapetti/orgs","repos_url":"https://api.github.com/users/lrapetti/repos","events_url":"https://api.github.com/users/lrapetti/events{/privacy}","received_events_url":"https://api.github.com/users/lrapetti/received_events","type":"User","site_admin":false},"repo":{"id":154699224,"node_id":"MDEwOlJlcG9zaXRvcnkxNTQ2OTkyMjQ=","name":"gazebo-yarp-plugins","full_name":"lrapetti/gazebo-yarp-plugins","private":false,"owner":{"login":"lrapetti","id":35487806,"node_id":"MDQ6VXNlcjM1NDg3ODA2","avatar_url":"https://avatars2.githubusercontent.com/u/35487806?v=4","gravatar_id":"","url":"https://api.github.com/users/lrapetti","html_url":"https://github.com/lrapetti","followers_url":"https://api.github.com/users/lrapetti/followers","following_url":"https://api.github.com/users/lrapetti/following{/other_user}","gists_url":"https://api.github.com/users/lrapetti/gists{/gist_id}","starred_url":"https://api.github.com/users/lrapetti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lrapetti/subscriptions","organizations_url":"https://api.github.com/users/lrapetti/orgs","repos_url":"https://api.github.com/users/lrapetti/repos","events_url":"https://api.github.com/users/lrapetti/events{/privacy}","received_events_url":"https://api.github.com/users/lrapetti/received_events","type":"User","site_admin":false},"html_url":"https://github.com/lrapetti/gazebo-yarp-plugins","description":"Plugins to interface Gazebo with YARP.","fork":true,"url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins","forks_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/forks","keys_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/teams","hooks_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/hooks","issue_events_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/issues/events{/number}","events_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/events","assignees_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/assignees{/user}","branches_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/branches{/branch}","tags_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/tags","blobs_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/git/refs{/sha}","trees_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/statuses/{sha}","languages_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/languages","stargazers_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/stargazers","contributors_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/contributors","subscribers_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/subscribers","subscription_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/subscription","commits_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/commits{/sha}","git_commits_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/git/commits{/sha}","comments_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/comments{/number}","issue_comment_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/issues/comments{/number}","contents_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/contents/{+path}","compare_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/merges","archive_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/downloads","issues_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/issues{/number}","pulls_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/pulls{/number}","milestones_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/milestones{/number}","notifications_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/labels{/name}","releases_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/releases{/id}","deployments_url":"https://api.github.com/repos/lrapetti/gazebo-yarp-plugins/deployments","created_at":"2018-10-25T15:59:52Z","updated_at":"2018-10-25T15:59:55Z","pushed_at":"2018-10-26T12:34:49Z","git_url":"git://github.com/lrapetti/gazebo-yarp-plugins.git","ssh_url":"git@github.com:lrapetti/gazebo-yarp-plugins.git","clone_url":"https://github.com/lrapetti/gazebo-yarp-plugins.git","svn_url":"https://github.com/lrapetti/gazebo-yarp-plugins","homepage":"","size":5859,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"robotology:devel","ref":"devel","sha":"154f236e16a18bcc5ef9a9dd26d1a4c8792d8cac","user":{"login":"robotology","id":1587191,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1ODcxOTE=","avatar_url":"https://avatars2.githubusercontent.com/u/1587191?v=4","gravatar_id":"","url":"https://api.github.com/users/robotology","html_url":"https://github.com/robotology","followers_url":"https://api.github.com/users/robotology/followers","following_url":"https://api.github.com/users/robotology/following{/other_user}","gists_url":"https://api.github.com/users/robotology/gists{/gist_id}","starred_url":"https://api.github.com/users/robotology/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robotology/subscriptions","organizations_url":"https://api.github.com/users/robotology/orgs","repos_url":"https://api.github.com/users/robotology/repos","events_url":"https://api.github.com/users/robotology/events{/privacy}","received_events_url":"https://api.github.com/users/robotology/received_events","type":"Organization","site_admin":false},"repo":{"id":13478387,"node_id":"MDEwOlJlcG9zaXRvcnkxMzQ3ODM4Nw==","name":"gazebo-yarp-plugins","full_name":"robotology/gazebo-yarp-plugins","private":false,"owner":{"login":"robotology","id":1587191,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1ODcxOTE=","avatar_url":"https://avatars2.githubusercontent.com/u/1587191?v=4","gravatar_id":"","url":"https://api.github.com/users/robotology","html_url":"https://github.com/robotology","followers_url":"https://api.github.com/users/robotology/followers","following_url":"https://api.github.com/users/robotology/following{/other_user}","gists_url":"https://api.github.com/users/robotology/gists{/gist_id}","starred_url":"https://api.github.com/users/robotology/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robotology/subscriptions","organizations_url":"https://api.github.com/users/robotology/orgs","repos_url":"https://api.github.com/users/robotology/repos","events_url":"https://api.github.com/users/robotology/events{/privacy}","received_events_url":"https://api.github.com/users/robotology/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/robotology/gazebo-yarp-plugins","description":"Plugins to interface Gazebo with YARP.","fork":false,"url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins","forks_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/forks","keys_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/keys{/key_id}","collaborators_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/teams","hooks_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/hooks","issue_events_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/issues/events{/number}","events_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/events","assignees_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/assignees{/user}","branches_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/branches{/branch}","tags_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/tags","blobs_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/git/refs{/sha}","trees_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/git/trees{/sha}","statuses_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/statuses/{sha}","languages_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/languages","stargazers_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/stargazers","contributors_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/contributors","subscribers_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/subscribers","subscription_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/subscription","commits_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/commits{/sha}","git_commits_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/git/commits{/sha}","comments_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/comments{/number}","issue_comment_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/issues/comments{/number}","contents_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/contents/{+path}","compare_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/compare/{base}...{head}","merges_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/merges","archive_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/downloads","issues_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/issues{/number}","pulls_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls{/number}","milestones_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/milestones{/number}","notifications_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/labels{/name}","releases_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/releases{/id}","deployments_url":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/deployments","created_at":"2013-10-10T17:42:38Z","updated_at":"2018-10-19T09:08:46Z","pushed_at":"2018-10-26T12:34:50Z","git_url":"git://github.com/robotology/gazebo-yarp-plugins.git","ssh_url":"git@github.com:robotology/gazebo-yarp-plugins.git","clone_url":"https://github.com/robotology/gazebo-yarp-plugins.git","svn_url":"https://github.com/robotology/gazebo-yarp-plugins","homepage":"","size":5866,"stargazers_count":13,"watchers_count":13,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":25,"mirror_url":null,"archived":false,"open_issues_count":56,"license":null,"forks":25,"open_issues":56,"watchers":13,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/393"},"html":{"href":"https://github.com/robotology/gazebo-yarp-plugins/pull/393"},"issue":{"href":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/issues/393"},"comments":{"href":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/issues/393/comments"},"review_comments":{"href":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/393/comments"},"review_comment":{"href":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/pulls/393/commits"},"statuses":{"href":"https://api.github.com/repos/robotology/gazebo-yarp-plugins/statuses/10b8c6d127ffe80eb75f32c8efbdd0b76d032ca9"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"Yeshasvitvs"}}