{"action":"created","issue":{"url":"https://api.github.com/repos/plotly/IPython-plotly/issues/44","labels_url":"https://api.github.com/repos/plotly/IPython-plotly/issues/44/labels{/name}","comments_url":"https://api.github.com/repos/plotly/IPython-plotly/issues/44/comments","events_url":"https://api.github.com/repos/plotly/IPython-plotly/issues/44/events","html_url":"https://github.com/plotly/IPython-plotly/pull/44","id":85650042,"number":44,"title":"Bicycle control notebook","user":{"login":"moorepants","id":276007,"avatar_url":"https://avatars.githubusercontent.com/u/276007?v=3","gravatar_id":"","url":"https://api.github.com/users/moorepants","html_url":"https://github.com/moorepants","followers_url":"https://api.github.com/users/moorepants/followers","following_url":"https://api.github.com/users/moorepants/following{/other_user}","gists_url":"https://api.github.com/users/moorepants/gists{/gist_id}","starred_url":"https://api.github.com/users/moorepants/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/moorepants/subscriptions","organizations_url":"https://api.github.com/users/moorepants/orgs","repos_url":"https://api.github.com/users/moorepants/repos","events_url":"https://api.github.com/users/moorepants/events{/privacy}","received_events_url":"https://api.github.com/users/moorepants/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":11,"created_at":"2015-06-05T22:44:56Z","updated_at":"2015-06-17T14:43:11Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/plotly/IPython-plotly/pulls/44","html_url":"https://github.com/plotly/IPython-plotly/pull/44","diff_url":"https://github.com/plotly/IPython-plotly/pull/44.diff","patch_url":"https://github.com/plotly/IPython-plotly/pull/44.patch"},"body":"This is the draft for a notebook on balancing and controlling a bicycle with a sequential dual-loop controller using the python-control package. The main things I want to get across are:\r\n- Designing heading controller using the python-control tools\r\n- Demonstration of counter steering and what it means\r\n\r\nI'd like to have two to three types of plots:\r\n- Root Locus\r\n- Time response\r\n- Bode Diagram (not in there yet)\r\n\r\nThis has most of the text, all essential graphs, and most all info I was hoping to present but it isn't quite polished. I'm not completely happy with the controller design and would like to get it tuned a little better (get the control working took me a bit longer than expected).\r\n\r\nSome things to to or not to do:\r\n- [x] Do a better job on the controller design so that the heading control is much more responsive.\r\n- [x] Add in the last graph showing the steer angle required for a commanded heading and explain counter steering in a paragraph.\r\n- [ ] Some how add the damping ratio and natural frequency in the hover label like I did the gain. Not sure how to do this with Plotly. This would make the root locus plot somewhat equivalent with what Matlab offers.\r\n- [ ] Make an interactive PID tuner widget. Probably wouldn't be too hard and you could fiddle with the PID gains to see the change in the step response.\r\n- [ ] Can the installation be based on conda? BTW, it'd be nice to have a plotly conda package (ideally included with Anaconda). Maybe you all should call up Continuum and try to get it in. I'm cohorts with a lead dev on conda if you want to make that happen.\r\n- [x] Flesh out the writing in the later part of the notebook.\r\n- [x] Grammar and spell check.\r\n\r\nIf you'd like to provide any feedback now before I take this too far, that'd be helpful. I've, of course, spent more time than expected (~12 hrs so far). I'd particularly like to know what scope you'd like this to be. Let me know what you all think."},"comment":{"url":"https://api.github.com/repos/plotly/IPython-plotly/issues/comments/112827714","html_url":"https://github.com/plotly/IPython-plotly/pull/44#issuecomment-112827714","issue_url":"https://api.github.com/repos/plotly/IPython-plotly/issues/44","id":112827714,"user":{"login":"etpinard","id":6675409,"avatar_url":"https://avatars.githubusercontent.com/u/6675409?v=3","gravatar_id":"","url":"https://api.github.com/users/etpinard","html_url":"https://github.com/etpinard","followers_url":"https://api.github.com/users/etpinard/followers","following_url":"https://api.github.com/users/etpinard/following{/other_user}","gists_url":"https://api.github.com/users/etpinard/gists{/gist_id}","starred_url":"https://api.github.com/users/etpinard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/etpinard/subscriptions","organizations_url":"https://api.github.com/users/etpinard/orgs","repos_url":"https://api.github.com/users/etpinard/repos","events_url":"https://api.github.com/users/etpinard/events{/privacy}","received_events_url":"https://api.github.com/users/etpinard/received_events","type":"User","site_admin":false},"created_at":"2015-06-17T14:43:11Z","updated_at":"2015-06-17T14:43:11Z","body":"Your `config.json` contains comments, making `json.load` fail and hence `trim.py` fail.\r\n\r\nhttps://github.com/plotly/IPython-plotly/blob/master/CONTRIBUTING.md#step-2"}}