{"action":"created","comment":{"url":"https://api.github.com/repos/CPFL/Autoware/pulls/comments/231398017","pull_request_review_id":172359111,"id":231398017,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzMTM5ODAxNw==","diff_hunk":"@@ -1,145 +1,152 @@\n #ifndef __STATE_HPP__\n #define __STATE_HPP__\n \n+#include <cassert>\n #include <functional>\n #include <iostream>\n #include <memory>\n-#include <state_machine_lib/state_flags.hpp>\n #include <vector>\n \n+#include <yaml-cpp/yaml.h>\n+#include <state_machine_lib/state_common.hpp>\n+#include <state_machine_lib/state_flags.hpp>\n+\n namespace state_machine\n {\n-class StartState;\n-class InitialState;\n-class LocateVehicleState;\n-\n-class DriveState;\n-// Accel/Brake subState\n-class DriveAccAccelerationState;\n-class DriveAccDecelerationState;\n-class DriveAccKeepState;\n-class DriveAccStopState;\n-// Steering subState\n-class DriveStrStraightState;\n-class DriveStrLeftTurnState;\n-class DriveStrRightTurnState;\n-\n-// Behavior subState\n-class DriveBehaviorLaneChangeLeftState;\n-class DriveBehaviorLaneChangeRightState;\n-class DriveBehaviorObstacleAvoidanceState;\n-\n-// Perception subState\n-class DriveDetectObstacleState;\n-class DriveDetectStoplineState;\n-class DriveDetectTrafficlightRedState;\n-\n-class MissionCompleteState;\n-class EmergencyState;\n-\n-// base class\n-class BaseState\n+class State\n {\n-protected:\n-  BaseState()\n-  {\n-  }\n+private:\n+  std::shared_ptr<State> child_state_;\n \n-public:\n-  virtual void update(void) = 0;\n-  virtual void inState(void) = 0;\n-  virtual void outState(void) = 0;\n-  virtual void showStateName(void) = 0;\n-  virtual uint64_t getStateTransMask(void) = 0;\n-  virtual uint64_t getStateNum(void) = 0;\n-  virtual std::string getStateName(void) = 0;\n-  virtual uint8_t getStateKind(void) = 0;\n-  virtual void setCallbackUpdateFunc(std::function<void(void)> _f) = 0;\n-  virtual void setCallbackInFunc(std::function<void(void)> _f) = 0;\n-  virtual void setCallbackOutFunc(std::function<void(void)> _f) = 0;\n-};\n+  std::string state_name_;\n+  uint64_t state_id_;\n+  \n+  std::shared_ptr<State> parent_state_;\n+  \n \n-// Interface\n-template <class T>\n-class State : public BaseState\n-{\n-protected:\n-  std::string StateName = \"Base\";\n-  uint64_t StateNum;\n-  uint64_t StateTransMask;\n-  uint8_t StateKind;\n+  std::function<void(const std::string&)> CallbackUpdateFunc;\n+  std::function<void(const std::string&)> CallbackEntryFunc;\n+  std::function<void(const std::string&)> CallbackExitFunc;\n+\n+  std::map<std::string, uint64_t> transition_map_;\n \n-  std::function<void(void)> StateCallbackUpdateFunc;\n-  std::function<void(void)> StateCallbackInFunc;\n-  std::function<void(void)> StateCallbackOutFunc;\n+  std::string entered_key_;\n \n-  State()\n+  void parseChildState(YAML::Node& node);\n+\n+public:\n+  State(std::string _state_name, uint64_t _state_id, std::shared_ptr<State> _parent_state = NULL)\n+    : child_state_(NULL), state_name_(_state_name), state_id_(_state_id), parent_state_(_parent_state), entered_key_(\"\")\n+  {\n+#if 0\n+    CallbackUpdateFunc =\n+        [&](const std::string &arg) { /*DEBUG_PRINT(\"[%s]:%s is not registered\\n\", state_name_.c_str(), \"update\");*/ };\n+    CallbackEntryFunc =\n+        [&](const std::string &arg) { /*DEBUG_PRINT(\"[%s]:%s is not registered\\n\", state_name_.c_str(), \"entry\");*/ };\n+    CallbackExitFunc =\n+        [&](const std::string &arg) { /*DEBUG_PRINT(\"[%s]:%s is not registered\\n\", state_name_.c_str(), \"exit\");*/ };\n+#endif\n+  }\n+  ~State()\n   {\n-    StateNum = 0;\n-    StateTransMask = (uint64_t)STATE_END - 1;\n-    StateKind = UNKNOWN_STATE;\n   }\n \n-public:\n-  virtual void update(void)\n+  void onUpdate(void)\n   {\n-    if (StateCallbackUpdateFunc)\n-      StateCallbackUpdateFunc();\n+    if (child_state_)\n+      child_state_->onUpdate();\n+\n+    if (CallbackUpdateFunc)\n+      CallbackUpdateFunc(state_name_);\n   }\n \n-  virtual void inState(void)\n+  void onEntry(void)\n   {\n-    if (StateCallbackInFunc)\n-      StateCallbackInFunc();\n+    DEBUG_PRINT(\"[%s:Entry]\\n\", state_name_.c_str());\n+\n+    if (CallbackEntryFunc)\n+      CallbackEntryFunc(state_name_);\n   }\n-  virtual void outState(void)\n+  void onExit(void)\n   {\n-    if (StateCallbackOutFunc)\n-      StateCallbackOutFunc();\n+    DEBUG_PRINT(\"[%s:Exit]\\n\", state_name_.c_str());\n+    if (child_state_)\n+      child_state_->onExit();\n+\n+    setChild(nullptr);\n+\n+    if (CallbackExitFunc)\n+      CallbackExitFunc(state_name_);\n   }\n-  virtual void setCallbackUpdateFunc(std::function<void(void)> _f)\n+  void setCallbackUpdate(std::function<void(const std::string&)> _f)\n   {\n-    StateCallbackUpdateFunc = _f;\n+    CallbackUpdateFunc = _f;\n   }\n-\n-  virtual void setCallbackOutFunc(std::function<void(void)> _f)\n+  void setCallbackEntry(std::function<void(const std::string&)> _f)\n   {\n-    StateCallbackOutFunc = _f;\n+    CallbackEntryFunc = _f;\n   }\n \n-  virtual void setCallbackInFunc(std::function<void(void)> _f)\n+  void setCallbackExit(std::function<void(const std::string&)> _f)\n   {\n-    StateCallbackInFunc = _f;\n+    CallbackExitFunc = _f;\n   }\n \n   void showStateName(void)\n   {\n-    std::cout << StateName << \"-\";\n+    std::cout << state_name_ << \"-\";\n+  }\n+  void setParent(std::shared_ptr<State> _parent)\n+  {\n+    assert(this != _parent.get());\n+    parent_state_ = _parent;\n   }\n \n-  static T* getInstance(void)\n+  void setChild(std::shared_ptr<State> _child)\n   {\n-    static T singleton;\n-    return &singleton;\n+    assert(this != _child.get());\n+    child_state_ = _child;\n   }\n \n+  std::shared_ptr<State> getParent()\n+  {\n+    return parent_state_;\n+  }\n+  std::shared_ptr<State> getChild()\n+  {\n+    return child_state_;\n+  }\n   std::string getStateName(void)\n   {\n-    return std::string(StateName);\n+    return std::string(state_name_);\n   }\n \n-  uint8_t getStateKind(void)\n+  void addTransition(const std::string key, const uint64_t val)\n   {\n-    return StateKind;\n+    transition_map_[key] = val;\n   }\n \n-  uint64_t getStateTransMask(void)\n+  uint64_t getTansitionVal(std::string key)\n+  {\n+    return transition_map_[key];","path":"ros/src/common/libs/state_machine_lib/include/state_machine_lib/state.hpp","position":null,"original_position":220,"commit_id":"9741bd04df9671e286db3606e8d4e564b598c176","original_commit_id":"256262b3280e0709e945ef5d7e787bec8af7d1c7","user":{"login":"s-azumi","id":38061530,"node_id":"MDQ6VXNlcjM4MDYxNTMw","avatar_url":"https://avatars0.githubusercontent.com/u/38061530?v=4","gravatar_id":"","url":"https://api.github.com/users/s-azumi","html_url":"https://github.com/s-azumi","followers_url":"https://api.github.com/users/s-azumi/followers","following_url":"https://api.github.com/users/s-azumi/following{/other_user}","gists_url":"https://api.github.com/users/s-azumi/gists{/gist_id}","starred_url":"https://api.github.com/users/s-azumi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/s-azumi/subscriptions","organizations_url":"https://api.github.com/users/s-azumi/orgs","repos_url":"https://api.github.com/users/s-azumi/repos","events_url":"https://api.github.com/users/s-azumi/events{/privacy}","received_events_url":"https://api.github.com/users/s-azumi/received_events","type":"User","site_admin":false},"body":"Fixed.","created_at":"2018-11-07T07:03:32Z","updated_at":"2018-11-07T07:03:32Z","html_url":"https://github.com/CPFL/Autoware/pull/1609#discussion_r231398017","pull_request_url":"https://api.github.com/repos/CPFL/Autoware/pulls/1609","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/CPFL/Autoware/pulls/comments/231398017"},"html":{"href":"https://github.com/CPFL/Autoware/pull/1609#discussion_r231398017"},"pull_request":{"href":"https://api.github.com/repos/CPFL/Autoware/pulls/1609"}},"in_reply_to_id":229769242},"pull_request":{"url":"https://api.github.com/repos/CPFL/Autoware/pulls/1609","id":223140061,"node_id":"MDExOlB1bGxSZXF1ZXN0MjIzMTQwMDYx","html_url":"https://github.com/CPFL/Autoware/pull/1609","diff_url":"https://github.com/CPFL/Autoware/pull/1609.diff","patch_url":"https://github.com/CPFL/Autoware/pull/1609.patch","issue_url":"https://api.github.com/repos/CPFL/Autoware/issues/1609","number":1609,"state":"open","locked":false,"title":"Feature/rebuild decision maker","user":{"login":"s-azumi","id":38061530,"node_id":"MDQ6VXNlcjM4MDYxNTMw","avatar_url":"https://avatars0.githubusercontent.com/u/38061530?v=4","gravatar_id":"","url":"https://api.github.com/users/s-azumi","html_url":"https://github.com/s-azumi","followers_url":"https://api.github.com/users/s-azumi/followers","following_url":"https://api.github.com/users/s-azumi/following{/other_user}","gists_url":"https://api.github.com/users/s-azumi/gists{/gist_id}","starred_url":"https://api.github.com/users/s-azumi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/s-azumi/subscriptions","organizations_url":"https://api.github.com/users/s-azumi/orgs","repos_url":"https://api.github.com/users/s-azumi/repos","events_url":"https://api.github.com/users/s-azumi/events{/privacy}","received_events_url":"https://api.github.com/users/s-azumi/received_events","type":"User","site_admin":false},"body":"## Status\r\n**DEVELOPMENT**\r\n\r\n## Description\r\nPlease refer to #1434 \r\nI redesigned the state transition and divided it into three state machines Vehicle, Mission, Drive.\r\nThe details are as follows.\r\n<img src=\"https://user-images.githubusercontent.com/38061530/46991166-bd11b800-d13f-11e8-9d50-653452207738.jpg\" width=\"100\" title=\"Vehicle state\"><img src=\"https://user-images.githubusercontent.com/38061530/46991167-bd11b800-d13f-11e8-9032-17715508d8f6.jpg\" width=\"320\" title=\"Mission state\">\r\n<img src=\"https://user-images.githubusercontent.com/38061530/46991168-bdaa4e80-d13f-11e8-9069-d964484135a1.jpg\" width=\"480\" title=\"Drive state\">\r\n\r\n## Related branch\r\n`feature/last_wp_control` is needed to reach waypoint's end and transition to the MissionComplete state.\r\n`feature/negative_velocity` is required for switchback.\r\n\r\n\r\n## Todos\r\n- [x] Tests\r\n- [ ] Documentation\r\n\r\n\r\n## Steps to Test or Reproduce\r\nNOTE: For state visualization, please add OverlayText plugin on rviz and select topics `decision_maker/operator_help_text`, `state/overlay_text`.\r\n\r\n**Normal driving**\r\n1. Launch Autoware and localization on real vehicle or wf_simulator\r\n2. Launch `decision_maker` and lane_planner, astar_planner, waypoint_follower\r\n3. When `VehicleReady` and `WaitOrder` state, launch `waypoint_loader`\r\n4. On `DriveReady` state, push `Engage` button on DecisionMakerPannel\r\n5. When the vehicle reaches the end of waypoint and stops, state Mission state transits to `WaitOrder` via the `MissionComplete`\r\n6. You can repeat from 3. with other waypoint\r\n\r\n**Lane change**\r\n1. Start Normal driving with waypoint files necessary for lane change\r\n2. On `CheckLeft/RightLane` state, push `Execute LaneChange` button on DecisionMakerPannel\r\n3. The vehicle start lane change\r\n\r\nNOTE: Safety check and automatically lane change functions are not implemented yet.\r\n\r\n**Driving mission change**\r\n1. Prepare waypoint files to change, and start Normal driving\r\n2. On `Driving` state, push `Request mission change` button on DecisionMakerPannel\r\n3. When the state becomes `DrivingMissionChange`, please load another waypoint for change\r\n4. If it is possible to change the waypoint will switch, otherwise it will not be changed\r\n\r\nNOTE: This function is quick implementation. Whether change is possible or not  depends on two parameters `dist_threshold`, `angle_threshold` between current_pose and nearest waypoint after change.","created_at":"2018-10-16T07:21:11Z","updated_at":"2018-11-07T07:03:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"65cca19bd44170a62a4ea1ae79fb5f1e18d8c9f8","assignee":null,"assignees":[],"requested_reviewers":[{"login":"kfunaoka","id":38030772,"node_id":"MDQ6VXNlcjM4MDMwNzcy","avatar_url":"https://avatars2.githubusercontent.com/u/38030772?v=4","gravatar_id":"","url":"https://api.github.com/users/kfunaoka","html_url":"https://github.com/kfunaoka","followers_url":"https://api.github.com/users/kfunaoka/followers","following_url":"https://api.github.com/users/kfunaoka/following{/other_user}","gists_url":"https://api.github.com/users/kfunaoka/gists{/gist_id}","starred_url":"https://api.github.com/users/kfunaoka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kfunaoka/subscriptions","organizations_url":"https://api.github.com/users/kfunaoka/orgs","repos_url":"https://api.github.com/users/kfunaoka/repos","events_url":"https://api.github.com/users/kfunaoka/events{/privacy}","received_events_url":"https://api.github.com/users/kfunaoka/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":252213105,"node_id":"MDU6TGFiZWwyNTIyMTMxMDU=","url":"https://api.github.com/repos/CPFL/Autoware/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"milestone":null,"commits_url":"https://api.github.com/repos/CPFL/Autoware/pulls/1609/commits","review_comments_url":"https://api.github.com/repos/CPFL/Autoware/pulls/1609/comments","review_comment_url":"https://api.github.com/repos/CPFL/Autoware/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CPFL/Autoware/issues/1609/comments","statuses_url":"https://api.github.com/repos/CPFL/Autoware/statuses/9741bd04df9671e286db3606e8d4e564b598c176","head":{"label":"CPFL:feature/rebuild_decision_maker","ref":"feature/rebuild_decision_maker","sha":"9741bd04df9671e286db3606e8d4e564b598c176","user":{"login":"CPFL","id":2747893,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI3NDc4OTM=","avatar_url":"https://avatars1.githubusercontent.com/u/2747893?v=4","gravatar_id":"","url":"https://api.github.com/users/CPFL","html_url":"https://github.com/CPFL","followers_url":"https://api.github.com/users/CPFL/followers","following_url":"https://api.github.com/users/CPFL/following{/other_user}","gists_url":"https://api.github.com/users/CPFL/gists{/gist_id}","starred_url":"https://api.github.com/users/CPFL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CPFL/subscriptions","organizations_url":"https://api.github.com/users/CPFL/orgs","repos_url":"https://api.github.com/users/CPFL/repos","events_url":"https://api.github.com/users/CPFL/events{/privacy}","received_events_url":"https://api.github.com/users/CPFL/received_events","type":"Organization","site_admin":false},"repo":{"id":41331761,"node_id":"MDEwOlJlcG9zaXRvcnk0MTMzMTc2MQ==","name":"Autoware","full_name":"CPFL/Autoware","private":false,"owner":{"login":"CPFL","id":2747893,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI3NDc4OTM=","avatar_url":"https://avatars1.githubusercontent.com/u/2747893?v=4","gravatar_id":"","url":"https://api.github.com/users/CPFL","html_url":"https://github.com/CPFL","followers_url":"https://api.github.com/users/CPFL/followers","following_url":"https://api.github.com/users/CPFL/following{/other_user}","gists_url":"https://api.github.com/users/CPFL/gists{/gist_id}","starred_url":"https://api.github.com/users/CPFL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CPFL/subscriptions","organizations_url":"https://api.github.com/users/CPFL/orgs","repos_url":"https://api.github.com/users/CPFL/repos","events_url":"https://api.github.com/users/CPFL/events{/privacy}","received_events_url":"https://api.github.com/users/CPFL/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/CPFL/Autoware","description":"Open-Source To Self-Driving.","fork":false,"url":"https://api.github.com/repos/CPFL/Autoware","forks_url":"https://api.github.com/repos/CPFL/Autoware/forks","keys_url":"https://api.github.com/repos/CPFL/Autoware/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CPFL/Autoware/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CPFL/Autoware/teams","hooks_url":"https://api.github.com/repos/CPFL/Autoware/hooks","issue_events_url":"https://api.github.com/repos/CPFL/Autoware/issues/events{/number}","events_url":"https://api.github.com/repos/CPFL/Autoware/events","assignees_url":"https://api.github.com/repos/CPFL/Autoware/assignees{/user}","branches_url":"https://api.github.com/repos/CPFL/Autoware/branches{/branch}","tags_url":"https://api.github.com/repos/CPFL/Autoware/tags","blobs_url":"https://api.github.com/repos/CPFL/Autoware/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CPFL/Autoware/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CPFL/Autoware/git/refs{/sha}","trees_url":"https://api.github.com/repos/CPFL/Autoware/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CPFL/Autoware/statuses/{sha}","languages_url":"https://api.github.com/repos/CPFL/Autoware/languages","stargazers_url":"https://api.github.com/repos/CPFL/Autoware/stargazers","contributors_url":"https://api.github.com/repos/CPFL/Autoware/contributors","subscribers_url":"https://api.github.com/repos/CPFL/Autoware/subscribers","subscription_url":"https://api.github.com/repos/CPFL/Autoware/subscription","commits_url":"https://api.github.com/repos/CPFL/Autoware/commits{/sha}","git_commits_url":"https://api.github.com/repos/CPFL/Autoware/git/commits{/sha}","comments_url":"https://api.github.com/repos/CPFL/Autoware/comments{/number}","issue_comment_url":"https://api.github.com/repos/CPFL/Autoware/issues/comments{/number}","contents_url":"https://api.github.com/repos/CPFL/Autoware/contents/{+path}","compare_url":"https://api.github.com/repos/CPFL/Autoware/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CPFL/Autoware/merges","archive_url":"https://api.github.com/repos/CPFL/Autoware/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CPFL/Autoware/downloads","issues_url":"https://api.github.com/repos/CPFL/Autoware/issues{/number}","pulls_url":"https://api.github.com/repos/CPFL/Autoware/pulls{/number}","milestones_url":"https://api.github.com/repos/CPFL/Autoware/milestones{/number}","notifications_url":"https://api.github.com/repos/CPFL/Autoware/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CPFL/Autoware/labels{/name}","releases_url":"https://api.github.com/repos/CPFL/Autoware/releases{/id}","deployments_url":"https://api.github.com/repos/CPFL/Autoware/deployments","created_at":"2015-08-24T23:17:57Z","updated_at":"2018-11-07T02:36:51Z","pushed_at":"2018-11-07T06:57:23Z","git_url":"git://github.com/CPFL/Autoware.git","ssh_url":"git@github.com:CPFL/Autoware.git","clone_url":"https://github.com/CPFL/Autoware.git","svn_url":"https://github.com/CPFL/Autoware","homepage":"https://www.autoware.ai/","size":383948,"stargazers_count":2441,"watchers_count":2441,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1118,"mirror_url":null,"archived":false,"open_issues_count":234,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":1118,"open_issues":234,"watchers":2441,"default_branch":"master"}},"base":{"label":"CPFL:develop","ref":"develop","sha":"592be635c49bb8587a4f153d9c9af8bebabdef28","user":{"login":"CPFL","id":2747893,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI3NDc4OTM=","avatar_url":"https://avatars1.githubusercontent.com/u/2747893?v=4","gravatar_id":"","url":"https://api.github.com/users/CPFL","html_url":"https://github.com/CPFL","followers_url":"https://api.github.com/users/CPFL/followers","following_url":"https://api.github.com/users/CPFL/following{/other_user}","gists_url":"https://api.github.com/users/CPFL/gists{/gist_id}","starred_url":"https://api.github.com/users/CPFL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CPFL/subscriptions","organizations_url":"https://api.github.com/users/CPFL/orgs","repos_url":"https://api.github.com/users/CPFL/repos","events_url":"https://api.github.com/users/CPFL/events{/privacy}","received_events_url":"https://api.github.com/users/CPFL/received_events","type":"Organization","site_admin":false},"repo":{"id":41331761,"node_id":"MDEwOlJlcG9zaXRvcnk0MTMzMTc2MQ==","name":"Autoware","full_name":"CPFL/Autoware","private":false,"owner":{"login":"CPFL","id":2747893,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI3NDc4OTM=","avatar_url":"https://avatars1.githubusercontent.com/u/2747893?v=4","gravatar_id":"","url":"https://api.github.com/users/CPFL","html_url":"https://github.com/CPFL","followers_url":"https://api.github.com/users/CPFL/followers","following_url":"https://api.github.com/users/CPFL/following{/other_user}","gists_url":"https://api.github.com/users/CPFL/gists{/gist_id}","starred_url":"https://api.github.com/users/CPFL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CPFL/subscriptions","organizations_url":"https://api.github.com/users/CPFL/orgs","repos_url":"https://api.github.com/users/CPFL/repos","events_url":"https://api.github.com/users/CPFL/events{/privacy}","received_events_url":"https://api.github.com/users/CPFL/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/CPFL/Autoware","description":"Open-Source To Self-Driving.","fork":false,"url":"https://api.github.com/repos/CPFL/Autoware","forks_url":"https://api.github.com/repos/CPFL/Autoware/forks","keys_url":"https://api.github.com/repos/CPFL/Autoware/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CPFL/Autoware/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CPFL/Autoware/teams","hooks_url":"https://api.github.com/repos/CPFL/Autoware/hooks","issue_events_url":"https://api.github.com/repos/CPFL/Autoware/issues/events{/number}","events_url":"https://api.github.com/repos/CPFL/Autoware/events","assignees_url":"https://api.github.com/repos/CPFL/Autoware/assignees{/user}","branches_url":"https://api.github.com/repos/CPFL/Autoware/branches{/branch}","tags_url":"https://api.github.com/repos/CPFL/Autoware/tags","blobs_url":"https://api.github.com/repos/CPFL/Autoware/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CPFL/Autoware/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CPFL/Autoware/git/refs{/sha}","trees_url":"https://api.github.com/repos/CPFL/Autoware/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CPFL/Autoware/statuses/{sha}","languages_url":"https://api.github.com/repos/CPFL/Autoware/languages","stargazers_url":"https://api.github.com/repos/CPFL/Autoware/stargazers","contributors_url":"https://api.github.com/repos/CPFL/Autoware/contributors","subscribers_url":"https://api.github.com/repos/CPFL/Autoware/subscribers","subscription_url":"https://api.github.com/repos/CPFL/Autoware/subscription","commits_url":"https://api.github.com/repos/CPFL/Autoware/commits{/sha}","git_commits_url":"https://api.github.com/repos/CPFL/Autoware/git/commits{/sha}","comments_url":"https://api.github.com/repos/CPFL/Autoware/comments{/number}","issue_comment_url":"https://api.github.com/repos/CPFL/Autoware/issues/comments{/number}","contents_url":"https://api.github.com/repos/CPFL/Autoware/contents/{+path}","compare_url":"https://api.github.com/repos/CPFL/Autoware/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CPFL/Autoware/merges","archive_url":"https://api.github.com/repos/CPFL/Autoware/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CPFL/Autoware/downloads","issues_url":"https://api.github.com/repos/CPFL/Autoware/issues{/number}","pulls_url":"https://api.github.com/repos/CPFL/Autoware/pulls{/number}","milestones_url":"https://api.github.com/repos/CPFL/Autoware/milestones{/number}","notifications_url":"https://api.github.com/repos/CPFL/Autoware/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CPFL/Autoware/labels{/name}","releases_url":"https://api.github.com/repos/CPFL/Autoware/releases{/id}","deployments_url":"https://api.github.com/repos/CPFL/Autoware/deployments","created_at":"2015-08-24T23:17:57Z","updated_at":"2018-11-07T02:36:51Z","pushed_at":"2018-11-07T06:57:23Z","git_url":"git://github.com/CPFL/Autoware.git","ssh_url":"git@github.com:CPFL/Autoware.git","clone_url":"https://github.com/CPFL/Autoware.git","svn_url":"https://github.com/CPFL/Autoware","homepage":"https://www.autoware.ai/","size":383948,"stargazers_count":2441,"watchers_count":2441,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1118,"mirror_url":null,"archived":false,"open_issues_count":234,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":1118,"open_issues":234,"watchers":2441,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/CPFL/Autoware/pulls/1609"},"html":{"href":"https://github.com/CPFL/Autoware/pull/1609"},"issue":{"href":"https://api.github.com/repos/CPFL/Autoware/issues/1609"},"comments":{"href":"https://api.github.com/repos/CPFL/Autoware/issues/1609/comments"},"review_comments":{"href":"https://api.github.com/repos/CPFL/Autoware/pulls/1609/comments"},"review_comment":{"href":"https://api.github.com/repos/CPFL/Autoware/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CPFL/Autoware/pulls/1609/commits"},"statuses":{"href":"https://api.github.com/repos/CPFL/Autoware/statuses/9741bd04df9671e286db3606e8d4e564b598c176"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"s-azumi"}}