{"action":"created","issue":{"url":"https://api.github.com/repos/RobotLocomotion/drake/issues/3587","repository_url":"https://api.github.com/repos/RobotLocomotion/drake","labels_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/3587/labels{/name}","comments_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/3587/comments","events_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/3587/events","html_url":"https://github.com/RobotLocomotion/drake/pull/3587","id":179288705,"number":3587,"title":"Introduce discrete state for Systems","user":{"login":"david-german-tri","id":17437069,"avatar_url":"https://avatars.githubusercontent.com/u/17437069?v=3","gravatar_id":"","url":"https://api.github.com/users/david-german-tri","html_url":"https://github.com/david-german-tri","followers_url":"https://api.github.com/users/david-german-tri/followers","following_url":"https://api.github.com/users/david-german-tri/following{/other_user}","gists_url":"https://api.github.com/users/david-german-tri/gists{/gist_id}","starred_url":"https://api.github.com/users/david-german-tri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/david-german-tri/subscriptions","organizations_url":"https://api.github.com/users/david-german-tri/orgs","repos_url":"https://api.github.com/users/david-german-tri/repos","events_url":"https://api.github.com/users/david-german-tri/events{/privacy}","received_events_url":"https://api.github.com/users/david-german-tri/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"edrumwri","id":2224335,"avatar_url":"https://avatars.githubusercontent.com/u/2224335?v=3","gravatar_id":"","url":"https://api.github.com/users/edrumwri","html_url":"https://github.com/edrumwri","followers_url":"https://api.github.com/users/edrumwri/followers","following_url":"https://api.github.com/users/edrumwri/following{/other_user}","gists_url":"https://api.github.com/users/edrumwri/gists{/gist_id}","starred_url":"https://api.github.com/users/edrumwri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edrumwri/subscriptions","organizations_url":"https://api.github.com/users/edrumwri/orgs","repos_url":"https://api.github.com/users/edrumwri/repos","events_url":"https://api.github.com/users/edrumwri/events{/privacy}","received_events_url":"https://api.github.com/users/edrumwri/received_events","type":"User","site_admin":false},"assignees":[{"login":"edrumwri","id":2224335,"avatar_url":"https://avatars.githubusercontent.com/u/2224335?v=3","gravatar_id":"","url":"https://api.github.com/users/edrumwri","html_url":"https://github.com/edrumwri","followers_url":"https://api.github.com/users/edrumwri/followers","following_url":"https://api.github.com/users/edrumwri/following{/other_user}","gists_url":"https://api.github.com/users/edrumwri/gists{/gist_id}","starred_url":"https://api.github.com/users/edrumwri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edrumwri/subscriptions","organizations_url":"https://api.github.com/users/edrumwri/orgs","repos_url":"https://api.github.com/users/edrumwri/repos","events_url":"https://api.github.com/users/edrumwri/events{/privacy}","received_events_url":"https://api.github.com/users/edrumwri/received_events","type":"User","site_admin":false},{"login":"sherm1","id":4088016,"avatar_url":"https://avatars.githubusercontent.com/u/4088016?v=3","gravatar_id":"","url":"https://api.github.com/users/sherm1","html_url":"https://github.com/sherm1","followers_url":"https://api.github.com/users/sherm1/followers","following_url":"https://api.github.com/users/sherm1/following{/other_user}","gists_url":"https://api.github.com/users/sherm1/gists{/gist_id}","starred_url":"https://api.github.com/users/sherm1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sherm1/subscriptions","organizations_url":"https://api.github.com/users/sherm1/orgs","repos_url":"https://api.github.com/users/sherm1/repos","events_url":"https://api.github.com/users/sherm1/events{/privacy}","received_events_url":"https://api.github.com/users/sherm1/received_events","type":"User","site_admin":false},{"login":"amcastro-tri","id":17601461,"avatar_url":"https://avatars.githubusercontent.com/u/17601461?v=3","gravatar_id":"","url":"https://api.github.com/users/amcastro-tri","html_url":"https://github.com/amcastro-tri","followers_url":"https://api.github.com/users/amcastro-tri/followers","following_url":"https://api.github.com/users/amcastro-tri/following{/other_user}","gists_url":"https://api.github.com/users/amcastro-tri/gists{/gist_id}","starred_url":"https://api.github.com/users/amcastro-tri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amcastro-tri/subscriptions","organizations_url":"https://api.github.com/users/amcastro-tri/orgs","repos_url":"https://api.github.com/users/amcastro-tri/repos","events_url":"https://api.github.com/users/amcastro-tri/events{/privacy}","received_events_url":"https://api.github.com/users/amcastro-tri/received_events","type":"User","site_admin":false}],"milestone":null,"comments":18,"created_at":"2016-09-26T17:27:36Z","updated_at":"2016-10-02T10:46:07Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/RobotLocomotion/drake/pulls/3587","html_url":"https://github.com/RobotLocomotion/drake/pull/3587","diff_url":"https://github.com/RobotLocomotion/drake/pull/3587.diff","patch_url":"https://github.com/RobotLocomotion/drake/pull/3587.patch"},"body":"This includes both difference (numeric) and modal (arbitrary) state.  Add support to LeafSystem for fixed periodic state updates.  Add the ZeroOrderHold primitive as an example use case.\r\n\r\nThis commit does not add support to the simulator for actually updating discrete state.  It also does not add support to Diagrams for exposing the discrete state of their constituents.\r\n\r\nThere are a few interesting design points to discuss here.  +@edrumwri for feature review and +@sherm1 for platform review, but we should probably chat f2f before you dive deep into the code.\r\n\r\nFixes #3544 along the way.\r\n\r\n<!-- Reviewable:start -->\r\n---\r\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/robotlocomotion/drake/3587)\r\n<!-- Reviewable:end -->\r\n"},"comment":{"url":"https://api.github.com/repos/RobotLocomotion/drake/issues/comments/250965130","html_url":"https://github.com/RobotLocomotion/drake/pull/3587#issuecomment-250965130","issue_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/3587","id":250965130,"user":{"login":"RussTedrake","id":6442292,"avatar_url":"https://avatars.githubusercontent.com/u/6442292?v=3","gravatar_id":"","url":"https://api.github.com/users/RussTedrake","html_url":"https://github.com/RussTedrake","followers_url":"https://api.github.com/users/RussTedrake/followers","following_url":"https://api.github.com/users/RussTedrake/following{/other_user}","gists_url":"https://api.github.com/users/RussTedrake/gists{/gist_id}","starred_url":"https://api.github.com/users/RussTedrake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RussTedrake/subscriptions","organizations_url":"https://api.github.com/users/RussTedrake/orgs","repos_url":"https://api.github.com/users/RussTedrake/repos","events_url":"https://api.github.com/users/RussTedrake/events{/privacy}","received_events_url":"https://api.github.com/users/RussTedrake/received_events","type":"User","site_admin":false},"created_at":"2016-10-02T10:46:07Z","updated_at":"2016-10-02T10:46:07Z","body":"\n\n\n\nReview status: 12 of 24 files reviewed at latest revision, 16 unresolved discussions.\n\n---\n\n*[drake/systems/framework/system.h, line 55 at r5](https://reviewable.io:443/reviews/robotlocomotion/drake/3587#-KSt5neU05ztKHZWgIzV:-KT3zg8HkmWSiIrCljvQ:b-kvguw5) ([raw file](https://github.com/robotlocomotion/drake/blob/4563b907bc28c5c21797fcacb324796b020b9a4d/drake/systems/framework/system.h#L55)):*\n<details><summary><i>Previously, sherm1 (Michael Sherman) wrote…</i></summary>\n> >> update for difference states shouldn't be able to modify modes\n> \n> > @sherm1 could you specify the reasoning behind that restriction?\n> \n> Yes. A difference equation has a narrow definition(1), analogous to a differential equation. For the same reason that we only allow differential equations to update continuous variables, it only makes sense to allow difference equations to update difference variables. \n> \n> OTOH, a \"mode update\" (i.e. event handler invocation) is permitted to modify the state in any way. That includes continuous, difference, and mode variables. Note that event handling and mode variables can do everything the difference variables can do and much more. If we're treating difference variables separately, we need to narrow the behavior appropriately or why bother?\n> \n> I'm happy to discuss f2f if that doesn't help.\n> \n> (1) Here's one: A *difference equation*, also called a *recurrence equation*, is an equation that defines a sequence recursively: each term of the sequence is defined as a function of the previous. [Technically that' s a first-order difference equation; in general the current value may depend on multiple past values. We are only supporting first-order ones directly; higher order can be implemented using mode variables.]\n> \n> \n</details>\n:ok:  just a minor nit on that last line.  higher order are almost always  implemented using state variables, not mode variables.\n\n---\n\n\n*Comments from [Reviewable](https://reviewable.io:443/reviews/robotlocomotion/drake/3587)*\n<!-- Sent from Reviewable.io -->\n"}}
{"actor":{"display_login":"RussTedrake"}}