mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-14 00:20:05 +08:00
Compare commits
788 Commits
v1.7.1
...
v1.7.4beta
| Author | SHA1 | Date | |
|---|---|---|---|
| e63f9d9bf6 | |||
| cd250831d5 | |||
| be275b880b | |||
| ee0ae079ff | |||
| 879c698cab | |||
| 79dacdda2c | |||
| e140c37fe3 | |||
| 50d35f63be | |||
| ce952d8f64 | |||
| 4c6daf0748 | |||
| 26b721ac8b | |||
| 20905ce478 | |||
| 217a67f956 | |||
| 2b81331f8a | |||
| 76aa044105 | |||
| 09dba29b6c | |||
| a0372c6183 | |||
| cc777a80ff | |||
| aaa67632ca | |||
| 062e44061d | |||
| 52e5e0df14 | |||
| 6d445cf5a6 | |||
| 34dd68bee1 | |||
| a6e35ab7f7 | |||
| 691a5c6532 | |||
| 0f79222ff9 | |||
| 08a53a9056 | |||
| 7776789b7d | |||
| f68f897820 | |||
| ed0b6db2de | |||
| ff25c7f48a | |||
| e32b04fff1 | |||
| 42f4e62a04 | |||
| 9f69447e22 | |||
| d2ead02fb5 | |||
| dc28c47544 | |||
| c4fb2b26fd | |||
| 6317d36ec9 | |||
| ba5f2254cd | |||
| 9ff9692270 | |||
| 1abf90c6d4 | |||
| 7607c71ca8 | |||
| d1dca4e74c | |||
| c72340e039 | |||
| f194c5424c | |||
| bb7466c596 | |||
| 2a5a7b3a1e | |||
| dacec87d6b | |||
| de85acb8b0 | |||
| 24be68b27a | |||
| 2bcc5cf3e5 | |||
| a99e49a856 | |||
| 22acb1dab1 | |||
| 7ee464c264 | |||
| 83d55773af | |||
| 9fb9b2916a | |||
| f7ee3c2015 | |||
| 279b66bfbd | |||
| eb33145ac8 | |||
| 89a775b401 | |||
| 8a5cdac1f4 | |||
| e0af2912a1 | |||
| 320bdc6482 | |||
| 246be4f0ab | |||
| 2e6904b8a4 | |||
| f2dddc65a5 | |||
| 32eaf278ad | |||
| 523bb11577 | |||
| 0d26aeafe2 | |||
| fca99cf775 | |||
| 0e4034d01e | |||
| 0a5af01454 | |||
| 118214c6b5 | |||
| ff66605a8a | |||
| 63121b74df | |||
| de9368319f | |||
| bb6802a1ed | |||
| 5a7885610d | |||
| dde922a971 | |||
| 06df2fcb65 | |||
| 0ed631227f | |||
| 5335778f6e | |||
| f95f4c5f09 | |||
| ebe74ccb2e | |||
| fd0be3c412 | |||
| dbdb2c9c22 | |||
| 64b97cb18e | |||
| 74730273c1 | |||
| 2ce8b6a984 | |||
| ac2b3ccadc | |||
| e4ea7262fd | |||
| 03338935e0 | |||
| e0ca38e794 | |||
| 23257bf6ee | |||
| b66bc712af | |||
| 1d8f588d37 | |||
| 9e16543dbe | |||
| ae2e6c7a18 | |||
| bf22f02567 | |||
| 196d0e40b4 | |||
| 5a2a5127fa | |||
| 2c0436c37c | |||
| 07a84f2246 | |||
| 6900f97b72 | |||
| 8f71633516 | |||
| 4859cc04dc | |||
| daa6c6ffc8 | |||
| 9c6b1a0f04 | |||
| 623e16e8be | |||
| 6f47894929 | |||
| ba90952e07 | |||
| 83d01a7c76 | |||
| bf097d7fa4 | |||
| 493c41c76e | |||
| 354584acfc | |||
| 69470f6991 | |||
| 458db2e508 | |||
| 03b8cd78b3 | |||
| 1290db7cb7 | |||
| b9081fb0ab | |||
| 2ddd04cba6 | |||
| 664001921e | |||
| 2f96dbb216 | |||
| 5cbd19aef2 | |||
| 5ef27c5425 | |||
| 6caeb2da4f | |||
| 38f5f60a1e | |||
| 3d6854099e | |||
| e340f6fd7a | |||
| d39a8b5a48 | |||
| 5bb9babc20 | |||
| 4c4f990b3b | |||
| 2ef9c4ec35 | |||
| ff86d15c13 | |||
| 3b0b5645e1 | |||
| 1ef7b351be | |||
| 3be6a439f1 | |||
| 25b02a9d0f | |||
| 3b69361a00 | |||
| 4158b5e6a9 | |||
| e9c7023083 | |||
| ea3586cfd9 | |||
| 08534588cd | |||
| ee2163ce69 | |||
| 198708ba2e | |||
| ab9ee3aa6c | |||
| add20389f6 | |||
| 11e3081efd | |||
| 40675bd1f4 | |||
| 17cb5c4d58 | |||
| 49e349c753 | |||
| 38e5a06136 | |||
| 91d6f35fc8 | |||
| e0b32a6846 | |||
| 611ab577d8 | |||
| 83ac74367c | |||
| 3917eb2d00 | |||
| df7364d2e2 | |||
| ea8db53d15 | |||
| 04a89f7e9b | |||
| 29c60a1fd4 | |||
| 6a987b5a15 | |||
| 2549b702f0 | |||
| 10bf6a4b59 | |||
| a1f169f752 | |||
| 159834ce1b | |||
| ddb2dd89db | |||
| e9c715f89b | |||
| 2886fe8da3 | |||
| 86c472d8ff | |||
| 3ef6bc7d93 | |||
| 4cac6d1a44 | |||
| abb067c788 | |||
| 19e706fede | |||
| a0f115b9ae | |||
| 4cb71f209f | |||
| 7fa858ad84 | |||
| 94b8e4a2bf | |||
| dcc47020a4 | |||
| bf42964432 | |||
| 97815df1a8 | |||
| 063714c42c | |||
| 15fb60c48f | |||
| 1897b93cd2 | |||
| 426f2cce2e | |||
| 80de3f48c8 | |||
| 559e2c211a | |||
| a35abf2453 | |||
| 7b5b1c4f23 | |||
| 5b7c062f67 | |||
| f346b00ee0 | |||
| ca9c3b18ff | |||
| 54d1395206 | |||
| 4bf1980ff6 | |||
| 8d9e9d3a7b | |||
| 8fc659dcb2 | |||
| 43c7f7edbe | |||
| 71fef78bdd | |||
| 50e96b24b0 | |||
| ecf46b4f91 | |||
| 2c7d45064e | |||
| 4e45d7959c | |||
| a6e863ac89 | |||
| a24a40c6c4 | |||
| 135162522a | |||
| a1f660119c | |||
| 458d8f7b02 | |||
| 4aeb70fcfe | |||
| f932217fdc | |||
| 883fb8ce57 | |||
| f5bfabfab9 | |||
| 37a082255a | |||
| a272cbbd08 | |||
| f9cb575ced | |||
| 12c343317c | |||
| a04110cad1 | |||
| 89b2fa2ba0 | |||
| 13a3791c47 | |||
| 2517d3854c | |||
| 80eca30689 | |||
| c22dc2beaf | |||
| 8ec1fb9999 | |||
| d63a8033d0 | |||
| 6be5a0aacc | |||
| 4d0964385b | |||
| cc36c8ee37 | |||
| 85b88f723d | |||
| 4b64bfdd95 | |||
| 8b63dbecde | |||
| 36e72a67fa | |||
| b1f08a9640 | |||
| a637063965 | |||
| 53b4f6406f | |||
| 9c7de38b75 | |||
| e04d30c9cf | |||
| 2eb684ded3 | |||
| 1a0238f20c | |||
| 6355eedd7a | |||
| 3928507f65 | |||
| 232b38a669 | |||
| 2d27b1eb52 | |||
| f621c334a8 | |||
| 5b80adeadb | |||
| dbb3621bdb | |||
| 3e2c9d1113 | |||
| 23be7d4f96 | |||
| fb29ea0079 | |||
| 8a67b5b447 | |||
| f6a37d8c74 | |||
| cf54023c96 | |||
| ad6df56438 | |||
| c459a04b9b | |||
| 681e351f62 | |||
| f7a17ad5e5 | |||
| 782ed5d324 | |||
| c7dfd2d17f | |||
| caf50dbea2 | |||
| 64fa1ec6a5 | |||
| b69a4df20c | |||
| bce08334d0 | |||
| 4772a25b77 | |||
| 35acdfa717 | |||
| 0b9025b2d2 | |||
| 10df6729f3 | |||
| d0baf95df3 | |||
| eaf401a32f | |||
| 74bd40c09d | |||
| 0413f407a5 | |||
| 86ae744266 | |||
| b40323b8d8 | |||
| f7285e1cfa | |||
| 26f9e56014 | |||
| 5357d680d2 | |||
| 0e82e2ec67 | |||
| 83133b1bca | |||
| 64f032441c | |||
| f5c1124812 | |||
| b3b1161d53 | |||
| 6f248bc7e9 | |||
| f73f95965a | |||
| 6a4ef78111 | |||
| d646abcee7 | |||
| a1ab84e5b9 | |||
| 6d00de7b25 | |||
| df32297162 | |||
| d175a75691 | |||
| 305859f356 | |||
| 976b890c56 | |||
| 5ad03d7ef2 | |||
| 11d480240a | |||
| 8e68f5ed79 | |||
| 8c201c88ca | |||
| 9c86cdab2e | |||
| 102c0ead53 | |||
| 2ff81393bc | |||
| a644ed90dd | |||
| acaf7cd267 | |||
| 8a1b6d548f | |||
| 0c6280ba45 | |||
| 86acd23704 | |||
| 2577eb7527 | |||
| 90a6989440 | |||
| c8c918ce98 | |||
| 10597fcf12 | |||
| a916a6c2db | |||
| 4c5b42f256 | |||
| 59fd22be1b | |||
| 8d4036df7d | |||
| d2e45d14fa | |||
| eed8b00857 | |||
| 6ef43e5b75 | |||
| f8693b49c2 | |||
| 388eb6ee4c | |||
| 64551607bc | |||
| 4b2dcddec2 | |||
| 33b75d8e87 | |||
| c294393377 | |||
| 642a4a5fc7 | |||
| 1e9361572f | |||
| fc78de4c26 | |||
| f866698fb2 | |||
| b117fddb21 | |||
| 0ed78f259e | |||
| d53c531979 | |||
| 47e5382e7e | |||
| 3e09f6309e | |||
| 1a50759521 | |||
| 9cb95b64ca | |||
| 2ec5ea48a3 | |||
| 9611641bb7 | |||
| d5b2ba276b | |||
| 0f1f2d870f | |||
| d10372c6b5 | |||
| 1988141c6d | |||
| 402ad9f48f | |||
| a4659b1228 | |||
| 117966d2a1 | |||
| 08490b0182 | |||
| 26d2e69ecf | |||
| 8054bbb985 | |||
| f63be6b055 | |||
| 915f728145 | |||
| 6e712876a4 | |||
| 591f9a8a38 | |||
| 3f123acd7e | |||
| 6c8b16391e | |||
| 61b3827962 | |||
| b84a97c6d5 | |||
| 5214642bc3 | |||
| 546a92af1e | |||
| 9c2480e534 | |||
| e9ea7ab698 | |||
| dcfd2f1579 | |||
| f7aad844a3 | |||
| 7f1f3fa367 | |||
| 1714deeb94 | |||
| 79ae413982 | |||
| 8ce57bedb7 | |||
| e139446d09 | |||
| aca30fc612 | |||
| 920cb7a1a1 | |||
| d34767b871 | |||
| 2bea09a997 | |||
| 98441ac100 | |||
| 3504ce8efe | |||
| cf79be1559 | |||
| c272feb71d | |||
| 8b0ba3c34c | |||
| dc2d6e8aab | |||
| f8f95078e8 | |||
| 1f5d6c7117 | |||
| 92dbb16d29 | |||
| 7bf3425b7e | |||
| f294445cd0 | |||
| d6f137e10d | |||
| 738f1ccdb6 | |||
| 44d0cba6aa | |||
| 5bd8574e47 | |||
| 761826cc5a | |||
| 25483faf88 | |||
| a63fce86d4 | |||
| 5cfe0e9a0f | |||
| ca6d8fefd8 | |||
| 757f0e7334 | |||
| d5219c8bc0 | |||
| e43cc9a9c1 | |||
| ffc7f37f12 | |||
| bc3577bd60 | |||
| 0266ca9845 | |||
| 342509b3ab | |||
| ae52f74e78 | |||
| b7dff95782 | |||
| c0615c9e70 | |||
| 2ae5e575a5 | |||
| fd3f59d8c4 | |||
| edf178d4e8 | |||
| 9a32ca2307 | |||
| 0fd043af01 | |||
| d8164377a8 | |||
| 7ae3884944 | |||
| add3692357 | |||
| bedaafcc20 | |||
| 9d18fc8787 | |||
| 99c9e09624 | |||
| 5a189f3c4a | |||
| 48edaa7ef6 | |||
| 5e826eaa27 | |||
| 38c949731f | |||
| 463217a5f9 | |||
| 45458fe9eb | |||
| 2cb698f01f | |||
| c8a1050323 | |||
| bda929bebb | |||
| b7404ad6c1 | |||
| b468551b6c | |||
| 3adb389b7c | |||
| 85ba160757 | |||
| 821eb5ac87 | |||
| ae65289967 | |||
| 850678b0a6 | |||
| e11008f30e | |||
| fed06955bc | |||
| f672152d2d | |||
| a329fd4c76 | |||
| b7d7d1209b | |||
| 262d9c790b | |||
| 0e3574c44f | |||
| c20594cd0e | |||
| bad813e911 | |||
| 094fa92de0 | |||
| 0e65753568 | |||
| b184b61457 | |||
| 53249c53b5 | |||
| cc5e00feca | |||
| 15a69b881d | |||
| c6c9f4dc64 | |||
| a26c3a0530 | |||
| e5317ed9b6 | |||
| 2df5d23ab6 | |||
| 49c838ffeb | |||
| 67f89f51ff | |||
| 576b42fea3 | |||
| 6d3dda2802 | |||
| 5ab6834fed | |||
| 9b5ae1ef7a | |||
| cd296c5f88 | |||
| 18b83f2960 | |||
| 872cba12d4 | |||
| 3a52e7ee5d | |||
| 66c67f89e6 | |||
| 6609e4843b | |||
| c7cf442e16 | |||
| 1d59d89282 | |||
| 45fd908784 | |||
| 4fecb6fe20 | |||
| 155c55814b | |||
| 90e3aeda6c | |||
| f2dbb0ad3b | |||
| d9b9b4407a | |||
| dd1d0adfef | |||
| 8c0542bdb8 | |||
| f600cfbb9f | |||
| d9221bb8d2 | |||
| aa4c6c038d | |||
| 652d295b2d | |||
| b2046ffd6b | |||
| d375880c4b | |||
| e970f3a2a0 | |||
| ec1c37e1af | |||
| b512759336 | |||
| 1c74887a68 | |||
| 9ac70ff639 | |||
| 7c019b7da3 | |||
| 856a523d29 | |||
| 4b751bdc4f | |||
| 8b3ea27bb3 | |||
| eec1ead233 | |||
| 28a5287a91 | |||
| b524c8a20f | |||
| 6e0f3ffa88 | |||
| fe6006e22f | |||
| f49c061a3c | |||
| b1a3475ebf | |||
| 916d6a15fd | |||
| 956935141e | |||
| 25c7a03a8b | |||
| 6227139df1 | |||
| f1a3fd09a3 | |||
| bc487c7c36 | |||
| be4be6db2c | |||
| 931482941c | |||
| a25ca0c37d | |||
| 7b1b255158 | |||
| f47d0c8f8c | |||
| 794c7a5a0f | |||
| eb43b86a4b | |||
| 1037e983ab | |||
| 86e2f9c306 | |||
| dfe1b59949 | |||
| d523cb54a5 | |||
| 137a2444a8 | |||
| 2756c76613 | |||
| 385212f2c1 | |||
| 8c998c1309 | |||
| 919b6ae239 | |||
| 663913a1dc | |||
| 823d423456 | |||
| 9fbd6b912d | |||
| 60cc132c8a | |||
| 90b326f3b5 | |||
| 101aeadf03 | |||
| 52e2aecaf1 | |||
| bc15fdf267 | |||
| f561d16334 | |||
| f8ceee0cf2 | |||
| f962e9826b | |||
| ee9853a3d6 | |||
| 5fe203a510 | |||
| 48a6a98071 | |||
| 92a667fca5 | |||
| a56d2ab981 | |||
| dac2a93ea2 | |||
| 0ead55d38a | |||
| bdfb291026 | |||
| 82f661b37f | |||
| 60eb1c2262 | |||
| 2cccbee0d5 | |||
| 3d7afaafbd | |||
| a9bbbdce82 | |||
| a02cd869c3 | |||
| fe22b856d6 | |||
| cf2d794da9 | |||
| 8fdcdedc84 | |||
| 3d9cd5c0bc | |||
| 48af6b6d61 | |||
| 5a0e4c137e | |||
| 1739deb517 | |||
| 501dd82aaf | |||
| 115288301e | |||
| 487530f791 | |||
| d6a2002505 | |||
| b07deed6c6 | |||
| 73348b6c4e | |||
| a0c312fcbd | |||
| 7f12f4ae9b | |||
| 55e0588661 | |||
| ac5f856d2d | |||
| 27e64149f0 | |||
| 7695f79239 | |||
| f284385c3f | |||
| 2170e7eba0 | |||
| 7888acf087 | |||
| fb3c58d85f | |||
| 413b161250 | |||
| fba592b5fc | |||
| ca0267b4e9 | |||
| bf48a35882 | |||
| 4eac493413 | |||
| 3c669a4f30 | |||
| 992db1f415 | |||
| fd7d4156fd | |||
| bb35f75bbf | |||
| 4b4b181e7c | |||
| adfa795b79 | |||
| 42b4156bae | |||
| 3e0b8b7016 | |||
| 447aa134db | |||
| 50bd148f53 | |||
| ea545f2813 | |||
| 6213b2266b | |||
| f79c3bb5ea | |||
| 25141ce184 | |||
| 1930cc2fbe | |||
| 90e7ce1b96 | |||
| 1cfb441527 | |||
| 59f56f4a5b | |||
| 01e1bac365 | |||
| 0cd24874f3 | |||
| 8c647f11d0 | |||
| 37e3234e49 | |||
| 1f63d85869 | |||
| f86d4b18f8 | |||
| 31ab496f31 | |||
| dd5524da3d | |||
| c0c0666d5c | |||
| 275f462136 | |||
| bf84cf0dcf | |||
| be8adbfdf3 | |||
| 2186f7b1b1 | |||
| 70de169f15 | |||
| 02c4ec9b2a | |||
| 62c2fbb443 | |||
| 2dcd617a8f | |||
| 7178f8416d | |||
| f2cd5e3e9f | |||
| e5b784736f | |||
| 678e2c415d | |||
| 3fcffe1f3b | |||
| 51437a89e1 | |||
| 14cc9e9919 | |||
| 3ffc1fd25b | |||
| 545f8c4452 | |||
| f3bd241dbe | |||
| 430cdada60 | |||
| 08443c0bfc | |||
| ec65ff7c5e | |||
| 627788c93c | |||
| 2bb4644180 | |||
| 45441d62b1 | |||
| 7af3cb9df8 | |||
| f87402b16c | |||
| 49180de27c | |||
| 641129ad4e | |||
| c8590e0fb1 | |||
| c7b5a6f463 | |||
| 757d905089 | |||
| 1cd0ca9c6c | |||
| 96d04af6e8 | |||
| 84d7eb2900 | |||
| 573fbeda04 | |||
| 14e8ee75e7 | |||
| 5af4704aac | |||
| 1f4bad0624 | |||
| d67cbfba3a | |||
| 5db534849a | |||
| 4d08f56fae | |||
| 92540fc6d8 | |||
| f4362c5ae5 | |||
| b8e6fc2730 | |||
| 6bdc18df6d | |||
| 734a6c8a42 | |||
| cd60fb6102 | |||
| e9960b5532 | |||
| 202c29154a | |||
| 66f614435f | |||
| d3a220f807 | |||
| 75e4a856a5 | |||
| 3f67ddbdba | |||
| 63deb40a76 | |||
| f46db40b10 | |||
| ab5a268ca5 | |||
| f9e7c66718 | |||
| 5ce381dfc7 | |||
| fefed35dfe | |||
| 9d61febd39 | |||
| 49bed47924 | |||
| 91cedcaba3 | |||
| 9f2bb6c7f9 | |||
| ad532d0510 | |||
| 386c34a563 | |||
| 33266ef2c8 | |||
| 1468d4ed39 | |||
| 3b71c70583 | |||
| e7fe8f7268 | |||
| 3041438132 | |||
| e2b2f97d0d | |||
| 9a7f99f3cd | |||
| 0bfd2925bf | |||
| d1d367011e | |||
| d26e037df4 | |||
| 3bfa194933 | |||
| 18715ebd80 | |||
| c0efaa4ca9 | |||
| 6fbfde9ec3 | |||
| d22398f733 | |||
| cd0fbb3cd2 | |||
| 03c5e9172d | |||
| bb3746e710 | |||
| c3f630ca14 | |||
| 18d13498de | |||
| ca472ebfaf | |||
| 7277d72db5 | |||
| 5d186f374b | |||
| f7b4f13e81 | |||
| 2ba7b41f5c | |||
| 5072c0b5ae | |||
| 32aa8d4f51 | |||
| 40702b36ee | |||
| 1aebc69fed | |||
| 715b571dac | |||
| dc6e47f777 | |||
| a649bbebb7 | |||
| cf55901ac9 | |||
| 2167457e2e | |||
| 90b4afebb5 | |||
| ddf0ecfc38 | |||
| 074636a8ae | |||
| c06251f3be | |||
| 1f21256f6a | |||
| 0013f641aa | |||
| ac113d71af | |||
| 7d44567fab | |||
| 2c148236ae | |||
| 0ef245aee1 | |||
| 168e070f94 | |||
| 51111fc6e3 | |||
| d7aaab07fc | |||
| 6ad9e59a7a | |||
| b8b9f15a34 | |||
| d61e0651ab | |||
| 4c041f12ea | |||
| f550c8735a | |||
| c65db00914 | |||
| db5e932f48 | |||
| 17e58dc08b | |||
| c6760cc6fb | |||
| d91b2347dd | |||
| badcddc29a | |||
| 98ca693298 | |||
| 85e879a574 | |||
| 1b4a224223 | |||
| cc2cf40e6e | |||
| 8b591aa13a | |||
| 0f8f319411 | |||
| 63d24a9e1e | |||
| 417351390f | |||
| be930d4372 | |||
| dacc45c3d1 | |||
| ca6f6b27a5 | |||
| ff6928fb63 | |||
| 65f9005bc6 | |||
| 32a450f5dd | |||
| 344cf83549 | |||
| 4980b93830 | |||
| 9c378a7ca1 | |||
| 3ead5c2afd | |||
| 301be5ed8a | |||
| 859b19db9a | |||
| 34ea229a78 | |||
| ab30532f52 | |||
| 3cc356a703 | |||
| ab2f85d4ff | |||
| 5d4086309f | |||
| e3f5f8e475 | |||
| cbc8b50aa1 | |||
| 4445ffc70e | |||
| 6623fd0212 | |||
| d57ed6d17f | |||
| 6a701adf3c | |||
| 2eb3392c39 | |||
| bb516be61e | |||
| 0ae1737e85 | |||
| 644db1b03f | |||
| c31e31bf5e | |||
| f69a6af989 | |||
| fa8222e188 | |||
| 370da89573 | |||
| 1cab556ddb | |||
| 23d15c1365 | |||
| 72823e6eb4 | |||
| fc7c8b4b89 | |||
| 17e17d79dd | |||
| d0fba8bf8b | |||
| c0be801b5c | |||
| 5a6cde41d5 | |||
| ca804a2308 | |||
| 294fbc46a9 | |||
| 55be098e3b | |||
| 5d6edcc15d | |||
| 1ea5de43cf | |||
| 043ad3c33e | |||
| 176738c688 | |||
| ec57832a8f | |||
| 7dab5d4380 | |||
| b7189012dc | |||
| 2f50a07afb | |||
| 925c65b4d5 | |||
| 58d1cdc733 | |||
| a8c26265b5 | |||
| 964cb486a9 | |||
| 375ae991bc | |||
| cf7ad67678 | |||
| 4e175d13c4 | |||
| 74868f8c2b | |||
| 6172315cf7 | |||
| a4be7ae7d0 | |||
| 7a9f7eb424 | |||
| 4bd7d62b5c | |||
| aea8985c8d | |||
| 3da8031e8e | |||
| eeff52cda7 | |||
| ec50193d6c | |||
| 5195210893 | |||
| 57f92250b3 | |||
| 9bff0c8c04 | |||
| e2d6c0a8f9 | |||
| d5bb948cbb | |||
| a4b127960b |
@@ -0,0 +1,33 @@
|
||||
# How to install:
|
||||
# gem install github_changelog_generator
|
||||
# How to run:
|
||||
# github_changelog_generator -u PX4 -p Firmware
|
||||
# Description:
|
||||
# The following params are sensible defaults for the PX4 project,
|
||||
# if you want to do a changelog before a release you need to update since-tag and future-releases,
|
||||
|
||||
# Params:
|
||||
# github_changelog_generator --help for all options
|
||||
|
||||
# max-issues
|
||||
# max threshold for github api queries
|
||||
# make sure you set your CHANGELOG_GITHUB_TOKEN before
|
||||
# running
|
||||
max-issues=1500
|
||||
|
||||
# exclude-tags-regex
|
||||
# excludes release candidates
|
||||
exclude-tags-regex=rc[0-9]{1,}|beta[0-9]{1,}
|
||||
|
||||
# since-tag
|
||||
# version of last stable release
|
||||
# you need to change this depending on what you need
|
||||
# if you want a changelog between versions this is the lowest version
|
||||
since-tag=1.6.5
|
||||
|
||||
# future-release
|
||||
# version you are about to release
|
||||
# if you want a changelog between a version and all unreleased changes grouped as a release
|
||||
# eg: v1.6.5 to v1.7.0
|
||||
future-release=v1.7.0
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
[submodule "mavlink/include/mavlink/v1.0"]
|
||||
path = mavlink/include/mavlink/v1.0
|
||||
url = https://github.com/mavlink/c_library_v1.git
|
||||
branch = master
|
||||
[submodule "mavlink/include/mavlink/v2.0"]
|
||||
path = mavlink/include/mavlink/v2.0
|
||||
url = https://github.com/mavlink/c_library_v2.git
|
||||
|
||||
+32
-6
@@ -110,7 +110,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PX4_BINARY_DIR})
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PX4_BINARY_DIR})
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PX4_BINARY_DIR})
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${PX4_SOURCE_DIR}/cmake")
|
||||
list(APPEND CMAKE_MODULE_PATH ${PX4_SOURCE_DIR}/cmake)
|
||||
|
||||
#=============================================================================
|
||||
# git
|
||||
@@ -155,6 +155,9 @@ if (NOT EXTERNAL_MODULES_LOCATION STREQUAL "")
|
||||
get_filename_component(EXTERNAL_MODULES_LOCATION "${EXTERNAL_MODULES_LOCATION}" ABSOLUTE)
|
||||
endif()
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${PX4_SOURCE_DIR}/platforms/${OS}/cmake)
|
||||
|
||||
include(platforms/${OS}/cmake/px4_impl_os.cmake)
|
||||
set(config_module "configs/${CONFIG}")
|
||||
include(${config_module})
|
||||
|
||||
@@ -243,11 +246,11 @@ set(BUILD_SHARED_LIBS OFF)
|
||||
#=============================================================================
|
||||
# ccache
|
||||
#
|
||||
option(CCACHE "Use ccache if available" OFF)
|
||||
option(CCACHE "Use ccache if available" ON)
|
||||
find_program(CCACHE_PROGRAM ccache)
|
||||
if (CCACHE AND CCACHE_PROGRAM)
|
||||
message(STATUS "Enabled ccache: ${CCACHE_PROGRAM}")
|
||||
if (CCACHE AND CCACHE_PROGRAM AND NOT DEFINED ENV{CCACHE_DISABLE})
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
|
||||
else()
|
||||
endif()
|
||||
|
||||
#=============================================================================
|
||||
@@ -332,7 +335,7 @@ px4_join(OUT CMAKE_EXE_LINKER_FLAGS LIST "${CMAKE_EXE_LINKER_FLAGS};${exe_linker
|
||||
px4_join(OUT CMAKE_C_FLAGS LIST "${CMAKE_C_FLAGS};${c_flags};${optimization_flags}" GLUE " ")
|
||||
px4_join(OUT CMAKE_CXX_FLAGS LIST "${CMAKE_CXX_FLAGS};${cxx_flags};${optimization_flags}" GLUE " ")
|
||||
|
||||
include_directories(${include_dirs})
|
||||
include_directories(${include_dirs} ${CMAKE_CURRENT_BINARY_DIR}/src/modules/systemlib/param)
|
||||
link_directories(${link_dirs})
|
||||
add_definitions(${definitions})
|
||||
|
||||
@@ -394,11 +397,13 @@ endif()
|
||||
#=============================================================================
|
||||
# subdirectories
|
||||
#
|
||||
add_subdirectory(src/platforms/common)
|
||||
|
||||
foreach(module ${config_module_list})
|
||||
add_subdirectory(src/${module})
|
||||
endforeach()
|
||||
|
||||
add_subdirectory(src/firmware/${OS})
|
||||
add_subdirectory(platforms/${OS})
|
||||
|
||||
#=============================================================================
|
||||
# generate custom target to print for all executable and module cmake targets
|
||||
@@ -413,6 +418,27 @@ if (all_posix_cmake_targets)
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
#=============================================================================
|
||||
# uORB graph generation: add a custom target 'uorb_graph'
|
||||
#
|
||||
set(uorb_graph_config ${BOARD})
|
||||
|
||||
set(graph_module_list "")
|
||||
foreach(module ${config_module_list})
|
||||
set(graph_module_list "${graph_module_list}" "--src-path" "src/${module}")
|
||||
endforeach()
|
||||
|
||||
add_custom_command(OUTPUT ${uorb_graph_config}
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/uorb_graph/create.py
|
||||
${module_list}
|
||||
--exclude-path src/examples
|
||||
--file ${PX4_SOURCE_DIR}/Tools/uorb_graph/graph_${uorb_graph_config}
|
||||
WORKING_DIRECTORY ${PX4_SOURCE_DIR}
|
||||
COMMENT "Generating uORB graph"
|
||||
)
|
||||
add_custom_target(uorb_graph DEPENDS ${uorb_graph_config})
|
||||
|
||||
#=============================================================================
|
||||
# packaging
|
||||
#
|
||||
|
||||
+1
-1
@@ -41,4 +41,4 @@ Since we care about safety, we will regularly ask you for test results. Best is
|
||||
|
||||
Push changes to your repo and send a [pull request](https://github.com/PX4/Firmware/compare/).
|
||||
|
||||
Make sure to provide some testing feedback and if possible the link to a flight log file. Upload flight log files to [Log Muncher](http://dash.oznet.ch) and link the resulting report.
|
||||
MuncherMake sure to provide some testing feedback and if possible the link to a flight log file. Upload flight log files to [Flight Review](http://logs.px4.io) and link the resulting report.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 92 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 79 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 74 KiB |
@@ -1,98 +0,0 @@
|
||||
[TOC]
|
||||
|
||||
# Introduction
|
||||
|
||||
The HIL architecture allows you to test the flight stack replacing the real physical vehicle and sensors with a simulator of vehicle dynamics and sensor outputs. The flight stack "is not aware" that it is not on a real vehicle. This is a powerful tool for develping and testing code rapidly in a benchtop environment.
|
||||
|
||||
The flight stack can be run anywhere that supports a network connection to the simulator (with sufficient bandwidth and latency to transport the sensor and actuator messages). This can be on a standard linux workstation, an on-target linux image, or the on-target DSP image. These modes can be selected based on the goals of the testing. Workstation is useful for rapid testing in a tool-rich environment. DSP image testing is the closest to the final implementation, so is useful for testing actual HW operation, other than the physical sensing and actuation.
|
||||
|
||||
## Px4 High-level HIL Architecture
|
||||
|
||||
A diagram of the setup described is shown here. Note that UDP port numbers are only displayed on the socket server and are left blank on the socket client.
|
||||
|
||||
(???NOTES: This diagram needs to be updated to use control inputs over UDP, either from QGC or from other)
|
||||
|
||||

|
||||
|
||||
## Requirements
|
||||
The simulator that is currently supported is jMAVSim. The setup described here requires PX4 and jMAVSim installed and running. qGroundControl (QGC) is also required because it is the supported method of providing manual control commands.
|
||||
|
||||
## Assumptions
|
||||
|
||||
# Compiling Code
|
||||
|
||||
## JMAVSim
|
||||
|
||||
### Platform Requirements
|
||||
Linux with java-1.7.x or greater
|
||||
|
||||
### Build Instructions
|
||||
In a clean directory
|
||||
```
|
||||
> git clone https://github.com/PX4/jMAVSim.git
|
||||
> cd jMAVSim
|
||||
> git submodule init
|
||||
> git submodule update
|
||||
> ant
|
||||
```
|
||||
|
||||
## qGroundControl
|
||||
|
||||
### Platform Requirements
|
||||
Windows 7
|
||||
Logitech Gamepad F310 joystick controller
|
||||
|
||||
### Download/Install Instructions
|
||||
Download QGC from http://qgroundcontrol.org/downloads and install using the windows executable.
|
||||
|
||||
|
||||
## PX4
|
||||
|
||||
### Platform Requirements
|
||||
Linux or Eagle with a working IP interface (?? does this need further instructions?)
|
||||
|
||||
### Build Host Requirements
|
||||
(???Notes: Windows?)
|
||||
|
||||
### Download & Build Instructions
|
||||
|
||||
### Installing binaries on the Qualcomm Target
|
||||
|
||||
# Running PX4 in HIL Mode
|
||||
|
||||
## Starting PX4 on Qualcomm Eagle
|
||||
|
||||
```
|
||||
> adb shell
|
||||
# bash
|
||||
root@linaro-developer:/# cd ???
|
||||
root@linaro-developer:/# ./px4
|
||||
App name: px4
|
||||
Enter a command and its args:
|
||||
uorb start
|
||||
muorb start
|
||||
mavlink start -u 14556
|
||||
simulator start -p
|
||||
```
|
||||
|
||||
## Starting jMAVSim
|
||||
In the directory where jMAVSim is installed
|
||||
```
|
||||
java -cp lib/*:out/production/jmavsim.jar me.drton.jmavsim.Simulator -udp <IPADDR>:14560 -n 100
|
||||
```
|
||||
replacing <IPADDR> with the IP address of the machine running PX4 (Eagle). This can be found by running "ifconfig" on that machine.
|
||||
|
||||
## Starting qGroundControl
|
||||
Launch the qGroundControl application
|
||||
1. Set up the communication to the flight stack. In the menu File:Settings:CommLinks, select Add. Enter a Link Name of your choice. Select Link Type: UDP. Set the listening port to an unused port (example: 14561). Select Add. Enter the IP address and port of the PX4 Mavlink app, which is <IPADDR>:14556 with <IPADDR> being the IP address of the Eagle board. Select OK.
|
||||
1. Set up the joystick. Plug in the joystick to your Windows machine. In the menu File:Settings:CommLinks, check Enable Controllers. Select "Gamepad F310". Select "Manual". Set the axes/channel mapping to 0:Yaw, 1:Throttle, 2:unset, 3:Pitch, 4:Roll. Seletct "Inverted" for the throttle axis. Click "Calibrate range". Move the right joystick through its full range of motion. Move the left joystick full left then full right. Move the left joystick full forward (but not full backward). Click "end calibration."
|
||||
1. Connect to the flight stack. Click Analyze. Click the "Connect" button in the upper right, and select the connection that you created in the first step.
|
||||
|
||||
You should now be connected to the flight stack. You can see incoming Mavlink packets using the MAVLink Instpector (from Advanced:Tool Widgets)
|
||||
|
||||
|
||||
## Controlling PX4 flight in HIL Mode
|
||||
The joystick can now be used to fly the simulated vehicle. The jMAVSim world visualization gives a FPV view, and QGC can be used to display instruments such as artificial horizon and maps (if GPS simulation is enabled).
|
||||
|
||||
|
||||
# Debugging/FAQ
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
git log --pretty=format:"Last change: commit %h - %aN, %ar : %s" -1 $1 || echo no git
|
||||
Vendored
+311
-79
@@ -15,10 +15,11 @@ pipeline {
|
||||
builds["${node_name}"] = {
|
||||
node {
|
||||
stage("Build Test ${node_name}") {
|
||||
docker.image('px4io/px4-dev-nuttx:2017-10-23').inside('-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw') {
|
||||
docker.image('px4io/px4-dev-nuttx:2017-12-30').inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw') {
|
||||
stage("${node_name}") {
|
||||
checkout scm
|
||||
sh "make clean"
|
||||
sh "export"
|
||||
sh "make distclean"
|
||||
sh "ccache -z"
|
||||
sh "git fetch --tags"
|
||||
sh "make nuttx_${node_name}_default"
|
||||
@@ -26,6 +27,7 @@ pipeline {
|
||||
sh "make sizes"
|
||||
sh "ccache -s"
|
||||
archiveArtifacts(artifacts: 'build/*/*.px4', fingerprint: true)
|
||||
archiveArtifacts(artifacts: 'build/*/*.elf', fingerprint: true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -38,10 +40,11 @@ pipeline {
|
||||
builds["px4fmu-v2"] = {
|
||||
node {
|
||||
stage("Build Test ${node_name}") {
|
||||
docker.image('px4io/px4-dev-nuttx:2017-10-23').inside('-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw') {
|
||||
docker.image('px4io/px4-dev-nuttx:2017-12-30').inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw') {
|
||||
stage("${node_name}") {
|
||||
checkout scm
|
||||
sh "make clean"
|
||||
sh "export"
|
||||
sh "make distclean"
|
||||
sh "ccache -z"
|
||||
sh "git fetch --tags"
|
||||
sh "make px4io-v2_default"
|
||||
@@ -52,6 +55,7 @@ pipeline {
|
||||
sh "make sizes"
|
||||
sh "ccache -s"
|
||||
archiveArtifacts(artifacts: 'build/*/*.px4', fingerprint: true)
|
||||
archiveArtifacts(artifacts: 'build/*/*.elf', fingerprint: true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -66,16 +70,18 @@ pipeline {
|
||||
builds["${node_name}"] = {
|
||||
node {
|
||||
stage("Build Test ${node_name}") {
|
||||
docker.image('px4io/px4-dev-nuttx:2017-10-23').inside('-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw') {
|
||||
docker.image('px4io/px4-dev-nuttx:2017-12-30').inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw') {
|
||||
stage("${node_name}") {
|
||||
checkout scm
|
||||
sh "make clean"
|
||||
sh "export"
|
||||
sh "make distclean"
|
||||
sh "ccache -z"
|
||||
sh "git fetch --tags"
|
||||
sh "make nuttx_${node_name}_default"
|
||||
sh "make sizes"
|
||||
sh "ccache -s"
|
||||
archiveArtifacts(artifacts: 'build/*/*.px4', fingerprint: true)
|
||||
archiveArtifacts(artifacts: 'build/*/*.elf', fingerprint: true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,10 +97,11 @@ pipeline {
|
||||
builds["${node_name}"] = {
|
||||
node {
|
||||
stage("Build Test ${node_name}") {
|
||||
docker.image('px4io/px4-dev-nuttx:2017-10-23').inside('-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw') {
|
||||
docker.image('px4io/px4-dev-nuttx:2017-12-30').inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw') {
|
||||
stage("${node_name}") {
|
||||
checkout scm
|
||||
sh "make clean"
|
||||
sh "export"
|
||||
sh "make distclean"
|
||||
sh "ccache -z"
|
||||
sh "make nuttx_${node_name}_default"
|
||||
sh "make sizes"
|
||||
@@ -114,10 +121,11 @@ pipeline {
|
||||
builds["${node_name}"] = {
|
||||
node {
|
||||
stage("Build Test ${node_name}") {
|
||||
docker.image('px4io/px4-dev-base:2017-10-23').inside('-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw') {
|
||||
docker.image('px4io/px4-dev-base:2017-12-30').inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw') {
|
||||
stage("${node_name}") {
|
||||
checkout scm
|
||||
sh "make clean"
|
||||
sh "export"
|
||||
sh "make distclean"
|
||||
sh "ccache -z"
|
||||
sh "make posix_${node_name}"
|
||||
sh "ccache -s"
|
||||
@@ -136,10 +144,11 @@ pipeline {
|
||||
builds["${node_name}"] = {
|
||||
node {
|
||||
stage("Build Test ${node_name}") {
|
||||
docker.image('px4io/px4-dev-raspi:2017-10-23').inside('-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw') {
|
||||
docker.image('px4io/px4-dev-raspi:2017-12-30').inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw') {
|
||||
stage("${node_name}") {
|
||||
checkout scm
|
||||
sh "make clean"
|
||||
sh "export"
|
||||
sh "make distclean"
|
||||
sh "ccache -z"
|
||||
sh "make posix_${node_name}"
|
||||
sh "ccache -s"
|
||||
@@ -158,10 +167,11 @@ pipeline {
|
||||
builds["${node_name}"] = {
|
||||
node {
|
||||
stage("Build Test ${node_name}") {
|
||||
docker.image('px4io/px4-dev-armhf:2017-10-23').inside('-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw') {
|
||||
docker.image('px4io/px4-dev-armhf:2017-12-30').inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw') {
|
||||
stage("${node_name}") {
|
||||
checkout scm
|
||||
sh "make clean"
|
||||
sh "export"
|
||||
sh "make distclean"
|
||||
sh "ccache -z"
|
||||
sh "make posix_${node_name}"
|
||||
sh "ccache -s"
|
||||
@@ -181,10 +191,11 @@ pipeline {
|
||||
node {
|
||||
stage("Build Test ${node_name}") {
|
||||
docker.withRegistry('https://registry.hub.docker.com', 'docker_hub_dagar') {
|
||||
docker.image("lorenzmeier/px4-dev-snapdragon:2017-10-23").inside {
|
||||
docker.image("lorenzmeier/px4-dev-snapdragon:2017-12-29").inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw') {
|
||||
stage("${node_name}") {
|
||||
checkout scm
|
||||
sh "make clean"
|
||||
sh "export"
|
||||
sh "make distclean"
|
||||
sh "ccache -z"
|
||||
sh "make ${node_name}"
|
||||
sh "ccache -s"
|
||||
@@ -204,10 +215,11 @@ pipeline {
|
||||
builds["${node_name} (GCC7)"] = {
|
||||
node {
|
||||
stage("Build Test ${node_name} (GCC7)") {
|
||||
docker.image('px4io/px4-dev-base-archlinux:2017-12-08').inside('-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw') {
|
||||
docker.image('px4io/px4-dev-base-archlinux:2017-12-30').inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw') {
|
||||
stage("${node_name}") {
|
||||
checkout scm
|
||||
sh "make clean"
|
||||
sh "export"
|
||||
sh "make distclean"
|
||||
sh "ccache -z"
|
||||
sh "make posix_${node_name}"
|
||||
sh "ccache -s"
|
||||
@@ -218,27 +230,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
// GCC7 nuttx
|
||||
for (def option in ["px4fmu-v5_default"]) {
|
||||
def node_name = "${option}"
|
||||
|
||||
builds["${node_name} (GCC7)"] = {
|
||||
node {
|
||||
stage("Build Test ${node_name} (GCC7)") {
|
||||
docker.image('px4io/px4-dev-base-archlinux:2017-12-08').inside('-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw') {
|
||||
stage("${node_name}") {
|
||||
checkout scm
|
||||
sh "make clean"
|
||||
sh "ccache -z"
|
||||
sh "make nuttx_${node_name}"
|
||||
sh "ccache -s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parallel builds
|
||||
}
|
||||
}
|
||||
@@ -250,11 +241,12 @@ pipeline {
|
||||
stage('check style') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-base:2017-10-23'
|
||||
args '-e CI=true'
|
||||
image 'px4io/px4-dev-base:2017-12-30'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'export'
|
||||
sh 'make distclean'
|
||||
sh 'make check_format'
|
||||
}
|
||||
}
|
||||
@@ -262,12 +254,13 @@ pipeline {
|
||||
stage('clang analyzer') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-clang:2017-10-23'
|
||||
args '-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw'
|
||||
image 'px4io/px4-dev-clang:2017-12-30'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'make clean'
|
||||
sh 'export'
|
||||
sh 'make distclean'
|
||||
sh 'make scan-build'
|
||||
// publish html
|
||||
publishHTML target: [
|
||||
@@ -280,17 +273,25 @@ pipeline {
|
||||
reportName: 'Clang Static Analyzer'
|
||||
]
|
||||
}
|
||||
when {
|
||||
anyOf {
|
||||
branch 'master'
|
||||
branch 'beta'
|
||||
branch 'stable'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('clang tidy') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-clang:2017-10-23'
|
||||
args '-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw'
|
||||
image 'px4io/px4-dev-clang:2017-12-30'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'make clean'
|
||||
sh 'export'
|
||||
sh 'make distclean'
|
||||
sh 'make clang-tidy-quiet'
|
||||
}
|
||||
}
|
||||
@@ -299,11 +300,12 @@ pipeline {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-base:ubuntu17.10'
|
||||
args '-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'make clean'
|
||||
sh 'export'
|
||||
sh 'make distclean'
|
||||
sh 'make cppcheck'
|
||||
// publish html
|
||||
publishHTML target: [
|
||||
@@ -316,44 +318,253 @@ pipeline {
|
||||
reportName: 'Cppcheck'
|
||||
]
|
||||
}
|
||||
when {
|
||||
anyOf {
|
||||
branch 'master'
|
||||
branch 'beta'
|
||||
branch 'stable'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('tests') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-base:2017-10-23'
|
||||
args '-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw'
|
||||
image 'px4io/px4-dev-base:2017-12-30'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'make clean'
|
||||
sh 'export'
|
||||
sh 'make distclean'
|
||||
sh 'make posix_sitl_default test_results_junit'
|
||||
junit 'build/posix_sitl_default/JUnitTestResults.xml'
|
||||
}
|
||||
}
|
||||
|
||||
// temporarily disabled until stable
|
||||
//stage('tests coverage') {
|
||||
// agent {
|
||||
// docker {
|
||||
// image 'px4io/px4-dev-base:2017-10-23'
|
||||
// args '-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw'
|
||||
// }
|
||||
// }
|
||||
// steps {
|
||||
// sh 'make clean'
|
||||
// sh 'make tests_coverage'
|
||||
// // publish html
|
||||
// publishHTML target: [
|
||||
// allowMissing: false,
|
||||
// alwaysLinkToLastBuild: false,
|
||||
// keepAll: true,
|
||||
// reportDir: 'build/posix_sitl_default/coverage-html',
|
||||
// reportFiles: '*',
|
||||
// reportName: 'Coverage Report'
|
||||
// ]
|
||||
// }
|
||||
//}
|
||||
stage('ROS vtol mission new 1') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-ros:2017-12-31'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw -e HOME=$WORKSPACE'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'export'
|
||||
sh 'make distclean; rm -rf .ros; rm -rf .gazebo'
|
||||
sh 'git fetch --tags'
|
||||
sh 'make posix_sitl_default'
|
||||
sh 'make posix_sitl_default sitl_gazebo'
|
||||
sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_new_1 vehicle:=standard_vtol'
|
||||
}
|
||||
post {
|
||||
success {
|
||||
sh './Tools/upload_log.py -q --description "ROS mission test vtol_new_1: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
}
|
||||
failure {
|
||||
sh './Tools/upload_log.py -q --description "ROS mission test vtol_new_1: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI --email "${CHANGE_AUTHOR_EMAIL}" .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
archiveArtifacts '.ros/**/*.ulg'
|
||||
archiveArtifacts '.ros/**/rosunit-*.xml'
|
||||
archiveArtifacts '.ros/**/rostest-*.log'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('ROS vtol mission new 2') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-ros:2017-12-31'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw -e HOME=$WORKSPACE'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'export'
|
||||
sh 'make distclean; rm -rf .ros; rm -rf .gazebo'
|
||||
sh 'git fetch --tags'
|
||||
sh 'make posix_sitl_default'
|
||||
sh 'make posix_sitl_default sitl_gazebo'
|
||||
sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_new_2 vehicle:=standard_vtol'
|
||||
}
|
||||
post {
|
||||
success {
|
||||
sh './Tools/upload_log.py -q --description "ROS mission test vtol_new_2: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
}
|
||||
failure {
|
||||
sh './Tools/upload_log.py -q --description "ROS mission test vtol_new_2: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI --email "${CHANGE_AUTHOR_EMAIL}" .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
archiveArtifacts '.ros/**/*.ulg'
|
||||
archiveArtifacts '.ros/**/rosunit-*.xml'
|
||||
archiveArtifacts '.ros/**/rostest-*.log'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('ROS vtol mission old 1') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-ros:2017-12-31'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw -e HOME=$WORKSPACE'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'export'
|
||||
sh 'make distclean; rm -rf .ros; rm -rf .gazebo'
|
||||
sh 'git fetch --tags'
|
||||
sh 'make posix_sitl_default'
|
||||
sh 'make posix_sitl_default sitl_gazebo'
|
||||
sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_old_1 vehicle:=standard_vtol'
|
||||
}
|
||||
post {
|
||||
success {
|
||||
sh './Tools/upload_log.py -q --description "ROS mission test vtol_old_1: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
}
|
||||
failure {
|
||||
sh './Tools/upload_log.py -q --description "ROS mission test vtol_old_1: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI --email "${CHANGE_AUTHOR_EMAIL}" .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
archiveArtifacts '.ros/**/*.ulg'
|
||||
archiveArtifacts '.ros/**/rosunit-*.xml'
|
||||
archiveArtifacts '.ros/**/rostest-*.log'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('ROS vtol mission old 2') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-ros:2017-12-31'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw -e HOME=$WORKSPACE'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'export'
|
||||
sh 'make distclean; rm -rf .ros; rm -rf .gazebo'
|
||||
sh 'git fetch --tags'
|
||||
sh 'make posix_sitl_default'
|
||||
sh 'make posix_sitl_default sitl_gazebo'
|
||||
sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_old_2 vehicle:=standard_vtol'
|
||||
}
|
||||
post {
|
||||
success {
|
||||
sh './Tools/upload_log.py -q --description "ROS mission test vtol_old_2: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
}
|
||||
failure {
|
||||
sh './Tools/upload_log.py -q --description "ROS mission test vtol_old_2: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI --email "${CHANGE_AUTHOR_EMAIL}" .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
archiveArtifacts '.ros/**/*.ulg'
|
||||
archiveArtifacts '.ros/**/rosunit-*.xml'
|
||||
archiveArtifacts '.ros/**/rostest-*.log'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('ROS vtol mission old 3') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-ros:2017-12-31'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw -e HOME=$WORKSPACE'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'export'
|
||||
//sh 'make distclean; rm -rf .ros; rm -rf .gazebo'
|
||||
//sh 'git fetch --tags'
|
||||
//sh 'make posix_sitl_default'
|
||||
//sh 'make posix_sitl_default sitl_gazebo'
|
||||
//sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_old_3 vehicle:=standard_vtol'
|
||||
}
|
||||
post {
|
||||
//success {
|
||||
// sh './Tools/upload_log.py -q --description "ROS mission test vtol_old_3: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
//}
|
||||
failure {
|
||||
//sh './Tools/upload_log.py -q --description "ROS mission test vtol_old_3: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI --email "${CHANGE_AUTHOR_EMAIL}" .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
archiveArtifacts '.ros/**/*.ulg'
|
||||
archiveArtifacts '.ros/**/rosunit-*.xml'
|
||||
archiveArtifacts '.ros/**/rostest-*.log'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('ROS MC mission box') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-ros:2017-12-31'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw -e HOME=$WORKSPACE'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'export'
|
||||
sh 'make distclean; rm -rf .ros; rm -rf .gazebo'
|
||||
sh 'git fetch --tags'
|
||||
sh 'make posix_sitl_default'
|
||||
sh 'make posix_sitl_default sitl_gazebo'
|
||||
sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=multirotor_box vehicle:=iris'
|
||||
}
|
||||
post {
|
||||
success {
|
||||
sh './Tools/upload_log.py -q --description "ROS mission test multirotor_box: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
}
|
||||
failure {
|
||||
sh './Tools/upload_log.py -q --description "ROS mission test multirotor_box: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI --email "${CHANGE_AUTHOR_EMAIL}" .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
archiveArtifacts '.ros/**/*.ulg'
|
||||
archiveArtifacts '.ros/**/rosunit-*.xml'
|
||||
archiveArtifacts '.ros/**/rostest-*.log'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('ROS offboard att') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-ros:2017-12-31'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw -e HOME=$WORKSPACE'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'export'
|
||||
sh 'make distclean; rm -rf .ros; rm -rf .gazebo'
|
||||
sh 'git fetch --tags'
|
||||
sh 'make posix_sitl_default'
|
||||
sh 'make posix_sitl_default sitl_gazebo'
|
||||
sh './test/rostest_px4_run.sh mavros_posix_tests_offboard_attctl.test'
|
||||
}
|
||||
post {
|
||||
success {
|
||||
sh './Tools/upload_log.py -q --description "ROS offboard attitude test: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
}
|
||||
failure {
|
||||
sh './Tools/upload_log.py -q --description "ROS offboard attitude test: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI --email "${CHANGE_AUTHOR_EMAIL}" .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
archiveArtifacts '.ros/**/*.ulg'
|
||||
archiveArtifacts '.ros/**/rosunit-*.xml'
|
||||
archiveArtifacts '.ros/**/rostest-*.log'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('ROS offboard pos') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-ros:2017-12-31'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw -e HOME=$WORKSPACE'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'export'
|
||||
sh 'make distclean; rm -rf .ros; rm -rf .gazebo'
|
||||
sh 'git fetch --tags'
|
||||
sh 'make posix_sitl_default'
|
||||
sh 'make posix_sitl_default sitl_gazebo'
|
||||
sh './test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test'
|
||||
}
|
||||
post {
|
||||
success {
|
||||
sh './Tools/upload_log.py -q --description "ROS offboard position test: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
}
|
||||
failure {
|
||||
sh './Tools/upload_log.py -q --description "ROS offboard position test: ${CHANGE_ID}" --feedback "${CHANGE_TITLE} - ${CHANGE_URL}" --source CI --email "${CHANGE_AUTHOR_EMAIL}" .ros/rootfs/fs/microsd/log/*/*.ulg'
|
||||
archiveArtifacts '.ros/**/*.ulg'
|
||||
archiveArtifacts '.ros/**/rosunit-*.xml'
|
||||
archiveArtifacts '.ros/**/rostest-*.log'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -364,9 +575,10 @@ pipeline {
|
||||
|
||||
stage('airframe') {
|
||||
agent {
|
||||
docker { image 'px4io/px4-dev-base:2017-10-23' }
|
||||
docker { image 'px4io/px4-dev-base:2017-12-30' }
|
||||
}
|
||||
steps {
|
||||
sh 'make distclean'
|
||||
sh 'make airframe_metadata'
|
||||
archiveArtifacts(artifacts: 'airframes.md, airframes.xml', fingerprint: true)
|
||||
}
|
||||
@@ -374,9 +586,10 @@ pipeline {
|
||||
|
||||
stage('parameter') {
|
||||
agent {
|
||||
docker { image 'px4io/px4-dev-base:2017-10-23' }
|
||||
docker { image 'px4io/px4-dev-base:2017-12-30' }
|
||||
}
|
||||
steps {
|
||||
sh 'make distclean'
|
||||
sh 'make parameters_metadata'
|
||||
archiveArtifacts(artifacts: 'parameters.md, parameters.xml', fingerprint: true)
|
||||
}
|
||||
@@ -384,19 +597,35 @@ pipeline {
|
||||
|
||||
stage('module') {
|
||||
agent {
|
||||
docker { image 'px4io/px4-dev-base:2017-10-23' }
|
||||
docker { image 'px4io/px4-dev-base:2017-12-30' }
|
||||
}
|
||||
steps {
|
||||
sh 'make distclean'
|
||||
sh 'make module_documentation'
|
||||
archiveArtifacts(artifacts: 'modules/*.md', fingerprint: true)
|
||||
}
|
||||
}
|
||||
|
||||
stage('uorb graphs') {
|
||||
agent {
|
||||
docker {
|
||||
image 'px4io/px4-dev-nuttx:2017-12-30'
|
||||
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'export'
|
||||
sh 'make distclean'
|
||||
sh 'make uorb_graphs'
|
||||
archiveArtifacts(artifacts: 'Tools/uorb_graph/graph_sitl.json')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('S3 Upload') {
|
||||
agent {
|
||||
docker { image 'px4io/px4-dev-base:2017-10-23' }
|
||||
docker { image 'px4io/px4-dev-base:2017-12-30' }
|
||||
}
|
||||
|
||||
when {
|
||||
@@ -412,7 +641,10 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
environment {
|
||||
CCACHE_DIR = '/tmp/ccache'
|
||||
CI = true
|
||||
}
|
||||
options {
|
||||
buildDiscarder(logRotator(numToKeepStr: '5'))
|
||||
timeout(time: 60, unit: 'MINUTES')
|
||||
|
||||
@@ -218,7 +218,7 @@ check_rtps: \
|
||||
check_posix_sitl_rtps \
|
||||
sizes
|
||||
|
||||
.PHONY: sizes check quick_check check_rtps
|
||||
.PHONY: sizes check quick_check check_rtps uorb_graphs
|
||||
|
||||
sizes:
|
||||
@-find build -name *.elf -type f | xargs size 2> /dev/null || :
|
||||
@@ -235,6 +235,14 @@ check_%:
|
||||
@$(MAKE) --no-print-directory $(subst check_,,$@)
|
||||
@echo
|
||||
|
||||
uorb_graphs:
|
||||
@./Tools/uorb_graph/create_from_startupscript.sh
|
||||
@./Tools/uorb_graph/create.py --src-path src --exclude-path src/examples --file Tools/uorb_graph/graph_full
|
||||
@$(MAKE) --no-print-directory px4fmu-v2_default uorb_graph
|
||||
@$(MAKE) --no-print-directory px4fmu-v4_default uorb_graph
|
||||
@$(MAKE) --no-print-directory posix_sitl_default uorb_graph
|
||||
|
||||
|
||||
.PHONY: coverity_scan
|
||||
|
||||
coverity_scan: posix_sitl_default
|
||||
@@ -244,8 +252,8 @@ coverity_scan: posix_sitl_default
|
||||
.PHONY: parameters_metadata airframe_metadata module_documentation px4_metadata
|
||||
|
||||
parameters_metadata:
|
||||
@python $(SRC_DIR)/src/modules/systemlib/param/px_process_params.py -s `find $(SRC_DIR)/src -maxdepth 3 -type d` --inject-xml $(SRC_DIR)/src/modules/systemlib/param/parameters_injected.xml --markdown
|
||||
@python $(SRC_DIR)/src/modules/systemlib/param/px_process_params.py -s `find $(SRC_DIR)/src -maxdepth 3 -type d` --inject-xml $(SRC_DIR)/src/modules/systemlib/param/parameters_injected.xml --xml
|
||||
@python $(SRC_DIR)/src/modules/systemlib/param/px_process_params.py -s `find $(SRC_DIR)/src -maxdepth 4 -type d` --inject-xml $(SRC_DIR)/src/modules/systemlib/param/parameters_injected.xml --markdown
|
||||
@python $(SRC_DIR)/src/modules/systemlib/param/px_process_params.py -s `find $(SRC_DIR)/src -maxdepth 4 -type d` --inject-xml $(SRC_DIR)/src/modules/systemlib/param/parameters_injected.xml --xml
|
||||
|
||||
airframe_metadata:
|
||||
@python $(SRC_DIR)/Tools/px_process_airframes.py -v -a $(SRC_DIR)/ROMFS/px4fmu_common/init.d --markdown
|
||||
@@ -271,7 +279,7 @@ format:
|
||||
|
||||
# Testing
|
||||
# --------------------------------------------------------------------
|
||||
.PHONY: tests tests_coverage
|
||||
.PHONY: tests tests_coverage tests_mission tests_offboard rostest
|
||||
|
||||
tests:
|
||||
@$(MAKE) --no-print-directory posix_sitl_default test_results \
|
||||
@@ -279,9 +287,25 @@ tests:
|
||||
UBSAN_OPTIONS="color=always"
|
||||
|
||||
tests_coverage:
|
||||
@$(MAKE) clean
|
||||
@$(MAKE) --no-print-directory posix_sitl_default PX4_CMAKE_BUILD_TYPE=Coverage
|
||||
@$(MAKE) --no-print-directory posix_sitl_default sitl_gazebo PX4_CMAKE_BUILD_TYPE=Coverage
|
||||
@$(SRC_DIR)/test/rostest_px4_run.sh mavros_posix_tests_missions.test
|
||||
@$(SRC_DIR)/test/rostest_px4_run.sh mavros_posix_tests_offboard_attctl.test
|
||||
@$(SRC_DIR)/test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test
|
||||
@$(MAKE) --no-print-directory posix_sitl_default test_coverage_genhtml PX4_CMAKE_BUILD_TYPE=Coverage
|
||||
@echo "Open $(SRC_DIR)/build/posix_sitl_default/coverage-html/index.html to see coverage"
|
||||
|
||||
rostest: posix_sitl_default
|
||||
@$(MAKE) --no-print-directory posix_sitl_default sitl_gazebo
|
||||
|
||||
tests_mission: rostest
|
||||
@$(SRC_DIR)/test/rostest_px4_run.sh mavros_posix_tests_missions.test
|
||||
|
||||
tests_offboard: rostest
|
||||
@$(SRC_DIR)/test/rostest_px4_run.sh mavros_posix_tests_offboard_attctl.test
|
||||
@$(SRC_DIR)/test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test
|
||||
|
||||
# static analyzers (scan-build, clang-tidy, cppcheck)
|
||||
# --------------------------------------------------------------------
|
||||
.PHONY: scan-build posix_sitl_default-clang clang-tidy clang-tidy-fix clang-tidy-quiet cppcheck check_stack
|
||||
@@ -302,12 +326,12 @@ posix_sitl_default-clang:
|
||||
@$(PX4_MAKE) -C $(SRC_DIR)/build/posix_sitl_default-clang
|
||||
|
||||
clang-tidy: posix_sitl_default-clang
|
||||
@cd $(SRC_DIR)/build/posix_sitl_default-clang && run-clang-tidy-4.0.py -header-filter=".*\.hpp" -j$(j) -p .
|
||||
@cd $(SRC_DIR)/build/posix_sitl_default-clang && $(SRC_DIR)/Tools/run-clang-tidy.py -header-filter=".*\.hpp" -j$(j) -p .
|
||||
|
||||
# to automatically fix a single check at a time, eg modernize-redundant-void-arg
|
||||
# % run-clang-tidy-4.0.py -fix -j4 -checks=-\*,modernize-redundant-void-arg -p .
|
||||
clang-tidy-fix: posix_sitl_default-clang
|
||||
@cd $(SRC_DIR)/build/posix_sitl_default-clang && run-clang-tidy-4.0.py -header-filter=".*\.hpp" -j$(j) -fix -p .
|
||||
@cd $(SRC_DIR)/build/posix_sitl_default-clang && $(SRC_DIR)/Tools/run-clang-tidy.py -header-filter=".*\.hpp" -j$(j) -fix -p .
|
||||
|
||||
# modified version of run-clang-tidy.py to return error codes and only output relevant results
|
||||
clang-tidy-quiet: posix_sitl_default-clang
|
||||
@@ -350,7 +374,8 @@ submodulesupdate:
|
||||
gazeboclean:
|
||||
@rm -rf ~/.gazebo/*
|
||||
|
||||
distclean: submodulesclean gazeboclean
|
||||
distclean: gazeboclean
|
||||
@git submodule deinit -f .
|
||||
@git clean -ff -x -d -e ".project" -e ".cproject" -e ".idea" -e ".settings" -e ".vscode"
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
@@ -1,38 +1,46 @@
|
||||
## PX4 Pro Drone Autopilot ##
|
||||
# PX4 Pro Drone Autopilot
|
||||
|
||||
[](https://github.com/PX4/Firmware/releases) [](https://zenodo.org/badge/latestdoi/22634/PX4/Firmware) [](https://travis-ci.org/PX4/Firmware) [](https://scan.coverity.com/projects/3966?tab=overview)
|
||||
[](https://github.com/PX4/Firmware/releases) [](https://zenodo.org/badge/latestdoi/22634/PX4/Firmware)
|
||||
|
||||
[](http://ci.px4.io:8080/blue/organizations/jenkins/Firmware/activity) [](https://scan.coverity.com/projects/3966?tab=overview)
|
||||
|
||||
[](http://slack.px4.io)
|
||||
|
||||
This repository holds the [PX4 Pro](http://px4.io) flight control solution for drones, with the main applications located in the [src/modules](https://github.com/PX4/Firmware/tree/master/src/modules) directory. It also contains the PX4 Drone Middleware Platform, which provides drivers and middleware to run drones.
|
||||
|
||||
* Official Website: http://px4.io (License: BSD 3-clause, [LICENSE.md](https://github.com/PX4/Firmware/blob/master/LICENSE.md))
|
||||
* Supported airframes:
|
||||
* [Multicopters](http://px4.io/portfolio_category/multicopter/)
|
||||
* [Fixed wing](http://px4.io/portfolio_category/plane/)
|
||||
* [VTOL](http://px4.io/portfolio_category/vtol/)
|
||||
* many more experimental types (Rovers, Blimps, Boats, Submarines, etc)
|
||||
* Releases: [Downloads](https://github.com/PX4/Firmware/releases)
|
||||
* Official Website: http://px4.io (License: BSD 3-clause, [LICENSE](https://github.com/PX4/Firmware/blob/master/LICENSE))
|
||||
* [Supported airframes](https://docs.px4.io/en/airframes/airframe_reference.html) ([portfolio](http://px4.io/#airframes)):
|
||||
* [Multicopters](https://docs.px4.io/en/airframes/airframe_reference.html#copter)
|
||||
* [Fixed wing](https://docs.px4.io/en/airframes/airframe_reference.html#plane)
|
||||
* [VTOL](https://docs.px4.io/en/airframes/airframe_reference.html#vtol)
|
||||
* many more experimental types (Rovers, Blimps, Boats, Submarines, etc)
|
||||
* Releases: [Downloads](https://github.com/PX4/Firmware/releases)
|
||||
|
||||
|
||||
## PX4 Users
|
||||
|
||||
The [PX4 User Guide](https://docs.px4.io/en/) explains how to assemble [supported vehicles](https://docs.px4.io/en/airframes/airframe_reference.html) and fly drones with PX4.
|
||||
See the [forum and chat](https://docs.px4.io/en/#support) if you need help!
|
||||
|
||||
|
||||
## PX4 Developers
|
||||
|
||||
This [Developer Guide](https://dev.px4.io/) is for software developers who want to modify the flight stack and middleware (e.g. to add new flight modes), hardware integrators who want to support new flight controller boards and peripherals, and anyone who wants to get PX4 working on a new (unsupported) airframe/vehicle.
|
||||
|
||||
Developers should read the [Guide for Contributions](https://dev.px4.io/en/contribute/).
|
||||
See the [forum and chat](https://dev.px4.io/en/#support) if you need help!
|
||||
|
||||
Please refer to the [user documentation](https://docs.px4.io/en/) and [user forum](http://discuss.px4.io) for flying drones with the PX4 flight stack.
|
||||
|
||||
### Weekly Dev Call
|
||||
|
||||
The PX4 Dev Team syncs up on a [weekly dev call](https://dev.px4.io/en/contribute/).
|
||||
The PX4 Dev Team syncs up on a [weekly dev call](https://dev.px4.io/en/contribute/#dev_call).
|
||||
|
||||
* [Wednesday 17:00 Central European Time, 11:00 Eastern Time, 08:00 Pacific Standard Time](https://www.google.com/calendar/embed?src=bGludXhmb3VuZGF0aW9uLm9yZ19nMjF0dmFtMjRtN3BtN2poZXYwMWJ2bHFoOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t)
|
||||
* [Uber conference (dial-in or web client)](https://www.uberconference.com/lf-dronecode)
|
||||
* The agenda is announced in advance on the [PX4 Discuss](http://discuss.px4.io/c/weekly-dev-call)
|
||||
* Issues and PRs may be labelled [devcall](https://github.com/PX4/Firmware/issues?q=is%3Aopen+is%3Aissue+label%3Adevcall) to flag them for discussion
|
||||
> **Note** The dev call is open to all interested developers (not just the core dev team). This is a great opportunity to meet the team and contribute to the ongoing development of the platform. It includes a QA session for newcomers.
|
||||
|
||||
### Developers ###
|
||||
* [Developer Guide](https://dev.px4.io/)
|
||||
* [Build instructions](https://dev.px4.io/en/setup/building_px4.html)
|
||||
* [Guide for Contributions](https://dev.px4.io/en/contribute/)
|
||||
|
||||
## Maintenance Team
|
||||
|
||||
* Project / Founder - [Lorenz Meier](https://github.com/LorenzMeier)
|
||||
* Project: Founder - [Lorenz Meier](https://github.com/LorenzMeier), Architecture: [Daniel Agar](https://github.com/dagar)
|
||||
* [Dev Call](https://github.com/PX4/Firmware/labels/devcall) - [Ramon Roche](https://github.com/mrpollo)
|
||||
* Communication Architecture
|
||||
* [Beat Kueng](https://github.com/bkueng)
|
||||
@@ -59,40 +67,42 @@ The PX4 Dev Team syncs up on a [weekly dev call](https://dev.px4.io/en/contribut
|
||||
* Vision based navigation
|
||||
* [Christoph Tobler](https://github.com/ChristophTobler)
|
||||
* [Mohammed Kabir](https://github.com/mhkabir)
|
||||
* Obstacle Avoidance - [Vilhjalmur Vilhjalmsson](https://github.com/vilhjalmur89)
|
||||
* Obstacle Avoidance - [Martina Rivizzigno](https://github.com/mrivi)
|
||||
* [Snapdragon](https://github.com/PX4/Firmware/labels/snapdragon)
|
||||
* [Christoph Tobler](https://github.com/ChristophTobler)
|
||||
* [Mark Charlebois](https://github.com/mcharleb)
|
||||
* [Intel Aero](https://github.com/PX4/Firmware/labels/intel%20aero)
|
||||
* [Sugnan Prabhu](https://github.com/sugnanprabhu)
|
||||
* [José Roberto de Souza](https://github.com/zehortigoza)
|
||||
* [Raspberry Pi / Navio](https://github.com/PX4/Firmware/labels/raspberry_pi) - [Beat Kueng](https://github.com/bkueng)
|
||||
* [Parrot Bebop](https://github.com/PX4/Firmware/labels/bebop) - [Michael Schaeuble](https://github.com/eyeam3)
|
||||
* [Airmind MindPX / MindRacer](https://github.com/PX4/Firmware/labels/mindpx) - [Henry Zhang](https://github.com/iZhangHui)
|
||||
* RTPS/ROS2 Interface - [Vicente Monge](https://github.com/vicenteeprosima)
|
||||
|
||||
See also [About Us](http://px4.io/about-us/#development_team) (px4.io) and the [contributors list](https://github.com/PX4/Firmware/graphs/contributors) (Github).
|
||||
|
||||
## Supported Hardware
|
||||
|
||||
This repository contains code supporting these boards:
|
||||
* [Snapdragon Flight](https://dev.px4.io/en/flight_controller/snapdragon_flight.html)
|
||||
* [Intel Aero](https://dev.px4.io/en/flight_controller/intel_aero.html)
|
||||
* [Raspberry PI with Navio 2](https://dev.px4.io/en/flight_controller/raspberry_pi.html)
|
||||
* [Snapdragon Flight](https://docs.px4.io/en/flight_controller/snapdragon_flight.html)
|
||||
* [Intel Aero](https://docs.px4.io/en/flight_controller/intel_aero.html)
|
||||
* [Raspberry PI with Navio 2](https://docs.px4.io/en/flight_controller/raspberry_pi_navio2.html)
|
||||
* [Parrot Bebop 2](https://dev.px4.io/en/advanced/parrot_bebop.html)
|
||||
* FMUv2.x
|
||||
* [Pixhawk](https://dev.px4.io/en/flight_controller/pixhawk.html)
|
||||
* Pixhawk Mini
|
||||
* [Pixfalcon](https://dev.px4.io/en/flight_controller/pixfalcon.html)
|
||||
* [Pixhawk](https://docs.px4.io/en/flight_controller/pixhawk.html)
|
||||
* [Pixhawk Mini](https://docs.px4.io/en/flight_controller/pixhawk_mini.html)
|
||||
* [Pixfalcon](https://docs.px4.io/en/flight_controller/pixfalcon.html)
|
||||
* FMUv3.x [Pixhawk 2](https://pixhawk.org/modules/pixhawk2)
|
||||
* FMUv4.x
|
||||
* [Pixracer](https://dev.px4.io/en/flight_controller/pixracer.html)
|
||||
* Pixhawk 3 Pro
|
||||
* [Pixracer](https://docs.px4.io/en/flight_controller/pixracer.html)
|
||||
* [Pixhawk 3 Pro](https://docs.px4.io/en/flight_controller/pixhawk3_pro.html)
|
||||
* FMUv5.x (ARM Cortex M7, future Pixhawk)
|
||||
* STM32F4Discovery (basic support) [Tutorial](https://pixhawk.org/modules/stm32f4discovery)
|
||||
* Gumstix AeroCore (v1 and v2)
|
||||
* [STM32F4Discovery](http://www.st.com/en/evaluation-tools/stm32f4discovery.html) (basic support) [Tutorial](https://pixhawk.org/modules/stm32f4discovery)
|
||||
* [Gumstix AeroCore](https://www.gumstix.com/aerocore-2/) (only v2)
|
||||
* [Airmind MindPX V2.8](http://www.mindpx.net/assets/accessories/UserGuide_MindPX.pdf)
|
||||
* [Airmind MindRacer V1.2](http://mindpx.net/assets/accessories/mindracer_user_guide_v1.2.pdf)
|
||||
* [Bitcraze Crazyflie 2.0](https://dev.px4.io/en/flight_controller/crazyflie2.html)
|
||||
* [Bitcraze Crazyflie 2.0](https://docs.px4.io/en/flight_controller/crazyflie2.html)
|
||||
|
||||
## Project Milestones
|
||||
Additional information about supported hardware can be found in [PX4 user Guide > Autopilot Hardware](https://docs.px4.io/en/flight_controller/).
|
||||
|
||||
The PX4 software and Pixhawk hardware (which has been designed for it) has been created in 2011 by [Lorenz Meier](https://github.com/LorenzMeier).
|
||||
## Project Roadmap
|
||||
|
||||
A high level project roadmap is available [here](https://www.dronecode.org/roadmap/).
|
||||
|
||||
+13
-3
@@ -28,19 +28,29 @@ list(APPEND romfs_dependencies
|
||||
${romfs_temp_dir}/init.d/rc.autostart
|
||||
)
|
||||
|
||||
# create romfs.bin
|
||||
# copy px4io binary if configured
|
||||
if (config_io_board)
|
||||
list(APPEND romfs_dependencies
|
||||
copy_px4io_bin
|
||||
${fw_io_bin}
|
||||
)
|
||||
endif()
|
||||
|
||||
# create romfs.img
|
||||
add_custom_command(OUTPUT romfs.img
|
||||
COMMAND ${CMAKE_COMMAND} -E remove -f romfs.img romfs.txt
|
||||
COMMAND ${GENROMFS} -f romfs.img -d ${romfs_temp_dir} -V "NSHInitVol" -v > romfs.txt 2>&1
|
||||
DEPENDS ${romfs_dependencies}
|
||||
)
|
||||
|
||||
# create romfs.o
|
||||
# create nsh_romfsimg.c
|
||||
add_custom_command(OUTPUT nsh_romfsimg.c
|
||||
COMMAND ${CMAKE_COMMAND} -E remove -f nsh_romfsimg.c
|
||||
COMMAND xxd -i romfs.img nsh_romfsimg.c
|
||||
COMMAND sed 's/unsigned/const unsigned/g' nsh_romfsimg.c > nsh_romfsimg.c.tmp && mv nsh_romfsimg.c.tmp nsh_romfsimg.c
|
||||
DEPENDS romfs.img
|
||||
)
|
||||
|
||||
add_library(romfs STATIC nsh_romfsimg.c)
|
||||
add_dependencies(romfs platforms__common)
|
||||
add_dependencies(romfs prebuild_targets)
|
||||
set_target_properties(romfs PROPERTIES LINKER_LANGUAGE C)
|
||||
|
||||
@@ -40,6 +40,6 @@ then
|
||||
param set BAT_A_PER_V 15.39103
|
||||
fi
|
||||
|
||||
set MIXER quad_dc
|
||||
set MIXER quad_w
|
||||
|
||||
set PWM_OUT 1234
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
# @maintainer Lorenz Meier <lorenz@px4.io>
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.mc_defaults
|
||||
sh /etc/init.d/4001_quad_x
|
||||
|
||||
set MIXER quad_x
|
||||
param set SYS_HITL 1
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
# @output AUX4 Rudder
|
||||
# @output AUX5 Throttle
|
||||
#
|
||||
# @board px4fmu-v1 exclude
|
||||
|
||||
sh /etc/init.d/rc.vtol_defaults
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ then
|
||||
param set VT_IDLE_PWM_MC 1080
|
||||
param set VT_TYPE 0
|
||||
param set MAV_TYPE 19
|
||||
param set VT_ELEV_MC_LOCK 0
|
||||
fi
|
||||
|
||||
set MIXER caipirinha_vtol
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
#
|
||||
# @maintainer Roman Bapst <roman@px4.io>
|
||||
#
|
||||
# @board px4fmu-v2 exclude
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.vtol_defaults
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set VT_TYPE 2
|
||||
param set VT_MOT_COUNT 4
|
||||
param set VT_TRANS_THR 0.75
|
||||
param set VT_F_TRANS_THR 0.75
|
||||
param set VT_ARSP_TRANS 12
|
||||
param set VT_ARSP_BLEND 6
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set VT_TYPE 2
|
||||
param set VT_MOT_COUNT 4
|
||||
param set VT_TRANS_THR 0.75
|
||||
param set VT_F_TRANS_THR 0.75
|
||||
|
||||
param set MC_ROLL_P 6.5
|
||||
param set MC_ROLLRATE_P 0.15
|
||||
|
||||
@@ -14,7 +14,7 @@ if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set VT_TYPE 2
|
||||
param set VT_MOT_COUNT 4
|
||||
param set VT_TRANS_THR 0.75
|
||||
param set VT_F_TRANS_THR 0.75
|
||||
|
||||
param set MC_ROLL_P 7.0
|
||||
param set MC_ROLLRATE_P 0.15
|
||||
|
||||
@@ -14,7 +14,7 @@ if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set VT_TYPE 2
|
||||
param set VT_MOT_COUNT 4
|
||||
param set VT_TRANS_THR 0.75
|
||||
param set VT_F_TRANS_THR 0.75
|
||||
|
||||
param set PWM_AUX_REV1 1
|
||||
param set PWM_AUX_REV2 1
|
||||
|
||||
@@ -19,7 +19,7 @@ then
|
||||
param set VT_ARSP_TRANS 15.0
|
||||
param set VT_B_TRANS_DUR 4.0
|
||||
param set VT_TRANS_MIN_TM 5.0
|
||||
param set VT_TRANS_THR 0.6
|
||||
param set VT_F_TRANS_THR 0.6
|
||||
param set VT_TRANS_TIMEOUT 30.0
|
||||
|
||||
param set FW_AIRSPD_MAX 22.0
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#
|
||||
# @maintainer Samay Siga <samay_s@icloud.com>
|
||||
#
|
||||
# @board px4fmu-v2 exclude
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.vtol_defaults
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set VT_MOT_COUNT 3
|
||||
param set VT_FW_MOT_OFFID 3
|
||||
param set VT_IDLE_PWM_MC 1080
|
||||
param set VT_IDLE_PWM_MC 1150
|
||||
param set VT_TYPE 1
|
||||
|
||||
param set VT_B_TRANS_DUR 1.0
|
||||
|
||||
@@ -23,7 +23,7 @@ if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set VT_TYPE 2
|
||||
param set VT_MOT_COUNT 4
|
||||
param set VT_TRANS_THR 1
|
||||
param set VT_F_TRANS_THR 1
|
||||
param set VT_DWN_PITCH_MAX 8
|
||||
param set VT_FW_QC_P 55
|
||||
param set VT_FW_QC_R 55
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name Passthrough mode for Snapdragon
|
||||
#
|
||||
# @type custom
|
||||
# @class Tool
|
||||
#
|
||||
# @board px4fmu-v2 exclude
|
||||
# @board px4fmu-v3 exclude
|
||||
# @board px4fmu-v4pro exclude
|
||||
# @board px4fmu-v5 exclude
|
||||
# @board aerofc-v1 exclude
|
||||
#
|
||||
# @maintainer Julian Oes <julian@oes.ch>
|
||||
#
|
||||
# This startup can be used on Pixhawk/Pixfalcon/Pixracer for the
|
||||
# passthrough of RC input and PWM output.
|
||||
|
||||
set VEHICLE_TYPE passthrough
|
||||
@@ -11,7 +11,7 @@
|
||||
# @type Quadrotor x
|
||||
# @class Copter
|
||||
#
|
||||
# @maintainer Lucas de Marchi
|
||||
# @maintainer Beat Kueng <beat@px4.io>
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.mc_defaults
|
||||
|
||||
@@ -17,17 +17,15 @@ set PWM_OUT 1234
|
||||
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set MC_ROLL_P 2.0
|
||||
param set MC_ROLLRATE_P 0.05
|
||||
param set MC_ROLL_P 2.2
|
||||
param set MC_ROLLRATE_P 0.06
|
||||
param set MC_ROLLRATE_I 0.2
|
||||
param set MC_ROLLRATE_D 0.0015
|
||||
param set MC_ROLL_TC 0.18
|
||||
param set MC_ROLLRATE_D 0.0017
|
||||
|
||||
param set MC_PITCH_P 2.0
|
||||
param set MC_PITCHRATE_P 0.05
|
||||
param set MC_PITCH_P 2.2
|
||||
param set MC_PITCHRATE_P 0.06
|
||||
param set MC_PITCHRATE_I 0.2
|
||||
param set MC_PITCHRATE_D 0.0015
|
||||
param set MC_PITCH_TC 0.18
|
||||
param set MC_PITCHRATE_D 0.0017
|
||||
|
||||
param set MC_YAW_P 1.0
|
||||
param set MC_YAWRATE_P 0.15
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
#
|
||||
# @maintainer
|
||||
#
|
||||
# @board px4fmu-v2 exclude
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.ugv_defaults
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
# @output MAIN7 pass-through of control group 0, channel 6
|
||||
# @output MAIN8 pass-through of control group 0, channel 7
|
||||
#
|
||||
# @board px4fmu-v2 exclude
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.axialracing_ax10_defaults
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#
|
||||
# @maintainer Marco Zorzi
|
||||
#
|
||||
# @board px4fmu-v2 exclude
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.ugv_defaults
|
||||
|
||||
|
||||
@@ -120,27 +120,7 @@ then
|
||||
fi
|
||||
fi
|
||||
|
||||
if ver hwcmp MINDPX_V2
|
||||
then
|
||||
set MIXER_AUX none
|
||||
fi
|
||||
|
||||
if ver hwcmp CRAZYFLIE
|
||||
then
|
||||
set MIXER_AUX none
|
||||
fi
|
||||
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
set MIXER_AUX none
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V4
|
||||
then
|
||||
set MIXER_AUX none
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V5
|
||||
if ver hwcmp MINDPX_V2 CRAZYFLIE AEROFC_V1 PX4FMU_V4 NXPHLITE_V3
|
||||
then
|
||||
set MIXER_AUX none
|
||||
fi
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
#!nsh
|
||||
# Logging
|
||||
#
|
||||
# Standard startup script for logging
|
||||
#
|
||||
|
||||
if param compare SYS_LOGGER 0
|
||||
then
|
||||
sdlog2 start -r 100 -a -b 9 -t
|
||||
else
|
||||
set LOGGER_ARGS ""
|
||||
|
||||
if param compare SDLOG_MODE 1
|
||||
then
|
||||
set LOGGER_ARGS "-e"
|
||||
fi
|
||||
|
||||
if param compare SDLOG_MODE 2
|
||||
then
|
||||
set LOGGER_ARGS "-f"
|
||||
fi
|
||||
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
set LOGGER_ARGS "-m mavlink"
|
||||
fi
|
||||
|
||||
logger start -b ${LOGGER_BUF} -t ${LOGGER_ARGS}
|
||||
|
||||
unset LOGGER_ARGS
|
||||
fi
|
||||
|
||||
unset LOGGER_BUF
|
||||
@@ -31,8 +31,8 @@ else
|
||||
# External SPI
|
||||
ms5611 -S start
|
||||
|
||||
# Internal SPI
|
||||
ms5611 -s start
|
||||
# Internal SPI (auto detect ms5611 or ms5607)
|
||||
ms5611 -T 0 -s start
|
||||
|
||||
# Blacksheep telemetry
|
||||
bst start
|
||||
@@ -42,13 +42,13 @@ fi
|
||||
|
||||
if ver hwcmp NXPHLITE_V3
|
||||
then
|
||||
# Internal I2C
|
||||
# Internal I2C (baro)
|
||||
mpl3115a2 -I start
|
||||
|
||||
# Internal SPI
|
||||
fxos8700cq start -a 8 -R 0
|
||||
# Internal SPI (accel + mag)
|
||||
fxos8701cq start -a 8 -R 0
|
||||
|
||||
# Internal SPI
|
||||
# Internal SPI (gyro)
|
||||
fxas21002c start -R 0
|
||||
fi
|
||||
|
||||
@@ -56,6 +56,7 @@ if ver hwcmp AUAV_X21
|
||||
then
|
||||
# External I2C bus
|
||||
hmc5883 -C -T -X start
|
||||
lis3mdl -X start
|
||||
|
||||
# Internal SPI bus ICM-20608-G is rotated 90 deg yaw
|
||||
mpu6000 -R 2 -T 20608 start
|
||||
@@ -69,6 +70,9 @@ fi
|
||||
|
||||
if ver hwcmp PX4FMU_V2
|
||||
then
|
||||
# V2 build hwtypecmp is always false
|
||||
set BOARD_FMUV3 0
|
||||
|
||||
# External I2C bus
|
||||
hmc5883 -C -T -X start
|
||||
lis3mdl -X start
|
||||
@@ -79,8 +83,6 @@ then
|
||||
# Internal SPI bus ICM-20608-G
|
||||
mpu6000 -T 20608 start
|
||||
|
||||
# V2 build hwtypecmp is always false
|
||||
set BOARD_FMUV3 0
|
||||
# V3 build hwtypecmp supports V2|V2M|V30
|
||||
if ver hwtypecmp V30
|
||||
then
|
||||
@@ -99,6 +101,26 @@ then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if a Pixhack (which reports as V2M) is present
|
||||
if ver hwtypecmp V2M
|
||||
then
|
||||
# Pixhawk Mini doesn't have these sensors,
|
||||
# so if they are found we know its a Pixhack
|
||||
|
||||
# external MPU6K is rotated 180 degrees yaw
|
||||
if mpu6000 -S -R 4 start
|
||||
then
|
||||
set BOARD_FMUV3 20
|
||||
else
|
||||
# Check for Pixhack 3.1
|
||||
# external MPU9250 is rotated 180 degrees yaw
|
||||
if mpu9250 -S -R 4 start
|
||||
then
|
||||
set BOARD_FMUV3 21
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $BOARD_FMUV3 != 0 ]
|
||||
then
|
||||
# sensor heating is available, but we disable it for now
|
||||
@@ -114,9 +136,9 @@ then
|
||||
then
|
||||
# v2.0 internal MPU6000 is rotated 180 deg roll, 270 deg yaw
|
||||
mpu6000 -R 14 start
|
||||
|
||||
# v2.0 Has internal hmc5883 on SPI1
|
||||
hmc5883 -C -T -S -R 8 start
|
||||
|
||||
fi
|
||||
|
||||
if [ $BOARD_FMUV3 == 21 ]
|
||||
@@ -143,6 +165,8 @@ then
|
||||
l3gd20 start
|
||||
lsm303d start
|
||||
fi
|
||||
|
||||
unset BOARD_FMUV3
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4_SAME70XPLAINED_V1
|
||||
@@ -173,7 +197,7 @@ then
|
||||
# lis3mdl internal SPI bus is rotated 90 deg yaw
|
||||
else
|
||||
# BMI055 gyro internal SPI bus
|
||||
bmi055 -G start
|
||||
bmi055 -G start
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -372,6 +396,49 @@ then
|
||||
teraranger start
|
||||
fi
|
||||
|
||||
# Benewake TFMini
|
||||
if param greater SENS_EN_TFMINI 0
|
||||
then
|
||||
if ver hwcmp PX4FMU_V2 PX4FMU_V4PRO
|
||||
then
|
||||
# start the driver on serial 4/5
|
||||
tfmini start -d /dev/ttyS6
|
||||
else
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
# start the driver on telemetry
|
||||
tfmini start -d /dev/ttyS3
|
||||
else
|
||||
if param compare SYS_COMPANION 0
|
||||
then
|
||||
# start on default mavlink companion device
|
||||
tfmini start -d /dev/ttyS2
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# LeddarOne
|
||||
if param greater SENS_EN_LEDDAR1 0
|
||||
then
|
||||
if ver hwcmp PX4FMU_V2 PX4FMU_V4PRO
|
||||
then
|
||||
# start the driver on serial 4/5
|
||||
leddar_one -d /dev/ttyS6 start
|
||||
fi
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
# start the driver on telemetry
|
||||
leddar_one -d /dev/ttyS3 start
|
||||
else
|
||||
if param compare SYS_COMPANION 0
|
||||
then
|
||||
# start on default mavlink companion device
|
||||
leddar_one -d /dev/ttyS2 start
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Wait 20 ms for sensors (because we need to wait for the HRT and work queue callbacks to fire)
|
||||
usleep 20000
|
||||
sensors start
|
||||
|
||||
+74
-141
@@ -15,7 +15,7 @@ set +e
|
||||
#
|
||||
# UART mapping on FMUv2/3/4:
|
||||
#
|
||||
# UART1 /dev/ttyS0 IO debug
|
||||
# UART1 /dev/ttyS0 IO debug (except v4, there ttyS0 is the wifi)
|
||||
# USART2 /dev/ttyS1 TELEM1 (flow control)
|
||||
# USART3 /dev/ttyS2 TELEM2 (flow control)
|
||||
# UART4
|
||||
@@ -28,7 +28,7 @@ set +e
|
||||
# UART1 /dev/ttyS0 GPS
|
||||
# USART2 /dev/ttyS1 TELEM1 (flow control)
|
||||
# USART3 /dev/ttyS2 TELEM2 (flow control)
|
||||
# UART4 /dev/ttyS3 ?
|
||||
# UART4 /dev/ttyS3 TELEM4
|
||||
# USART6 /dev/ttyS4 TELEM3 (flow control)
|
||||
# UART7 /dev/ttyS5 ?
|
||||
# UART8 /dev/ttyS6 CONSOLE
|
||||
@@ -51,7 +51,7 @@ ver all
|
||||
#
|
||||
set MODE autostart
|
||||
|
||||
set TUNE_ERR ML<<CP4CP4CP4CP4CP4
|
||||
set TUNE_ERR "ML<<CP4CP4CP4CP4CP4"
|
||||
set LOG_FILE /fs/microsd/bootlog.txt
|
||||
|
||||
#
|
||||
@@ -60,7 +60,6 @@ set LOG_FILE /fs/microsd/bootlog.txt
|
||||
# REBOOTWORK this needs to start after the flight control loop
|
||||
if mount -t vfat /dev/mmcsd0 /fs/microsd
|
||||
then
|
||||
echo "[i] microSD mounted: /fs/microsd"
|
||||
if hardfault_log check
|
||||
then
|
||||
tone_alarm error
|
||||
@@ -69,9 +68,6 @@ then
|
||||
hardfault_log reset
|
||||
tone_alarm stop
|
||||
fi
|
||||
else
|
||||
# Start playing the startup tune
|
||||
tone_alarm start
|
||||
fi
|
||||
else
|
||||
tone_alarm MBAGP
|
||||
@@ -79,9 +75,9 @@ else
|
||||
then
|
||||
if mount -t vfat /dev/mmcsd0 /fs/microsd
|
||||
then
|
||||
echo "INFO [init] MicroSD card formatted"
|
||||
echo "INFO [init] card formatted"
|
||||
else
|
||||
echo "ERROR [init] Format failed"
|
||||
echo "ERROR [init] format failed"
|
||||
tone_alarm MNBG
|
||||
set LOG_FILE /dev/null
|
||||
fi
|
||||
@@ -97,7 +93,6 @@ fi
|
||||
set FRC /fs/microsd/etc/rc.txt
|
||||
if [ -f $FRC ]
|
||||
then
|
||||
echo "INFO [init] Executing script: ${FRC}"
|
||||
sh $FRC
|
||||
set MODE custom
|
||||
fi
|
||||
@@ -111,6 +106,12 @@ then
|
||||
#
|
||||
uorb start
|
||||
|
||||
# Start tone driver
|
||||
tone_alarm start
|
||||
|
||||
# play startup tone
|
||||
tune_control play -t 1
|
||||
|
||||
#
|
||||
# Load parameters
|
||||
#
|
||||
@@ -194,25 +195,11 @@ then
|
||||
set MAV_TYPE none
|
||||
set FAILSAFE none
|
||||
set USE_IO no
|
||||
set LOGGER_BUF 16
|
||||
|
||||
if ver hwcmp PX4FMU_V4
|
||||
then
|
||||
param set SYS_FMU_TASK 1
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V4PRO
|
||||
then
|
||||
param set SYS_FMU_TASK 1
|
||||
fi
|
||||
set LOGGER_BUF 14
|
||||
|
||||
if ver hwcmp PX4FMU_V5
|
||||
then
|
||||
param set SYS_FMU_TASK 1
|
||||
set MAVLINK_COMPANION_DEVICE /dev/ttyS3
|
||||
|
||||
set LOGGER_BUF 64
|
||||
param set SDLOG_MODE 2
|
||||
fi
|
||||
|
||||
if ver hwcmp CRAZYFLIE
|
||||
@@ -299,6 +286,13 @@ then
|
||||
then
|
||||
param set CBRK_IO_SAFETY 22027
|
||||
fi
|
||||
|
||||
# Run FMU as task on Pixracer and on boards with enough RAM
|
||||
if ver hwcmp PX4FMU_V4 PX4FMU_V4PRO PX4FMU_V5
|
||||
then
|
||||
param set SYS_FMU_TASK 1
|
||||
fi
|
||||
|
||||
param set SYS_AUTOCONFIG 0
|
||||
fi
|
||||
unset AUTOCNF
|
||||
@@ -316,8 +310,6 @@ then
|
||||
|
||||
if px4io checkcrc ${IO_FILE}
|
||||
then
|
||||
echo "[init] PX4IO CRC OK" >> $LOG_FILE
|
||||
|
||||
set IO_PRESENT yes
|
||||
else
|
||||
tone_alarm MLL32CP8MB
|
||||
@@ -349,7 +341,7 @@ then
|
||||
fi
|
||||
else
|
||||
echo "PX4IO update failed" >> $LOG_FILE
|
||||
tone_alarm ${TUNE_ERR}
|
||||
tune_control play -m ${TUNE_ERR}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -358,7 +350,7 @@ then
|
||||
if [ $IO_PRESENT == no ]
|
||||
then
|
||||
echo "PX4IO not found" >> $LOG_FILE
|
||||
tone_alarm ${TUNE_ERR}
|
||||
tune_control play -m ${TUNE_ERR}
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -464,7 +456,6 @@ then
|
||||
then
|
||||
if param compare UAVCAN_ENABLE 0
|
||||
then
|
||||
echo "OVERRIDING UAVCAN_ENABLE = 3" >> $LOG_FILE
|
||||
param set UAVCAN_ENABLE 3
|
||||
fi
|
||||
fi
|
||||
@@ -476,7 +467,7 @@ then
|
||||
sh /etc/init.d/rc.io
|
||||
else
|
||||
echo "PX4IO start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
tune_control play -m ${TUNE_ERR}
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -486,7 +477,7 @@ then
|
||||
then
|
||||
else
|
||||
echo "FMU start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
tune_control play -m ${TUNE_ERR}
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -505,8 +496,7 @@ then
|
||||
if mkblctrl $MKBLCTRL_ARG
|
||||
then
|
||||
else
|
||||
echo "MK start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
tune_control play -m ${TUNE_ERR}
|
||||
fi
|
||||
unset MKBLCTRL_ARG
|
||||
fi
|
||||
@@ -514,10 +504,10 @@ then
|
||||
|
||||
if [ $OUTPUT_MODE == hil ]
|
||||
then
|
||||
if pwm_out_sim mode_pwm16
|
||||
if pwm_out_sim start
|
||||
then
|
||||
else
|
||||
tone_alarm $TUNE_ERR
|
||||
tune_control play -m ${TUNE_ERR}
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -533,7 +523,7 @@ then
|
||||
sh /etc/init.d/rc.io
|
||||
else
|
||||
echo "PX4IO start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
tune_control play -m ${TUNE_ERR}
|
||||
fi
|
||||
fi
|
||||
else
|
||||
@@ -543,7 +533,7 @@ then
|
||||
then
|
||||
else
|
||||
echo "FMU mode_${FMU_MODE} start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
tune_control play -m ${TUNE_ERR}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -554,7 +544,7 @@ then
|
||||
# Normal mode, use baudrate 57600 (default) and data rate 1000 bytes/s
|
||||
set MAVLINK_F "-r 1200 -f"
|
||||
|
||||
# Avoid using ttyS1 for MAVLink on FMUv4
|
||||
# Use ttyS1 for MAVLink on FMUv4 in addition to ttyS0 (debug)
|
||||
if ver hwcmp PX4FMU_V4
|
||||
then
|
||||
set MAVLINK_F "-r 1200 -d /dev/ttyS1"
|
||||
@@ -565,6 +555,16 @@ then
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
set MAVLINK_F "-r 1200 -d /dev/ttyS3"
|
||||
|
||||
# Only start mavlink if the Benewake TFMini or LeddarOne isn't being used
|
||||
if param greater SENS_EN_TFMINI 0
|
||||
then
|
||||
set MAVLINK_F none
|
||||
fi
|
||||
if param greater SENS_EN_LEDDAR1 0
|
||||
then
|
||||
set MAVLINK_F none
|
||||
fi
|
||||
fi
|
||||
|
||||
if ver hwcmp CRAZYFLIE
|
||||
@@ -589,7 +589,14 @@ then
|
||||
if param compare SYS_COMPANION 10
|
||||
then
|
||||
frsky_telemetry start -d ${MAVLINK_COMPANION_DEVICE}
|
||||
else
|
||||
if ver hwcmp PX4FMU_V4 PX4FMU_V4PRO MINDPX_V2
|
||||
then
|
||||
# This is TELEM4 on Pixhawk 3 Pro
|
||||
frsky_telemetry start -d /dev/ttyS6
|
||||
fi
|
||||
fi
|
||||
|
||||
if param compare SYS_COMPANION 20
|
||||
then
|
||||
syslink start
|
||||
@@ -644,9 +651,25 @@ then
|
||||
fi
|
||||
if param compare SYS_COMPANION 419200
|
||||
then
|
||||
iridiumsbd start -d /dev/ttyS2
|
||||
iridiumsbd start -d ${MAVLINK_COMPANION_DEVICE}
|
||||
mavlink start -d /dev/iridium -b 19200 -m iridium -r 10
|
||||
fi
|
||||
if param compare SYS_COMPANION 519200
|
||||
then
|
||||
mavlink start -d ${MAVLINK_COMPANION_DEVICE} -b 19200 -m minimal -r 1000
|
||||
fi
|
||||
if param compare SYS_COMPANION 538400
|
||||
then
|
||||
mavlink start -d ${MAVLINK_COMPANION_DEVICE} -b 38400 -m minimal -r 1000
|
||||
fi
|
||||
if param compare SYS_COMPANION 557600
|
||||
then
|
||||
mavlink start -d ${MAVLINK_COMPANION_DEVICE} -b 57600 -m minimal -r 1000
|
||||
fi
|
||||
if param compare SYS_COMPANION 5115200
|
||||
then
|
||||
mavlink start -d ${MAVLINK_COMPANION_DEVICE} -b 115200 -m minimal -r 1000
|
||||
fi
|
||||
if param compare SYS_COMPANION 1921600
|
||||
then
|
||||
mavlink start -d ${MAVLINK_COMPANION_DEVICE} -b 921600 -r 20000
|
||||
@@ -663,48 +686,27 @@ then
|
||||
#
|
||||
if param greater UAVCAN_ENABLE 0
|
||||
then
|
||||
# Start core UAVCAN module
|
||||
if uavcan start
|
||||
then
|
||||
set LOGGER_BUF 6
|
||||
uavcan start fw
|
||||
if param greater UAVCAN_ENABLE 1
|
||||
then
|
||||
# Reduce logger buffer to free up some RAM for UAVCAN servers
|
||||
set LOGGER_BUF 6
|
||||
# Start UAVCAN firmware update server and dynamic node ID allocation server
|
||||
uavcan start fw
|
||||
fi
|
||||
else
|
||||
tone_alarm ${TUNE_ERR}
|
||||
fi
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V4
|
||||
then
|
||||
frsky_telemetry start -d /dev/ttyS6
|
||||
fi
|
||||
|
||||
if ver hwcmp MINDPX_V2
|
||||
then
|
||||
frsky_telemetry start -d /dev/ttyS6
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V2
|
||||
if ver hwcmp PX4FMU_V2 PX4FMU_V4 PX4FMU_V4PRO MINDPX_V2 PX4FMU_V5
|
||||
then
|
||||
# Check for flow sensor - as it is a background task, launch it last
|
||||
px4flow start &
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V4
|
||||
then
|
||||
# Check for flow sensor - as it is a background task, launch it last
|
||||
px4flow start &
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V4PRO
|
||||
then
|
||||
# Check for flow sensor - as it is a background task, launch it last
|
||||
px4flow start &
|
||||
fi
|
||||
|
||||
if ver hwcmp MINDPX_V2
|
||||
then
|
||||
px4flow start &
|
||||
fi
|
||||
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
# don't start mavlink ttyACM0 on aerofc_v1
|
||||
@@ -713,36 +715,6 @@ then
|
||||
mavlink start -r 800000 -d /dev/ttyACM0 -m config -x
|
||||
fi
|
||||
|
||||
#
|
||||
# Logging
|
||||
#
|
||||
if param compare SYS_LOGGER 0
|
||||
then
|
||||
sdlog2 start -r 100 -a -b 9 -t
|
||||
else
|
||||
set LOGGER_ARGS ""
|
||||
|
||||
if param compare SDLOG_MODE 1
|
||||
then
|
||||
set LOGGER_ARGS "-e"
|
||||
fi
|
||||
|
||||
if param compare SDLOG_MODE 2
|
||||
then
|
||||
set LOGGER_ARGS "-f"
|
||||
fi
|
||||
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
set LOGGER_ARGS "-m mavlink"
|
||||
fi
|
||||
|
||||
logger start -b ${LOGGER_BUF} -t ${LOGGER_ARGS}
|
||||
|
||||
unset LOGGER_BUF
|
||||
unset LOGGER_ARGS
|
||||
fi
|
||||
|
||||
#
|
||||
# Fixed wing setup
|
||||
#
|
||||
@@ -823,7 +795,6 @@ then
|
||||
# Still no MAV_TYPE found
|
||||
if [ $MAV_TYPE == none ]
|
||||
then
|
||||
echo "Unknown MAV_TYPE"
|
||||
param set MAV_TYPE 2
|
||||
else
|
||||
param set MAV_TYPE ${MAV_TYPE}
|
||||
@@ -905,46 +876,6 @@ then
|
||||
sh /etc/init.d/rc.ugv_apps
|
||||
fi
|
||||
|
||||
#
|
||||
# For snapdragon, we need a passthrough mode
|
||||
# Do not run any mavlink instances since we need the serial port for
|
||||
# communication with Snapdragon.
|
||||
#
|
||||
if [ $VEHICLE_TYPE == passthrough ]
|
||||
then
|
||||
mavlink stop-all
|
||||
commander stop
|
||||
|
||||
# Stop multicopter attitude controller if it is running, the controls come
|
||||
# from Snapdragon.
|
||||
if mc_att_control stop
|
||||
then
|
||||
fi
|
||||
|
||||
# Start snapdragon interface on serial port.
|
||||
if ver hwcmp PX4FMU_V2
|
||||
then
|
||||
# On Pixfalcon use the standard telemetry port (Telem 1).
|
||||
snapdragon_rc_pwm start -d /dev/ttyS1
|
||||
px4io start
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V4
|
||||
then
|
||||
# On Pixracer use Telem 2 port (TL2).
|
||||
snapdragon_rc_pwm start -d /dev/ttyS2
|
||||
fmu mode_pwm4 $FMU_ARGS
|
||||
fi
|
||||
|
||||
pwm failsafe -c 1234 -p 900
|
||||
pwm disarmed -c 1234 -p 900
|
||||
|
||||
# Arm straightaway.
|
||||
pwm arm
|
||||
# Use 400 Hz PWM on all channels.
|
||||
pwm rate -a -r 400
|
||||
fi
|
||||
|
||||
unset MIXER
|
||||
unset MAV_TYPE
|
||||
unset OUTPUT_MODE
|
||||
@@ -1028,6 +959,8 @@ then
|
||||
fi
|
||||
fi
|
||||
|
||||
sh /etc/init.d/rc.logging
|
||||
|
||||
# End of autostart
|
||||
fi
|
||||
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
Aileron/rudder/elevator/throttle mixer for PX4FMU
|
||||
==================================================
|
||||
|
||||
This file defines mixers suitable for controlling a fixed wing aircraft with
|
||||
aileron, rudder, elevator and throttle controls using PX4FMU. The configuration
|
||||
assumes the aileron servo(s) are connected to PX4FMU servo output 0, the
|
||||
elevator to output 1, the rudder to output 2 and the throttle to output 3.
|
||||
|
||||
Inputs to the mixer come from channel group 0 (vehicle attitude), channels 0
|
||||
(roll), 1 (pitch) and 3 (thrust).
|
||||
|
||||
CH1: Aileron mixer
|
||||
-------------
|
||||
Two scalers total (output, roll).
|
||||
|
||||
This mixer assumes that the aileron servos are set up correctly mechanically;
|
||||
depending on the actual configuration it may be necessary to reverse the scaling
|
||||
factors (to reverse the servo movement) and adjust the offset, scaling and
|
||||
endpoints to suit.
|
||||
|
||||
As there is only one output, if using two servos adjustments to compensate for
|
||||
differences between the servos must be made mechanically. To obtain the correct
|
||||
motion using a Y cable, the servos can be positioned reversed from one another.
|
||||
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 0 10000 10000 0 -10000 10000
|
||||
|
||||
CH2: Elevator mixer
|
||||
------------
|
||||
Two scalers total (output, roll).
|
||||
|
||||
This mixer assumes that the elevator servo is set up correctly mechanically;
|
||||
depending on the actual configuration it may be necessary to reverse the scaling
|
||||
factors (to reverse the servo movement) and adjust the offset, scaling and
|
||||
endpoints to suit.
|
||||
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 1 -10000 -10000 0 -10000 10000
|
||||
|
||||
CH3: Rudder mixer
|
||||
------------
|
||||
Two scalers total (output, yaw).
|
||||
|
||||
This mixer assumes that the rudder servo is set up correctly mechanically;
|
||||
depending on the actual configuration it may be necessary to reverse the scaling
|
||||
factors (to reverse the servo movement) and adjust the offset, scaling and
|
||||
endpoints to suit.
|
||||
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 2 10000 10000 0 -10000 10000
|
||||
|
||||
CH4: Motor speed mixer
|
||||
-----------------
|
||||
Two scalers total (output, thrust).
|
||||
|
||||
This mixer generates a full-range output (-1 to 1) from an input in the (0 - 1)
|
||||
range. Inputs below zero are treated as zero.
|
||||
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 3 0 20000 -10000 -10000 10000
|
||||
|
||||
CH5: Flaps mixer
|
||||
------------
|
||||
Flaps are controlled automatically in position control and auto
|
||||
but can also be controlled manually
|
||||
|
||||
M: 1
|
||||
O: 5000 10000 0 -10000 10000
|
||||
S: 0 4 10000 10000 0 -10000 10000
|
||||
|
||||
Ch6: Landing gear mixer
|
||||
------------
|
||||
By default pass-through of gear switch
|
||||
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 3 5 10000 10000 0 -10000 10000
|
||||
@@ -0,0 +1,21 @@
|
||||
Mixer for the gazebo tailsitter model
|
||||
=====================================
|
||||
|
||||
R: 4x 10000 10000 10000 0
|
||||
|
||||
Z:
|
||||
|
||||
# left elevon
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 0 10000 10000 0 -10000 10000
|
||||
|
||||
# right elevon
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 0 -10000 -10000 0 -10000 10000
|
||||
|
||||
# mixer for the virtual elevator
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 1 -10000 -10000 0 -10000 10000
|
||||
@@ -0,0 +1,41 @@
|
||||
Mixer for quad tiltrotor (x motor configuration)
|
||||
================================================
|
||||
|
||||
This file defines a single mixer for a tiltrotor (SITL gazebo) with motors in X configuration. The plane has two ailerons and one elevator.
|
||||
|
||||
R: 4x 10000 10000 10000 0
|
||||
|
||||
# tilt servo motor 1
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 4 0 20000 -10000 -10000 10000
|
||||
|
||||
# tilt servo motor 2
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 4 0 20000 -10000 -10000 10000
|
||||
|
||||
# tilt servo motor 3
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 4 0 20000 -10000 -10000 10000
|
||||
|
||||
# tilt servo motor 4
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 4 0 20000 -10000 -10000 10000
|
||||
|
||||
# mixer for the left aileron
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 0 10000 10000 0 -10000 10000
|
||||
|
||||
# mixer for the right aileron
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 0 -10000 -10000 0 -10000 10000
|
||||
|
||||
# mixer for the elevator
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 1 10000 10000 0 -10000 10000
|
||||
@@ -8,9 +8,9 @@ then
|
||||
PATTERN="$1"
|
||||
fi
|
||||
|
||||
exec find src \
|
||||
-path src/examples/attitude_estimator_ekf -prune -o \
|
||||
-path src/examples/ekf_att_pos_estimator -prune -o \
|
||||
exec find src platforms \
|
||||
-path platforms/nuttx/NuttX -prune -o \
|
||||
-path platforms/nuttx/nuttx-configs -prune -o \
|
||||
-path src/lib/DriverFramework -prune -o \
|
||||
-path src/lib/ecl -prune -o \
|
||||
-path src/lib/matrix -prune -o \
|
||||
|
||||
+7
-7
@@ -4,25 +4,25 @@ if [ -z ${PX4_DOCKER_REPO+x} ]; then
|
||||
echo "guessing PX4_DOCKER_REPO based on input";
|
||||
if [[ $@ =~ .*px4fmu.* ]]; then
|
||||
# nuttx-px4fmu-v{1,2,3,4,5}
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-nuttx:2017-10-23"
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-nuttx:2017-12-30"
|
||||
elif [[ $@ =~ .*rpi.* ]] || [[ $@ =~ .*bebop.* ]]; then
|
||||
# posix_rpi_cross, posix_bebop_default
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-raspi:2017-10-23"
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-raspi:2017-12-30"
|
||||
elif [[ $@ =~ .*eagle.* ]] || [[ $@ =~ .*excelsior.* ]]; then
|
||||
# eagle, excelsior
|
||||
PX4_DOCKER_REPO="lorenzmeier/px4-dev-snapdragon:2017-10-23"
|
||||
PX4_DOCKER_REPO="lorenzmeier/px4-dev-snapdragon:2017-12-29"
|
||||
elif [[ $@ =~ .*ocpoc.* ]]; then
|
||||
# posix_ocpoc_ubuntu
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-armhf:2017-10-23"
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-armhf:2017-12-30"
|
||||
elif [[ $@ =~ .*clang.* ]] || [[ $@ =~ .*scan-build.* ]]; then
|
||||
# clang tools
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-clang:2017-10-23"
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-clang:2017-12-30"
|
||||
elif [[ $@ =~ .*cppcheck.* ]]; then
|
||||
# TODO: remove this once px4io/px4-dev-base updates
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-base:ubuntu17.10"
|
||||
elif [[ $@ =~ .*tests* ]]; then
|
||||
# run all tests with simulation
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-simulation:2017-10-23"
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-simulation:2017-12-30"
|
||||
fi
|
||||
else
|
||||
echo "PX4_DOCKER_REPO is set to '$PX4_DOCKER_REPO'";
|
||||
@@ -30,7 +30,7 @@ fi
|
||||
|
||||
# otherwise default to nuttx
|
||||
if [ -z ${PX4_DOCKER_REPO+x} ]; then
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-nuttx:2017-10-23"
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-nuttx:2017-12-30"
|
||||
fi
|
||||
|
||||
# docker hygiene
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
import argparse
|
||||
import os
|
||||
import os, glob
|
||||
|
||||
"""
|
||||
Runs process_logdata_ekf.py on all the files in the suplied directory with a .ulg extension
|
||||
Runs process_logdata_ekf.py on the .ulg files in the supplied directory. ulog files are skipped from the analysis, if a
|
||||
corresponding .pdf file already exists (unless the overwrite flag was set).
|
||||
"""
|
||||
|
||||
parser = argparse.ArgumentParser(description='Analyse the estimator_status and ekf2_innovation message data for all .ulg files in the specified directory')
|
||||
parser = argparse.ArgumentParser(description='Analyse the estimator_status and ekf2_innovation message data for the'
|
||||
' .ulg files in the specified directory')
|
||||
parser.add_argument("directory_path")
|
||||
parser.add_argument('-o', '--overwrite', action='store_true',
|
||||
help='Whether to overwrite an already analysed file. If a file with .pdf extension exists for a .ulg'
|
||||
'file, the log file will be skipped from analysis unless this flag has been set.')
|
||||
|
||||
def is_valid_directory(parser, arg):
|
||||
if os.path.isdir(arg):
|
||||
@@ -19,9 +24,18 @@ def is_valid_directory(parser, arg):
|
||||
|
||||
args = parser.parse_args()
|
||||
ulog_directory = args.directory_path
|
||||
print("\n"+"analysing all .ulog files in "+ulog_directory)
|
||||
# Run the analysis script on all the log files found in the specified directory
|
||||
for file in os.listdir(ulog_directory):
|
||||
if file.endswith(".ulg"):
|
||||
print("\n"+"loading "+file+" for analysis")
|
||||
os.system("python process_logdata_ekf.py '{}'".format(os.path.join(ulog_directory, file)))
|
||||
print("\n"+"analysing the .ulg files in "+ulog_directory)
|
||||
|
||||
# get all the ulog files found in the specified directory
|
||||
ulog_files = glob.glob(os.path.join(ulog_directory, '*.ulg'))
|
||||
|
||||
# remove the files already analysed unless the overwrite flag was specified. A ulog file is consired to be analysed if
|
||||
# a corresponding .pdf file exists.'
|
||||
if not args.overwrite:
|
||||
print("skipping already analysed ulg files.")
|
||||
ulog_files = [ulog_file for ulog_file in ulog_files if not os.path.exists('{}.pdf'.format(ulog_file))]
|
||||
|
||||
# analyse all ulog files
|
||||
for ulog_file in ulog_files:
|
||||
print("\n"+"loading "+ulog_file +" for analysis")
|
||||
os.system("python process_logdata_ekf.py '{}'".format(ulog_file))
|
||||
|
||||
@@ -1146,7 +1146,7 @@ test_results = {
|
||||
'yaw_sensor_status':['Pass','Yaw sensor check summary. This sensor data can be sourced from the magnetometer or an external vision system. A Fail result indicates a significant error that caused a significant reduction in vehicle navigation performance was detected. A Warning result indicates that error levels higher than normal were detected but these errors did not significantly impact navigation performance. A Pass result indicates that no amonalies were detected and no further investigation is required'],
|
||||
'vel_sensor_status':['Pass','Velocity sensor check summary. A Fail result indicates a significant error that caused a significant reduction in vehicle navigation performance was detected. A Warning result indicates that error levels higher than normal were detected but these errors did not significantly impact navigation performance. A Pass result indicates that no amonalies were detected and no further investigation is required'],
|
||||
'pos_sensor_status':['Pass','Position sensor check summary. A Fail result indicates a significant error that caused a significant reduction in vehicle navigation performance was detected. A Warning result indicates that error levels higher than normal were detected but these errors did not significantly impact navigation performance. A Pass result indicates that no amonalies were detected and no further investigation is required'],
|
||||
'hgt_sensor_status':['Pass','Height sensor check summary. This sensor data can be sourced from either Baro, GPS, range fidner or external vision system. A Fail result indicates a significant error that caused a significant reduction in vehicle navigation performance was detected. A Warning result indicates that error levels higher than normal were detected but these errors did not significantly impact navigation performance. A Pass result indicates that no amonalies were detected and no further investigation is required'],
|
||||
'hgt_sensor_status':['Pass','Height sensor check summary. This sensor data can be sourced from either Baro or GPS or range finder or external vision system. A Fail result indicates a significant error that caused a significant reduction in vehicle navigation performance was detected. A Warning result indicates that error levels higher than normal were detected but these errors did not significantly impact navigation performance. A Pass result indicates that no anomalies were detected and no further investigation is required'],
|
||||
'hagl_sensor_status':['Pass','Height above ground sensor check summary. This sensor data is normally sourced from a rangefinder sensor. A Fail result indicates a significant error that caused a significant reduction in vehicle navigation performance was detected. A Warning result indicates that error levels higher than normal were detected but these errors did not significantly impact navigation performance. A Pass result indicates that no amonalies were detected and no further investigation is required'],
|
||||
'tas_sensor_status':['Pass','Airspeed sensor check summary. A Fail result indicates a significant error that caused a significant reduction in vehicle navigation performance was detected. A Warning result indicates that error levels higher than normal were detected but these errors did not significantly impact navigation performance. A Pass result indicates that no amonalies were detected and no further investigation is required'],
|
||||
'imu_sensor_status':['Pass','IMU sensor check summary. A Fail result indicates a significant error that caused a significant reduction in vehicle navigation performance was detected. A Warning result indicates that error levels higher than normal were detected but these errors did not significantly impact navigation performance. A Pass result indicates that no amonalies were detected and no further investigation is required'],
|
||||
|
||||
+1
-1
Submodule Tools/jMAVSim updated: d24a1e1a68...b25ae5a729
+393
-393
@@ -16,7 +16,7 @@ Data can be gathered using the following sequence:
|
||||
1) Power up the board and set the TC_A_ENABLE, TC_B_ENABLE and TC_G_ENABLE parameters to 1
|
||||
2) Set all CAL_GYR and CAL_ACC parameters to defaults
|
||||
3) Set the SYS_LOGGER parameter to 1 to use the new system logger
|
||||
4) Set the SDLOG_MODE parameter to 2, and SDLOG_PROFILE parameter to 2 to enable logging of sensor data for calibration and power off
|
||||
4) Set the SDLOG_MODE parameter to 2, and SDLOG_PROFILE parameter to 4 to enable logging of sensor data for calibration and power off
|
||||
5) Cold soak the board for 30 minutes
|
||||
6) Move to a warm dry, still air, constant pressure environment.
|
||||
7) Apply power for 45 minutes, keeping the board still.
|
||||
@@ -24,7 +24,7 @@ Data can be gathered using the following sequence:
|
||||
9) Open a terminal window in the Firmware/Tools directory and run the python calibration script script file: 'python process_sensor_caldata.py <full path name to .ulog file>
|
||||
10) Power the board, connect QGC and load the parameter from the generated .params file onto the board using QGC. Due to the number of parameters, loading them may take some time.
|
||||
11) TODO - we need a way for user to reliably tell when parameters have all been changed and saved.
|
||||
12) After parameters have finished loading, set SDLOG_MODE to 1 to re-enable normal logging and remove power.
|
||||
12) After parameters have finished loading, set SDLOG_MODE and SDLOG_PROFILE to their respective values prior to step 4) and remove power.
|
||||
13) Power the board and perform a normal gyro and accelerometer sensor calibration using QGC. The board must be repowered after this step before flying due to large parameter changes and the thermal compensation parameters only being read on startup.
|
||||
|
||||
Outputs thermal compensation parameters in a file named <inputfilename>.params which can be loaded onto the board using QGroundControl
|
||||
@@ -56,16 +56,16 @@ for d in data:
|
||||
if sensor_instance == 0:
|
||||
sensor_gyro_0 = d.data
|
||||
print('found gyro 0 data')
|
||||
num_gyros = 1
|
||||
num_gyros = 1
|
||||
if sensor_instance == 1:
|
||||
sensor_gyro_1 = d.data
|
||||
print('found gyro 1 data')
|
||||
num_gyros = 2
|
||||
if sensor_instance == 2:
|
||||
num_gyros = 2
|
||||
if sensor_instance == 2:
|
||||
sensor_gyro_2 = d.data
|
||||
print('found gyro 2 data')
|
||||
num_gyros = 3
|
||||
sensor_instance = sensor_instance +1
|
||||
num_gyros = 3
|
||||
sensor_instance = sensor_instance +1
|
||||
|
||||
# extract accel data
|
||||
sensor_instance = 0
|
||||
@@ -75,15 +75,15 @@ for d in data:
|
||||
if sensor_instance == 0:
|
||||
sensor_accel_0 = d.data
|
||||
print('found accel 0 data')
|
||||
num_accels = 1
|
||||
num_accels = 1
|
||||
if sensor_instance == 1:
|
||||
sensor_accel_1 = d.data
|
||||
print('found accel 1 data')
|
||||
num_accels = 2
|
||||
num_accels = 2
|
||||
if sensor_instance == 2:
|
||||
sensor_accel_2 = d.data
|
||||
print('found accel 2 data')
|
||||
num_accels = 3
|
||||
num_accels = 3
|
||||
sensor_instance = sensor_instance +1
|
||||
|
||||
# extract baro data
|
||||
@@ -94,11 +94,11 @@ for d in data:
|
||||
if sensor_instance == 0:
|
||||
sensor_baro_0 = d.data
|
||||
print('found baro 0 data')
|
||||
num_baros = 1
|
||||
num_baros = 1
|
||||
if sensor_instance == 1:
|
||||
sensor_baro_1 = d.data
|
||||
print('found baro 1 data')
|
||||
num_baros = 2
|
||||
num_baros = 2
|
||||
sensor_instance = sensor_instance +1
|
||||
|
||||
# open file to save plots to PDF
|
||||
@@ -133,72 +133,72 @@ gyro_0_params = {
|
||||
|
||||
# curve fit the data for gyro 0 corrections
|
||||
if num_gyros >= 1:
|
||||
gyro_0_params['TC_G0_ID'] = int(np.median(sensor_gyro_0['device_id']))
|
||||
gyro_0_params['TC_G0_ID'] = int(np.median(sensor_gyro_0['device_id']))
|
||||
|
||||
# find the min, max and reference temperature
|
||||
gyro_0_params['TC_G0_TMIN'] = np.amin(sensor_gyro_0['temperature'])
|
||||
gyro_0_params['TC_G0_TMAX'] = np.amax(sensor_gyro_0['temperature'])
|
||||
gyro_0_params['TC_G0_TREF'] = 0.5 * (gyro_0_params['TC_G0_TMIN'] + gyro_0_params['TC_G0_TMAX'])
|
||||
temp_rel = sensor_gyro_0['temperature'] - gyro_0_params['TC_G0_TREF']
|
||||
temp_rel_resample = np.linspace(gyro_0_params['TC_G0_TMIN']-gyro_0_params['TC_G0_TREF'], gyro_0_params['TC_G0_TMAX']-gyro_0_params['TC_G0_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + gyro_0_params['TC_G0_TREF']
|
||||
# find the min, max and reference temperature
|
||||
gyro_0_params['TC_G0_TMIN'] = np.amin(sensor_gyro_0['temperature'])
|
||||
gyro_0_params['TC_G0_TMAX'] = np.amax(sensor_gyro_0['temperature'])
|
||||
gyro_0_params['TC_G0_TREF'] = 0.5 * (gyro_0_params['TC_G0_TMIN'] + gyro_0_params['TC_G0_TMAX'])
|
||||
temp_rel = sensor_gyro_0['temperature'] - gyro_0_params['TC_G0_TREF']
|
||||
temp_rel_resample = np.linspace(gyro_0_params['TC_G0_TMIN']-gyro_0_params['TC_G0_TREF'], gyro_0_params['TC_G0_TMAX']-gyro_0_params['TC_G0_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + gyro_0_params['TC_G0_TREF']
|
||||
|
||||
# fit X axis
|
||||
coef_gyro_0_x = np.polyfit(temp_rel,sensor_gyro_0['x'],3)
|
||||
gyro_0_params['TC_G0_X3_0'] = coef_gyro_0_x[0]
|
||||
gyro_0_params['TC_G0_X2_0'] = coef_gyro_0_x[1]
|
||||
gyro_0_params['TC_G0_X1_0'] = coef_gyro_0_x[2]
|
||||
gyro_0_params['TC_G0_X0_0'] = coef_gyro_0_x[3]
|
||||
fit_coef_gyro_0_x = np.poly1d(coef_gyro_0_x)
|
||||
gyro_0_x_resample = fit_coef_gyro_0_x(temp_rel_resample)
|
||||
# fit X axis
|
||||
coef_gyro_0_x = np.polyfit(temp_rel,sensor_gyro_0['x'],3)
|
||||
gyro_0_params['TC_G0_X3_0'] = coef_gyro_0_x[0]
|
||||
gyro_0_params['TC_G0_X2_0'] = coef_gyro_0_x[1]
|
||||
gyro_0_params['TC_G0_X1_0'] = coef_gyro_0_x[2]
|
||||
gyro_0_params['TC_G0_X0_0'] = coef_gyro_0_x[3]
|
||||
fit_coef_gyro_0_x = np.poly1d(coef_gyro_0_x)
|
||||
gyro_0_x_resample = fit_coef_gyro_0_x(temp_rel_resample)
|
||||
|
||||
# fit Y axis
|
||||
coef_gyro_0_y = np.polyfit(temp_rel,sensor_gyro_0['y'],3)
|
||||
gyro_0_params['TC_G0_X3_1'] = coef_gyro_0_y[0]
|
||||
gyro_0_params['TC_G0_X2_1'] = coef_gyro_0_y[1]
|
||||
gyro_0_params['TC_G0_X1_1'] = coef_gyro_0_y[2]
|
||||
gyro_0_params['TC_G0_X0_1'] = coef_gyro_0_y[3]
|
||||
fit_coef_gyro_0_y = np.poly1d(coef_gyro_0_y)
|
||||
gyro_0_y_resample = fit_coef_gyro_0_y(temp_rel_resample)
|
||||
# fit Y axis
|
||||
coef_gyro_0_y = np.polyfit(temp_rel,sensor_gyro_0['y'],3)
|
||||
gyro_0_params['TC_G0_X3_1'] = coef_gyro_0_y[0]
|
||||
gyro_0_params['TC_G0_X2_1'] = coef_gyro_0_y[1]
|
||||
gyro_0_params['TC_G0_X1_1'] = coef_gyro_0_y[2]
|
||||
gyro_0_params['TC_G0_X0_1'] = coef_gyro_0_y[3]
|
||||
fit_coef_gyro_0_y = np.poly1d(coef_gyro_0_y)
|
||||
gyro_0_y_resample = fit_coef_gyro_0_y(temp_rel_resample)
|
||||
|
||||
# fit Z axis
|
||||
coef_gyro_0_z = np.polyfit(temp_rel,sensor_gyro_0['z'],3)
|
||||
gyro_0_params['TC_G0_X3_2'] = coef_gyro_0_z[0]
|
||||
gyro_0_params['TC_G0_X2_2'] = coef_gyro_0_z[1]
|
||||
gyro_0_params['TC_G0_X1_2'] = coef_gyro_0_z[2]
|
||||
gyro_0_params['TC_G0_X0_2'] = coef_gyro_0_z[3]
|
||||
fit_coef_gyro_0_z = np.poly1d(coef_gyro_0_z)
|
||||
gyro_0_z_resample = fit_coef_gyro_0_z(temp_rel_resample)
|
||||
# fit Z axis
|
||||
coef_gyro_0_z = np.polyfit(temp_rel,sensor_gyro_0['z'],3)
|
||||
gyro_0_params['TC_G0_X3_2'] = coef_gyro_0_z[0]
|
||||
gyro_0_params['TC_G0_X2_2'] = coef_gyro_0_z[1]
|
||||
gyro_0_params['TC_G0_X1_2'] = coef_gyro_0_z[2]
|
||||
gyro_0_params['TC_G0_X0_2'] = coef_gyro_0_z[3]
|
||||
fit_coef_gyro_0_z = np.poly1d(coef_gyro_0_z)
|
||||
gyro_0_z_resample = fit_coef_gyro_0_z(temp_rel_resample)
|
||||
|
||||
# gyro0 vs temperature
|
||||
plt.figure(1,figsize=(20,13))
|
||||
# gyro0 vs temperature
|
||||
plt.figure(1,figsize=(20,13))
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_gyro_0['temperature'],sensor_gyro_0['x'],'b')
|
||||
plt.plot(temp_resample,gyro_0_x_resample,'r')
|
||||
plt.title('Gyro 0 Bias vs Temperature')
|
||||
plt.ylabel('X bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_gyro_0['temperature'],sensor_gyro_0['x'],'b')
|
||||
plt.plot(temp_resample,gyro_0_x_resample,'r')
|
||||
plt.title('Gyro 0 Bias vs Temperature')
|
||||
plt.ylabel('X bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_gyro_0['temperature'],sensor_gyro_0['y'],'b')
|
||||
plt.plot(temp_resample,gyro_0_y_resample,'r')
|
||||
plt.ylabel('Y bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_gyro_0['temperature'],sensor_gyro_0['y'],'b')
|
||||
plt.plot(temp_resample,gyro_0_y_resample,'r')
|
||||
plt.ylabel('Y bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_gyro_0['temperature'],sensor_gyro_0['z'],'b')
|
||||
plt.plot(temp_resample,gyro_0_z_resample,'r')
|
||||
plt.ylabel('Z bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_gyro_0['temperature'],sensor_gyro_0['z'],'b')
|
||||
plt.plot(temp_resample,gyro_0_z_resample,'r')
|
||||
plt.ylabel('Z bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
pp.savefig()
|
||||
pp.savefig()
|
||||
|
||||
#################################################################################
|
||||
|
||||
@@ -229,72 +229,72 @@ gyro_1_params = {
|
||||
|
||||
# curve fit the data for gyro 1 corrections
|
||||
if num_gyros >= 2:
|
||||
gyro_1_params['TC_G1_ID'] = int(np.median(sensor_gyro_1['device_id']))
|
||||
gyro_1_params['TC_G1_ID'] = int(np.median(sensor_gyro_1['device_id']))
|
||||
|
||||
# find the min, max and reference temperature
|
||||
gyro_1_params['TC_G1_TMIN'] = np.amin(sensor_gyro_1['temperature'])
|
||||
gyro_1_params['TC_G1_TMAX'] = np.amax(sensor_gyro_1['temperature'])
|
||||
gyro_1_params['TC_G1_TREF'] = 0.5 * (gyro_1_params['TC_G1_TMIN'] + gyro_1_params['TC_G1_TMAX'])
|
||||
temp_rel = sensor_gyro_1['temperature'] - gyro_1_params['TC_G1_TREF']
|
||||
temp_rel_resample = np.linspace(gyro_1_params['TC_G1_TMIN']-gyro_1_params['TC_G1_TREF'], gyro_1_params['TC_G1_TMAX']-gyro_1_params['TC_G1_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + gyro_1_params['TC_G1_TREF']
|
||||
# find the min, max and reference temperature
|
||||
gyro_1_params['TC_G1_TMIN'] = np.amin(sensor_gyro_1['temperature'])
|
||||
gyro_1_params['TC_G1_TMAX'] = np.amax(sensor_gyro_1['temperature'])
|
||||
gyro_1_params['TC_G1_TREF'] = 0.5 * (gyro_1_params['TC_G1_TMIN'] + gyro_1_params['TC_G1_TMAX'])
|
||||
temp_rel = sensor_gyro_1['temperature'] - gyro_1_params['TC_G1_TREF']
|
||||
temp_rel_resample = np.linspace(gyro_1_params['TC_G1_TMIN']-gyro_1_params['TC_G1_TREF'], gyro_1_params['TC_G1_TMAX']-gyro_1_params['TC_G1_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + gyro_1_params['TC_G1_TREF']
|
||||
|
||||
# fit X axis
|
||||
coef_gyro_1_x = np.polyfit(temp_rel,sensor_gyro_1['x'],3)
|
||||
gyro_1_params['TC_G1_X3_0'] = coef_gyro_1_x[0]
|
||||
gyro_1_params['TC_G1_X2_0'] = coef_gyro_1_x[1]
|
||||
gyro_1_params['TC_G1_X1_0'] = coef_gyro_1_x[2]
|
||||
gyro_1_params['TC_G1_X0_0'] = coef_gyro_1_x[3]
|
||||
fit_coef_gyro_1_x = np.poly1d(coef_gyro_1_x)
|
||||
gyro_1_x_resample = fit_coef_gyro_1_x(temp_rel_resample)
|
||||
# fit X axis
|
||||
coef_gyro_1_x = np.polyfit(temp_rel,sensor_gyro_1['x'],3)
|
||||
gyro_1_params['TC_G1_X3_0'] = coef_gyro_1_x[0]
|
||||
gyro_1_params['TC_G1_X2_0'] = coef_gyro_1_x[1]
|
||||
gyro_1_params['TC_G1_X1_0'] = coef_gyro_1_x[2]
|
||||
gyro_1_params['TC_G1_X0_0'] = coef_gyro_1_x[3]
|
||||
fit_coef_gyro_1_x = np.poly1d(coef_gyro_1_x)
|
||||
gyro_1_x_resample = fit_coef_gyro_1_x(temp_rel_resample)
|
||||
|
||||
# fit Y axis
|
||||
coef_gyro_1_y = np.polyfit(temp_rel,sensor_gyro_1['y'],3)
|
||||
gyro_1_params['TC_G1_X3_1'] = coef_gyro_1_y[0]
|
||||
gyro_1_params['TC_G1_X2_1'] = coef_gyro_1_y[1]
|
||||
gyro_1_params['TC_G1_X1_1'] = coef_gyro_1_y[2]
|
||||
gyro_1_params['TC_G1_X0_1'] = coef_gyro_1_y[3]
|
||||
fit_coef_gyro_1_y = np.poly1d(coef_gyro_1_y)
|
||||
gyro_1_y_resample = fit_coef_gyro_1_y(temp_rel_resample)
|
||||
# fit Y axis
|
||||
coef_gyro_1_y = np.polyfit(temp_rel,sensor_gyro_1['y'],3)
|
||||
gyro_1_params['TC_G1_X3_1'] = coef_gyro_1_y[0]
|
||||
gyro_1_params['TC_G1_X2_1'] = coef_gyro_1_y[1]
|
||||
gyro_1_params['TC_G1_X1_1'] = coef_gyro_1_y[2]
|
||||
gyro_1_params['TC_G1_X0_1'] = coef_gyro_1_y[3]
|
||||
fit_coef_gyro_1_y = np.poly1d(coef_gyro_1_y)
|
||||
gyro_1_y_resample = fit_coef_gyro_1_y(temp_rel_resample)
|
||||
|
||||
# fit Z axis
|
||||
coef_gyro_1_z = np.polyfit(temp_rel,sensor_gyro_1['z'],3)
|
||||
gyro_1_params['TC_G1_X3_2'] = coef_gyro_1_z[0]
|
||||
gyro_1_params['TC_G1_X2_2'] = coef_gyro_1_z[1]
|
||||
gyro_1_params['TC_G1_X1_2'] = coef_gyro_1_z[2]
|
||||
gyro_1_params['TC_G1_X0_2'] = coef_gyro_1_z[3]
|
||||
fit_coef_gyro_1_z = np.poly1d(coef_gyro_1_z)
|
||||
gyro_1_z_resample = fit_coef_gyro_1_z(temp_rel_resample)
|
||||
# fit Z axis
|
||||
coef_gyro_1_z = np.polyfit(temp_rel,sensor_gyro_1['z'],3)
|
||||
gyro_1_params['TC_G1_X3_2'] = coef_gyro_1_z[0]
|
||||
gyro_1_params['TC_G1_X2_2'] = coef_gyro_1_z[1]
|
||||
gyro_1_params['TC_G1_X1_2'] = coef_gyro_1_z[2]
|
||||
gyro_1_params['TC_G1_X0_2'] = coef_gyro_1_z[3]
|
||||
fit_coef_gyro_1_z = np.poly1d(coef_gyro_1_z)
|
||||
gyro_1_z_resample = fit_coef_gyro_1_z(temp_rel_resample)
|
||||
|
||||
# gyro1 vs temperature
|
||||
plt.figure(2,figsize=(20,13))
|
||||
# gyro1 vs temperature
|
||||
plt.figure(2,figsize=(20,13))
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_gyro_1['temperature'],sensor_gyro_1['x'],'b')
|
||||
plt.plot(temp_resample,gyro_1_x_resample,'r')
|
||||
plt.title('Gyro 1 Bias vs Temperature')
|
||||
plt.ylabel('X bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_gyro_1['temperature'],sensor_gyro_1['x'],'b')
|
||||
plt.plot(temp_resample,gyro_1_x_resample,'r')
|
||||
plt.title('Gyro 1 Bias vs Temperature')
|
||||
plt.ylabel('X bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_gyro_1['temperature'],sensor_gyro_1['y'],'b')
|
||||
plt.plot(temp_resample,gyro_1_y_resample,'r')
|
||||
plt.ylabel('Y bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_gyro_1['temperature'],sensor_gyro_1['y'],'b')
|
||||
plt.plot(temp_resample,gyro_1_y_resample,'r')
|
||||
plt.ylabel('Y bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_gyro_1['temperature'],sensor_gyro_1['z'],'b')
|
||||
plt.plot(temp_resample,gyro_1_z_resample,'r')
|
||||
plt.ylabel('Z bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_gyro_1['temperature'],sensor_gyro_1['z'],'b')
|
||||
plt.plot(temp_resample,gyro_1_z_resample,'r')
|
||||
plt.ylabel('Z bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
pp.savefig()
|
||||
pp.savefig()
|
||||
|
||||
#################################################################################
|
||||
|
||||
@@ -325,72 +325,72 @@ gyro_2_params = {
|
||||
|
||||
# curve fit the data for gyro 2 corrections
|
||||
if num_gyros >= 3:
|
||||
gyro_2_params['TC_G2_ID'] = int(np.median(sensor_gyro_2['device_id']))
|
||||
gyro_2_params['TC_G2_ID'] = int(np.median(sensor_gyro_2['device_id']))
|
||||
|
||||
# find the min, max and reference temperature
|
||||
gyro_2_params['TC_G2_TMIN'] = np.amin(sensor_gyro_2['temperature'])
|
||||
gyro_2_params['TC_G2_TMAX'] = np.amax(sensor_gyro_2['temperature'])
|
||||
gyro_2_params['TC_G2_TREF'] = 0.5 * (gyro_2_params['TC_G2_TMIN'] + gyro_2_params['TC_G2_TMAX'])
|
||||
temp_rel = sensor_gyro_2['temperature'] - gyro_2_params['TC_G2_TREF']
|
||||
temp_rel_resample = np.linspace(gyro_2_params['TC_G2_TMIN']-gyro_2_params['TC_G2_TREF'], gyro_2_params['TC_G2_TMAX']-gyro_2_params['TC_G2_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + gyro_2_params['TC_G2_TREF']
|
||||
# find the min, max and reference temperature
|
||||
gyro_2_params['TC_G2_TMIN'] = np.amin(sensor_gyro_2['temperature'])
|
||||
gyro_2_params['TC_G2_TMAX'] = np.amax(sensor_gyro_2['temperature'])
|
||||
gyro_2_params['TC_G2_TREF'] = 0.5 * (gyro_2_params['TC_G2_TMIN'] + gyro_2_params['TC_G2_TMAX'])
|
||||
temp_rel = sensor_gyro_2['temperature'] - gyro_2_params['TC_G2_TREF']
|
||||
temp_rel_resample = np.linspace(gyro_2_params['TC_G2_TMIN']-gyro_2_params['TC_G2_TREF'], gyro_2_params['TC_G2_TMAX']-gyro_2_params['TC_G2_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + gyro_2_params['TC_G2_TREF']
|
||||
|
||||
# fit X axis
|
||||
coef_gyro_2_x = np.polyfit(temp_rel,sensor_gyro_2['x'],3)
|
||||
gyro_2_params['TC_G2_X3_0'] = coef_gyro_2_x[0]
|
||||
gyro_2_params['TC_G2_X2_0'] = coef_gyro_2_x[1]
|
||||
gyro_2_params['TC_G2_X1_0'] = coef_gyro_2_x[2]
|
||||
gyro_2_params['TC_G2_X0_0'] = coef_gyro_2_x[3]
|
||||
fit_coef_gyro_2_x = np.poly1d(coef_gyro_2_x)
|
||||
gyro_2_x_resample = fit_coef_gyro_2_x(temp_rel_resample)
|
||||
# fit X axis
|
||||
coef_gyro_2_x = np.polyfit(temp_rel,sensor_gyro_2['x'],3)
|
||||
gyro_2_params['TC_G2_X3_0'] = coef_gyro_2_x[0]
|
||||
gyro_2_params['TC_G2_X2_0'] = coef_gyro_2_x[1]
|
||||
gyro_2_params['TC_G2_X1_0'] = coef_gyro_2_x[2]
|
||||
gyro_2_params['TC_G2_X0_0'] = coef_gyro_2_x[3]
|
||||
fit_coef_gyro_2_x = np.poly1d(coef_gyro_2_x)
|
||||
gyro_2_x_resample = fit_coef_gyro_2_x(temp_rel_resample)
|
||||
|
||||
# fit Y axis
|
||||
coef_gyro_2_y = np.polyfit(temp_rel,sensor_gyro_2['y'],3)
|
||||
gyro_2_params['TC_G2_X3_1'] = coef_gyro_2_y[0]
|
||||
gyro_2_params['TC_G2_X2_1'] = coef_gyro_2_y[1]
|
||||
gyro_2_params['TC_G2_X1_1'] = coef_gyro_2_y[2]
|
||||
gyro_2_params['TC_G2_X0_1'] = coef_gyro_2_y[3]
|
||||
fit_coef_gyro_2_y = np.poly1d(coef_gyro_2_y)
|
||||
gyro_2_y_resample = fit_coef_gyro_2_y(temp_rel_resample)
|
||||
# fit Y axis
|
||||
coef_gyro_2_y = np.polyfit(temp_rel,sensor_gyro_2['y'],3)
|
||||
gyro_2_params['TC_G2_X3_1'] = coef_gyro_2_y[0]
|
||||
gyro_2_params['TC_G2_X2_1'] = coef_gyro_2_y[1]
|
||||
gyro_2_params['TC_G2_X1_1'] = coef_gyro_2_y[2]
|
||||
gyro_2_params['TC_G2_X0_1'] = coef_gyro_2_y[3]
|
||||
fit_coef_gyro_2_y = np.poly1d(coef_gyro_2_y)
|
||||
gyro_2_y_resample = fit_coef_gyro_2_y(temp_rel_resample)
|
||||
|
||||
# fit Z axis
|
||||
coef_gyro_2_z = np.polyfit(temp_rel,sensor_gyro_2['z'],3)
|
||||
gyro_2_params['TC_G2_X3_2'] = coef_gyro_2_z[0]
|
||||
gyro_2_params['TC_G2_X2_2'] = coef_gyro_2_z[1]
|
||||
gyro_2_params['TC_G2_X1_2'] = coef_gyro_2_z[2]
|
||||
gyro_2_params['TC_G2_X0_2'] = coef_gyro_2_z[3]
|
||||
fit_coef_gyro_2_z = np.poly1d(coef_gyro_2_z)
|
||||
gyro_2_z_resample = fit_coef_gyro_2_z(temp_rel_resample)
|
||||
# fit Z axis
|
||||
coef_gyro_2_z = np.polyfit(temp_rel,sensor_gyro_2['z'],3)
|
||||
gyro_2_params['TC_G2_X3_2'] = coef_gyro_2_z[0]
|
||||
gyro_2_params['TC_G2_X2_2'] = coef_gyro_2_z[1]
|
||||
gyro_2_params['TC_G2_X1_2'] = coef_gyro_2_z[2]
|
||||
gyro_2_params['TC_G2_X0_2'] = coef_gyro_2_z[3]
|
||||
fit_coef_gyro_2_z = np.poly1d(coef_gyro_2_z)
|
||||
gyro_2_z_resample = fit_coef_gyro_2_z(temp_rel_resample)
|
||||
|
||||
# gyro2 vs temperature
|
||||
plt.figure(3,figsize=(20,13))
|
||||
# gyro2 vs temperature
|
||||
plt.figure(3,figsize=(20,13))
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_gyro_2['temperature'],sensor_gyro_2['x'],'b')
|
||||
plt.plot(temp_resample,gyro_2_x_resample,'r')
|
||||
plt.title('Gyro 2 Bias vs Temperature')
|
||||
plt.ylabel('X bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_gyro_2['temperature'],sensor_gyro_2['x'],'b')
|
||||
plt.plot(temp_resample,gyro_2_x_resample,'r')
|
||||
plt.title('Gyro 2 Bias vs Temperature')
|
||||
plt.ylabel('X bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_gyro_2['temperature'],sensor_gyro_2['y'],'b')
|
||||
plt.plot(temp_resample,gyro_2_y_resample,'r')
|
||||
plt.ylabel('Y bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_gyro_2['temperature'],sensor_gyro_2['y'],'b')
|
||||
plt.plot(temp_resample,gyro_2_y_resample,'r')
|
||||
plt.ylabel('Y bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_gyro_2['temperature'],sensor_gyro_2['z'],'b')
|
||||
plt.plot(temp_resample,gyro_2_z_resample,'r')
|
||||
plt.ylabel('Z bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_gyro_2['temperature'],sensor_gyro_2['z'],'b')
|
||||
plt.plot(temp_resample,gyro_2_z_resample,'r')
|
||||
plt.ylabel('Z bias (rad/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
pp.savefig()
|
||||
pp.savefig()
|
||||
|
||||
#################################################################################
|
||||
|
||||
@@ -421,75 +421,75 @@ accel_0_params = {
|
||||
|
||||
# curve fit the data for accel 0 corrections
|
||||
if num_accels >= 1:
|
||||
accel_0_params['TC_A0_ID'] = int(np.median(sensor_accel_0['device_id']))
|
||||
accel_0_params['TC_A0_ID'] = int(np.median(sensor_accel_0['device_id']))
|
||||
|
||||
# find the min, max and reference temperature
|
||||
accel_0_params['TC_A0_TMIN'] = np.amin(sensor_accel_0['temperature'])
|
||||
accel_0_params['TC_A0_TMAX'] = np.amax(sensor_accel_0['temperature'])
|
||||
accel_0_params['TC_A0_TREF'] = 0.5 * (accel_0_params['TC_A0_TMIN'] + accel_0_params['TC_A0_TMAX'])
|
||||
temp_rel = sensor_accel_0['temperature'] - accel_0_params['TC_A0_TREF']
|
||||
temp_rel_resample = np.linspace(accel_0_params['TC_A0_TMIN']-accel_0_params['TC_A0_TREF'], accel_0_params['TC_A0_TMAX']-accel_0_params['TC_A0_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + accel_0_params['TC_A0_TREF']
|
||||
# find the min, max and reference temperature
|
||||
accel_0_params['TC_A0_TMIN'] = np.amin(sensor_accel_0['temperature'])
|
||||
accel_0_params['TC_A0_TMAX'] = np.amax(sensor_accel_0['temperature'])
|
||||
accel_0_params['TC_A0_TREF'] = 0.5 * (accel_0_params['TC_A0_TMIN'] + accel_0_params['TC_A0_TMAX'])
|
||||
temp_rel = sensor_accel_0['temperature'] - accel_0_params['TC_A0_TREF']
|
||||
temp_rel_resample = np.linspace(accel_0_params['TC_A0_TMIN']-accel_0_params['TC_A0_TREF'], accel_0_params['TC_A0_TMAX']-accel_0_params['TC_A0_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + accel_0_params['TC_A0_TREF']
|
||||
|
||||
# fit X axis
|
||||
correction_x = sensor_accel_0['x'] - np.median(sensor_accel_0['x'])
|
||||
coef_accel_0_x = np.polyfit(temp_rel,correction_x,3)
|
||||
accel_0_params['TC_A0_X3_0'] = coef_accel_0_x[0]
|
||||
accel_0_params['TC_A0_X2_0'] = coef_accel_0_x[1]
|
||||
accel_0_params['TC_A0_X1_0'] = coef_accel_0_x[2]
|
||||
accel_0_params['TC_A0_X0_0'] = coef_accel_0_x[3]
|
||||
fit_coef_accel_0_x = np.poly1d(coef_accel_0_x)
|
||||
correction_x_resample = fit_coef_accel_0_x(temp_rel_resample)
|
||||
# fit X axis
|
||||
correction_x = sensor_accel_0['x'] - np.median(sensor_accel_0['x'])
|
||||
coef_accel_0_x = np.polyfit(temp_rel,correction_x,3)
|
||||
accel_0_params['TC_A0_X3_0'] = coef_accel_0_x[0]
|
||||
accel_0_params['TC_A0_X2_0'] = coef_accel_0_x[1]
|
||||
accel_0_params['TC_A0_X1_0'] = coef_accel_0_x[2]
|
||||
accel_0_params['TC_A0_X0_0'] = coef_accel_0_x[3]
|
||||
fit_coef_accel_0_x = np.poly1d(coef_accel_0_x)
|
||||
correction_x_resample = fit_coef_accel_0_x(temp_rel_resample)
|
||||
|
||||
# fit Y axis
|
||||
correction_y = sensor_accel_0['y']-np.median(sensor_accel_0['y'])
|
||||
coef_accel_0_y = np.polyfit(temp_rel,correction_y,3)
|
||||
accel_0_params['TC_A0_X3_1'] = coef_accel_0_y[0]
|
||||
accel_0_params['TC_A0_X2_1'] = coef_accel_0_y[1]
|
||||
accel_0_params['TC_A0_X1_1'] = coef_accel_0_y[2]
|
||||
accel_0_params['TC_A0_X0_1'] = coef_accel_0_y[3]
|
||||
fit_coef_accel_0_y = np.poly1d(coef_accel_0_y)
|
||||
correction_y_resample = fit_coef_accel_0_y(temp_rel_resample)
|
||||
# fit Y axis
|
||||
correction_y = sensor_accel_0['y']-np.median(sensor_accel_0['y'])
|
||||
coef_accel_0_y = np.polyfit(temp_rel,correction_y,3)
|
||||
accel_0_params['TC_A0_X3_1'] = coef_accel_0_y[0]
|
||||
accel_0_params['TC_A0_X2_1'] = coef_accel_0_y[1]
|
||||
accel_0_params['TC_A0_X1_1'] = coef_accel_0_y[2]
|
||||
accel_0_params['TC_A0_X0_1'] = coef_accel_0_y[3]
|
||||
fit_coef_accel_0_y = np.poly1d(coef_accel_0_y)
|
||||
correction_y_resample = fit_coef_accel_0_y(temp_rel_resample)
|
||||
|
||||
# fit Z axis
|
||||
correction_z = sensor_accel_0['z']-np.median(sensor_accel_0['z'])
|
||||
coef_accel_0_z = np.polyfit(temp_rel,correction_z,3)
|
||||
accel_0_params['TC_A0_X3_2'] = coef_accel_0_z[0]
|
||||
accel_0_params['TC_A0_X2_2'] = coef_accel_0_z[1]
|
||||
accel_0_params['TC_A0_X1_2'] = coef_accel_0_z[2]
|
||||
accel_0_params['TC_A0_X0_2'] = coef_accel_0_z[3]
|
||||
fit_coef_accel_0_z = np.poly1d(coef_accel_0_z)
|
||||
correction_z_resample = fit_coef_accel_0_z(temp_rel_resample)
|
||||
# fit Z axis
|
||||
correction_z = sensor_accel_0['z']-np.median(sensor_accel_0['z'])
|
||||
coef_accel_0_z = np.polyfit(temp_rel,correction_z,3)
|
||||
accel_0_params['TC_A0_X3_2'] = coef_accel_0_z[0]
|
||||
accel_0_params['TC_A0_X2_2'] = coef_accel_0_z[1]
|
||||
accel_0_params['TC_A0_X1_2'] = coef_accel_0_z[2]
|
||||
accel_0_params['TC_A0_X0_2'] = coef_accel_0_z[3]
|
||||
fit_coef_accel_0_z = np.poly1d(coef_accel_0_z)
|
||||
correction_z_resample = fit_coef_accel_0_z(temp_rel_resample)
|
||||
|
||||
# accel 0 vs temperature
|
||||
plt.figure(4,figsize=(20,13))
|
||||
# accel 0 vs temperature
|
||||
plt.figure(4,figsize=(20,13))
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_accel_0['temperature'],correction_x,'b')
|
||||
plt.plot(temp_resample,correction_x_resample,'r')
|
||||
plt.title('Accel 0 Bias vs Temperature')
|
||||
plt.ylabel('X bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_accel_0['temperature'],correction_x,'b')
|
||||
plt.plot(temp_resample,correction_x_resample,'r')
|
||||
plt.title('Accel 0 Bias vs Temperature')
|
||||
plt.ylabel('X bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_accel_0['temperature'],correction_y,'b')
|
||||
plt.plot(temp_resample,correction_y_resample,'r')
|
||||
plt.ylabel('Y bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_accel_0['temperature'],correction_y,'b')
|
||||
plt.plot(temp_resample,correction_y_resample,'r')
|
||||
plt.ylabel('Y bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_accel_0['temperature'],correction_z,'b')
|
||||
plt.plot(temp_resample,correction_z_resample,'r')
|
||||
plt.ylabel('Z bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_accel_0['temperature'],correction_z,'b')
|
||||
plt.plot(temp_resample,correction_z_resample,'r')
|
||||
plt.ylabel('Z bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
pp.savefig()
|
||||
pp.savefig()
|
||||
|
||||
#################################################################################
|
||||
|
||||
@@ -520,75 +520,75 @@ accel_1_params = {
|
||||
|
||||
# curve fit the data for accel 1 corrections
|
||||
if num_accels >= 2:
|
||||
accel_1_params['TC_A1_ID'] = int(np.median(sensor_accel_1['device_id']))
|
||||
accel_1_params['TC_A1_ID'] = int(np.median(sensor_accel_1['device_id']))
|
||||
|
||||
# find the min, max and reference temperature
|
||||
accel_1_params['TC_A1_TMIN'] = np.amin(sensor_accel_1['temperature'])
|
||||
accel_1_params['TC_A1_TMAX'] = np.amax(sensor_accel_1['temperature'])
|
||||
accel_1_params['TC_A1_TREF'] = 0.5 * (accel_1_params['TC_A1_TMIN'] + accel_1_params['TC_A1_TMAX'])
|
||||
temp_rel = sensor_accel_1['temperature'] - accel_1_params['TC_A1_TREF']
|
||||
temp_rel_resample = np.linspace(accel_1_params['TC_A1_TMIN']-accel_1_params['TC_A1_TREF'], accel_1_params['TC_A1_TMAX']-accel_1_params['TC_A1_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + accel_1_params['TC_A1_TREF']
|
||||
# find the min, max and reference temperature
|
||||
accel_1_params['TC_A1_TMIN'] = np.amin(sensor_accel_1['temperature'])
|
||||
accel_1_params['TC_A1_TMAX'] = np.amax(sensor_accel_1['temperature'])
|
||||
accel_1_params['TC_A1_TREF'] = 0.5 * (accel_1_params['TC_A1_TMIN'] + accel_1_params['TC_A1_TMAX'])
|
||||
temp_rel = sensor_accel_1['temperature'] - accel_1_params['TC_A1_TREF']
|
||||
temp_rel_resample = np.linspace(accel_1_params['TC_A1_TMIN']-accel_1_params['TC_A1_TREF'], accel_1_params['TC_A1_TMAX']-accel_1_params['TC_A1_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + accel_1_params['TC_A1_TREF']
|
||||
|
||||
# fit X axis
|
||||
correction_x = sensor_accel_1['x']-np.median(sensor_accel_1['x'])
|
||||
coef_accel_1_x = np.polyfit(temp_rel,correction_x,3)
|
||||
accel_1_params['TC_A1_X3_0'] = coef_accel_1_x[0]
|
||||
accel_1_params['TC_A1_X2_0'] = coef_accel_1_x[1]
|
||||
accel_1_params['TC_A1_X1_0'] = coef_accel_1_x[2]
|
||||
accel_1_params['TC_A1_X0_0'] = coef_accel_1_x[3]
|
||||
fit_coef_accel_1_x = np.poly1d(coef_accel_1_x)
|
||||
correction_x_resample = fit_coef_accel_1_x(temp_rel_resample)
|
||||
# fit X axis
|
||||
correction_x = sensor_accel_1['x']-np.median(sensor_accel_1['x'])
|
||||
coef_accel_1_x = np.polyfit(temp_rel,correction_x,3)
|
||||
accel_1_params['TC_A1_X3_0'] = coef_accel_1_x[0]
|
||||
accel_1_params['TC_A1_X2_0'] = coef_accel_1_x[1]
|
||||
accel_1_params['TC_A1_X1_0'] = coef_accel_1_x[2]
|
||||
accel_1_params['TC_A1_X0_0'] = coef_accel_1_x[3]
|
||||
fit_coef_accel_1_x = np.poly1d(coef_accel_1_x)
|
||||
correction_x_resample = fit_coef_accel_1_x(temp_rel_resample)
|
||||
|
||||
# fit Y axis
|
||||
correction_y = sensor_accel_1['y']-np.median(sensor_accel_1['y'])
|
||||
coef_accel_1_y = np.polyfit(temp_rel,correction_y,3)
|
||||
accel_1_params['TC_A1_X3_1'] = coef_accel_1_y[0]
|
||||
accel_1_params['TC_A1_X2_1'] = coef_accel_1_y[1]
|
||||
accel_1_params['TC_A1_X1_1'] = coef_accel_1_y[2]
|
||||
accel_1_params['TC_A1_X0_1'] = coef_accel_1_y[3]
|
||||
fit_coef_accel_1_y = np.poly1d(coef_accel_1_y)
|
||||
correction_y_resample = fit_coef_accel_1_y(temp_rel_resample)
|
||||
# fit Y axis
|
||||
correction_y = sensor_accel_1['y']-np.median(sensor_accel_1['y'])
|
||||
coef_accel_1_y = np.polyfit(temp_rel,correction_y,3)
|
||||
accel_1_params['TC_A1_X3_1'] = coef_accel_1_y[0]
|
||||
accel_1_params['TC_A1_X2_1'] = coef_accel_1_y[1]
|
||||
accel_1_params['TC_A1_X1_1'] = coef_accel_1_y[2]
|
||||
accel_1_params['TC_A1_X0_1'] = coef_accel_1_y[3]
|
||||
fit_coef_accel_1_y = np.poly1d(coef_accel_1_y)
|
||||
correction_y_resample = fit_coef_accel_1_y(temp_rel_resample)
|
||||
|
||||
# fit Z axis
|
||||
correction_z = (sensor_accel_1['z'])-np.median(sensor_accel_1['z'])
|
||||
coef_accel_1_z = np.polyfit(temp_rel,correction_z,3)
|
||||
accel_1_params['TC_A1_X3_2'] = coef_accel_1_z[0]
|
||||
accel_1_params['TC_A1_X2_2'] = coef_accel_1_z[1]
|
||||
accel_1_params['TC_A1_X1_2'] = coef_accel_1_z[2]
|
||||
accel_1_params['TC_A1_X0_2'] = coef_accel_1_z[3]
|
||||
fit_coef_accel_1_z = np.poly1d(coef_accel_1_z)
|
||||
correction_z_resample = fit_coef_accel_1_z(temp_rel_resample)
|
||||
# fit Z axis
|
||||
correction_z = (sensor_accel_1['z'])-np.median(sensor_accel_1['z'])
|
||||
coef_accel_1_z = np.polyfit(temp_rel,correction_z,3)
|
||||
accel_1_params['TC_A1_X3_2'] = coef_accel_1_z[0]
|
||||
accel_1_params['TC_A1_X2_2'] = coef_accel_1_z[1]
|
||||
accel_1_params['TC_A1_X1_2'] = coef_accel_1_z[2]
|
||||
accel_1_params['TC_A1_X0_2'] = coef_accel_1_z[3]
|
||||
fit_coef_accel_1_z = np.poly1d(coef_accel_1_z)
|
||||
correction_z_resample = fit_coef_accel_1_z(temp_rel_resample)
|
||||
|
||||
# accel 1 vs temperature
|
||||
plt.figure(5,figsize=(20,13))
|
||||
# accel 1 vs temperature
|
||||
plt.figure(5,figsize=(20,13))
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_accel_1['temperature'],correction_x,'b')
|
||||
plt.plot(temp_resample,correction_x_resample,'r')
|
||||
plt.title('Accel 1 Bias vs Temperature')
|
||||
plt.ylabel('X bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_accel_1['temperature'],correction_x,'b')
|
||||
plt.plot(temp_resample,correction_x_resample,'r')
|
||||
plt.title('Accel 1 Bias vs Temperature')
|
||||
plt.ylabel('X bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_accel_1['temperature'],correction_y,'b')
|
||||
plt.plot(temp_resample,correction_y_resample,'r')
|
||||
plt.ylabel('Y bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_accel_1['temperature'],correction_y,'b')
|
||||
plt.plot(temp_resample,correction_y_resample,'r')
|
||||
plt.ylabel('Y bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_accel_1['temperature'],correction_z,'b')
|
||||
plt.plot(temp_resample,correction_z_resample,'r')
|
||||
plt.ylabel('Z bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_accel_1['temperature'],correction_z,'b')
|
||||
plt.plot(temp_resample,correction_z_resample,'r')
|
||||
plt.ylabel('Z bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
pp.savefig()
|
||||
pp.savefig()
|
||||
|
||||
#################################################################################
|
||||
|
||||
@@ -619,75 +619,75 @@ accel_2_params = {
|
||||
|
||||
# curve fit the data for accel 2 corrections
|
||||
if num_accels >= 3:
|
||||
accel_2_params['TC_A2_ID'] = int(np.median(sensor_accel_2['device_id']))
|
||||
accel_2_params['TC_A2_ID'] = int(np.median(sensor_accel_2['device_id']))
|
||||
|
||||
# find the min, max and reference temperature
|
||||
accel_2_params['TC_A2_TMIN'] = np.amin(sensor_accel_2['temperature'])
|
||||
accel_2_params['TC_A2_TMAX'] = np.amax(sensor_accel_2['temperature'])
|
||||
accel_2_params['TC_A2_TREF'] = 0.5 * (accel_2_params['TC_A2_TMIN'] + accel_2_params['TC_A2_TMAX'])
|
||||
temp_rel = sensor_accel_2['temperature'] - accel_2_params['TC_A2_TREF']
|
||||
temp_rel_resample = np.linspace(accel_2_params['TC_A2_TMIN']-accel_2_params['TC_A2_TREF'], accel_2_params['TC_A2_TMAX']-accel_2_params['TC_A2_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + accel_2_params['TC_A2_TREF']
|
||||
# find the min, max and reference temperature
|
||||
accel_2_params['TC_A2_TMIN'] = np.amin(sensor_accel_2['temperature'])
|
||||
accel_2_params['TC_A2_TMAX'] = np.amax(sensor_accel_2['temperature'])
|
||||
accel_2_params['TC_A2_TREF'] = 0.5 * (accel_2_params['TC_A2_TMIN'] + accel_2_params['TC_A2_TMAX'])
|
||||
temp_rel = sensor_accel_2['temperature'] - accel_2_params['TC_A2_TREF']
|
||||
temp_rel_resample = np.linspace(accel_2_params['TC_A2_TMIN']-accel_2_params['TC_A2_TREF'], accel_2_params['TC_A2_TMAX']-accel_2_params['TC_A2_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + accel_2_params['TC_A2_TREF']
|
||||
|
||||
# fit X axis
|
||||
correction_x = sensor_accel_2['x']-np.median(sensor_accel_2['x'])
|
||||
coef_accel_2_x = np.polyfit(temp_rel,correction_x,3)
|
||||
accel_2_params['TC_A2_X3_0'] = coef_accel_2_x[0]
|
||||
accel_2_params['TC_A2_X2_0'] = coef_accel_2_x[1]
|
||||
accel_2_params['TC_A2_X1_0'] = coef_accel_2_x[2]
|
||||
accel_2_params['TC_A2_X0_0'] = coef_accel_2_x[3]
|
||||
fit_coef_accel_2_x = np.poly1d(coef_accel_2_x)
|
||||
correction_x_resample = fit_coef_accel_2_x(temp_rel_resample)
|
||||
# fit X axis
|
||||
correction_x = sensor_accel_2['x']-np.median(sensor_accel_2['x'])
|
||||
coef_accel_2_x = np.polyfit(temp_rel,correction_x,3)
|
||||
accel_2_params['TC_A2_X3_0'] = coef_accel_2_x[0]
|
||||
accel_2_params['TC_A2_X2_0'] = coef_accel_2_x[1]
|
||||
accel_2_params['TC_A2_X1_0'] = coef_accel_2_x[2]
|
||||
accel_2_params['TC_A2_X0_0'] = coef_accel_2_x[3]
|
||||
fit_coef_accel_2_x = np.poly1d(coef_accel_2_x)
|
||||
correction_x_resample = fit_coef_accel_2_x(temp_rel_resample)
|
||||
|
||||
# fit Y axis
|
||||
correction_y = sensor_accel_2['y']-np.median(sensor_accel_2['y'])
|
||||
coef_accel_2_y = np.polyfit(temp_rel,correction_y,3)
|
||||
accel_2_params['TC_A2_X3_1'] = coef_accel_2_y[0]
|
||||
accel_2_params['TC_A2_X2_1'] = coef_accel_2_y[1]
|
||||
accel_2_params['TC_A2_X1_1'] = coef_accel_2_y[2]
|
||||
accel_2_params['TC_A2_X0_1'] = coef_accel_2_y[3]
|
||||
fit_coef_accel_2_y = np.poly1d(coef_accel_2_y)
|
||||
correction_y_resample = fit_coef_accel_2_y(temp_rel_resample)
|
||||
# fit Y axis
|
||||
correction_y = sensor_accel_2['y']-np.median(sensor_accel_2['y'])
|
||||
coef_accel_2_y = np.polyfit(temp_rel,correction_y,3)
|
||||
accel_2_params['TC_A2_X3_1'] = coef_accel_2_y[0]
|
||||
accel_2_params['TC_A2_X2_1'] = coef_accel_2_y[1]
|
||||
accel_2_params['TC_A2_X1_1'] = coef_accel_2_y[2]
|
||||
accel_2_params['TC_A2_X0_1'] = coef_accel_2_y[3]
|
||||
fit_coef_accel_2_y = np.poly1d(coef_accel_2_y)
|
||||
correction_y_resample = fit_coef_accel_2_y(temp_rel_resample)
|
||||
|
||||
# fit Z axis
|
||||
correction_z = sensor_accel_2['z']-np.median(sensor_accel_2['z'])
|
||||
coef_accel_2_z = np.polyfit(temp_rel,correction_z,3)
|
||||
accel_2_params['TC_A2_X3_2'] = coef_accel_2_z[0]
|
||||
accel_2_params['TC_A2_X2_2'] = coef_accel_2_z[1]
|
||||
accel_2_params['TC_A2_X1_2'] = coef_accel_2_z[2]
|
||||
accel_2_params['TC_A2_X0_2'] = coef_accel_2_z[3]
|
||||
fit_coef_accel_2_z = np.poly1d(coef_accel_2_z)
|
||||
correction_z_resample = fit_coef_accel_2_z(temp_rel_resample)
|
||||
# fit Z axis
|
||||
correction_z = sensor_accel_2['z']-np.median(sensor_accel_2['z'])
|
||||
coef_accel_2_z = np.polyfit(temp_rel,correction_z,3)
|
||||
accel_2_params['TC_A2_X3_2'] = coef_accel_2_z[0]
|
||||
accel_2_params['TC_A2_X2_2'] = coef_accel_2_z[1]
|
||||
accel_2_params['TC_A2_X1_2'] = coef_accel_2_z[2]
|
||||
accel_2_params['TC_A2_X0_2'] = coef_accel_2_z[3]
|
||||
fit_coef_accel_2_z = np.poly1d(coef_accel_2_z)
|
||||
correction_z_resample = fit_coef_accel_2_z(temp_rel_resample)
|
||||
|
||||
# accel 2 vs temperature
|
||||
plt.figure(6,figsize=(20,13))
|
||||
# accel 2 vs temperature
|
||||
plt.figure(6,figsize=(20,13))
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_accel_2['temperature'],correction_x,'b')
|
||||
plt.plot(temp_resample,correction_x_resample,'r')
|
||||
plt.title('Accel 2 Bias vs Temperature')
|
||||
plt.ylabel('X bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,1)
|
||||
plt.plot(sensor_accel_2['temperature'],correction_x,'b')
|
||||
plt.plot(temp_resample,correction_x_resample,'r')
|
||||
plt.title('Accel 2 Bias vs Temperature')
|
||||
plt.ylabel('X bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_accel_2['temperature'],correction_y,'b')
|
||||
plt.plot(temp_resample,correction_y_resample,'r')
|
||||
plt.ylabel('Y bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,2)
|
||||
plt.plot(sensor_accel_2['temperature'],correction_y,'b')
|
||||
plt.plot(temp_resample,correction_y_resample,'r')
|
||||
plt.ylabel('Y bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_accel_2['temperature'],correction_z,'b')
|
||||
plt.plot(temp_resample,correction_z_resample,'r')
|
||||
plt.ylabel('Z bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.subplot(3,1,3)
|
||||
plt.plot(sensor_accel_2['temperature'],correction_z,'b')
|
||||
plt.plot(temp_resample,correction_z_resample,'r')
|
||||
plt.ylabel('Z bias (m/s/s)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
pp.savefig()
|
||||
pp.savefig()
|
||||
|
||||
#################################################################################
|
||||
|
||||
@@ -761,41 +761,41 @@ baro_1_params = {
|
||||
|
||||
if num_baros >= 2:
|
||||
|
||||
# curve fit the data for baro 0 corrections
|
||||
baro_1_params['TC_B1_ID'] = int(np.median(sensor_baro_1['device_id']))
|
||||
# curve fit the data for baro 0 corrections
|
||||
baro_1_params['TC_B1_ID'] = int(np.median(sensor_baro_1['device_id']))
|
||||
|
||||
# find the min, max and reference temperature
|
||||
baro_1_params['TC_B1_TMIN'] = np.amin(sensor_baro_1['temperature'])
|
||||
baro_1_params['TC_B1_TMAX'] = np.amax(sensor_baro_1['temperature'])
|
||||
baro_1_params['TC_B1_TREF'] = 0.5 * (baro_1_params['TC_B1_TMIN'] + baro_1_params['TC_B1_TMAX'])
|
||||
temp_rel = sensor_baro_1['temperature'] - baro_1_params['TC_B1_TREF']
|
||||
temp_rel_resample = np.linspace(baro_1_params['TC_B1_TMIN']-baro_1_params['TC_B1_TREF'], baro_1_params['TC_B1_TMAX']-baro_1_params['TC_B1_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + baro_1_params['TC_B1_TREF']
|
||||
# find the min, max and reference temperature
|
||||
baro_1_params['TC_B1_TMIN'] = np.amin(sensor_baro_1['temperature'])
|
||||
baro_1_params['TC_B1_TMAX'] = np.amax(sensor_baro_1['temperature'])
|
||||
baro_1_params['TC_B1_TREF'] = 0.5 * (baro_1_params['TC_B1_TMIN'] + baro_1_params['TC_B1_TMAX'])
|
||||
temp_rel = sensor_baro_1['temperature'] - baro_1_params['TC_B1_TREF']
|
||||
temp_rel_resample = np.linspace(baro_1_params['TC_B1_TMIN']-baro_1_params['TC_B1_TREF'], baro_1_params['TC_B1_TMAX']-baro_1_params['TC_B1_TREF'], 100)
|
||||
temp_resample = temp_rel_resample + baro_1_params['TC_B1_TREF']
|
||||
|
||||
# fit data
|
||||
median_pressure = np.median(sensor_baro_1['pressure']);
|
||||
coef_baro_1_x = np.polyfit(temp_rel,100*(sensor_baro_1['pressure']-median_pressure),5) # convert from hPa to Pa
|
||||
baro_1_params['TC_B1_X5'] = coef_baro_1_x[0]
|
||||
baro_1_params['TC_B1_X4'] = coef_baro_1_x[1]
|
||||
baro_1_params['TC_B1_X3'] = coef_baro_1_x[2]
|
||||
baro_1_params['TC_B1_X2'] = coef_baro_1_x[3]
|
||||
baro_1_params['TC_B1_X1'] = coef_baro_1_x[4]
|
||||
baro_1_params['TC_B1_X0'] = coef_baro_1_x[5]
|
||||
fit_coef_baro_1_x = np.poly1d(coef_baro_1_x)
|
||||
baro_1_x_resample = fit_coef_baro_1_x(temp_rel_resample)
|
||||
# fit data
|
||||
median_pressure = np.median(sensor_baro_1['pressure']);
|
||||
coef_baro_1_x = np.polyfit(temp_rel,100*(sensor_baro_1['pressure']-median_pressure),5) # convert from hPa to Pa
|
||||
baro_1_params['TC_B1_X5'] = coef_baro_1_x[0]
|
||||
baro_1_params['TC_B1_X4'] = coef_baro_1_x[1]
|
||||
baro_1_params['TC_B1_X3'] = coef_baro_1_x[2]
|
||||
baro_1_params['TC_B1_X2'] = coef_baro_1_x[3]
|
||||
baro_1_params['TC_B1_X1'] = coef_baro_1_x[4]
|
||||
baro_1_params['TC_B1_X0'] = coef_baro_1_x[5]
|
||||
fit_coef_baro_1_x = np.poly1d(coef_baro_1_x)
|
||||
baro_1_x_resample = fit_coef_baro_1_x(temp_rel_resample)
|
||||
|
||||
# baro 1 vs temperature
|
||||
plt.figure(8,figsize=(20,13))
|
||||
# baro 1 vs temperature
|
||||
plt.figure(8,figsize=(20,13))
|
||||
|
||||
# draw plots
|
||||
plt.plot(sensor_baro_1['temperature'],100*sensor_baro_1['pressure']-100*median_pressure,'b')
|
||||
plt.plot(temp_resample,baro_1_x_resample,'r')
|
||||
plt.title('Baro 1 Bias vs Temperature')
|
||||
plt.ylabel('Z bias (Pa)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
# draw plots
|
||||
plt.plot(sensor_baro_1['temperature'],100*sensor_baro_1['pressure']-100*median_pressure,'b')
|
||||
plt.plot(temp_resample,baro_1_x_resample,'r')
|
||||
plt.title('Baro 1 Bias vs Temperature')
|
||||
plt.ylabel('Z bias (Pa)')
|
||||
plt.xlabel('temperature (degC)')
|
||||
plt.grid()
|
||||
|
||||
pp.savefig()
|
||||
pp.savefig()
|
||||
|
||||
#################################################################################
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ The generated files will be written to the `modules` directory.
|
||||
result += "%s\n" % doc
|
||||
usage_string = module.usage_string()
|
||||
if len(usage_string) > 0:
|
||||
result += "### Usage\n```\n%s\n```\n" % usage_string
|
||||
result += "### Usage {#%s_usage}\n```\n%s\n```\n" % (module.name(), usage_string)
|
||||
|
||||
self._outputs[category] = result
|
||||
|
||||
|
||||
@@ -247,12 +247,19 @@ class SourceParser(object):
|
||||
self._modules = {} # all found modules: key is the module name
|
||||
self._consistency_checks_failure = False # one or more checks failed
|
||||
|
||||
self._comment_remove_pattern = re.compile(
|
||||
r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"',
|
||||
re.DOTALL | re.MULTILINE)
|
||||
|
||||
def Parse(self, scope, contents):
|
||||
"""
|
||||
Incrementally parse program contents and append all found documentations
|
||||
to the list.
|
||||
"""
|
||||
|
||||
# remove comments from source
|
||||
contents = self._comment_remover(contents)
|
||||
|
||||
extracted_function_calls = [] # list of tuples: (FUNC_NAME, list(ARGS))
|
||||
|
||||
start_index = 0
|
||||
@@ -302,6 +309,16 @@ class SourceParser(object):
|
||||
|
||||
return True
|
||||
|
||||
def _comment_remover(self, text):
|
||||
""" remove C++ & C style comments.
|
||||
Source: https://stackoverflow.com/a/241506 """
|
||||
def replacer(match):
|
||||
s = match.group(0)
|
||||
if s.startswith('/'):
|
||||
return " " # note: a space and not an empty string
|
||||
else:
|
||||
return s
|
||||
return re.sub(self._comment_remove_pattern, replacer, text)
|
||||
|
||||
def _do_consistency_check(self, contents, scope, module_doc):
|
||||
"""
|
||||
|
||||
+42
-11
@@ -125,7 +125,7 @@ class firmware(object):
|
||||
|
||||
# pad image to 4-byte length
|
||||
while ((len(self.image) % 4) != 0):
|
||||
self.image.append('\xff')
|
||||
self.image.extend(b'\xff')
|
||||
|
||||
def property(self, propname):
|
||||
return self.desc[propname]
|
||||
@@ -488,11 +488,13 @@ class uploader(object):
|
||||
print("FORCED WRITE, FLASHING ANYWAY!")
|
||||
else:
|
||||
raise IOError(msg)
|
||||
|
||||
# Prevent uploads where the image would overflow the flash
|
||||
if self.fw_maxsize < fw.property('image_size'):
|
||||
raise RuntimeError("Firmware image is too large for this board")
|
||||
|
||||
# OTP added in v4:
|
||||
if self.bl_rev > 3:
|
||||
if self.bl_rev >= 4:
|
||||
for byte in range(0, 32*6, 4):
|
||||
x = self.__getOTP(byte)
|
||||
self.otp = self.otp + x
|
||||
@@ -518,16 +520,43 @@ class uploader(object):
|
||||
print(binascii.hexlify(x).decode('Latin-1'), end='') # show user
|
||||
print('')
|
||||
print("chip: %08x" % self.__getCHIP())
|
||||
if (self.bl_rev >= 5):
|
||||
des = self.__getCHIPDes()
|
||||
if (len(des) == 2):
|
||||
print("family: %s" % des[0])
|
||||
print("revision: %s" % des[1])
|
||||
print("flash %d" % self.fw_maxsize)
|
||||
except Exception:
|
||||
# ignore bad character encodings
|
||||
pass
|
||||
|
||||
# Silicon errata check was added in v5
|
||||
if (self.bl_rev >= 5):
|
||||
des = self.__getCHIPDes()
|
||||
if (len(des) == 2):
|
||||
print("family: %s" % des[0])
|
||||
print("revision: %s" % des[1])
|
||||
print("flash %d" % self.fw_maxsize)
|
||||
|
||||
# Prevent uploads where the maximum image size of the board config is smaller than the flash
|
||||
# of the board. This is a hint the user chose the wrong config and will lack features
|
||||
# for this particular board.
|
||||
|
||||
# This check should also check if the revision is an unaffected revision
|
||||
# and thus can support the full flash, see
|
||||
# https://github.com/PX4/Firmware/blob/master/src/drivers/boards/common/stm32/board_mcu_version.c#L125-L144
|
||||
|
||||
if self.fw_maxsize > fw.property('image_maxsize') and not force:
|
||||
raise RuntimeError("Board can accept larger flash images (%u bytes) than board config (%u bytes). Please use the correct board configuration to avoid lacking critical functionality."
|
||||
% (self.fw_maxsize, fw.property('image_maxsize')))
|
||||
else:
|
||||
# If we're still on bootloader v4 on a Pixhawk, we don't know if we
|
||||
# have the silicon errata and therefore need to flash px4fmu-v2
|
||||
# with 1MB flash or if it supports px4fmu-v3 with 2MB flash.
|
||||
if fw.property('board_id') == 9 \
|
||||
and fw.property('image_size') > 1032192 \
|
||||
and not force:
|
||||
raise RuntimeError("\nThe Board uses bootloader revision 4 and can therefore not determine\n"
|
||||
"if flashing more than 1 MB (px4fmu-v3_default) is safe, chances are\n"
|
||||
"high that it is not safe! If unsure, use px4fmu-v2_default.\n"
|
||||
"\n"
|
||||
"If you know you that the board does not have the silicon errata, use\n"
|
||||
"this script with --force, or update the bootloader.\n")
|
||||
|
||||
self.__erase("Erase ")
|
||||
self.__program("Program", fw)
|
||||
|
||||
@@ -560,7 +589,10 @@ class uploader(object):
|
||||
return False
|
||||
|
||||
print("Attempting reboot on %s with baudrate=%d..." % (self.port.port, self.port.baudrate), file=sys.stderr)
|
||||
print("If the board does not respond, unplug and re-plug the USB connector.", file=sys.stderr)
|
||||
if "ttyS" in self.port.port:
|
||||
print("If the board does not respond, check the connection to the Flight Controller")
|
||||
else:
|
||||
print("If the board does not respond, unplug and re-plug the USB connector.", file=sys.stderr)
|
||||
|
||||
try:
|
||||
# try MAVLINK command first
|
||||
@@ -591,7 +623,7 @@ def main():
|
||||
parser.add_argument('--port', action="store", required=True, help="Comma-separated list of serial port(s) to which the FMU may be attached")
|
||||
parser.add_argument('--baud-bootloader', action="store", type=int, default=115200, help="Baud rate of the serial port (default is 115200) when communicating with bootloader, only required for true serial ports.")
|
||||
parser.add_argument('--baud-flightstack', action="store", default="57600", help="Comma-separated list of baud rate of the serial port (default is 57600) when communicating with flight stack (Mavlink or NSH), only required for true serial ports.")
|
||||
parser.add_argument('--force', action='store_true', default=False, help='Override board type check and continue loading')
|
||||
parser.add_argument('--force', action='store_true', default=False, help='Override board type check, or silicon errata checks and continue loading')
|
||||
parser.add_argument('--boot-delay', type=int, default=None, help='minimum boot delay to store in flash')
|
||||
parser.add_argument('firmware', action="store", help="Firmware file to be uploaded")
|
||||
args = parser.parse_args()
|
||||
@@ -605,7 +637,6 @@ def main():
|
||||
# Load the firmware file
|
||||
fw = firmware(args.firmware)
|
||||
print("Loaded firmware for %x,%x, size: %d bytes, waiting for the bootloader..." % (fw.property('board_id'), fw.property('board_revision'), fw.property('image_size')))
|
||||
print("If the board does not respond within 1-2 seconds, unplug and re-plug the USB connector.")
|
||||
|
||||
# tell any GCS that might be connected to the autopilot to give up
|
||||
# control of the serial port
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
make px4fmu-v4_default
|
||||
cp build/px4fmu-v4_default/parameters.xml ../qgroundcontrol/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml
|
||||
cp build/px4fmu-v4_default/airframes.xml ../qgroundcontrol/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml
|
||||
make parameters_metadata
|
||||
cp parameters.xml ../qgroundcontrol/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml
|
||||
make airframe_metadata
|
||||
cp airframes.xml ../qgroundcontrol/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
#!/bin/bash
|
||||
# upload script for network-connected devices via scp (eg Raspberry Pi)
|
||||
|
||||
if [[ "$#" < 2 ]]; then
|
||||
echo "usage: scp_upload.sh SRC1 [SRC2 ...] DEST"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z ${AUTOPILOT_HOST+x} ]; then
|
||||
host=px4autopilot
|
||||
echo "\$AUTOPILOT_HOST is not set (use default: $host)"
|
||||
else
|
||||
host=$AUTOPILOT_HOST
|
||||
echo "\$AUTOPILOT_HOST is set to $host"
|
||||
fi
|
||||
|
||||
user=pi
|
||||
if [ -n "${AUTOPILOT_USER}" ]; then
|
||||
user=${AUTOPILOT_USER}
|
||||
fi
|
||||
|
||||
# Get last argument
|
||||
for last; do true; done
|
||||
|
||||
# All except last argument
|
||||
length=$(($#-1))
|
||||
src_files=${@:1:$length}
|
||||
|
||||
echo "Uploading $src_files..."
|
||||
|
||||
# Upload files
|
||||
scp -r $src_files ${user}@${host}:$last
|
||||
+1
-1
Submodule Tools/sitl_gazebo updated: b052c97f7c...90c9e5db3f
@@ -0,0 +1,2 @@
|
||||
*.json
|
||||
|
||||
Executable
+641
@@ -0,0 +1,641 @@
|
||||
#! /usr/bin/env python
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import codecs
|
||||
import re
|
||||
import colorsys
|
||||
import json
|
||||
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Generate uORB pub/sub dependency graph from source code')
|
||||
|
||||
parser.add_argument('-s', '--src-path', action='append',
|
||||
help='Source path(s) (default=src, can be specified multiple times)',
|
||||
default=[])
|
||||
parser.add_argument('-e', '--exclude-path', action='append',
|
||||
help='Excluded path(s), can be specified multiple times',
|
||||
default=[])
|
||||
parser.add_argument('-f', '--file', metavar='file', action='store',
|
||||
help='output file name prefix',
|
||||
default='graph')
|
||||
parser.add_argument('-o', '--output', metavar='output', action='store',
|
||||
help='output format (json or graphviz)',
|
||||
default='json')
|
||||
parser.add_argument('--use-topic-union', action='store_true',
|
||||
help='''
|
||||
Use the union of all publication and subscription topics (useful for complete
|
||||
graphs or only few/single module(s)). The default is to use the intersection
|
||||
(remove topics that have no subscriber or no publisher)''')
|
||||
parser.add_argument('-m', '--modules', action='store',
|
||||
help='Comma-separated whitelist of modules (the module\'s '+
|
||||
'MAIN, e.g. from a startup script)',
|
||||
default='')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
g_debug = False
|
||||
def dbg_print(string):
|
||||
if g_debug:
|
||||
print(string)
|
||||
|
||||
|
||||
def get_N_colors(N, s=0.8, v=0.9):
|
||||
""" get N distinct colors as a list of hex strings """
|
||||
HSV_tuples = [(x*1.0/N, s, v) for x in range(N)]
|
||||
hex_out = []
|
||||
for rgb in HSV_tuples:
|
||||
rgb = map(lambda x: int(x*255), colorsys.hsv_to_rgb(*rgb))
|
||||
hex_out.append("#"+"".join(map(lambda x: format(x, '02x'), rgb)))
|
||||
return hex_out
|
||||
|
||||
|
||||
class PubSub:
|
||||
""" Collects either publication or subscription information for nodes
|
||||
(modules and topics) & edges """
|
||||
|
||||
def __init__(self, is_publication, topic_blacklist, orb_pub_sub_regexes, special_cases):
|
||||
"""
|
||||
:param is_publication: if True, publications, False for
|
||||
subscriptions
|
||||
:param topic_blacklist: list of topics to blacklist
|
||||
:param orb_pub_sub_regexes: list of regexes to extract orb calls
|
||||
(e.g. orb_subscribe). They need to have 2 captures, the second
|
||||
one is the one capturing ORB_ID(<topic>
|
||||
"""
|
||||
self._module_pubsubs = {} # key = module name, value = set of topic names
|
||||
self._special_cases = special_cases
|
||||
self._special_cases_matched = None
|
||||
self._topic_blacklist = topic_blacklist
|
||||
self._orb_pub_sub_regexes = orb_pub_sub_regexes
|
||||
if is_publication:
|
||||
self._method = 'Publication'
|
||||
else:
|
||||
self._method = 'Subscription'
|
||||
|
||||
def reset(self):
|
||||
self._special_cases_matched = [False]*len(self._special_cases)
|
||||
|
||||
def filter_modules(self, module_whitelist):
|
||||
remove = [k for k in self._module_pubsubs if k not in module_whitelist]
|
||||
for k in remove: del self._module_pubsubs[k]
|
||||
|
||||
|
||||
def check_if_match_found(self, modules):
|
||||
""" check if all special cases got a match (if not, it means the source
|
||||
code got changed)
|
||||
"""
|
||||
for i, (module_match, file_match_re, src_match_re, _) in enumerate(self._special_cases):
|
||||
if module_match in modules and src_match_re is not None:
|
||||
if not self._special_cases_matched[i]:
|
||||
raise Exception('Module '+module_match+
|
||||
': no match for '+self._method+' special case'+
|
||||
src_match_re.pattern+'. The case needs to be updated')
|
||||
|
||||
|
||||
def extract(self, file_name, src_str, module, orb_id_vehicle_attitude_controls_topic):
|
||||
""" Extract subscribed/published topics from a source string
|
||||
:param src_str: string of C/C++ code with comments and whitespace removed
|
||||
"""
|
||||
|
||||
orb_pubsub_matches = []
|
||||
for regex in self._orb_pub_sub_regexes:
|
||||
orb_pubsub_matches += re.findall(regex, src_str)
|
||||
|
||||
orb_id = 'ORB_ID('
|
||||
|
||||
for _, match in orb_pubsub_matches:
|
||||
if match == 'ORB_ID_VEHICLE_ATTITUDE_CONTROLS': # special case
|
||||
match = orb_id+orb_id_vehicle_attitude_controls_topic
|
||||
|
||||
# match has the form: '[ORB_ID(]<topic_name>'
|
||||
if match.startswith(orb_id):
|
||||
topic_name = match[len(orb_id):]
|
||||
self._add_topic(topic_name, file_name, module)
|
||||
else:
|
||||
ignore_found = False
|
||||
for module_match, file_match_re, _, ignore_re in self._special_cases:
|
||||
if module == module_match:
|
||||
if file_match_re.search(file_name):
|
||||
if ignore_re.search(match):
|
||||
ignore_found = True
|
||||
if not ignore_found:
|
||||
# If we land here, we need to add another special case
|
||||
raise Exception(self._method+' w/o ORB_ID(): '+match+' in '
|
||||
+file_name+' ('+module+'). You need to add another special case.')
|
||||
|
||||
# handle special cases
|
||||
for i, (module_match, file_match_re, src_match_re, _) in enumerate(self._special_cases):
|
||||
if src_match_re is None:
|
||||
continue
|
||||
if module == module_match:
|
||||
if file_match_re.search(file_name):
|
||||
matches = src_match_re.findall(src_str)
|
||||
for match in matches:
|
||||
# match has the form: '[ORB_ID(]<topic_name>'
|
||||
if match.startswith(orb_id):
|
||||
topic_name = match[len(orb_id):]
|
||||
dbg_print('Found '+self._method+' for special case in '
|
||||
+module+': '+topic_name)
|
||||
self._add_topic(topic_name, file_name, module)
|
||||
self._special_cases_matched[i] = True
|
||||
else:
|
||||
# this is not fatal, as it could be a method delaration/definition
|
||||
dbg_print('Special case '+self._method+' w/o ORB_ID(): '
|
||||
+match+' in '+file_name+' ('+module+')')
|
||||
|
||||
def _add_topic(self, topic_name, file_name, module):
|
||||
""" add a subscription/publication for a module
|
||||
"""
|
||||
if topic_name in self._topic_blacklist:
|
||||
dbg_print('ignoring blacklisted topic '+topic_name)
|
||||
return
|
||||
|
||||
if module is None:
|
||||
if not file_name.endswith('hott/messages.cpp'): # hott has a special module structure. just ignore it
|
||||
print('Warning: found '+self._method+' without associated module: '
|
||||
+topic_name+' in '+file_name)
|
||||
return
|
||||
|
||||
if not module in self._module_pubsubs:
|
||||
self._module_pubsubs[module] = set()
|
||||
self._module_pubsubs[module].add(topic_name)
|
||||
|
||||
|
||||
def get_topics(self, modules):
|
||||
""" get the set of topics
|
||||
:param modules: list of modules to take into account
|
||||
"""
|
||||
topics = set()
|
||||
for module in modules:
|
||||
if module in self._module_pubsubs:
|
||||
topics |= self._module_pubsubs[module]
|
||||
return topics
|
||||
|
||||
@property
|
||||
def pubsubs(self):
|
||||
""" get dict of all publication/subscriptions (key=modules, value=set of
|
||||
topic names"""
|
||||
return self._module_pubsubs
|
||||
|
||||
|
||||
class Graph:
|
||||
""" Collects Node and Edge information by parsing the source tree """
|
||||
def __init__(self, module_whitelist=[], topic_blacklist=[]):
|
||||
self._current_module = [] # stack with current module (they can be nested)
|
||||
self._all_modules = set() # set of all found modules
|
||||
|
||||
self._comment_remove_pattern = re.compile(
|
||||
r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"',
|
||||
re.DOTALL | re.MULTILINE)
|
||||
self._whitespace_pattern = re.compile(r'\s+')
|
||||
self._module_whitelist = module_whitelist
|
||||
self._excluded_paths = []
|
||||
|
||||
self._orb_id_vehicle_attitude_controls_topic = 'actuator_controls_0'
|
||||
self._orb_id_vehicle_attitude_controls_re = \
|
||||
re.compile(r'\#define\s+ORB_ID_VEHICLE_ATTITUDE_CONTROLS\s+([^,)]+)')
|
||||
|
||||
self._module_subscriptions = {} # key = module name, value = set of topic names
|
||||
self._module_publications = {} # key = module name, value = set of topic names
|
||||
|
||||
self._modules = set() # all modules
|
||||
self._topics = set() # all topics
|
||||
self._topic_colors = {} # key = topic, value = color (html string)
|
||||
|
||||
# handle special cases
|
||||
# format: list of tuples with 4 entries:
|
||||
# - module name to match (module MAIN)
|
||||
# - regex for file name(s) to match within the module (matched against the full path)
|
||||
# - regex to extract the topic name: the match must be ORB_ID(<topic_name>
|
||||
# Note: whitespace is removed from source code, so it does not need to be
|
||||
# accounted for in the regex.
|
||||
# If this is None, it will just be ignored
|
||||
# - regex to ignore matches in the form orb_[subscribe|advertise](<match>
|
||||
# (the expectation is that the previous matching ORB_ID() will be passed
|
||||
# to this, so that we can ignore it)
|
||||
special_cases_sub = [
|
||||
('sensors', r'voted_sensors_update\.cpp$', r'\binit_sensor_class\b\(([^,)]+)', r'^meta$'),
|
||||
('mavlink', r'.*', r'\badd_orb_subscription\b\(([^,)]+)', r'^_topic$'),
|
||||
('sdlog2', r'.*', None, r'^topic$'),
|
||||
('logger', r'.*', None, r'^(topic|sub\.metadata|_polling_topic_meta)$'),
|
||||
|
||||
('uavcan', r'uavcan_main\.cpp$', r'\b_control_topics\[[0-9]\]=([^,)]+)', r'^_control_topics\[i\]$'),
|
||||
('tap_esc', r'.*', r'\b_control_topics\[[0-9]\]=([^,)]+)', r'^_control_topics\[i\]$'),
|
||||
('pwm_out_sim', r'.*', r'\b_control_topics\[[0-9]\]=([^,)]+)', r'^_control_topics\[i\]$'),
|
||||
('snapdragon_pwm_out', r'.*', r'\b_controls_topics\[[0-9]\]=([^,)]+)', r'^_controls_topics\[i\]$'),
|
||||
('fmu', r'.*', r'\b_control_topics\[[0-9]\]=([^,)]+)', r'^_control_topics\[i\]$'),
|
||||
('linux_pwm_out', r'.*', r'\b_controls_topics\[[0-9]\]=([^,)]+)', r'^_controls_topics\[i\]$'),
|
||||
]
|
||||
special_cases_sub = [(a, re.compile(b), re.compile(c) if c is not None else None, re.compile(d))
|
||||
for a,b,c,d in special_cases_sub]
|
||||
|
||||
self._subscriptions = PubSub(False, topic_blacklist,
|
||||
[r"\borb_subscribe(_multi|)\b\(([^,)]+)"],
|
||||
special_cases_sub)
|
||||
|
||||
|
||||
special_cases_pub = [
|
||||
('replay', r'replay_main\.cpp$', None, r'^sub\.orb_meta$'),
|
||||
('fw_pos_control_l1', r'FixedwingPositionControl\.cpp$', r'\b_attitude_setpoint_id=([^,)]+)', r'^_attitude_setpoint_id$'),
|
||||
|
||||
('mc_pos_control', r'mc_pos_control_main\.cpp$', r'\b_attitude_setpoint_id=([^,)]+)', r'^_attitude_setpoint_id$'),
|
||||
|
||||
('mc_att_control', r'mc_att_control_main\.cpp$', r'\b_rates_sp_id=([^,)]+)', r'^_rates_sp_id$'),
|
||||
('mc_att_control', r'mc_att_control_main\.cpp$', r'\b_actuators_id=([^,)]+)', r'^_actuators_id$'),
|
||||
|
||||
('fw_att_control', r'FixedwingAttitudeControl\.cpp$', r'\b_rates_sp_id=([^,)]+)', r'^_rates_sp_id$'),
|
||||
('fw_att_control', r'FixedwingAttitudeControl\.cpp$', r'\b_actuators_id=([^,)]+)', r'^_actuators_id$'),
|
||||
('fw_att_control', r'FixedwingAttitudeControl\.cpp$', r'\b_attitude_setpoint_id=([^,)]+)', r'^_attitude_setpoint_id$'),
|
||||
|
||||
('uavcan', r'sensors/.*\.cpp$', r'\bUavcanCDevSensorBridgeBase\([^{]*DEVICE_PATH,([^,)]+)', r'^_orb_topic$'),
|
||||
('batt_smbus', r'batt_smbus\.cpp$', r'\b_batt_orb_id=([^,)]+)', r'^_batt_orb_id$'),
|
||||
]
|
||||
special_cases_pub = [(a, re.compile(b), re.compile(c) if c is not None else None, re.compile(d))
|
||||
for a,b,c,d in special_cases_pub]
|
||||
self._publications = PubSub(True, topic_blacklist,
|
||||
[r"\borb_advertise(_multi|_queue|_multi_queue|)\b\(([^,)]+)",
|
||||
r"\borb_publish_auto()\b\(([^,)]+)"],
|
||||
special_cases_pub)
|
||||
|
||||
|
||||
def _get_current_module(self):
|
||||
if len(self._current_module) == 0:
|
||||
return None
|
||||
return self._current_module[-1]
|
||||
|
||||
def build(self, src_path_list, excluded_paths=[], use_topic_pubsub_union=True):
|
||||
""" parse the source tree & extract pub/sub information.
|
||||
:param use_topic_pubsub_union: if true, use all topics that have a
|
||||
publisher or subscriber. If false, use only topics with at least one
|
||||
publisher and subscriber.
|
||||
|
||||
fill in self._module_subsciptions & self._module_publications
|
||||
"""
|
||||
|
||||
self._subscriptions.reset()
|
||||
self._publications.reset()
|
||||
|
||||
self._excluded_paths = [os.path.normpath(p) for p in excluded_paths]
|
||||
for path in src_path_list:
|
||||
self._build_recursive(path)
|
||||
|
||||
# filter by whitelist
|
||||
if len(self._module_whitelist) > 0:
|
||||
self._subscriptions.filter_modules(self._module_whitelist)
|
||||
self._publications.filter_modules(self._module_whitelist)
|
||||
|
||||
# modules & topics sets
|
||||
self._modules = set(self._publications.pubsubs.keys() +
|
||||
self._subscriptions.pubsubs.keys())
|
||||
print('number of modules: '+str(len(self._modules)))
|
||||
self._topics = self._get_topics(use_topic_pubsub_union=use_topic_pubsub_union)
|
||||
print('number of topics: '+str(len(self._topics)))
|
||||
|
||||
# initialize colors
|
||||
color_list = get_N_colors(len(self._topics), 0.7, 0.85)
|
||||
self._topic_colors = {}
|
||||
for i, topic in enumerate(self._topics):
|
||||
self._topic_colors[topic] = color_list[i]
|
||||
|
||||
|
||||
# validate that all special rules got used
|
||||
self._subscriptions.check_if_match_found(self._all_modules)
|
||||
self._publications.check_if_match_found(self._all_modules)
|
||||
|
||||
|
||||
def _get_topics(self, use_topic_pubsub_union=True):
|
||||
""" get the set of topics
|
||||
"""
|
||||
subscribed_topics = self._subscriptions.get_topics(self._modules)
|
||||
published_topics = self._publications.get_topics(self._modules)
|
||||
if use_topic_pubsub_union:
|
||||
return subscribed_topics | published_topics
|
||||
return subscribed_topics & published_topics
|
||||
|
||||
def _build_recursive(self, path):
|
||||
|
||||
if os.path.normpath(path) in self._excluded_paths:
|
||||
dbg_print('ignoring excluded path '+path)
|
||||
return
|
||||
|
||||
entries = os.listdir(path)
|
||||
|
||||
# check if entering a new module
|
||||
cmake_file = 'CMakeLists.txt'
|
||||
new_module = False
|
||||
if cmake_file in entries:
|
||||
new_module = self._extract_module_name(os.path.join(path, cmake_file))
|
||||
|
||||
# iterate directories recursively
|
||||
for entry in entries:
|
||||
file_name = os.path.join(path, entry)
|
||||
if os.path.isdir(file_name):
|
||||
self._build_recursive(file_name)
|
||||
|
||||
|
||||
# iterate source files
|
||||
# Note: we could skip the entries if we're not in a module, but we don't
|
||||
# so that we get appropriate error messages to know where we miss subs
|
||||
# or pubs
|
||||
for entry in entries:
|
||||
file_name = os.path.join(path, entry)
|
||||
if os.path.isfile(file_name):
|
||||
_, ext = os.path.splitext(file_name)
|
||||
if ext in ['.cpp', '.c', '.h', '.hpp']:
|
||||
self._process_source_file(file_name)
|
||||
|
||||
|
||||
if new_module:
|
||||
self._current_module.pop()
|
||||
|
||||
|
||||
def _extract_module_name(self, file_name):
|
||||
""" extract the module name from a CMakeLists.txt file and store
|
||||
in self._current_module if there is any """
|
||||
datafile = file(file_name)
|
||||
found_module_def = False
|
||||
for line in datafile:
|
||||
if 'px4_add_module' in line: # must contain 'px4_add_module'
|
||||
found_module_def = True
|
||||
|
||||
words = line.split()
|
||||
# get the definition of MAIN
|
||||
if found_module_def and 'MAIN' in words and len(words) >= 2:
|
||||
self._current_module.append(words[1])
|
||||
self._all_modules.add(words[1])
|
||||
dbg_print('Found module name: '+words[1])
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def _process_source_file(self, file_name):
|
||||
""" extract information from a single source file """
|
||||
|
||||
with codecs.open(file_name, 'r', 'utf-8') as f:
|
||||
try:
|
||||
content = f.read()
|
||||
except:
|
||||
print('Failed reading file: %s, skipping content.' % path)
|
||||
return
|
||||
|
||||
|
||||
current_module = self._get_current_module()
|
||||
if current_module == 'uorb_tests': # skip this
|
||||
return
|
||||
if current_module == 'uorb':
|
||||
|
||||
# search and validate the ORB_ID_VEHICLE_ATTITUDE_CONTROLS define
|
||||
matches = self._orb_id_vehicle_attitude_controls_re.findall(content)
|
||||
for match in matches:
|
||||
if match != 'ORB_ID('+self._orb_id_vehicle_attitude_controls_topic:
|
||||
# if we land here, you need to change _orb_id_vehicle_attitude_controls_topic
|
||||
raise Exception(
|
||||
'The extracted define for ORB_ID_VEHICLE_ATTITUDE_CONTROLS '
|
||||
'is '+match+' but expected ORB_ID('+
|
||||
self._orb_id_vehicle_attitude_controls_topic)
|
||||
|
||||
return # skip uorb module for the rest
|
||||
|
||||
|
||||
|
||||
if content.lower().find('orb_') != -1: # approximative filter to quickly
|
||||
# discard files we're not interested in
|
||||
# (speedup the parsing)
|
||||
src = self._comment_remover(content)
|
||||
src = re.sub(self._whitespace_pattern, '', src) # remove all whitespace
|
||||
|
||||
|
||||
# subscriptions
|
||||
self._subscriptions.extract(file_name, src, current_module,
|
||||
self._orb_id_vehicle_attitude_controls_topic)
|
||||
|
||||
# publications
|
||||
self._publications.extract(file_name, src, current_module,
|
||||
self._orb_id_vehicle_attitude_controls_topic)
|
||||
|
||||
# TODO: handle Publication & Subscription template classes
|
||||
|
||||
|
||||
|
||||
def _comment_remover(self, text):
|
||||
""" remove C++ & C style comments.
|
||||
Source: https://stackoverflow.com/a/241506 """
|
||||
def replacer(match):
|
||||
s = match.group(0)
|
||||
if s.startswith('/'):
|
||||
return " " # note: a space and not an empty string
|
||||
else:
|
||||
return s
|
||||
return re.sub(self._comment_remove_pattern, replacer, text)
|
||||
|
||||
|
||||
@property
|
||||
def modules(self):
|
||||
""" get the set of all modules """
|
||||
return self._modules
|
||||
|
||||
@property
|
||||
def topics(self):
|
||||
""" get set set of all topics """
|
||||
return self._topics
|
||||
|
||||
@property
|
||||
def topic_colors(self):
|
||||
""" get a dict of all topic colors with key=topic, value=color """
|
||||
return self._topic_colors
|
||||
|
||||
@property
|
||||
def module_subscriptions(self):
|
||||
""" get a dict of all subscriptions with key=module name, value=set(topic names) """
|
||||
return self._subscriptions.pubsubs
|
||||
|
||||
@property
|
||||
def module_publications(self):
|
||||
""" get a dict of all publications with key=module name, value=set(topic names) """
|
||||
return self._publications.pubsubs
|
||||
|
||||
|
||||
|
||||
class OutputGraphviz:
|
||||
""" write graph using Graphviz """
|
||||
|
||||
def __init__(self, graph):
|
||||
self._graph = graph
|
||||
|
||||
def write(self, file_name, engine='fdp',
|
||||
show_publications=True, show_subscriptions=True):
|
||||
""" write the graph to a file
|
||||
:param engine: graphviz engine
|
||||
- fdp works for large graphs
|
||||
- neato works better for smaller graphs
|
||||
- circo works for single modules
|
||||
CLI: fdp graph.fv -Tpdf -o test.pdf
|
||||
"""
|
||||
|
||||
print('Writing to '+file_name)
|
||||
|
||||
ratio = 1 # aspect ratio
|
||||
|
||||
modules = self._graph.modules
|
||||
topics = self._graph.topics
|
||||
topic_colors = self._graph.topic_colors
|
||||
module_publications = self._graph.module_publications
|
||||
module_subscriptions = self._graph.module_subscriptions
|
||||
|
||||
graph_attr={'splines': 'true', 'ratio': str(ratio), 'overlap': 'false'}
|
||||
graph_attr['sep'] = '"+15,15"' # increase spacing between nodes
|
||||
graph = Digraph(comment='autogenerated graph with graphviz using uorb_graph.py',
|
||||
engine=engine, graph_attr=graph_attr)
|
||||
|
||||
|
||||
# nodes
|
||||
for module in modules:
|
||||
graph.node('m_'+module, module, shape='box', fontcolor='#ffffff',
|
||||
style='filled', color='#666666', fontsize='16')
|
||||
|
||||
for topic in topics:
|
||||
graph.node('t_'+topic, topic, shape='ellipse', fontcolor='#ffffff',
|
||||
style='filled', color=topic_colors[topic])
|
||||
|
||||
|
||||
# edges
|
||||
if show_publications:
|
||||
for module in modules:
|
||||
if module in module_publications:
|
||||
for topic in module_publications[module]:
|
||||
if topic in topics:
|
||||
graph.edge('m_'+module, 't_'+topic,
|
||||
color=topic_colors[topic], style='dashed')
|
||||
|
||||
if show_subscriptions:
|
||||
for module in modules:
|
||||
if module in module_subscriptions:
|
||||
for topic in module_subscriptions[module]:
|
||||
if topic in topics:
|
||||
graph.edge('t_'+topic, 'm_'+module,
|
||||
color=topic_colors[topic])
|
||||
|
||||
graph.render(file_name, view=False)
|
||||
|
||||
|
||||
class OutputJSON:
|
||||
""" write graph to a JSON file (that can be used with D3.js) """
|
||||
|
||||
def __init__(self, graph):
|
||||
self._graph = graph
|
||||
|
||||
def write(self, file_name):
|
||||
|
||||
print('Writing to '+file_name)
|
||||
|
||||
modules = self._graph.modules
|
||||
topics = self._graph.topics
|
||||
topic_colors = self._graph.topic_colors
|
||||
module_publications = self._graph.module_publications
|
||||
module_subscriptions = self._graph.module_subscriptions
|
||||
|
||||
data = {}
|
||||
nodes = []
|
||||
|
||||
# nodes
|
||||
# (sort by length, such that short names are last. The rendering order
|
||||
# will be the same, so that in case of an overlap, the shorter label
|
||||
# will be on top)
|
||||
for module in sorted(modules, key=len, reverse=True):
|
||||
node = {}
|
||||
node['id'] = 'm_'+module
|
||||
node['name'] = module
|
||||
node['type'] = 'module'
|
||||
node['color'] = '#666666'
|
||||
# TODO: add url to open module documentation?
|
||||
nodes.append(node)
|
||||
|
||||
for topic in sorted(topics, key=len, reverse=True):
|
||||
node = {}
|
||||
node['id'] = 't_'+topic
|
||||
node['name'] = topic
|
||||
node['type'] = 'topic'
|
||||
node['color'] = topic_colors[topic]
|
||||
# url is opened when double-clicking on the node
|
||||
# TODO: does not work for multi-topics
|
||||
node['url'] = 'https://github.com/PX4/Firmware/blob/master/msg/'+topic+'.msg'
|
||||
nodes.append(node)
|
||||
|
||||
data['nodes'] = nodes
|
||||
|
||||
edges = []
|
||||
|
||||
# edges
|
||||
for module in modules:
|
||||
if module in module_publications:
|
||||
for topic in module_publications[module]:
|
||||
if topic in topics:
|
||||
edge = {}
|
||||
edge['source'] = 'm_'+module
|
||||
edge['target'] = 't_'+topic
|
||||
edge['color'] = topic_colors[topic]
|
||||
edge['style'] = 'dashed'
|
||||
edges.append(edge)
|
||||
|
||||
for module in modules:
|
||||
if module in module_subscriptions:
|
||||
for topic in module_subscriptions[module]:
|
||||
if topic in topics:
|
||||
edge = {}
|
||||
edge['source'] = 't_'+topic
|
||||
edge['target'] = 'm_'+module
|
||||
edge['color'] = topic_colors[topic]
|
||||
edge['style'] = 'normal'
|
||||
edges.append(edge)
|
||||
|
||||
data['links'] = edges
|
||||
|
||||
with open(file_name, 'w') as outfile:
|
||||
json.dump(data, outfile) # add indent=2 for readable formatting
|
||||
|
||||
|
||||
|
||||
# ignore topics that are subscribed/published by many topics, but are not really
|
||||
# useful to show in the graph
|
||||
topic_blacklist = [ 'parameter_update', 'mavlink_log', 'log_message' ]
|
||||
print('Excluded topics: '+str(topic_blacklist))
|
||||
|
||||
if len(args.modules) == 0:
|
||||
module_whitelist = []
|
||||
else:
|
||||
module_whitelist = [ m.strip() for m in args.modules.split(',')]
|
||||
|
||||
graph = Graph(module_whitelist=module_whitelist, topic_blacklist=topic_blacklist)
|
||||
if len(args.src_path) == 0:
|
||||
args.src_path = ['src']
|
||||
graph.build(args.src_path, args.exclude_path, use_topic_pubsub_union=args.use_topic_union)
|
||||
|
||||
|
||||
if args.output == 'json':
|
||||
output_json = OutputJSON(graph)
|
||||
output_json.write(args.file+'.json')
|
||||
|
||||
elif args.output == 'graphviz':
|
||||
try:
|
||||
from graphviz import Digraph
|
||||
except:
|
||||
print("Failed to import graphviz.")
|
||||
print("You may need to install it with 'pip install graphviz'")
|
||||
print("")
|
||||
raise
|
||||
output_graphviz = OutputGraphviz(graph)
|
||||
engine='fdp' # use neato or fdp
|
||||
output_graphviz.write(args.file+'.fv', engine=engine)
|
||||
output_graphviz.write(args.file+'_subs.fv', show_publications=False, engine=engine)
|
||||
output_graphviz.write(args.file+'_pubs.fv', show_subscriptions=False, engine=engine)
|
||||
else:
|
||||
print('Error: unknown output format '+args.output)
|
||||
|
||||
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
#! /bin/bash
|
||||
# create the graph from a posix (e.g. SITL) startup script
|
||||
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
startup_file="$SCRIPT_DIR"/../../posix-configs/SITL/init/ekf2/typhoon_h480
|
||||
[ -n "$1" ] && startup_file=$1
|
||||
# get the modules as comma-separated list
|
||||
modules=$(cat "$startup_file"|cut -f1 -d' '|sort|uniq|tr '\n' ,)
|
||||
|
||||
cd "$SCRIPT_DIR/../.."
|
||||
"$SCRIPT_DIR"/create.py --src-path src -m "$modules" -f "$SCRIPT_DIR/graph_runtime_sitl"
|
||||
|
||||
Vendored
-131
@@ -1,131 +0,0 @@
|
||||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
# All Vagrant configuration is done below. The "2" in Vagrant.configure
|
||||
# configures the configuration version (we support older styles for
|
||||
# backwards compatibility). Please don't change it unless you know what
|
||||
# you're doing.
|
||||
Vagrant.configure(2) do |config|
|
||||
|
||||
# Every Vagrant development environment requires a box. You can search for
|
||||
# boxes at https://atlas.hashicorp.com/search.
|
||||
config.vm.box = "ubuntu/trusty64"
|
||||
|
||||
# Disable automatic box update checking. If you disable this, then
|
||||
# boxes will only be checked for updates when the user runs
|
||||
# `vagrant box outdated`. This is not recommended.
|
||||
# config.vm.box_check_update = false
|
||||
|
||||
# Create a forwarded port mapping which allows access to a specific port
|
||||
# within the machine from a port on the host machine. In the example below,
|
||||
# accessing "localhost:8080" will access port 80 on the guest machine.
|
||||
# MAVLink telemetry via UDP in SITL mode
|
||||
config.vm.network "forwarded_port", guest: 14556, host: 14556, protocol: "udp"
|
||||
# SITL simulation data
|
||||
config.vm.network "forwarded_port", guest: 14560, host: 14560, protocol: "udp"
|
||||
|
||||
# Create a private network, which allows host-only access to the machine
|
||||
# using a specific IP.
|
||||
config.vm.network "private_network", ip: "192.168.33.10"
|
||||
|
||||
# Create a public network, which generally matched to bridged network.
|
||||
# Bridged networks make the machine appear as another physical device on
|
||||
# your network.
|
||||
# config.vm.network "public_network"
|
||||
|
||||
# Share an additional folder to the guest VM. The first argument is
|
||||
# the path on the host to the actual folder. The second argument is
|
||||
# the path on the guest to mount the folder. And the optional third
|
||||
# argument is a set of non-required options.
|
||||
# NFS should be faster: https://stefanwrobel.com/how-to-make-vagrant-performance-not-suck
|
||||
config.vm.synced_folder ".", "/Firmware", type: "nfs"
|
||||
|
||||
# Provider-specific configuration so you can fine-tune various
|
||||
# backing providers for Vagrant. These expose provider-specific options.
|
||||
# Example for VirtualBox:
|
||||
#
|
||||
|
||||
# This is to configure the machine to be as fast as possible
|
||||
# Alternative: https://github.com/rdsubhas/vagrant-faster
|
||||
config.vm.provider "virtualbox" do |vb|
|
||||
# Display the VirtualBox GUI when booting the machine
|
||||
vb.gui = false
|
||||
vb.customize ["modifyvm", :id, "--ioapic", "on"]
|
||||
#vb.customize ["modifyvm", :id, "--cpus", "2"]
|
||||
|
||||
config.vm.provider "virtualbox" do |v|
|
||||
host = RbConfig::CONFIG['host_os']
|
||||
|
||||
# Give VM 1/4 system memory & access to all cpu cores on the host
|
||||
if host =~ /darwin/
|
||||
cpus = `sysctl -n hw.ncpu`.to_i
|
||||
# sysctl returns Bytes and we need to convert to MB
|
||||
mem = `sysctl -n hw.memsize`.to_i / 1024 / 1024 / 4
|
||||
elsif host =~ /linux/
|
||||
cpus = `nproc`.to_i
|
||||
# meminfo shows KB and we need to convert to MB
|
||||
mem = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 4
|
||||
else # sorry Windows folks, I can't help you
|
||||
cpus = 2
|
||||
mem = 1024
|
||||
end
|
||||
|
||||
v.customize ["modifyvm", :id, "--memory", mem]
|
||||
v.customize ["modifyvm", :id, "--cpus", cpus]
|
||||
end
|
||||
|
||||
# Since make and other tools freak out if they see timestamps
|
||||
# from the future and we share directories, tightly lock the host and guest clocks together (clock sync if more than 2 seconds off)
|
||||
vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 2000]
|
||||
# Do this on start and restore
|
||||
vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-start"]
|
||||
vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore", "1"]
|
||||
|
||||
# Customize the amount of memory on the VM:
|
||||
#vb.memory = "2048"
|
||||
end
|
||||
#
|
||||
# View the documentation for the provider you are using for more
|
||||
# information on available options.
|
||||
|
||||
# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
|
||||
# such as FTP and Heroku are also available. See the documentation at
|
||||
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
|
||||
# config.push.define "atlas" do |push|
|
||||
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
|
||||
# end
|
||||
|
||||
# Enable provisioning with a shell script. Additional provisioners such as
|
||||
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
|
||||
# documentation for more information about their specific syntax and use.
|
||||
config.vm.provision "shell", privileged: false, inline: <<-SHELL
|
||||
# Ensure we start in the Firmware folder
|
||||
echo "cd /Firmware" >> ~/.bashrc
|
||||
# Install software
|
||||
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded -y
|
||||
sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y build-essential ccache cmake clang-3.5 lldb-3.5 g++-4.8 gcc-4.8 genromfs libc6-i386 libncurses5-dev python-argparse python-empy python-serial s3cmd texinfo zlib1g-dev git-core zip gdb gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
|
||||
pushd .
|
||||
cd ~
|
||||
wget -q https://launchpadlibrarian.net/186124160/gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2
|
||||
tar -jxf gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2
|
||||
exportline="export PATH=$HOME/gcc-arm-none-eabi-4_8-2014q3/bin:\$PATH"
|
||||
if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
|
||||
exportline2="export HEXAGON_TOOLS_ROOT=$HOME/Qualcomm/HEXAGON_Tools/7.2.10/Tools"
|
||||
if grep -Fxq "$exportline2" ~/.profile; then echo nothing to do ; else echo $exportline2 >> ~/.profile; fi
|
||||
. ~/.profile
|
||||
popd
|
||||
# setup ccache
|
||||
mkdir -p ~/bin
|
||||
ln -s /usr/bin/ccache ~/bin/arm-none-eabi-g++
|
||||
ln -s /usr/bin/ccache ~/bin/arm-none-eabi-gcc
|
||||
ln -s /usr/bin/ccache ~/bin/g++-4.8
|
||||
ln -s /usr/bin/ccache ~/bin/gcc-4.8
|
||||
export PATH=~/bin:$PATH
|
||||
|
||||
# Configure hardware related bits
|
||||
sudo apt-get -y remove modemmanager
|
||||
sudo usermod -a -G dialout $USER
|
||||
SHELL
|
||||
end
|
||||
+4
-1
@@ -27,4 +27,7 @@ dependencies:
|
||||
|
||||
test:
|
||||
override:
|
||||
- NO_NINJA_BUILD=1 make -j2 quick_check
|
||||
#- NO_NINJA_BUILD=1 make -j2 quick_check
|
||||
- make posix_sitl_default
|
||||
- make px4fmu-v4pro_default
|
||||
- make tests
|
||||
|
||||
@@ -332,6 +332,8 @@ function(px4_add_common_flags)
|
||||
-Wunknown-pragmas
|
||||
-Wunused-variable
|
||||
|
||||
-Wno-implicit-fallthrough # set appropriate level and update
|
||||
|
||||
-Wno-unused-parameter
|
||||
)
|
||||
|
||||
|
||||
@@ -1,182 +0,0 @@
|
||||
############################################################################
|
||||
#
|
||||
# Copyright (c) 2017 PX4 Development Team. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# 3. Neither the name PX4 nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
#=============================================================================
|
||||
#
|
||||
# Defined functions in this file
|
||||
#
|
||||
# utility functions
|
||||
#
|
||||
# * px4_add_upload
|
||||
# * px4_add_adb_push
|
||||
# * px4_add_adb_push_to_bebop
|
||||
# * px4_add_scp_push
|
||||
# * px4_add_upload_aero
|
||||
#
|
||||
|
||||
|
||||
#=============================================================================
|
||||
#
|
||||
# px4_add_upload
|
||||
#
|
||||
# This function generates source code from ROS msg definitions.
|
||||
#
|
||||
# Usage:
|
||||
# px4_add_upload(OUT <target> BUNDLE <file.px4>)
|
||||
#
|
||||
# Input:
|
||||
# BUNDLE : the firmware.px4 file
|
||||
# OS : the operating system
|
||||
# BOARD : the board
|
||||
#
|
||||
# Output:
|
||||
# OUT : the firmware target
|
||||
#
|
||||
# Example:
|
||||
# px4_add_upload(OUT upload
|
||||
# BUNDLE main.px4
|
||||
# )
|
||||
#
|
||||
function(px4_add_upload)
|
||||
px4_parse_function_args(
|
||||
NAME px4_add_upload
|
||||
ONE_VALUE OS BOARD OUT BUNDLE
|
||||
REQUIRED OS BOARD OUT BUNDLE
|
||||
ARGN ${ARGN})
|
||||
set(serial_ports)
|
||||
if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux")
|
||||
list(APPEND serial_ports
|
||||
/dev/serial/by-id/*_PX4_*
|
||||
/dev/serial/by-id/usb-3D_Robotics*
|
||||
/dev/serial/by-id/usb-The_Autopilot*
|
||||
/dev/serial/by-id/usb-Bitcraze*
|
||||
/dev/serial/by-id/pci-3D_Robotics*
|
||||
/dev/serial/by-id/pci-Bitcraze*
|
||||
/dev/serial/by-id/usb-Gumstix*
|
||||
)
|
||||
elseif(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
list(APPEND serial_ports
|
||||
/dev/tty.usbmodemPX*,/dev/tty.usbmodem*
|
||||
)
|
||||
elseif(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
|
||||
foreach(port RANGE 32 0)
|
||||
list(APPEND serial_ports
|
||||
"COM${port}")
|
||||
endforeach()
|
||||
endif()
|
||||
px4_join(OUT serial_ports LIST "${serial_ports}" GLUE ",")
|
||||
add_custom_target(${OUT}
|
||||
COMMAND ${PYTHON_EXECUTABLE}
|
||||
${PX4_SOURCE_DIR}/Tools/px_uploader.py --port ${serial_ports} ${BUNDLE}
|
||||
DEPENDS ${BUNDLE}
|
||||
WORKING_DIRECTORY ${PX4_BINARY_DIR}
|
||||
COMMENT "uploading ${BUNDLE}"
|
||||
VERBATIM
|
||||
USES_TERMINAL
|
||||
)
|
||||
endfunction()
|
||||
|
||||
|
||||
function(px4_add_adb_push)
|
||||
px4_parse_function_args(
|
||||
NAME px4_add_upload
|
||||
ONE_VALUE OS BOARD OUT DEST
|
||||
MULTI_VALUE FILES DEPENDS
|
||||
REQUIRED OS BOARD OUT FILES DEPENDS DEST
|
||||
ARGN ${ARGN})
|
||||
|
||||
add_custom_target(${OUT}
|
||||
COMMAND ${PX4_SOURCE_DIR}/Tools/adb_upload.sh ${FILES} ${DEST}
|
||||
DEPENDS ${DEPENDS}
|
||||
WORKING_DIRECTORY ${PX4_BINARY_DIR}
|
||||
COMMENT "uploading ${BUNDLE}"
|
||||
VERBATIM
|
||||
USES_TERMINAL
|
||||
)
|
||||
endfunction()
|
||||
|
||||
|
||||
function(px4_add_adb_push_to_bebop)
|
||||
px4_parse_function_args(
|
||||
NAME px4_add_upload_to_bebop
|
||||
ONE_VALUE OS BOARD OUT DEST
|
||||
MULTI_VALUE FILES DEPENDS
|
||||
REQUIRED OS BOARD OUT FILES DEPENDS DEST
|
||||
ARGN ${ARGN})
|
||||
|
||||
add_custom_target(${OUT}
|
||||
COMMAND ${PX4_SOURCE_DIR}/Tools/adb_upload_to_bebop.sh ${FILES} ${DEST}
|
||||
DEPENDS ${DEPENDS}
|
||||
WORKING_DIRECTORY ${PX4_BINARY_DIR}
|
||||
COMMENT "uploading ${BUNDLE}"
|
||||
VERBATIM
|
||||
USES_TERMINAL
|
||||
)
|
||||
endfunction()
|
||||
|
||||
|
||||
function(px4_add_scp_push)
|
||||
px4_parse_function_args(
|
||||
NAME px4_add_upload
|
||||
ONE_VALUE OS BOARD OUT DEST
|
||||
MULTI_VALUE FILES DEPENDS
|
||||
REQUIRED OS BOARD OUT FILES DEPENDS DEST
|
||||
ARGN ${ARGN})
|
||||
|
||||
add_custom_target(${OUT}
|
||||
COMMAND ${PX4_SOURCE_DIR}/Tools/scp_upload.sh ${FILES} ${DEST}
|
||||
DEPENDS ${DEPENDS}
|
||||
WORKING_DIRECTORY ${PX4_BINARY_DIR}
|
||||
COMMENT "uploading ${BUNDLE}"
|
||||
VERBATIM
|
||||
USES_TERMINAL
|
||||
)
|
||||
endfunction()
|
||||
|
||||
|
||||
function(px4_add_upload_aero)
|
||||
px4_parse_function_args(
|
||||
NAME px4_add_upload_aero
|
||||
ONE_VALUE OS BOARD OUT BUNDLE
|
||||
REQUIRED OS BOARD OUT BUNDLE
|
||||
ARGN ${ARGN})
|
||||
|
||||
add_custom_target(${OUT}
|
||||
COMMAND ${PX4_SOURCE_DIR}/Tools/aero_upload.sh ${BUNDLE}
|
||||
DEPENDS ${BUNDLE}
|
||||
WORKING_DIRECTORY ${PX4_BINARY_DIR}
|
||||
COMMENT "uploading ${BUNDLE}"
|
||||
VERBATIM
|
||||
USES_TERMINAL
|
||||
)
|
||||
endfunction()
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
|
||||
|
||||
@@ -8,6 +7,12 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/distance_sensor
|
||||
#drivers/magnetometer
|
||||
drivers/telemetry
|
||||
|
||||
drivers/device
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
@@ -15,22 +20,14 @@ set(config_module_list
|
||||
drivers/led
|
||||
drivers/px4fmu
|
||||
drivers/boards
|
||||
drivers/lsm303d
|
||||
drivers/l3gd20
|
||||
drivers/ms5611
|
||||
drivers/teraranger
|
||||
drivers/imu/lsm303d
|
||||
drivers/imu/l3gd20
|
||||
drivers/gps
|
||||
drivers/pwm_out_sim
|
||||
drivers/airspeed
|
||||
drivers/ets_airspeed
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/sdp3x_airspeed
|
||||
#drivers/frsky_telemetry
|
||||
modules/sensors
|
||||
#drivers/pwm_input
|
||||
#drivers/camera_trigger
|
||||
drivers/bst
|
||||
|
||||
#
|
||||
# System commands
|
||||
@@ -55,7 +52,7 @@ set(config_module_list
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
#drivers/sf0x/sf0x_tests
|
||||
#drivers/distance_sensor/sf0x/sf0x_tests
|
||||
#drivers/test_ppm
|
||||
#lib/rc/rc_tests
|
||||
#modules/commander/commander_tests
|
||||
@@ -117,21 +114,13 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/rc
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
@@ -151,10 +140,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
|
||||
|
||||
@@ -8,19 +7,19 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/device
|
||||
drivers/stm32
|
||||
drivers/led
|
||||
drivers/px4fmu
|
||||
drivers/boards
|
||||
drivers/tap_esc
|
||||
drivers/mpu9250
|
||||
drivers/ms5611
|
||||
drivers/hmc5883
|
||||
drivers/gps
|
||||
drivers/ist8310
|
||||
drivers/ll40ls
|
||||
drivers/aerofc_adc
|
||||
drivers/boards
|
||||
drivers/device
|
||||
drivers/distance_sensor
|
||||
drivers/gps
|
||||
drivers/led
|
||||
drivers/barometer/ms5611
|
||||
drivers/magnetometer/hmc5883
|
||||
drivers/magnetometer/ist8310
|
||||
drivers/imu/mpu9250
|
||||
drivers/px4fmu
|
||||
drivers/stm32
|
||||
drivers/tap_esc
|
||||
modules/sensors
|
||||
|
||||
#
|
||||
@@ -52,6 +51,7 @@ set(config_module_list
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
modules/local_position_estimator
|
||||
modules/landing_target_estimator
|
||||
modules/ekf2
|
||||
|
||||
#
|
||||
@@ -59,6 +59,7 @@ set(config_module_list
|
||||
#
|
||||
modules/mc_att_control
|
||||
modules/mc_pos_control
|
||||
modules/vtol_att_control # FIXME: only required for params needed by Navigator
|
||||
|
||||
#
|
||||
# Logging
|
||||
@@ -83,12 +84,7 @@ set(config_module_list
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/rc
|
||||
lib/tailsitter_recovery
|
||||
lib/version
|
||||
platforms/common
|
||||
platforms/nuttx
|
||||
platforms/nuttx/px4_layer
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)
|
||||
|
||||
@@ -8,47 +7,35 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/distance_sensor
|
||||
drivers/magnetometer
|
||||
drivers/telemetry
|
||||
|
||||
drivers/airspeed
|
||||
drivers/batt_smbus
|
||||
drivers/blinkm
|
||||
drivers/boards
|
||||
drivers/camera_trigger
|
||||
drivers/device
|
||||
drivers/gps
|
||||
drivers/led
|
||||
drivers/mkblctrl
|
||||
drivers/imu/mpu6000
|
||||
drivers/imu/mpu9250
|
||||
drivers/oreoled
|
||||
drivers/pwm_input
|
||||
drivers/pwm_out_sim
|
||||
drivers/px4flow
|
||||
drivers/px4fmu
|
||||
drivers/px4io
|
||||
drivers/rgbled
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/led
|
||||
drivers/px4fmu
|
||||
drivers/px4io
|
||||
drivers/boards
|
||||
drivers/rgbled
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/hmc5883
|
||||
drivers/ms5611
|
||||
drivers/mb12xx
|
||||
drivers/srf02
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
drivers/ll40ls
|
||||
drivers/teraranger
|
||||
drivers/gps
|
||||
drivers/pwm_out_sim
|
||||
drivers/hott
|
||||
drivers/hott/hott_telemetry
|
||||
drivers/hott/hott_sensors
|
||||
drivers/blinkm
|
||||
drivers/airspeed
|
||||
drivers/ets_airspeed
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/sdp3x_airspeed
|
||||
drivers/frsky_telemetry
|
||||
modules/sensors
|
||||
drivers/mkblctrl
|
||||
drivers/px4flow
|
||||
drivers/oreoled
|
||||
drivers/vmount
|
||||
drivers/pwm_input
|
||||
drivers/camera_trigger
|
||||
drivers/bst
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/lis3mdl
|
||||
modules/sensors
|
||||
|
||||
#
|
||||
# System commands
|
||||
@@ -70,12 +57,13 @@ set(config_module_list
|
||||
systemcmds/sd_bench
|
||||
systemcmds/top
|
||||
systemcmds/topic_listener
|
||||
systemcmds/tune_control
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/distance_sensor/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
#lib/rc/rc_tests
|
||||
modules/commander/commander_tests
|
||||
@@ -102,6 +90,7 @@ set(config_module_list
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/landing_target_estimator
|
||||
modules/ekf2
|
||||
|
||||
#
|
||||
@@ -138,20 +127,12 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
@@ -171,10 +152,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
|
||||
|
||||
@@ -11,8 +10,8 @@ set(config_module_list
|
||||
drivers/led
|
||||
drivers/px4fmu
|
||||
drivers/boards
|
||||
drivers/mpu9250
|
||||
drivers/lps25h
|
||||
drivers/imu/mpu9250
|
||||
drivers/barometer/lps25h
|
||||
drivers/gps
|
||||
modules/sensors
|
||||
|
||||
@@ -51,6 +50,7 @@ set(config_module_list
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/landing_target_estimator
|
||||
modules/ekf2
|
||||
|
||||
#
|
||||
@@ -61,7 +61,7 @@ set(config_module_list
|
||||
# modules/fw_att_control
|
||||
modules/mc_att_control
|
||||
modules/mc_pos_control
|
||||
# modules/vtol_att_control
|
||||
modules/vtol_att_control # FIXME: only required for params needed by Navigator
|
||||
|
||||
#
|
||||
# Logging
|
||||
@@ -85,20 +85,11 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/rc
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/version
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
@@ -118,10 +109,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
add_definitions(
|
||||
-DFLASH_BASED_PARAMS
|
||||
@@ -28,7 +27,7 @@ add_definitions(
|
||||
)
|
||||
|
||||
px4_nuttx_make_uavcan_bootloadable(BOARD ${BOARD}
|
||||
BIN ${CMAKE_CURRENT_BINARY_DIR}/src/firmware/nuttx/esc35-v1.bin
|
||||
BIN ${PX4_BINARY_DIR}/platforms/nuttx/esc35-v1.bin
|
||||
HWNAME ${uavcanblid_name}
|
||||
HW_MAJOR ${uavcanblid_hw_version_major}
|
||||
HW_MINOR ${uavcanblid_hw_version_minor}
|
||||
@@ -72,7 +71,4 @@ set(config_module_list
|
||||
modules/systemlib
|
||||
modules/systemlib/param
|
||||
modules/uORB
|
||||
platforms/common
|
||||
platforms/nuttx
|
||||
platforms/nuttx/px4_layer
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
|
||||
|
||||
@@ -8,50 +7,38 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/distance_sensor
|
||||
drivers/magnetometer
|
||||
drivers/telemetry
|
||||
|
||||
drivers/airspeed
|
||||
drivers/batt_smbus
|
||||
drivers/blinkm
|
||||
drivers/boards
|
||||
drivers/camera_trigger
|
||||
drivers/device
|
||||
drivers/gps
|
||||
#drivers/hott
|
||||
drivers/imu/l3gd20
|
||||
drivers/led
|
||||
drivers/imu/lsm303d
|
||||
#drivers/mkblctrl
|
||||
drivers/imu/mpu6000
|
||||
drivers/imu/mpu9250
|
||||
#drivers/oreoled
|
||||
drivers/pwm_input
|
||||
drivers/pwm_out_sim
|
||||
drivers/px4flow
|
||||
drivers/px4fmu
|
||||
drivers/rgbled
|
||||
#drivers/rgbled_pwm
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/led
|
||||
drivers/px4fmu
|
||||
drivers/boards
|
||||
drivers/rgbled
|
||||
#drivers/rgbled_pwm
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/lsm303d
|
||||
drivers/l3gd20
|
||||
drivers/hmc5883
|
||||
drivers/ms5611
|
||||
drivers/mb12xx
|
||||
drivers/srf02
|
||||
drivers/srf02_i2c
|
||||
#drivers/hc_sr04
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
drivers/ll40ls
|
||||
drivers/teraranger
|
||||
drivers/gps
|
||||
drivers/pwm_out_sim
|
||||
#drivers/hott
|
||||
#drivers/hott/hott_telemetry
|
||||
#drivers/hott/hott_sensors
|
||||
drivers/blinkm
|
||||
drivers/airspeed
|
||||
drivers/ets_airspeed
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/sdp3x_airspeed
|
||||
drivers/frsky_telemetry
|
||||
modules/sensors
|
||||
#drivers/mkblctrl
|
||||
drivers/px4flow
|
||||
#drivers/oreoled
|
||||
drivers/vmount
|
||||
drivers/pwm_input
|
||||
drivers/camera_trigger
|
||||
drivers/bst
|
||||
drivers/snapdragon_rc_pwm
|
||||
modules/sensors
|
||||
|
||||
#
|
||||
# System commands
|
||||
@@ -66,6 +53,7 @@ set(config_module_list
|
||||
systemcmds/hardfault_log
|
||||
systemcmds/reboot
|
||||
systemcmds/topic_listener
|
||||
systemcmds/tune_control
|
||||
systemcmds/top
|
||||
systemcmds/config
|
||||
systemcmds/nshterm
|
||||
@@ -78,7 +66,7 @@ set(config_module_list
|
||||
#
|
||||
# Tests
|
||||
#
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/distance_sensor/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
modules/commander/commander_tests
|
||||
modules/mc_pos_control/mc_pos_control_tests
|
||||
@@ -106,6 +94,7 @@ set(config_module_list
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/landing_target_estimator
|
||||
modules/ekf2
|
||||
|
||||
#
|
||||
@@ -142,21 +131,13 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/rc
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
@@ -176,10 +157,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
@@ -190,4 +167,4 @@ set(config_module_list
|
||||
|
||||
# Hardware test
|
||||
#examples/hwtest
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
|
||||
|
||||
@@ -8,41 +7,30 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/distance_sensor
|
||||
drivers/magnetometer
|
||||
drivers/telemetry
|
||||
|
||||
drivers/airspeed
|
||||
drivers/barometer/mpl3115a2
|
||||
drivers/batt_smbus
|
||||
drivers/blinkm
|
||||
#NOT Supported drivers/bma180
|
||||
#NOT Supported drivers/bmi160
|
||||
drivers/bmp280
|
||||
drivers/boards
|
||||
drivers/bst
|
||||
drivers/camera_trigger
|
||||
drivers/device
|
||||
drivers/ets_airspeed
|
||||
drivers/frsky_telemetry
|
||||
drivers/fxos8701cq
|
||||
drivers/fxas21002c
|
||||
drivers/imu/fxas21002c
|
||||
drivers/imu/fxos8701cq
|
||||
drivers/gps
|
||||
drivers/hmc5883
|
||||
drivers/hott
|
||||
drivers/hott/hott_sensors
|
||||
drivers/hott/hott_telemetry
|
||||
drivers/iridiumsbd
|
||||
drivers/kinetis
|
||||
drivers/kinetis/adc
|
||||
drivers/kinetis/tone_alarm
|
||||
drivers/l3gd20
|
||||
drivers/imu/l3gd20
|
||||
drivers/led
|
||||
drivers/lis3mdl
|
||||
drivers/ll40ls
|
||||
drivers/lsm303d
|
||||
drivers/mb12xx
|
||||
drivers/mkblctrl
|
||||
drivers/mpl3115a2
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/ms5611
|
||||
drivers/imu/mpu6000
|
||||
drivers/imu/mpu9250
|
||||
drivers/oreoled
|
||||
# NOT Portable YET drivers/pwm_input
|
||||
drivers/pwm_out_sim
|
||||
@@ -50,13 +38,7 @@ set(config_module_list
|
||||
drivers/px4fmu
|
||||
drivers/rgbled
|
||||
drivers/rgbled_pwm
|
||||
drivers/sdp3x_airspeed
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/srf02
|
||||
drivers/tap_esc
|
||||
drivers/teraranger
|
||||
drivers/vmount
|
||||
modules/sensors
|
||||
|
||||
@@ -80,13 +62,14 @@ set(config_module_list
|
||||
systemcmds/sd_bench
|
||||
systemcmds/top
|
||||
systemcmds/topic_listener
|
||||
systemcmds/tune_control
|
||||
systemcmds/usb_connected
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/distance_sensor/sf0x/sf0x_tests
|
||||
### NOT Portable YET drivers/test_ppm
|
||||
#lib/rc/rc_tests
|
||||
modules/commander/commander_tests
|
||||
@@ -115,6 +98,7 @@ set(config_module_list
|
||||
modules/attitude_estimator_q
|
||||
modules/ekf2
|
||||
modules/local_position_estimator
|
||||
modules/landing_target_estimator
|
||||
modules/position_estimator_inav
|
||||
|
||||
#
|
||||
@@ -150,25 +134,15 @@ set(config_module_list
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/conversion
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/rc
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
lib/DriverFramework/framework
|
||||
|
||||
#
|
||||
# Platform
|
||||
#
|
||||
platforms/common
|
||||
platforms/nuttx
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
#
|
||||
@@ -192,10 +166,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
examples/px4_mavlink_debug
|
||||
@@ -206,4 +176,4 @@ set(config_module_list
|
||||
|
||||
# Hardware test
|
||||
examples/hwtest
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m7 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
|
||||
|
||||
@@ -8,6 +7,12 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/distance_sensor
|
||||
drivers/magnetometer
|
||||
drivers/telemetry
|
||||
|
||||
drivers/device
|
||||
drivers/samv7
|
||||
#WIP drivers/samv7/adc
|
||||
@@ -16,28 +21,14 @@ set(config_module_list
|
||||
drivers/px4fmu
|
||||
drivers/boards
|
||||
drivers/rgbled
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/lsm303d
|
||||
drivers/l3gd20
|
||||
drivers/hmc5883
|
||||
drivers/ms5611
|
||||
drivers/mb12xx
|
||||
drivers/srf02
|
||||
drivers/sf0x
|
||||
drivers/ll40ls
|
||||
drivers/teraranger
|
||||
drivers/imu/mpu6000
|
||||
drivers/imu/mpu9250
|
||||
drivers/imu/lsm303d
|
||||
drivers/imu/l3gd20
|
||||
drivers/gps
|
||||
#WIP drivers/pwm_out_sim
|
||||
drivers/hott
|
||||
drivers/hott/hott_telemetry
|
||||
drivers/hott/hott_sensors
|
||||
drivers/blinkm
|
||||
drivers/airspeed
|
||||
drivers/ets_airspeed
|
||||
drivers/frsky_telemetry
|
||||
modules/sensors
|
||||
#drivers/mkblctrl
|
||||
drivers/px4flow
|
||||
@@ -45,9 +36,6 @@ set(config_module_list
|
||||
## drivers/gimbal
|
||||
#WIP drivers/pwm_input
|
||||
#WIP drivers/camera_trigger
|
||||
drivers/bst
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/lis3mdl
|
||||
|
||||
#
|
||||
# System commands
|
||||
@@ -84,6 +72,7 @@ set(config_module_list
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/landing_target_estimator
|
||||
modules/ekf2
|
||||
|
||||
#
|
||||
@@ -119,21 +108,12 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/rc
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/version
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
@@ -153,10 +133,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
@@ -167,4 +143,4 @@ set(config_module_list
|
||||
|
||||
# Hardware test
|
||||
#examples/hwtest
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
|
||||
|
||||
@@ -41,14 +40,8 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/version
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# Demo apps
|
||||
@@ -58,10 +51,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
@@ -72,4 +61,4 @@ set(config_module_list
|
||||
|
||||
# Hardware test
|
||||
#examples/hwtest
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
add_definitions(
|
||||
-DPARAM_NO_ORB
|
||||
@@ -26,7 +25,7 @@ add_definitions(
|
||||
)
|
||||
|
||||
px4_nuttx_make_uavcan_bootloadable(BOARD ${BOARD}
|
||||
BIN ${PX4_BINARY_DIR}/src/firmware/nuttx/px4cannode-v1.bin
|
||||
BIN ${PX4_BINARY_DIR}/platforms/nuttx/px4cannode-v1.bin
|
||||
HWNAME ${uavcanblid_name}
|
||||
HW_MAJOR ${uavcanblid_hw_version_major}
|
||||
HW_MINOR ${uavcanblid_hw_version_minor}
|
||||
@@ -64,7 +63,5 @@ set(config_module_list
|
||||
modules/systemlib
|
||||
modules/systemlib/param
|
||||
modules/uORB
|
||||
platforms/common
|
||||
platforms/nuttx
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
)
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
add_definitions(
|
||||
-DFLASH_BASED_PARAMS
|
||||
@@ -28,7 +27,7 @@ add_definitions(
|
||||
)
|
||||
|
||||
px4_nuttx_make_uavcan_bootloadable(BOARD ${BOARD}
|
||||
BIN ${PX4_BINARY_DIR}/src/firmware/nuttx/px4esc-v1.bin
|
||||
BIN ${PX4_BINARY_DIR}/platforms/nuttx/px4esc-v1.bin
|
||||
HWNAME ${uavcanblid_name}
|
||||
HW_MAJOR ${uavcanblid_hw_version_major}
|
||||
HW_MINOR ${uavcanblid_hw_version_minor}
|
||||
@@ -73,7 +72,5 @@ set(config_module_list
|
||||
modules/systemlib
|
||||
modules/systemlib/param
|
||||
modules/uORB
|
||||
platforms/common
|
||||
platforms/nuttx
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
)
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)
|
||||
|
||||
#set(config_uavcan_num_ifaces 2)
|
||||
@@ -7,63 +6,65 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
#drivers/adis16448
|
||||
#drivers/barometer
|
||||
drivers/differential_pressure
|
||||
#drivers/magnetometer
|
||||
#drivers/telemetry
|
||||
|
||||
#drivers/imu/adis16448
|
||||
drivers/airspeed
|
||||
drivers/barometer/ms5611
|
||||
#drivers/blinkm
|
||||
#drivers/bmi160
|
||||
#drivers/bmp280
|
||||
#drivers/imu/bmi160
|
||||
#drivers/barometer/bmp280
|
||||
drivers/boards
|
||||
#drivers/bst
|
||||
drivers/camera_trigger
|
||||
drivers/device
|
||||
#drivers/ets_airspeed
|
||||
drivers/frsky_telemetry
|
||||
#drivers/frsky_telemetry
|
||||
drivers/gps
|
||||
drivers/hmc5883
|
||||
#drivers/hott
|
||||
#drivers/hott/hott_sensors
|
||||
#drivers/hott/hott_telemetry
|
||||
#drivers/iridiumsbd
|
||||
#drivers/irlock
|
||||
#drivers/ist8310
|
||||
drivers/l3gd20
|
||||
drivers/imu/l3gd20
|
||||
drivers/led
|
||||
drivers/lis3mdl
|
||||
drivers/ll40ls
|
||||
drivers/lsm303d
|
||||
drivers/imu/lsm303d
|
||||
drivers/magnetometer/hmc5883
|
||||
drivers/magnetometer/lis3mdl
|
||||
#drivers/mb12xx
|
||||
#drivers/mkblctrl
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/ms5611
|
||||
drivers/imu/mpu6000
|
||||
drivers/imu/mpu9250
|
||||
#drivers/oreoled
|
||||
#drivers/protocol_splitter
|
||||
drivers/pwm_input
|
||||
drivers/pwm_out_sim
|
||||
#drivers/pwm_out_sim
|
||||
drivers/px4flow
|
||||
drivers/px4fmu
|
||||
drivers/px4io
|
||||
drivers/rgbled
|
||||
drivers/sdp3x_airspeed
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
#drivers/snapdragon_rc_pwm
|
||||
#drivers/srf02
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
#drivers/tap_esc
|
||||
drivers/teraranger
|
||||
#drivers/ulanding
|
||||
drivers/vmount
|
||||
|
||||
# distance sensors
|
||||
drivers/distance_sensor/ll40ls
|
||||
drivers/distance_sensor/mb12xx
|
||||
drivers/distance_sensor/sf0x
|
||||
drivers/distance_sensor/sf1xx
|
||||
drivers/distance_sensor/srf02
|
||||
drivers/distance_sensor/srf02_i2c
|
||||
drivers/distance_sensor/teraranger
|
||||
drivers/distance_sensor/tfmini
|
||||
#drivers/distance_sensor/ulanding
|
||||
modules/sensors
|
||||
|
||||
#
|
||||
# System commands
|
||||
#
|
||||
systemcmds/bl_update
|
||||
#systemcmds/bl_update
|
||||
#systemcmds/config
|
||||
#systemcmds/dumpfile
|
||||
#systemcmds/esc_calib
|
||||
@@ -81,12 +82,13 @@ set(config_module_list
|
||||
#systemcmds/sd_bench
|
||||
systemcmds/top
|
||||
#systemcmds/topic_listener
|
||||
systemcmds/tune_control
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
#drivers/sf0x/sf0x_tests
|
||||
#drivers/distance_sensor/sf0x/sf0x_tests
|
||||
#drivers/test_ppm
|
||||
#lib/controllib/controllib_test
|
||||
#lib/rc/rc_tests
|
||||
@@ -116,14 +118,15 @@ set(config_module_list
|
||||
modules/ekf2
|
||||
#modules/local_position_estimator
|
||||
#modules/position_estimator_inav
|
||||
#modules/landing_target_estimator
|
||||
|
||||
#
|
||||
# Vehicle Control
|
||||
#
|
||||
modules/fw_att_control
|
||||
modules/fw_pos_control_l1
|
||||
modules/gnd_att_control
|
||||
modules/gnd_pos_control
|
||||
#modules/gnd_att_control
|
||||
#modules/gnd_pos_control
|
||||
modules/mc_att_control
|
||||
modules/mc_pos_control
|
||||
modules/vtol_att_control
|
||||
@@ -151,23 +154,13 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
#lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
|
||||
#
|
||||
# Platform
|
||||
#
|
||||
platforms/common
|
||||
platforms/nuttx
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
#
|
||||
@@ -191,10 +184,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
|
||||
@@ -7,6 +7,10 @@ list(REMOVE_ITEM config_module_list
|
||||
)
|
||||
|
||||
list(APPEND config_module_list
|
||||
|
||||
drivers/irlock
|
||||
|
||||
modules/attitude_estimator_q
|
||||
modules/local_position_estimator
|
||||
modules/landing_target_estimator
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_test)
|
||||
|
||||
@@ -15,12 +14,11 @@ set(config_module_list
|
||||
drivers/px4io
|
||||
drivers/boards
|
||||
drivers/rgbled
|
||||
drivers/mpu6000
|
||||
#TO FIT drivers/mpu9250
|
||||
drivers/lsm303d
|
||||
drivers/l3gd20
|
||||
drivers/imu/mpu6000
|
||||
#TO FIT drivers/imu/mpu9250
|
||||
drivers/imu/lsm303d
|
||||
drivers/imu/l3gd20
|
||||
drivers/hmc5883
|
||||
drivers/ms5611
|
||||
#drivers/mb12xx
|
||||
#drivers/srf02
|
||||
#drivers/sf0x
|
||||
@@ -29,15 +27,10 @@ set(config_module_list
|
||||
drivers/gps
|
||||
#drivers/pwm_out_sim
|
||||
#drivers/hott
|
||||
#drivers/hott/hott_telemetry
|
||||
#drivers/hott/hott_sensors
|
||||
drivers/blinkm
|
||||
drivers/airspeed
|
||||
drivers/ets_airspeed
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/sdp3x_airspeed
|
||||
drivers/frsky_telemetry
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
modules/sensors
|
||||
#drivers/mkblctrl
|
||||
drivers/px4flow
|
||||
@@ -46,8 +39,8 @@ set(config_module_list
|
||||
drivers/pwm_input
|
||||
drivers/camera_trigger
|
||||
#drivers/bst
|
||||
#drivers/snapdragon_rc_pwm
|
||||
#drivers/lis3mdl
|
||||
drivers/tfmini
|
||||
|
||||
#
|
||||
# System commands
|
||||
@@ -73,7 +66,7 @@ set(config_module_list
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/distance_sensor/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
#lib/rc/rc_tests
|
||||
modules/commander/commander_tests
|
||||
@@ -134,20 +127,12 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
@@ -167,10 +152,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
# FMUv3 is FMUv2 with access to the full 2MB flash
|
||||
set(BOARD px4fmu-v2 CACHE string "" FORCE)
|
||||
set(FW_NAME nuttx_px4fmu-v3_default.elf CACHE string "" FORCE)
|
||||
set(FW_PROTOTYPE px4fmu-v3 CACHE string "" FORCE)
|
||||
set(LD_SCRIPT ld_full.script CACHE string "" FORCE)
|
||||
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)
|
||||
|
||||
set(config_uavcan_num_ifaces 2)
|
||||
@@ -13,36 +13,28 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/adis16448
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/distance_sensor
|
||||
drivers/magnetometer
|
||||
drivers/telemetry
|
||||
|
||||
drivers/airspeed
|
||||
drivers/batt_smbus
|
||||
drivers/blinkm
|
||||
drivers/bmi160
|
||||
drivers/bmp280
|
||||
drivers/boards
|
||||
drivers/bst
|
||||
drivers/camera_trigger
|
||||
drivers/device
|
||||
drivers/ets_airspeed
|
||||
drivers/frsky_telemetry
|
||||
drivers/gps
|
||||
drivers/hmc5883
|
||||
drivers/hott
|
||||
drivers/hott/hott_sensors
|
||||
drivers/hott/hott_telemetry
|
||||
drivers/iridiumsbd
|
||||
drivers/imu/adis16448
|
||||
drivers/imu/bmi160
|
||||
drivers/imu/l3gd20
|
||||
drivers/imu/lsm303d
|
||||
drivers/imu/mpu6000
|
||||
drivers/imu/mpu9250
|
||||
drivers/irlock
|
||||
drivers/l3gd20
|
||||
drivers/led
|
||||
drivers/lis3mdl
|
||||
drivers/ll40ls
|
||||
drivers/lsm303d
|
||||
drivers/mb12xx
|
||||
drivers/mkblctrl
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/ms5611
|
||||
drivers/oreoled
|
||||
drivers/protocol_splitter
|
||||
drivers/pwm_input
|
||||
@@ -51,17 +43,10 @@ set(config_module_list
|
||||
drivers/px4fmu
|
||||
drivers/px4io
|
||||
drivers/rgbled
|
||||
drivers/sdp3x_airspeed
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/srf02
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/tap_esc
|
||||
drivers/teraranger
|
||||
drivers/ulanding
|
||||
drivers/vmount
|
||||
modules/sensors
|
||||
|
||||
@@ -86,12 +71,13 @@ set(config_module_list
|
||||
systemcmds/sd_bench
|
||||
systemcmds/top
|
||||
systemcmds/topic_listener
|
||||
systemcmds/tune_control
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/distance_sensor/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
lib/controllib/controllib_test
|
||||
#lib/rc/rc_tests
|
||||
@@ -119,6 +105,7 @@ set(config_module_list
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
modules/ekf2
|
||||
modules/landing_target_estimator
|
||||
modules/local_position_estimator
|
||||
modules/position_estimator_inav
|
||||
|
||||
@@ -156,23 +143,13 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
|
||||
#
|
||||
# Platform
|
||||
#
|
||||
platforms/common
|
||||
platforms/nuttx
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
#
|
||||
@@ -196,10 +173,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
examples/px4_mavlink_debug
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
|
||||
|
||||
@@ -8,35 +7,23 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/distance_sensor
|
||||
drivers/magnetometer
|
||||
drivers/telemetry
|
||||
drivers/imu
|
||||
|
||||
drivers/airspeed
|
||||
drivers/batt_smbus
|
||||
drivers/blinkm
|
||||
drivers/bma180
|
||||
drivers/bmi055
|
||||
drivers/bmi160
|
||||
drivers/bmm150
|
||||
drivers/bmp280
|
||||
drivers/boards
|
||||
drivers/bst
|
||||
drivers/camera_trigger
|
||||
drivers/device
|
||||
drivers/ets_airspeed
|
||||
drivers/frsky_telemetry
|
||||
drivers/gps
|
||||
drivers/hmc5883
|
||||
drivers/hott
|
||||
drivers/hott/hott_sensors
|
||||
drivers/hott/hott_telemetry
|
||||
drivers/iridiumsbd
|
||||
drivers/irlock
|
||||
drivers/led
|
||||
drivers/lis3mdl
|
||||
drivers/ll40ls
|
||||
drivers/mb12xx
|
||||
drivers/mkblctrl
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/ms5611
|
||||
drivers/oreoled
|
||||
drivers/pca9685
|
||||
drivers/pwm_input
|
||||
@@ -44,16 +31,10 @@ set(config_module_list
|
||||
drivers/px4flow
|
||||
drivers/px4fmu
|
||||
drivers/rgbled
|
||||
drivers/sdp3x_airspeed
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/srf02
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/tap_esc
|
||||
drivers/teraranger
|
||||
drivers/vmount
|
||||
modules/sensors
|
||||
|
||||
@@ -77,12 +58,13 @@ set(config_module_list
|
||||
systemcmds/sd_bench
|
||||
systemcmds/top
|
||||
systemcmds/topic_listener
|
||||
systemcmds/tune_control
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/distance_sensor/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
#lib/rc/rc_tests
|
||||
modules/commander/commander_tests
|
||||
@@ -110,6 +92,7 @@ set(config_module_list
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
modules/ekf2
|
||||
modules/landing_target_estimator
|
||||
modules/local_position_estimator
|
||||
modules/position_estimator_inav
|
||||
|
||||
@@ -147,24 +130,14 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/rc
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
|
||||
#
|
||||
# Platform
|
||||
#
|
||||
platforms/common
|
||||
platforms/nuttx
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
#
|
||||
@@ -188,10 +161,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
examples/px4_mavlink_debug
|
||||
@@ -202,4 +171,4 @@ set(config_module_list
|
||||
|
||||
# Hardware test
|
||||
examples/hwtest
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)
|
||||
|
||||
@@ -8,35 +7,27 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/distance_sensor
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/magnetometer
|
||||
drivers/telemetry
|
||||
|
||||
drivers/airspeed
|
||||
drivers/batt_smbus
|
||||
drivers/blinkm
|
||||
drivers/bma180
|
||||
drivers/bmi160
|
||||
drivers/bmp280
|
||||
drivers/imu/bma180
|
||||
drivers/imu/bmi160
|
||||
drivers/boards
|
||||
drivers/bst
|
||||
drivers/camera_trigger
|
||||
drivers/device
|
||||
drivers/ets_airspeed
|
||||
drivers/frsky_telemetry
|
||||
drivers/gps
|
||||
drivers/hmc5883
|
||||
drivers/hott
|
||||
drivers/hott/hott_sensors
|
||||
drivers/hott/hott_telemetry
|
||||
drivers/iridiumsbd
|
||||
drivers/l3gd20
|
||||
drivers/irlock
|
||||
drivers/imu/l3gd20
|
||||
drivers/led
|
||||
drivers/lis3mdl
|
||||
drivers/ll40ls
|
||||
drivers/lsm303d
|
||||
drivers/mb12xx
|
||||
drivers/mkblctrl
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/ms5611
|
||||
drivers/imu/mpu6000
|
||||
drivers/imu/mpu9250
|
||||
drivers/oreoled
|
||||
drivers/pwm_input
|
||||
drivers/pwm_out_sim
|
||||
@@ -44,16 +35,10 @@ set(config_module_list
|
||||
drivers/px4fmu
|
||||
drivers/px4io
|
||||
drivers/rgbled
|
||||
drivers/sdp3x_airspeed
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/srf02
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/tap_esc
|
||||
drivers/teraranger
|
||||
drivers/vmount
|
||||
modules/sensors
|
||||
|
||||
@@ -77,12 +62,13 @@ set(config_module_list
|
||||
systemcmds/sd_bench
|
||||
systemcmds/top
|
||||
systemcmds/topic_listener
|
||||
systemcmds/tune_control
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/distance_sensor/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
#lib/rc/rc_tests
|
||||
modules/commander/commander_tests
|
||||
@@ -110,6 +96,7 @@ set(config_module_list
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
modules/ekf2
|
||||
modules/landing_target_estimator
|
||||
modules/local_position_estimator
|
||||
modules/position_estimator_inav
|
||||
|
||||
@@ -147,23 +134,13 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
|
||||
#
|
||||
# Platform
|
||||
#
|
||||
platforms/common
|
||||
platforms/nuttx
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
#
|
||||
@@ -187,10 +164,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
@@ -201,4 +174,4 @@ set(config_module_list
|
||||
|
||||
# Hardware test
|
||||
#examples/hwtest
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m7 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
|
||||
px4_nuttx_configure(HWCLASS m7 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)
|
||||
|
||||
set(config_uavcan_num_ifaces 2)
|
||||
|
||||
@@ -8,52 +7,39 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/distance_sensor
|
||||
drivers/magnetometer
|
||||
drivers/telemetry
|
||||
|
||||
drivers/airspeed
|
||||
drivers/batt_smbus
|
||||
drivers/blinkm
|
||||
drivers/bma180
|
||||
drivers/bmi055
|
||||
drivers/bmi160
|
||||
drivers/bmp280
|
||||
drivers/imu/bma180
|
||||
drivers/imu/bmi055
|
||||
drivers/imu/bmi160
|
||||
drivers/boards
|
||||
drivers/bst
|
||||
drivers/camera_trigger
|
||||
drivers/device
|
||||
drivers/ets_airspeed
|
||||
drivers/frsky_telemetry
|
||||
drivers/gps
|
||||
drivers/hmc5883
|
||||
drivers/hott
|
||||
drivers/hott/hott_sensors
|
||||
drivers/hott/hott_telemetry
|
||||
drivers/iridiumsbd
|
||||
drivers/ist8310
|
||||
drivers/irlock
|
||||
drivers/led
|
||||
drivers/lis3mdl
|
||||
drivers/ll40ls
|
||||
drivers/mb12xx
|
||||
drivers/mkblctrl
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/ms5611
|
||||
drivers/imu/mpu6000
|
||||
drivers/imu/mpu9250
|
||||
drivers/oreoled
|
||||
drivers/pwm_input
|
||||
drivers/pwm_out_sim
|
||||
drivers/px4flow
|
||||
drivers/px4fmu
|
||||
drivers/px4io
|
||||
drivers/rgbled
|
||||
drivers/rgbled_pwm
|
||||
drivers/sdp3x_airspeed
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/srf02
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/tap_esc
|
||||
drivers/teraranger
|
||||
drivers/vmount
|
||||
modules/sensors
|
||||
|
||||
@@ -77,12 +63,13 @@ set(config_module_list
|
||||
systemcmds/sd_bench
|
||||
systemcmds/top
|
||||
systemcmds/topic_listener
|
||||
systemcmds/tune_control
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/distance_sensor/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
#lib/rc/rc_tests
|
||||
modules/commander/commander_tests
|
||||
@@ -110,6 +97,7 @@ set(config_module_list
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
modules/ekf2
|
||||
modules/landing_target_estimator
|
||||
modules/local_position_estimator
|
||||
modules/position_estimator_inav
|
||||
|
||||
@@ -147,24 +135,14 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/rc
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
|
||||
#
|
||||
# Platform
|
||||
#
|
||||
platforms/common
|
||||
platforms/nuttx
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
#
|
||||
@@ -188,10 +166,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
@@ -202,4 +176,4 @@ set(config_module_list
|
||||
|
||||
# Hardware test
|
||||
#examples/hwtest
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m3 CONFIG nsh)
|
||||
|
||||
@@ -8,5 +7,4 @@ set(config_module_list
|
||||
lib/mixer
|
||||
lib/rc
|
||||
modules/px4iofirmware
|
||||
platforms/common
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m7 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
|
||||
|
||||
@@ -8,47 +7,35 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/distance_sensor
|
||||
drivers/magnetometer
|
||||
drivers/telemetry
|
||||
|
||||
drivers/imu/adis16448
|
||||
drivers/airspeed
|
||||
drivers/blinkm
|
||||
drivers/bma180
|
||||
drivers/bmi160
|
||||
drivers/bmp280
|
||||
drivers/imu/bma180
|
||||
drivers/imu/bmi160
|
||||
drivers/boards
|
||||
drivers/bst
|
||||
drivers/camera_trigger
|
||||
drivers/device
|
||||
drivers/ets_airspeed
|
||||
drivers/frsky_telemetry
|
||||
drivers/gps
|
||||
drivers/hmc5883
|
||||
drivers/hott
|
||||
drivers/hott/hott_sensors
|
||||
drivers/hott/hott_telemetry
|
||||
drivers/led
|
||||
drivers/lis3mdl
|
||||
drivers/ll40ls
|
||||
drivers/mb12xx
|
||||
drivers/mkblctrl
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
drivers/ms5611
|
||||
drivers/imu/mpu6000
|
||||
drivers/imu/mpu9250
|
||||
drivers/oreoled
|
||||
drivers/pwm_input
|
||||
drivers/pwm_out_sim
|
||||
drivers/px4flow
|
||||
drivers/px4fmu
|
||||
drivers/rgbled
|
||||
drivers/sdp3x_airspeed
|
||||
drivers/sf0x
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/srf02
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/tap_esc
|
||||
drivers/teraranger
|
||||
modules/sensors
|
||||
|
||||
#
|
||||
@@ -71,6 +58,7 @@ set(config_module_list
|
||||
systemcmds/sd_bench
|
||||
systemcmds/top
|
||||
systemcmds/topic_listener
|
||||
systemcmds/tune_control
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
@@ -90,6 +78,7 @@ set(config_module_list
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/landing_target_estimator
|
||||
modules/ekf2
|
||||
|
||||
#
|
||||
@@ -125,21 +114,13 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/rc
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
@@ -159,10 +140,6 @@ set(config_module_list
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
add_definitions(
|
||||
-DPARAM_NO_ORB
|
||||
@@ -26,7 +25,7 @@ include(configs/uavcan_board_ident/s2740vc-v1)
|
||||
|
||||
# N.B. this would be uncommented when there is an APP
|
||||
#px4_nuttx_make_uavcan_bootloadable(BOARD ${BOARD}
|
||||
# BIN ${CMAKE_CURRENT_BINARY_DIR}/src/firmware/nuttx/s2740vc-v1.bin
|
||||
# BIN ${PX4_BINARY_DIR}/platforms/nuttx/s2740vc-v1.bin
|
||||
# HWNAME ${uavcanblid_name}
|
||||
# HW_MAJOR ${uavcanblid_hw_version_major}
|
||||
# HW_MINOR ${uavcanblid_hw_version_minor}
|
||||
@@ -61,12 +60,4 @@ set(config_module_list
|
||||
modules/systemlib/param
|
||||
modules/systemlib
|
||||
lib/version
|
||||
|
||||
#
|
||||
# Libraries
|
||||
#
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/nuttx
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT tap_common)
|
||||
|
||||
@@ -8,24 +7,23 @@ set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/airspeed
|
||||
drivers/boards
|
||||
drivers/device
|
||||
drivers/barometer
|
||||
drivers/differential_pressure
|
||||
drivers/gps
|
||||
drivers/led
|
||||
drivers/magnetometer/hmc5883
|
||||
drivers/imu/mpu6000
|
||||
drivers/px4fmu
|
||||
drivers/rgbled_pwm
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/led
|
||||
drivers/px4fmu
|
||||
drivers/boards
|
||||
drivers/rgbled_pwm
|
||||
drivers/tap_esc
|
||||
drivers/mpu6000
|
||||
drivers/ms5611
|
||||
drivers/hmc5883
|
||||
drivers/gps
|
||||
drivers/airspeed
|
||||
drivers/ms4525_airspeed
|
||||
drivers/ms5525_airspeed
|
||||
modules/sensors
|
||||
drivers/vmount
|
||||
modules/sensors
|
||||
|
||||
#
|
||||
# System commands
|
||||
@@ -46,6 +44,7 @@ set(config_module_list
|
||||
systemcmds/dumpfile
|
||||
systemcmds/ver
|
||||
systemcmds/topic_listener
|
||||
systemcmds/tune_control
|
||||
|
||||
#
|
||||
# General system control
|
||||
@@ -92,19 +91,11 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/led
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/rc
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/tunes
|
||||
lib/version
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(posix/px4_impl_posix)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake)
|
||||
|
||||
@@ -39,6 +38,7 @@ set(config_module_list
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/landing_target_estimator
|
||||
modules/ekf2
|
||||
|
||||
#
|
||||
@@ -78,21 +78,10 @@ set(config_module_list
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/mixer
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
lib/version
|
||||
|
||||
#
|
||||
# POSIX
|
||||
#
|
||||
platforms/common
|
||||
platforms/posix/px4_layer
|
||||
platforms/posix/work_queue
|
||||
)
|
||||
|
||||
set(config_df_driver_list
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(posix/px4_impl_posix)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
|
||||
|
||||
@@ -41,7 +40,6 @@ set(config_module_list
|
||||
|
||||
lib/controllib
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
@@ -49,9 +47,6 @@ set(config_module_list
|
||||
lib/version
|
||||
lib/DriverFramework/framework
|
||||
|
||||
platforms/common
|
||||
platforms/posix/px4_layer
|
||||
platforms/posix/work_queue
|
||||
modules/muorb/krait
|
||||
)
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include(posix/px4_impl_posix)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake)
|
||||
|
||||
@@ -20,9 +19,6 @@ set(config_module_list
|
||||
|
||||
lib/DriverFramework/framework
|
||||
|
||||
platforms/posix/px4_layer
|
||||
platforms/posix/work_queue
|
||||
|
||||
modules/muorb/krait
|
||||
)
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user