{"action":"created","comment":{"url":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/comments/61906894","id":61906894,"diff_hunk":"@@ -28,27 +28,265 @@ bool Task::configureHook()\n {\n     if (! TaskBase::configureHook())\n         return false;\n+\n+    // Initialize camera parameters.\n+    // The library desconsider the tangencial values, that's why only the\n+    // radial values are informed. \n+    frame_helper::CameraCalibration cal = _camera_parameters.get();\n+    cam_cal = vpCameraParameters(cal.fx, cal.fy,cal.cx,cal.cy);\n+\n+    // Set the position of the square target in a frame which origin is\n+    // centered in the middle of the square\n+    double L = _marker_size.get()/2; // 2L is the square size\n+    point[0].setWorldCoordinates(-L,  L, 0);\n+    point[1].setWorldCoordinates( L,  L, 0);\n+    point[2].setWorldCoordinates( L, -L, 0);\n+    point[3].setWorldCoordinates(-L, -L, 0);\n+\n+    //Center of the target (reference point)\n+    P.setWorldCoordinates(0, 0, 0);\n+\n+    // Define the task\n+    task.setServo(vpServo::EYEINHAND_L_cVe_eJe) ;\n+    task.setInteractionMatrixType(vpServo::CURRENT, vpServo::PSEUDO_INVERSE);\n+\n+    switch(_architecture.get().mode)\n+    {\n+        case IBVS:\n+            task.addFeature(p,pd) ;\n+            break;\n+        case PBVS:\n+            task.addFeature(t);\n+            task.addFeature(tu);\n+            break;\n+        case HVS:\n+            task.addFeature(p,pd) ;\n+            task.addFeature(depth) ;\n+            task.addFeature(tu) ;\n+    }\n+\n+    // Set the Jacobian (expressed in the end-effector frame)\n+    eJe.eye(6,6);\n+    //eJe[3][3] = 0;\n+    //eJe[5][3] = 1;\n+    task.set_eJe(eJe);\n+\n+    // Set the pose transformation between the camera and the robot frame\n+    Eigen::Affine3d camera2body;\n+    _camera2body.get(base::Time::now(), camera2body);\n+\n+    //Computes the Velocity Twist Matrix from the spatial transformation between the camera and the robot\n+    vpTranslationVector cto(camera2body.translation()[0],\n+                            camera2body.translation()[1],\n+                            camera2body.translation()[2]);\n+    vpRxyzVector cro(camera2body.rotation().eulerAngles(0,1,2)[0],\n+                     camera2body.rotation().eulerAngles(0,1,2)[1], \n+                     camera2body.rotation().eulerAngles(0,1,2)[2]);\n+    vpRotationMatrix cRo(cro); // Build the rotation matrix\n+\n+    //build the homogeneous matrix\n+    cMe.buildFrom(cto, cRo); \n+    //build and set the velocity twist matrix\n+    cVe.buildFrom(cMe);\n+    task.set_cVe(cVe);\n+\n     return true;\n }\n+\n bool Task::startHook()\n {\n     if (! TaskBase::startHook())\n         return false;\n     return true;\n }\n+\n void Task::updateHook()\n {\n     TaskBase::updateHook();\n+\n+    std::vector<base::Vector2d> corners;\n+    _marker_corners.read(corners);\n+\n+    if(state() == RUNNING)\n+    {\n+        state(WAITING_FIRST_MEASUREMENTS);\n+    }\n+\n+    if (corners.size() > 0 && state() == WAITING_FIRST_MEASUREMENTS)\n+    {\n+        // Sets the desired position of the visual feature (reference point)\n+        if (updateDesiredPose())\n+            return;\n+        updateFeatures(corners);\n+        state(CONTROLLING);\n+    }\n+    else if (corners.size() > 0 && state() == CONTROLLING)\n+    {\n+        if (updateDesiredPose())\n+            return;\n+        updateFeatures(corners);\n+\n+        // Update this jacobian in the task structure. It will be used to compute\n+        // the velocity skew (as an articular velocity)\n+        // qdot = -lambda * L^+ * cVe * eJe * (s-s*)\n+        task.set_eJe(eJe) ;\n+\n+        // Set the gain\n+        setGain();\n+\n+        // Compute the visual servoing skew vector\n+        vpColVector v;\n+        task.set_cVe(cVe);\n+        v = task.computeControlLaw() ;\n+\n+        writeVelocities(v);\n+        corners.clear();\n+    }\n }\n+\n void Task::errorHook()\n {\n     TaskBase::errorHook();\n }\n+\n void Task::stopHook()\n {\n     TaskBase::stopHook();\n }\n+\n void Task::cleanupHook()\n {\n     TaskBase::cleanupHook();\n+    \n+    task.kill();\n+}\n+\n+void Task::updateFeatures(std::vector<base::Vector2d> corners)\n+{\n+    //  Compute the initial pose\n+    pose.clearPoint();\n+\n+    for (int i=0 ; i < 4 ; i++)\n+    {\n+        base::Vector2d aux;\n+        aux = corners[i];\n+        //vpImagePoint is instanciated using (v,u) instead of (u,v)\n+        vpImagePoint a(aux[1],aux[0]);\n+        double x,y;\n+        vpPixelMeterConversion::convertPoint(cam_cal,a,x,y);\n+        point[i].set_x(x);\n+        point[i].set_y(y);\n+        pose.addPoint(point[i]) ;\n+    }\n+\n+    pose.computePose(vpPose::LAGRANGE, cMo);\n+    pose.computePose(vpPose::VIRTUAL_VS, cMo);\n+\n+    // Update Feature 1 - p\n+    // Sets the current position of the visual feature\n+    P.track(cMo);\n+    vpFeatureBuilder::create(p, P);\n+\n+    //////////////////////////////\n+    // Update Feature 2 - depth //\n+    //////////////////////////////\n+\n+    //Takes the features, calculate the intersection of the diagonals of the square and\n+    //given the camera parameters, retrieve the coordinates in meters.\n+    vpImagePoint refP;\n+    //double x,y;\n+    vpImagePoint cog[4];\n+\n+    for (int i=0; i< 4; i++)\n+    {\n+        base::Vector2d aux;\n+        aux = corners[i];\n+        //according to vpImagePoint documentation (i,j) is equivalent to (v,u)\n+        cog[i].set_ij(aux[1], aux[0]);\n+    }\n+\n+    // Compute the coordinates of the 2D reference point from the\n+    // intersection of the diagonals of the square\n+    double a1 = (cog[0].get_i()- cog[2].get_i()) /\n+        (cog[0].get_j()- cog[2].get_j());\n+    double a2 = (cog[1].get_i()- cog[3].get_i()) /\n+        (cog[1].get_j()- cog[3].get_j());\n+    double b1 = cog[0].get_i() - a1*cog[0].get_j();\n+    double b2 = cog[1].get_i() - a2*cog[1].get_j();\n+\n+    refP.set_j( (b1-b2) / (a2-a1) );\n+    refP.set_i( a1*refP.get_j() + b1 );\n+    double x,y;\n+    vpPixelMeterConversion::convertPoint(cam_cal, refP, x, y);\n+\n+    // Update the 2D ref point visual feature\n+    double Z;\n+    Z = P.get_Z();\n+    p.set_xyZ(x, y, Z);\n+    depth.buildFrom(P.get_x(), P.get_y(), Z, log(Z/Zd));\n+\n+    //////////////////////////////\n+    // Update Feature 3 - t, tu //\n+    //////////////////////////////\n+    cdMc = cdMo*cMo.inverse();\n+    t.buildFrom(cdMc);\n+    tu.buildFrom(cdMc) ;\n+\n+}\n+\n+bool Task::updateDesiredPose()\n+{\n+    // Initialise a desired pose to compute s*, the desired 2D point features\n+    base::LinearAngular6DCommand setpoint;\n+    if (_cmd_in.read(setpoint) == RTT::NewData)\n+    {\n+        vpTranslationVector cdto(setpoint.linear[0], setpoint.linear[1], setpoint.linear[2]);\n+        vpRxyzVector cdro(setpoint.angular[0], setpoint.angular[1], setpoint.angular[2]);\n+\n+        //Build the rotation and homogeneus matrix according to desired pose\n+        vpRotationMatrix cdRo(cdro); // Build the rotation matrix\n+        cdMo.buildFrom(cdto, cdRo); // Build the homogeneous matrix\n+\n+        P.track(cdMo);\n+        vpFeatureBuilder::create(pd, P);\n+        Zd = P.get_Z();\n+    }\n+    else\n+    {\n+        exception(MISSING_SETPOINT);","path":"tasks/Task.cpp","position":259,"original_position":257,"commit_id":"0a8c906cf13d7f5ecc278195c89131a852997a54","original_commit_id":"e3d9bdc9922156a5cf0e307502de21adc3125f61","user":{"login":"doudou","id":292,"avatar_url":"https://avatars.githubusercontent.com/u/292?v=3","gravatar_id":"","url":"https://api.github.com/users/doudou","html_url":"https://github.com/doudou","followers_url":"https://api.github.com/users/doudou/followers","following_url":"https://api.github.com/users/doudou/following{/other_user}","gists_url":"https://api.github.com/users/doudou/gists{/gist_id}","starred_url":"https://api.github.com/users/doudou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/doudou/subscriptions","organizations_url":"https://api.github.com/users/doudou/orgs","repos_url":"https://api.github.com/users/doudou/repos","events_url":"https://api.github.com/users/doudou/events{/privacy}","received_events_url":"https://api.github.com/users/doudou/received_events","type":"User","site_admin":false},"body":"If there's no data, there is no change to the variable. Always test against the return value of read()","created_at":"2016-05-03T15:57:08Z","updated_at":"2016-05-03T15:57:08Z","html_url":"https://github.com/rock-control/control-orogen-visp/pull/1#discussion_r61906894","pull_request_url":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/comments/61906894"},"html":{"href":"https://github.com/rock-control/control-orogen-visp/pull/1#discussion_r61906894"},"pull_request":{"href":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/1","id":61741608,"html_url":"https://github.com/rock-control/control-orogen-visp/pull/1","diff_url":"https://github.com/rock-control/control-orogen-visp/pull/1.diff","patch_url":"https://github.com/rock-control/control-orogen-visp/pull/1.patch","issue_url":"https://api.github.com/repos/rock-control/control-orogen-visp/issues/1","number":1,"state":"open","locked":false,"title":"first version of the component","user":{"login":"dbcesar","id":8384920,"avatar_url":"https://avatars.githubusercontent.com/u/8384920?v=3","gravatar_id":"","url":"https://api.github.com/users/dbcesar","html_url":"https://github.com/dbcesar","followers_url":"https://api.github.com/users/dbcesar/followers","following_url":"https://api.github.com/users/dbcesar/following{/other_user}","gists_url":"https://api.github.com/users/dbcesar/gists{/gist_id}","starred_url":"https://api.github.com/users/dbcesar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbcesar/subscriptions","organizations_url":"https://api.github.com/users/dbcesar/orgs","repos_url":"https://api.github.com/users/dbcesar/repos","events_url":"https://api.github.com/users/dbcesar/events{/privacy}","received_events_url":"https://api.github.com/users/dbcesar/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-03-04T17:10:53Z","updated_at":"2016-05-03T15:57:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"65c9910337e1000bd089e0046cc9ca6bcf2602e3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/1/commits","review_comments_url":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/1/comments","review_comment_url":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rock-control/control-orogen-visp/issues/1/comments","statuses_url":"https://api.github.com/repos/rock-control/control-orogen-visp/statuses/0a8c906cf13d7f5ecc278195c89131a852997a54","head":{"label":"rock-control:initial_version","ref":"initial_version","sha":"0a8c906cf13d7f5ecc278195c89131a852997a54","user":{"login":"rock-control","id":7403553,"avatar_url":"https://avatars.githubusercontent.com/u/7403553?v=3","gravatar_id":"","url":"https://api.github.com/users/rock-control","html_url":"https://github.com/rock-control","followers_url":"https://api.github.com/users/rock-control/followers","following_url":"https://api.github.com/users/rock-control/following{/other_user}","gists_url":"https://api.github.com/users/rock-control/gists{/gist_id}","starred_url":"https://api.github.com/users/rock-control/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rock-control/subscriptions","organizations_url":"https://api.github.com/users/rock-control/orgs","repos_url":"https://api.github.com/users/rock-control/repos","events_url":"https://api.github.com/users/rock-control/events{/privacy}","received_events_url":"https://api.github.com/users/rock-control/received_events","type":"Organization","site_admin":false},"repo":{"id":52088951,"name":"control-orogen-visp","full_name":"rock-control/control-orogen-visp","owner":{"login":"rock-control","id":7403553,"avatar_url":"https://avatars.githubusercontent.com/u/7403553?v=3","gravatar_id":"","url":"https://api.github.com/users/rock-control","html_url":"https://github.com/rock-control","followers_url":"https://api.github.com/users/rock-control/followers","following_url":"https://api.github.com/users/rock-control/following{/other_user}","gists_url":"https://api.github.com/users/rock-control/gists{/gist_id}","starred_url":"https://api.github.com/users/rock-control/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rock-control/subscriptions","organizations_url":"https://api.github.com/users/rock-control/orgs","repos_url":"https://api.github.com/users/rock-control/repos","events_url":"https://api.github.com/users/rock-control/events{/privacy}","received_events_url":"https://api.github.com/users/rock-control/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rock-control/control-orogen-visp","description":"oroGen integration of VISP, a visual servoing library","fork":false,"url":"https://api.github.com/repos/rock-control/control-orogen-visp","forks_url":"https://api.github.com/repos/rock-control/control-orogen-visp/forks","keys_url":"https://api.github.com/repos/rock-control/control-orogen-visp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rock-control/control-orogen-visp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rock-control/control-orogen-visp/teams","hooks_url":"https://api.github.com/repos/rock-control/control-orogen-visp/hooks","issue_events_url":"https://api.github.com/repos/rock-control/control-orogen-visp/issues/events{/number}","events_url":"https://api.github.com/repos/rock-control/control-orogen-visp/events","assignees_url":"https://api.github.com/repos/rock-control/control-orogen-visp/assignees{/user}","branches_url":"https://api.github.com/repos/rock-control/control-orogen-visp/branches{/branch}","tags_url":"https://api.github.com/repos/rock-control/control-orogen-visp/tags","blobs_url":"https://api.github.com/repos/rock-control/control-orogen-visp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rock-control/control-orogen-visp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rock-control/control-orogen-visp/git/refs{/sha}","trees_url":"https://api.github.com/repos/rock-control/control-orogen-visp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rock-control/control-orogen-visp/statuses/{sha}","languages_url":"https://api.github.com/repos/rock-control/control-orogen-visp/languages","stargazers_url":"https://api.github.com/repos/rock-control/control-orogen-visp/stargazers","contributors_url":"https://api.github.com/repos/rock-control/control-orogen-visp/contributors","subscribers_url":"https://api.github.com/repos/rock-control/control-orogen-visp/subscribers","subscription_url":"https://api.github.com/repos/rock-control/control-orogen-visp/subscription","commits_url":"https://api.github.com/repos/rock-control/control-orogen-visp/commits{/sha}","git_commits_url":"https://api.github.com/repos/rock-control/control-orogen-visp/git/commits{/sha}","comments_url":"https://api.github.com/repos/rock-control/control-orogen-visp/comments{/number}","issue_comment_url":"https://api.github.com/repos/rock-control/control-orogen-visp/issues/comments{/number}","contents_url":"https://api.github.com/repos/rock-control/control-orogen-visp/contents/{+path}","compare_url":"https://api.github.com/repos/rock-control/control-orogen-visp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rock-control/control-orogen-visp/merges","archive_url":"https://api.github.com/repos/rock-control/control-orogen-visp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rock-control/control-orogen-visp/downloads","issues_url":"https://api.github.com/repos/rock-control/control-orogen-visp/issues{/number}","pulls_url":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls{/number}","milestones_url":"https://api.github.com/repos/rock-control/control-orogen-visp/milestones{/number}","notifications_url":"https://api.github.com/repos/rock-control/control-orogen-visp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rock-control/control-orogen-visp/labels{/name}","releases_url":"https://api.github.com/repos/rock-control/control-orogen-visp/releases{/id}","deployments_url":"https://api.github.com/repos/rock-control/control-orogen-visp/deployments","created_at":"2016-02-19T13:20:24Z","updated_at":"2016-03-04T17:08:51Z","pushed_at":"2016-05-02T17:42:32Z","git_url":"git://github.com/rock-control/control-orogen-visp.git","ssh_url":"git@github.com:rock-control/control-orogen-visp.git","clone_url":"https://github.com/rock-control/control-orogen-visp.git","svn_url":"https://github.com/rock-control/control-orogen-visp","homepage":null,"size":23,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":1,"forks":1,"open_issues":1,"watchers":0,"default_branch":"initial_version"}},"base":{"label":"rock-control:master","ref":"master","sha":"4b7f4f5e7eea1fbd3ed3bf60823d6d7c3683e353","user":{"login":"rock-control","id":7403553,"avatar_url":"https://avatars.githubusercontent.com/u/7403553?v=3","gravatar_id":"","url":"https://api.github.com/users/rock-control","html_url":"https://github.com/rock-control","followers_url":"https://api.github.com/users/rock-control/followers","following_url":"https://api.github.com/users/rock-control/following{/other_user}","gists_url":"https://api.github.com/users/rock-control/gists{/gist_id}","starred_url":"https://api.github.com/users/rock-control/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rock-control/subscriptions","organizations_url":"https://api.github.com/users/rock-control/orgs","repos_url":"https://api.github.com/users/rock-control/repos","events_url":"https://api.github.com/users/rock-control/events{/privacy}","received_events_url":"https://api.github.com/users/rock-control/received_events","type":"Organization","site_admin":false},"repo":{"id":52088951,"name":"control-orogen-visp","full_name":"rock-control/control-orogen-visp","owner":{"login":"rock-control","id":7403553,"avatar_url":"https://avatars.githubusercontent.com/u/7403553?v=3","gravatar_id":"","url":"https://api.github.com/users/rock-control","html_url":"https://github.com/rock-control","followers_url":"https://api.github.com/users/rock-control/followers","following_url":"https://api.github.com/users/rock-control/following{/other_user}","gists_url":"https://api.github.com/users/rock-control/gists{/gist_id}","starred_url":"https://api.github.com/users/rock-control/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rock-control/subscriptions","organizations_url":"https://api.github.com/users/rock-control/orgs","repos_url":"https://api.github.com/users/rock-control/repos","events_url":"https://api.github.com/users/rock-control/events{/privacy}","received_events_url":"https://api.github.com/users/rock-control/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rock-control/control-orogen-visp","description":"oroGen integration of VISP, a visual servoing library","fork":false,"url":"https://api.github.com/repos/rock-control/control-orogen-visp","forks_url":"https://api.github.com/repos/rock-control/control-orogen-visp/forks","keys_url":"https://api.github.com/repos/rock-control/control-orogen-visp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rock-control/control-orogen-visp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rock-control/control-orogen-visp/teams","hooks_url":"https://api.github.com/repos/rock-control/control-orogen-visp/hooks","issue_events_url":"https://api.github.com/repos/rock-control/control-orogen-visp/issues/events{/number}","events_url":"https://api.github.com/repos/rock-control/control-orogen-visp/events","assignees_url":"https://api.github.com/repos/rock-control/control-orogen-visp/assignees{/user}","branches_url":"https://api.github.com/repos/rock-control/control-orogen-visp/branches{/branch}","tags_url":"https://api.github.com/repos/rock-control/control-orogen-visp/tags","blobs_url":"https://api.github.com/repos/rock-control/control-orogen-visp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rock-control/control-orogen-visp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rock-control/control-orogen-visp/git/refs{/sha}","trees_url":"https://api.github.com/repos/rock-control/control-orogen-visp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rock-control/control-orogen-visp/statuses/{sha}","languages_url":"https://api.github.com/repos/rock-control/control-orogen-visp/languages","stargazers_url":"https://api.github.com/repos/rock-control/control-orogen-visp/stargazers","contributors_url":"https://api.github.com/repos/rock-control/control-orogen-visp/contributors","subscribers_url":"https://api.github.com/repos/rock-control/control-orogen-visp/subscribers","subscription_url":"https://api.github.com/repos/rock-control/control-orogen-visp/subscription","commits_url":"https://api.github.com/repos/rock-control/control-orogen-visp/commits{/sha}","git_commits_url":"https://api.github.com/repos/rock-control/control-orogen-visp/git/commits{/sha}","comments_url":"https://api.github.com/repos/rock-control/control-orogen-visp/comments{/number}","issue_comment_url":"https://api.github.com/repos/rock-control/control-orogen-visp/issues/comments{/number}","contents_url":"https://api.github.com/repos/rock-control/control-orogen-visp/contents/{+path}","compare_url":"https://api.github.com/repos/rock-control/control-orogen-visp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rock-control/control-orogen-visp/merges","archive_url":"https://api.github.com/repos/rock-control/control-orogen-visp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rock-control/control-orogen-visp/downloads","issues_url":"https://api.github.com/repos/rock-control/control-orogen-visp/issues{/number}","pulls_url":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls{/number}","milestones_url":"https://api.github.com/repos/rock-control/control-orogen-visp/milestones{/number}","notifications_url":"https://api.github.com/repos/rock-control/control-orogen-visp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rock-control/control-orogen-visp/labels{/name}","releases_url":"https://api.github.com/repos/rock-control/control-orogen-visp/releases{/id}","deployments_url":"https://api.github.com/repos/rock-control/control-orogen-visp/deployments","created_at":"2016-02-19T13:20:24Z","updated_at":"2016-03-04T17:08:51Z","pushed_at":"2016-05-02T17:42:32Z","git_url":"git://github.com/rock-control/control-orogen-visp.git","ssh_url":"git@github.com:rock-control/control-orogen-visp.git","clone_url":"https://github.com/rock-control/control-orogen-visp.git","svn_url":"https://github.com/rock-control/control-orogen-visp","homepage":null,"size":23,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":1,"forks":1,"open_issues":1,"watchers":0,"default_branch":"initial_version"}},"_links":{"self":{"href":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/1"},"html":{"href":"https://github.com/rock-control/control-orogen-visp/pull/1"},"issue":{"href":"https://api.github.com/repos/rock-control/control-orogen-visp/issues/1"},"comments":{"href":"https://api.github.com/repos/rock-control/control-orogen-visp/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rock-control/control-orogen-visp/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/rock-control/control-orogen-visp/statuses/0a8c906cf13d7f5ecc278195c89131a852997a54"}}}}