GitHub PullRequestEvent at 2014-08-08 14:47:01
Repository: TauLabs
Actor: peabody124
Payload: {"action":"opened","number":1224,"pull_request":{"url":"https://api.github.com/repos/TauLabs/TauLabs/pulls/1224","id":19531168,"html_url":"https://github.com/TauLabs/TauLabs/pull/1224","diff_url":"https://github.com/TauLabs/TauLabs/pull/1224.diff","patch_url":"https://github.com/TauLabs/TauLabs/pull/1224.patch","issue_url":"https://api.github.com/repos/TauLabs/TauLabs/issues/1224","number":1224,"state":"open","title":"System identification and new autotune","user":{"login":"peabody124","id":618346,"avatar_url":"https://avatars.githubusercontent.com/u/618346?v=2","gravatar_id":"fbfc152a7a388d290cc029a46815ac54","url":"https://api.github.com/users/peabody124","html_url":"https://github.com/peabody124","followers_url":"https://api.github.com/users/peabody124/followers","following_url":"https://api.github.com/users/peabody124/following{/other_user}","gists_url":"https://api.github.com/users/peabody124/gists{/gist_id}","starred_url":"https://api.github.com/users/peabody124/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peabody124/subscriptions","organizations_url":"https://api.github.com/users/peabody124/orgs","repos_url":"https://api.github.com/users/peabody124/repos","events_url":"https://api.github.com/users/peabody124/events{/privacy}","received_events_url":"https://api.github.com/users/peabody124/received_events","type":"User","site_admin":false},"body":"So this is some code I have been working on for some time with the help of Korken that performs system identification to measure the gain and latency of each axis. From this it calculates PID settings based on some analytic equations I derived that allow you to essentially tune the amount of damping (where more damping is more stable, default 1.3) and the sensitivity to high frequency noise (used to tune the gyro derivative filter and Kd, higher sensitivity is snappier but also will eventually start to twitch).\r\n\r\nThis has been tested by a number of people and the feedback is positive. It seems to converge to reasonable values quite reliably. The default settings on the sliders produce quite smooth flights (for AP work more than aggressive flight), so it would be great to find settings that are good for FPV targets.\r\n\r\nYou can find an early example of it being used here: https://vimeo.com/92452965 and the discussion thread here http://forum.taulabs.org/viewtopic.php?f=17&t=99\r\n\r\nOnce this is merged there are a few planned improvements:\r\n- factor the throttle into the estimation, which should have a rather straightforward form. this will allow a gain scheduling of the PID settings which should build nicely on top of TPA (#1214)\r\n- on line updating of the PID settings. this will be useful for two reasons: 1) it seems like running this twice produces a slight improvement on the first run, so it is sensitive to the current settings. 2) currently it requires a computer to verify the settings. the current AT algorithm lets you land and then loads up the new settings. We can do this, but I want to have a large number of people that test with a computer first\r\n- new equations for PID calculation that specify overshoot and phase margin (robustness) directly\r\n","created_at":"2014-08-08T14:47:01Z","updated_at":"2014-08-08T14:47:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/TauLabs/TauLabs/pulls/1224/commits","review_comments_url":"https://api.github.com/repos/TauLabs/TauLabs/pulls/1224/comments","review_comment_url":"https://api.github.com/repos/TauLabs/TauLabs/pulls/comments/{number}","comments_url":"https://api.github.com/repos/TauLabs/TauLabs/issues/1224/comments","statuses_url":"https://api.github.com/repos/TauLabs/TauLabs/statuses/48868e8146f67d7bf84e60d08662e5b059e00e76","head":{"label":"peabody124:system_ident","ref":"system_ident","sha":"48868e8146f67d7bf84e60d08662e5b059e00e76","user":{"login":"peabody124","id":618346,"avatar_url":"https://avatars.githubusercontent.com/u/618346?v=2","gravatar_id":"fbfc152a7a388d290cc029a46815ac54","url":"https://api.github.com/users/peabody124","html_url":"https://github.com/peabody124","followers_url":"https://api.github.com/users/peabody124/followers","following_url":"https://api.github.com/users/peabody124/following{/other_user}","gists_url":"https://api.github.com/users/peabody124/gists{/gist_id}","starred_url":"https://api.github.com/users/peabody124/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peabody124/subscriptions","organizations_url":"https://api.github.com/users/peabody124/orgs","repos_url":"https://api.github.com/users/peabody124/repos","events_url":"https://api.github.com/users/peabody124/events{/privacy}","received_events_url":"https://api.github.com/users/peabody124/received_events","type":"User","site_admin":false},"repo":{"id":6857409,"name":"TauLabs","full_name":"peabody124/TauLabs","owner":{"login":"peabody124","id":618346,"avatar_url":"https://avatars.githubusercontent.com/u/618346?v=2","gravatar_id":"fbfc152a7a388d290cc029a46815ac54","url":"https://api.github.com/users/peabody124","html_url":"https://github.com/peabody124","followers_url":"https://api.github.com/users/peabody124/followers","following_url":"https://api.github.com/users/peabody124/following{/other_user}","gists_url":"https://api.github.com/users/peabody124/gists{/gist_id}","starred_url":"https://api.github.com/users/peabody124/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peabody124/subscriptions","organizations_url":"https://api.github.com/users/peabody124/orgs","repos_url":"https://api.github.com/users/peabody124/repos","events_url":"https://api.github.com/users/peabody124/events{/privacy}","received_events_url":"https://api.github.com/users/peabody124/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/peabody124/TauLabs","description":"","fork":true,"url":"https://api.github.com/repos/peabody124/TauLabs","forks_url":"https://api.github.com/repos/peabody124/TauLabs/forks","keys_url":"https://api.github.com/repos/peabody124/TauLabs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/peabody124/TauLabs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/peabody124/TauLabs/teams","hooks_url":"https://api.github.com/repos/peabody124/TauLabs/hooks","issue_events_url":"https://api.github.com/repos/peabody124/TauLabs/issues/events{/number}","events_url":"https://api.github.com/repos/peabody124/TauLabs/events","assignees_url":"https://api.github.com/repos/peabody124/TauLabs/assignees{/user}","branches_url":"https://api.github.com/repos/peabody124/TauLabs/branches{/branch}","tags_url":"https://api.github.com/repos/peabody124/TauLabs/tags","blobs_url":"https://api.github.com/repos/peabody124/TauLabs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/peabody124/TauLabs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/peabody124/TauLabs/git/refs{/sha}","trees_url":"https://api.github.com/repos/peabody124/TauLabs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/peabody124/TauLabs/statuses/{sha}","languages_url":"https://api.github.com/repos/peabody124/TauLabs/languages","stargazers_url":"https://api.github.com/repos/peabody124/TauLabs/stargazers","contributors_url":"https://api.github.com/repos/peabody124/TauLabs/contributors","subscribers_url":"https://api.github.com/repos/peabody124/TauLabs/subscribers","subscription_url":"https://api.github.com/repos/peabody124/TauLabs/subscription","commits_url":"https://api.github.com/repos/peabody124/TauLabs/commits{/sha}","git_commits_url":"https://api.github.com/repos/peabody124/TauLabs/git/commits{/sha}","comments_url":"https://api.github.com/repos/peabody124/TauLabs/comments{/number}","issue_comment_url":"https://api.github.com/repos/peabody124/TauLabs/issues/comments/{number}","contents_url":"https://api.github.com/repos/peabody124/TauLabs/contents/{+path}","compare_url":"https://api.github.com/repos/peabody124/TauLabs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/peabody124/TauLabs/merges","archive_url":"https://api.github.com/repos/peabody124/TauLabs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/peabody124/TauLabs/downloads","issues_url":"https://api.github.com/repos/peabody124/TauLabs/issues{/number}","pulls_url":"https://api.github.com/repos/peabody124/TauLabs/pulls{/number}","milestones_url":"https://api.github.com/repos/peabody124/TauLabs/milestones{/number}","notifications_url":"https://api.github.com/repos/peabody124/TauLabs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/peabody124/TauLabs/labels{/name}","releases_url":"https://api.github.com/repos/peabody124/TauLabs/releases{/id}","created_at":"2012-11-25T23:51:40Z","updated_at":"2014-06-17T18:24:16Z","pushed_at":"2014-08-08T14:36:26Z","git_url":"git://github.com/peabody124/TauLabs.git","ssh_url":"git@github.com:peabody124/TauLabs.git","clone_url":"https://github.com/peabody124/TauLabs.git","svn_url":"https://github.com/peabody124/TauLabs","homepage":null,"size":179795,"stargazers_count":3,"watchers_count":3,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":3,"default_branch":"next"}},"base":{"label":"TauLabs:next","ref":"next","sha":"9e133fbe5dc52392acf87a15dd8b6431d851b41e","user":{"login":"TauLabs","id":3201381,"avatar_url":"https://avatars.githubusercontent.com/u/3201381?v=2","gravatar_id":"3512c5a4679daab3d2bb6aef032d41f5","url":"https://api.github.com/users/TauLabs","html_url":"https://github.com/TauLabs","followers_url":"https://api.github.com/users/TauLabs/followers","following_url":"https://api.github.com/users/TauLabs/following{/other_user}","gists_url":"https://api.github.com/users/TauLabs/gists{/gist_id}","starred_url":"https://api.github.com/users/TauLabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TauLabs/subscriptions","organizations_url":"https://api.github.com/users/TauLabs/orgs","repos_url":"https://api.github.com/users/TauLabs/repos","events_url":"https://api.github.com/users/TauLabs/events{/privacy}","received_events_url":"https://api.github.com/users/TauLabs/received_events","type":"Organization","site_admin":false},"repo":{"id":6589168,"name":"TauLabs","full_name":"TauLabs/TauLabs","owner":{"login":"TauLabs","id":3201381,"avatar_url":"https://avatars.githubusercontent.com/u/3201381?v=2","gravatar_id":"3512c5a4679daab3d2bb6aef032d41f5","url":"https://api.github.com/users/TauLabs","html_url":"https://github.com/TauLabs","followers_url":"https://api.github.com/users/TauLabs/followers","following_url":"https://api.github.com/users/TauLabs/following{/other_user}","gists_url":"https://api.github.com/users/TauLabs/gists{/gist_id}","starred_url":"https://api.github.com/users/TauLabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TauLabs/subscriptions","organizations_url":"https://api.github.com/users/TauLabs/orgs","repos_url":"https://api.github.com/users/TauLabs/repos","events_url":"https://api.github.com/users/TauLabs/events{/privacy}","received_events_url":"https://api.github.com/users/TauLabs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/TauLabs/TauLabs","description":"","fork":false,"url":"https://api.github.com/repos/TauLabs/TauLabs","forks_url":"https://api.github.com/repos/TauLabs/TauLabs/forks","keys_url":"https://api.github.com/repos/TauLabs/TauLabs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/TauLabs/TauLabs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/TauLabs/TauLabs/teams","hooks_url":"https://api.github.com/repos/TauLabs/TauLabs/hooks","issue_events_url":"https://api.github.com/repos/TauLabs/TauLabs/issues/events{/number}","events_url":"https://api.github.com/repos/TauLabs/TauLabs/events","assignees_url":"https://api.github.com/repos/TauLabs/TauLabs/assignees{/user}","branches_url":"https://api.github.com/repos/TauLabs/TauLabs/branches{/branch}","tags_url":"https://api.github.com/repos/TauLabs/TauLabs/tags","blobs_url":"https://api.github.com/repos/TauLabs/TauLabs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/TauLabs/TauLabs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/TauLabs/TauLabs/git/refs{/sha}","trees_url":"https://api.github.com/repos/TauLabs/TauLabs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/TauLabs/TauLabs/statuses/{sha}","languages_url":"https://api.github.com/repos/TauLabs/TauLabs/languages","stargazers_url":"https://api.github.com/repos/TauLabs/TauLabs/stargazers","contributors_url":"https://api.github.com/repos/TauLabs/TauLabs/contributors","subscribers_url":"https://api.github.com/repos/TauLabs/TauLabs/subscribers","subscription_url":"https://api.github.com/repos/TauLabs/TauLabs/subscription","commits_url":"https://api.github.com/repos/TauLabs/TauLabs/commits{/sha}","git_commits_url":"https://api.github.com/repos/TauLabs/TauLabs/git/commits{/sha}","comments_url":"https://api.github.com/repos/TauLabs/TauLabs/comments{/number}","issue_comment_url":"https://api.github.com/repos/TauLabs/TauLabs/issues/comments/{number}","contents_url":"https://api.github.com/repos/TauLabs/TauLabs/contents/{+path}","compare_url":"https://api.github.com/repos/TauLabs/TauLabs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/TauLabs/TauLabs/merges","archive_url":"https://api.github.com/repos/TauLabs/TauLabs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/TauLabs/TauLabs/downloads","issues_url":"https://api.github.com/repos/TauLabs/TauLabs/issues{/number}","pulls_url":"https://api.github.com/repos/TauLabs/TauLabs/pulls{/number}","milestones_url":"https://api.github.com/repos/TauLabs/TauLabs/milestones{/number}","notifications_url":"https://api.github.com/repos/TauLabs/TauLabs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/TauLabs/TauLabs/labels{/name}","releases_url":"https://api.github.com/repos/TauLabs/TauLabs/releases{/id}","created_at":"2012-11-08T01:01:18Z","updated_at":"2014-08-06T16:44:36Z","pushed_at":"2014-08-01T08:58:45Z","git_url":"git://github.com/TauLabs/TauLabs.git","ssh_url":"git@github.com:TauLabs/TauLabs.git","clone_url":"https://github.com/TauLabs/TauLabs.git","svn_url":"https://github.com/TauLabs/TauLabs","homepage":"taulabs.org","size":296618,"stargazers_count":120,"watchers_count":120,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":160,"mirror_url":null,"open_issues_count":223,"forks":160,"open_issues":223,"watchers":120,"default_branch":"next"}},"_links":{"self":{"href":"https://api.github.com/repos/TauLabs/TauLabs/pulls/1224"},"html":{"href":"https://github.com/TauLabs/TauLabs/pull/1224"},"issue":{"href":"https://api.github.com/repos/TauLabs/TauLabs/issues/1224"},"comments":{"href":"https://api.github.com/repos/TauLabs/TauLabs/issues/1224/comments"},"review_comments":{"href":"https://api.github.com/repos/TauLabs/TauLabs/pulls/1224/comments"},"review_comment":{"href":"https://api.github.com/repos/TauLabs/TauLabs/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/TauLabs/TauLabs/pulls/1224/commits"},"statuses":{"href":"https://api.github.com/repos/TauLabs/TauLabs/statuses/48868e8146f67d7bf84e60d08662e5b059e00e76"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":26,"additions":1657,"deletions":554,"changed_files":12}}