PositionVelocity;
97 | gazebo::physics::LinkPtr LinkSatellite;
98 | ros::Publisher rosLinkPublisher;
99 | };
100 |
101 | #endif // ORBITLINK_H
102 |
--------------------------------------------------------------------------------
/docs/images/logo_huro_large.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
73 |
--------------------------------------------------------------------------------
/site/images/logo_huro_large.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
73 |
--------------------------------------------------------------------------------
/ets_vii/urdf/ets_vii.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
--------------------------------------------------------------------------------
/site/search/search_index.json:
--------------------------------------------------------------------------------
1 | {"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Welcome to OnOrbitROS","text":"OnOrbitROS is a unified open-source framework for space-robotics simulations. It is based on Robot Operating System (ROS) and includes and reproduces the principal environmental conditions that eventual space robots and manipulators could experience in an on-orbit servicing scenario.
"},{"location":"#about-us","title":"About Us","text":"Developed by Human Robotics (HURO) group, University of Alicante, Spain.
Space robotics broadly encompasses the application of robots and autonomous systems for operations in the space environment. HURO Space Robotics section investigates the development of robotic systems and their control for performing tasks in space.
You can find more information about this project and other works in our website: HURO Space Robotics
"},{"location":"Install/","title":"Installation Guide","text":"OnOrbitROS framework can be found on this GitHub. There you will find the packages to install in your ROS environment as well as different guided examples to discover the functionalities OnOrbitROS offers. With this framework it is also possible to create new projects from the existing ones or from scrath.
"},{"location":"Install/#ros-distribution","title":"ROS Distribution","text":"The project has been developed in ROS Noetic (Ubuntu 20.04). The intallation guidelines can be found here. ROS offers many tutorials and guides to help you set up and work with your environments and projects, that can be accessed through ROS Wiki.
"},{"location":"Install/#gazebo-simulator","title":"Gazebo Simulator","text":"Gazebo is an open-source and free simulation tool specifically designed for fast and efficient test development. It has been selected as it can simulate complex 3D environments where each element possesses properties such as mass, velocity, and friction, and can accurately represent the dynamics and interations of space robots in complex 3D settings, so it is possible to create a realistic simulation of on-orbit conditions. Install here.
There is high interation of Gazebo within ROS: simulations are generated from an XML file based on the SDF description language (extension of URDF that ROS uses for robot description) for quick and easy creations and configurations; and it is possible to include additional plugins to extend its functionalities.
OnOrbitROS includes different plugins to simulate the on-orbit-specific conditions (using existing standard and available ROS/Gazebo packages to develop complex tasks). Also, Gazebo integrates interfaces to use multiple physics engines such as Open Dynamics Engine, Bullet, Simbody, Dynamic Animation and Robotics Toolkit (DART).
"},{"location":"Install/#onorbitros-framework","title":"OnOrbitROS Framework","text":"Import the ROS framework from the GitHub (found here).
- Install ROS and create an ROS environment (or use a previous one). The tutorial for doing so can be found here.
- Download the framework with
git clone or manually into your desired ROS environment. - Build the environment with
catkin_make or catkin_make_isolated. - Solve any dependency problems that might occur. See Other packages for help.
You can now start working with the framework.
"},{"location":"Install/#examples-of-applications","title":"Examples of Applications","text":"In case you would like to install the example cases:
- Download the example you want with
git clone or manually into the folder orbit_ws/src. - Build the environment with
catkin_make or catkin_make_isolated. - Execute the
.launch corresponding to that example. See the specific example documentation for that (found in Examples of Applications)
"},{"location":"Install/#other-packages","title":"Other packages","text":"In addition to the Ubuntu installation with its packages, it might be necessary to manually install this other packages. This is because OnOrbitROS takes advantages of the number of packages already developed in ROS to improve its functionalities.
Packages for the controllers:
- Controller Manager:
$ sudo apt-get install ros-noetic-controller-manager - Joint State Controller:
$ sudo apt-get install ros-noetic-joint-state-controller - Effort Controller:
$ sudo apt-get install ros-noetic-effort-controller - Position Controllers:
$ sudo apt-get install ros-noetic-position-controllers
"},{"location":"arquitechture/","title":"Architecture of OnOrbitROS","text":"OnOrbitROS serves as a foundational platform for the study and development of on-orbit applications, leveraging the powerful combination of ROS and Gazebo for hyper-realistic simulations.
For extended information about this framework, its architecture and some applications go to doi.
Jos\u00e9 L. Ram\u00f3n, Jorge Pomares, Leonard Felicetti,\nTask space control for on-orbit space robotics using a new ROS-based framework,\nSimulation Modelling Practice and Theory,\nVolume 127,\n2023,\n102790,\nISSN 1569-190X,\nhttps://doi.org/10.1016/j.simpat.2023.102790\n(https://www.sciencedirect.com/science/article/pii/S1569190X23000679)\n
Here you can find the architecture of the framework. In the OnOrbitROS workspace installed (see Installation Guide for more info) you will find many pacakges, which are shown in this image.
"},{"location":"examples/","title":"Examples of Applications using OnOrbitROS","text":"In this section you can find different examples that exploit OnOrbitROS functionalities. They can serve as a guide to develop your own application, based on this or from scratch.
"}]}
--------------------------------------------------------------------------------
/site/assets/javascripts/lunr/min/lunr.nl.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Lunr languages, `Dutch` language
3 | * https://github.com/MihaiValentin/lunr-languages
4 | *
5 | * Copyright 2014, Mihai Valentin
6 | * http://www.mozilla.org/MPL/
7 | */
8 | /*!
9 | * based on
10 | * Snowball JavaScript Library v0.3
11 | * http://code.google.com/p/urim/
12 | * http://snowball.tartarus.org/
13 | *
14 | * Copyright 2010, Oleg Mazko
15 | * http://www.mozilla.org/MPL/
16 | */
17 |
18 | !function(r,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.nl=function(){this.pipeline.reset(),this.pipeline.add(r.nl.trimmer,r.nl.stopWordFilter,r.nl.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.nl.stemmer))},r.nl.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.nl.trimmer=r.trimmerSupport.generateTrimmer(r.nl.wordCharacters),r.Pipeline.registerFunction(r.nl.trimmer,"trimmer-nl"),r.nl.stemmer=function(){var e=r.stemmerSupport.Among,i=r.stemmerSupport.SnowballProgram,n=new function(){function r(){for(var r,e,i,o=C.cursor;;){if(C.bra=C.cursor,r=C.find_among(b,11))switch(C.ket=C.cursor,r){case 1:C.slice_from("a");continue;case 2:C.slice_from("e");continue;case 3:C.slice_from("i");continue;case 4:C.slice_from("o");continue;case 5:C.slice_from("u");continue;case 6:if(C.cursor>=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(e=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=e);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=e;else if(n(e))break}else if(n(e))break}function n(r){return C.cursor=r,r>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,d=_,t()||(_=C.cursor,_<3&&(_=3),t()||(d=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var r;;)if(C.bra=C.cursor,r=C.find_among(p,3))switch(C.ket=C.cursor,r){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return d<=C.cursor}function a(){var r=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-r,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var r;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.slice_del(),w=!0,a())))}function m(){var r;u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.eq_s_b(3,"gem")||(C.cursor=C.limit-r,C.slice_del(),a())))}function f(){var r,e,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,r=C.find_among_b(h,5))switch(C.bra=C.cursor,r){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(j,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(e=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-e,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,r=C.find_among_b(k,6))switch(C.bra=C.cursor,r){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(z,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var d,_,w,b=[new e("",-1,6),new e("á",0,1),new e("ä",0,1),new e("é",0,2),new e("ë",0,2),new e("í",0,3),new e("ï",0,3),new e("ó",0,4),new e("ö",0,4),new e("ú",0,5),new e("ü",0,5)],p=[new e("",-1,3),new e("I",0,2),new e("Y",0,1)],g=[new e("dd",-1,-1),new e("kk",-1,-1),new e("tt",-1,-1)],h=[new e("ene",-1,2),new e("se",-1,3),new e("en",-1,2),new e("heden",2,1),new e("s",-1,3)],k=[new e("end",-1,1),new e("ig",-1,2),new e("ing",-1,1),new e("lijk",-1,3),new e("baar",-1,4),new e("bar",-1,5)],v=[new e("aa",-1,-1),new e("ee",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(r){C.setCurrent(r)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var e=C.cursor;return r(),C.cursor=e,o(),C.limit_backward=e,C.cursor=C.limit,f(),C.cursor=C.limit_backward,s(),!0}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.nl.stemmer,"stemmer-nl"),r.nl.stopWordFilter=r.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),r.Pipeline.registerFunction(r.nl.stopWordFilter,"stopWordFilter-nl")}});
--------------------------------------------------------------------------------
/site/assets/javascripts/lunr/min/lunr.de.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Lunr languages, `German` language
3 | * https://github.com/MihaiValentin/lunr-languages
4 | *
5 | * Copyright 2014, Mihai Valentin
6 | * http://www.mozilla.org/MPL/
7 | */
8 | /*!
9 | * based on
10 | * Snowball JavaScript Library v0.3
11 | * http://code.google.com/p/urim/
12 | * http://snowball.tartarus.org/
13 | *
14 | * Copyright 2010, Oleg Mazko
15 | * http://www.mozilla.org/MPL/
16 | */
17 |
18 | !function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!v.eq_s(1,e)||(v.ket=v.cursor,!v.in_grouping(p,97,252)))&&(v.slice_from(r),v.cursor=n,!0)}function i(){for(var r,n,i,s,t=v.cursor;;)if(r=v.cursor,v.bra=r,v.eq_s(1,"ß"))v.ket=v.cursor,v.slice_from("ss");else{if(r>=v.limit)break;v.cursor=r+1}for(v.cursor=t;;)for(n=v.cursor;;){if(i=v.cursor,v.in_grouping(p,97,252)){if(s=v.cursor,v.bra=s,e("u","U",i))break;if(v.cursor=s,e("y","Y",i))break}if(i>=v.limit)return void(v.cursor=n);v.cursor=i+1}}function s(){for(;!v.in_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}for(;!v.out_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}return!1}function t(){m=v.limit,l=m;var e=v.cursor+3;0<=e&&e<=v.limit&&(d=e,s()||(m=v.cursor,m=v.limit)return;v.cursor++}}}function c(){return m<=v.cursor}function u(){return l<=v.cursor}function a(){var e,r,n,i,s=v.limit-v.cursor;if(v.ket=v.cursor,(e=v.find_among_b(w,7))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:v.slice_del(),v.ket=v.cursor,v.eq_s_b(1,"s")&&(v.bra=v.cursor,v.eq_s_b(3,"nis")&&v.slice_del());break;case 3:v.in_grouping_b(g,98,116)&&v.slice_del()}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(f,4))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:if(v.in_grouping_b(k,98,116)){var t=v.cursor-3;v.limit_backward<=t&&t<=v.limit&&(v.cursor=t,v.slice_del())}}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(_,8))&&(v.bra=v.cursor,u()))switch(e){case 1:v.slice_del(),v.ket=v.cursor,v.eq_s_b(2,"ig")&&(v.bra=v.cursor,r=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-r,u()&&v.slice_del()));break;case 2:n=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-n,v.slice_del());break;case 3:if(v.slice_del(),v.ket=v.cursor,i=v.limit-v.cursor,!v.eq_s_b(2,"er")&&(v.cursor=v.limit-i,!v.eq_s_b(2,"en")))break;v.bra=v.cursor,c()&&v.slice_del();break;case 4:v.slice_del(),v.ket=v.cursor,e=v.find_among_b(b,2),e&&(v.bra=v.cursor,u()&&1==e&&v.slice_del())}}var d,l,m,h=[new r("",-1,6),new r("U",0,2),new r("Y",0,1),new r("ä",0,3),new r("ö",0,4),new r("ü",0,5)],w=[new r("e",-1,2),new r("em",-1,1),new r("en",-1,2),new r("ern",-1,1),new r("er",-1,1),new r("s",-1,3),new r("es",5,2)],f=[new r("en",-1,1),new r("er",-1,1),new r("st",-1,2),new r("est",2,1)],b=[new r("ig",-1,1),new r("lich",-1,1)],_=[new r("end",-1,1),new r("ig",-1,2),new r("ung",-1,1),new r("lich",-1,3),new r("isch",-1,2),new r("ik",-1,2),new r("heit",-1,3),new r("keit",-1,4)],p=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],g=[117,30,5],k=[117,30,4],v=new n;this.setCurrent=function(e){v.setCurrent(e)},this.getCurrent=function(){return v.getCurrent()},this.stem=function(){var e=v.cursor;return i(),v.cursor=e,t(),v.limit_backward=e,v.cursor=v.limit,a(),v.cursor=v.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}});
--------------------------------------------------------------------------------
/site/assets/javascripts/lunr/min/lunr.du.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Lunr languages, `Dutch` language
3 | * https://github.com/MihaiValentin/lunr-languages
4 | *
5 | * Copyright 2014, Mihai Valentin
6 | * http://www.mozilla.org/MPL/
7 | */
8 | /*!
9 | * based on
10 | * Snowball JavaScript Library v0.3
11 | * http://code.google.com/p/urim/
12 | * http://snowball.tartarus.org/
13 | *
14 | * Copyright 2010, Oleg Mazko
15 | * http://www.mozilla.org/MPL/
16 | */
17 |
18 | !function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");console.warn('[Lunr Languages] Please use the "nl" instead of the "du". The "nl" code is the standard code for Dutch language, and "du" will be removed in the next major versions.'),e.du=function(){this.pipeline.reset(),this.pipeline.add(e.du.trimmer,e.du.stopWordFilter,e.du.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.du.stemmer))},e.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.du.trimmer=e.trimmerSupport.generateTrimmer(e.du.wordCharacters),e.Pipeline.registerFunction(e.du.trimmer,"trimmer-du"),e.du.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e,r,i,o=C.cursor;;){if(C.bra=C.cursor,e=C.find_among(b,11))switch(C.ket=C.cursor,e){case 1:C.slice_from("a");continue;case 2:C.slice_from("e");continue;case 3:C.slice_from("i");continue;case 4:C.slice_from("o");continue;case 5:C.slice_from("u");continue;case 6:if(C.cursor>=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(r=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=r);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=r;else if(n(r))break}else if(n(r))break}function n(e){return C.cursor=e,e>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,f=_,t()||(_=C.cursor,_<3&&(_=3),t()||(f=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var e;;)if(C.bra=C.cursor,e=C.find_among(p,3))switch(C.ket=C.cursor,e){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return f<=C.cursor}function a(){var e=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-e,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var e;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.slice_del(),w=!0,a())))}function m(){var e;u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.eq_s_b(3,"gem")||(C.cursor=C.limit-e,C.slice_del(),a())))}function d(){var e,r,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,e=C.find_among_b(h,5))switch(C.bra=C.cursor,e){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(z,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(r=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-r,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,e=C.find_among_b(k,6))switch(C.bra=C.cursor,e){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(j,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var f,_,w,b=[new r("",-1,6),new r("á",0,1),new r("ä",0,1),new r("é",0,2),new r("ë",0,2),new r("í",0,3),new r("ï",0,3),new r("ó",0,4),new r("ö",0,4),new r("ú",0,5),new r("ü",0,5)],p=[new r("",-1,3),new r("I",0,2),new r("Y",0,1)],g=[new r("dd",-1,-1),new r("kk",-1,-1),new r("tt",-1,-1)],h=[new r("ene",-1,2),new r("se",-1,3),new r("en",-1,2),new r("heden",2,1),new r("s",-1,3)],k=[new r("end",-1,1),new r("ig",-1,2),new r("ing",-1,1),new r("lijk",-1,3),new r("baar",-1,4),new r("bar",-1,5)],v=[new r("aa",-1,-1),new r("ee",-1,-1),new r("oo",-1,-1),new r("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(e){C.setCurrent(e)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var r=C.cursor;return e(),C.cursor=r,o(),C.limit_backward=r,C.cursor=C.limit,d(),C.cursor=C.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.du.stemmer,"stemmer-du"),e.du.stopWordFilter=e.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),e.Pipeline.registerFunction(e.du.stopWordFilter,"stopWordFilter-du")}});
--------------------------------------------------------------------------------
/orbit_publisher_pkg/src/orbit_publisher_pkg_node.cpp:
--------------------------------------------------------------------------------
1 | /*** Orbit Publisher Node ***/
2 | /*
3 | Reads the information of the orbit defined in the .yaml file.
4 | Publishes the information needed for the simulation, as the position, velocity, air density and more.
5 | Here is the LVLH information in reference to the ECI's frame.
6 |
7 | The .yaml file is loaded in this package's .launch (basic.launch) as follows:
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | In case more information is needed from the other plugins it should be published from this script.
16 | If additional (new) information is needed must be defined in "Orbit.h", declared in ".yaml", read by "Orbit.cpp" and published here.
17 |
18 | Node personalized for the simulation of the orbits.
19 |
20 | Developed by: Human Robotics Laboratoy (University of Alicante)
21 | https://www.huro.ua.es/index.php/research/research-lines/space-robotics
22 | */
23 |
24 | #include "ros/ros.h"
25 | #include "std_msgs/String.h"
26 | #include "std_msgs/Float64.h"
27 | #include "geometry_msgs/Pose.h"
28 | #include "geometry_msgs/Vector3.h"
29 | #include "orbit_publisher_pkg/Orbit.h"
30 |
31 | #include "rosgraph_msgs/Clock.h"
32 | #include
33 |
34 | double gazebo_sim_time = 0.0; // Gazebo simulation time
35 |
36 | // Callback function for the /clock topic
37 | void clockCallback(const rosgraph_msgs::Clock::ConstPtr& msg) {
38 | gazebo_sim_time = msg->clock.toSec();
39 | }
40 |
41 | int main(int argc, char **argv)
42 | {
43 | int rate;
44 | ros::init(argc, argv, "OrbitPositionPublisher"); // Published the orbital information required for the simulation
45 | ros::NodeHandle n;
46 | std::string node_name = ros::this_node::getNamespace();
47 | // ros::Publisher orbit_position_pub = n.advertise("/"+ node_name +"/OrbitPosition", 1000);
48 | // ros::Publisher orbit_velocity_pub = n.advertise("/" + node_name +"/OrbitVelocity", 1000);
49 | ros::Publisher orbit_position_pub = n.advertise("/OrbitPosition", 1000);
50 | ros::Publisher orbit_velocity_pub = n.advertise("/OrbitVelocity", 1000);
51 | ros::Publisher orbit_altitude_pub = n.advertise("/OrbitAltitude", 1000);
52 |
53 | // Orbit parameters
54 | ros::Publisher orbit_sim_ecc_pub = n.advertise("/OrbitEccentricity", 1000);
55 | ros::Publisher orbit_sim_sa_pub = n.advertise("/OrbitSemiMajorAxis", 1000);
56 | ros::Publisher orbit_sim_incl_pub = n.advertise("/OrbitInclination", 1000);
57 | ros::Publisher orbit_sim_raan_pub = n.advertise("/OrbitRAAN", 1000);
58 | ros::Publisher orbit_sim_aop_pub = n.advertise("/OrbitArgumentOfPerigee", 1000);
59 | ros::Publisher orbit_sim_ta_pub = n.advertise("/OrbitTrueAnomaly", 1000);
60 | ros::Publisher orbit_sim_period_pub = n.advertise("/OrbitPeriod", 1000);
61 |
62 | ros::Subscriber clock_sub = n.subscribe("/clock", 10, clockCallback);
63 |
64 | if (!n.getParam("/" + node_name + "/publish_rate",rate))
65 | {
66 | rate = 10;
67 | }
68 | ros::Rate loop_rate(rate);
69 |
70 | Orbit orbital(n, node_name); // Create the orbit
71 | orbital.SetName(node_name);
72 | Eigen::Quaternion q;
73 | geometry_msgs::Pose pos;
74 | geometry_msgs::Vector3 vel;
75 | std_msgs::Float64 altitude;
76 |
77 | // Other orbit parameters
78 | std_msgs::Float64 sim_ecc;
79 | std_msgs::Float64 sim_sa;
80 | std_msgs::Float64 sim_incl;
81 | std_msgs::Float64 sim_raan;
82 | std_msgs::Float64 sim_aop;
83 | std_msgs::Float64 sim_ta;
84 | std_msgs::Float64 sim_period;
85 | bool publish_orbit_parameters; // Publish or not the keplerian orbital values
86 | if (!n.getParam("/" + node_name + "/orbit/publish_orbit_parameters", publish_orbit_parameters))
87 | {
88 | publish_orbit_parameters = true;
89 | }
90 |
91 | /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
92 | while (ros::ok())
93 | {
94 | // *** Continous publish *** //
95 | orbital.KeplerianToEci(gazebo_sim_time);
96 | q = orbital.GetLvLhRotationToEci();
97 |
98 | // Pose
99 | pos.position.x = orbital.GetPositionEciX();
100 | pos.position.y = orbital.GetPositionEciY();
101 | pos.position.z = orbital.GetPositionEciZ();
102 | pos.orientation.w = q.w();
103 | pos.orientation.x = q.x();
104 | pos.orientation.y = q.y();
105 | pos.orientation.z = q.z();
106 | orbit_position_pub.publish(pos);
107 |
108 | // Velocity
109 | vel.x = orbital.GetVelocityEciX();
110 | vel.y = orbital.GetVelocityEciY();
111 | vel.z = orbital.GetVelocityEciZ();
112 | orbit_velocity_pub.publish(vel);
113 |
114 | // Altitude
115 | altitude.data = orbital.CalcAltitude(gazebo_sim_time);
116 | orbit_altitude_pub.publish(altitude);
117 |
118 | // Keplerian Orbit Elements
119 | if( publish_orbit_parameters ){
120 | orbital.CalcOrbitParamsFromSV(gazebo_sim_time);
121 | sim_ecc.data = orbital.GetSimEccentricity();
122 | orbit_sim_ecc_pub.publish(sim_ecc);
123 | sim_sa.data = orbital.GetSimSemiMajorAxis();
124 | orbit_sim_sa_pub.publish(sim_sa);
125 | sim_incl.data = orbital.GetSimInclination();
126 | orbit_sim_incl_pub.publish(sim_incl);
127 | sim_raan.data = orbital.GetSimRateOfRightAscension();
128 | orbit_sim_raan_pub.publish(sim_raan);
129 | sim_aop.data = orbital.GetSimArgumentOfPerigee();
130 | orbit_sim_aop_pub.publish(sim_aop);
131 | sim_ta.data = orbital.GetSimTrueAnomaly();
132 | orbit_sim_ta_pub.publish(sim_ta);
133 | sim_period.data = orbital.GetSimPeriod();
134 | orbit_sim_period_pub.publish(sim_period);
135 | }
136 |
137 | // *** Publish only once *** /
138 | // if( gazebo_sim_time < 2 ){ // publish until x simulation seconds
139 |
140 | // }
141 |
142 | ros::spinOnce();
143 | loop_rate.sleep();
144 | }
145 | return 0;
146 | }
--------------------------------------------------------------------------------
/ets_vii/rviz/config.rviz:
--------------------------------------------------------------------------------
1 | Panels:
2 | - Class: rviz/Displays
3 | Help Height: 78
4 | Name: Displays
5 | Property Tree Widget:
6 | Expanded:
7 | - /Global Options1
8 | - /Status1
9 | - /Axes1
10 | - /RobotModel1
11 | - /RobotModel1/Joints1
12 | - /RobotModel1/Joints1/joint11
13 | - /RobotModel1/Joints1/joint21
14 | - /RobotModel1/Joints1/joint31
15 | - /RobotModel1/Joints1/joint41
16 | - /RobotModel1/Joints1/joint51
17 | - /RobotModel1/Joints1/joint61
18 | - /RobotModel1/Joints1/union_flange_joint1
19 | Splitter Ratio: 0.5
20 | Tree Height: 1799
21 | - Class: rviz/Selection
22 | Name: Selection
23 | - Class: rviz/Tool Properties
24 | Expanded:
25 | - /2D Pose Estimate1
26 | - /2D Nav Goal1
27 | - /Publish Point1
28 | Name: Tool Properties
29 | Splitter Ratio: 0.5886790156364441
30 | - Class: rviz/Views
31 | Expanded:
32 | - /Current View1
33 | Name: Views
34 | Splitter Ratio: 0.5
35 | - Class: rviz/Time
36 | Experimental: false
37 | Name: Time
38 | SyncMode: 0
39 | SyncSource: ""
40 | Preferences:
41 | PromptSaveOnExit: true
42 | Toolbars:
43 | toolButtonStyle: 2
44 | Visualization Manager:
45 | Class: ""
46 | Displays:
47 | - Alpha: 0.5
48 | Cell Size: 1
49 | Class: rviz/Grid
50 | Color: 160; 160; 164
51 | Enabled: true
52 | Line Style:
53 | Line Width: 0.029999999329447746
54 | Value: Lines
55 | Name: Grid
56 | Normal Cell Count: 0
57 | Offset:
58 | X: 0
59 | Y: 0
60 | Z: 0
61 | Plane: XY
62 | Plane Cell Count: 10
63 | Reference Frame:
64 | Value: true
65 | - Alpha: 1
66 | Class: rviz/Axes
67 | Enabled: true
68 | Length: 4
69 | Name: Axes
70 | Radius: 0.009999999776482582
71 | Reference Frame:
72 | Value: true
73 | - Alpha: 0.5
74 | Class: rviz/RobotModel
75 | Collision Enabled: false
76 | Enabled: true
77 | Joints:
78 | All Links Enabled: true
79 | Expand Joint Details: false
80 | Expand Link Details: false
81 | Expand Tree: false
82 | Link Tree Style: Joints in Alphabetic Order
83 | joint1:
84 | Show Axes: true
85 | Show Joint Axis: false
86 | Value: true
87 | joint2:
88 | Show Axes: true
89 | Show Joint Axis: false
90 | Value: true
91 | joint3:
92 | Show Axes: true
93 | Show Joint Axis: false
94 | Value: true
95 | joint4:
96 | Show Axes: true
97 | Show Joint Axis: false
98 | Value: true
99 | joint5:
100 | Show Axes: true
101 | Show Joint Axis: false
102 | Value: true
103 | joint6:
104 | Show Axes: true
105 | Show Joint Axis: false
106 | Value: true
107 | union_flange_joint:
108 | Show Axes: true
109 | Value: true
110 | Name: RobotModel
111 | Robot Description: robot_description
112 | TF Prefix: ""
113 | Update Interval: 0
114 | Value: true
115 | Visual Enabled: true
116 | Enabled: true
117 | Global Options:
118 | Background Color: 48; 48; 48
119 | Default Light: true
120 | Fixed Frame: base_link
121 | Frame Rate: 30
122 | Name: root
123 | Tools:
124 | - Class: rviz/Interact
125 | Hide Inactive Objects: true
126 | - Class: rviz/MoveCamera
127 | - Class: rviz/Select
128 | - Class: rviz/FocusCamera
129 | - Class: rviz/Measure
130 | - Class: rviz/SetInitialPose
131 | Theta std deviation: 0.2617993950843811
132 | Topic: /initialpose
133 | X std deviation: 0.5
134 | Y std deviation: 0.5
135 | - Class: rviz/SetGoal
136 | Topic: /move_base_simple/goal
137 | - Class: rviz/PublishPoint
138 | Single click: true
139 | Topic: /clicked_point
140 | Value: true
141 | Views:
142 | Current:
143 | Class: rviz/Orbit
144 | Distance: 10
145 | Enable Stereo Rendering:
146 | Stereo Eye Separation: 0.05999999865889549
147 | Stereo Focal Distance: 1
148 | Swap Stereo Eyes: false
149 | Value: false
150 | Field of View: 0.7853981852531433
151 | Focal Point:
152 | X: 0
153 | Y: 0
154 | Z: 0
155 | Focal Shape Fixed Size: true
156 | Focal Shape Size: 0.05000000074505806
157 | Invert Z Axis: false
158 | Name: Current View
159 | Near Clip Distance: 0.009999999776482582
160 | Pitch: 0.36039841175079346
161 | Target Frame:
162 | Yaw: 5.613566875457764
163 | Saved: ~
164 | Window Geometry:
165 | Displays:
166 | collapsed: false
167 | Height: 2096
168 | Hide Left Dock: false
169 | Hide Right Dock: false
170 | QMainWindow State: 000000ff00000000fd0000000400000000000002d800000792fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d00000792000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000792fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d00000792000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e1000001970000000300000eb80000003efc0100000002fb0000000800540069006d0065010000000000000eb8000002eb00fffffffb0000000800540069006d0065010000000000000450000000000000000000000ac50000079200000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
171 | Selection:
172 | collapsed: false
173 | Time:
174 | collapsed: false
175 | Tool Properties:
176 | collapsed: false
177 | Views:
178 | collapsed: false
179 | Width: 3768
180 | X: 72
181 | Y: 27
182 |
--------------------------------------------------------------------------------
/site/assets/javascripts/lunr/min/lunr.ru.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Lunr languages, `Russian` language
3 | * https://github.com/MihaiValentin/lunr-languages
4 | *
5 | * Copyright 2014, Mihai Valentin
6 | * http://www.mozilla.org/MPL/
7 | */
8 | /*!
9 | * based on
10 | * Snowball JavaScript Library v0.3
11 | * http://code.google.com/p/urim/
12 | * http://snowball.tartarus.org/
13 | *
14 | * Copyright 2010, Oleg Mazko
15 | * http://www.mozilla.org/MPL/
16 | */
17 |
18 | !function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWordFilter,e.ru.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ru.stemmer))},e.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",e.ru.trimmer=e.trimmerSupport.generateTrimmer(e.ru.wordCharacters),e.Pipeline.registerFunction(e.ru.trimmer,"trimmer-ru"),e.ru.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,t=new function(){function e(){for(;!W.in_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function t(){for(;!W.out_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function w(){b=W.limit,_=b,e()&&(b=W.cursor,t()&&e()&&t()&&(_=W.cursor))}function i(){return _<=W.cursor}function u(e,n){var r,t;if(W.ket=W.cursor,r=W.find_among_b(e,n)){switch(W.bra=W.cursor,r){case 1:if(t=W.limit-W.cursor,!W.eq_s_b(1,"а")&&(W.cursor=W.limit-t,!W.eq_s_b(1,"я")))return!1;case 2:W.slice_del()}return!0}return!1}function o(){return u(h,9)}function s(e,n){var r;return W.ket=W.cursor,!!(r=W.find_among_b(e,n))&&(W.bra=W.cursor,1==r&&W.slice_del(),!0)}function c(){return s(g,26)}function m(){return!!c()&&(u(C,8),!0)}function f(){return s(k,2)}function l(){return u(P,46)}function a(){s(v,36)}function p(){var e;W.ket=W.cursor,(e=W.find_among_b(F,2))&&(W.bra=W.cursor,i()&&1==e&&W.slice_del())}function d(){var e;if(W.ket=W.cursor,e=W.find_among_b(q,4))switch(W.bra=W.cursor,e){case 1:if(W.slice_del(),W.ket=W.cursor,!W.eq_s_b(1,"н"))break;W.bra=W.cursor;case 2:if(!W.eq_s_b(1,"н"))break;case 3:W.slice_del()}}var _,b,h=[new n("в",-1,1),new n("ив",0,2),new n("ыв",0,2),new n("вши",-1,1),new n("ивши",3,2),new n("ывши",3,2),new n("вшись",-1,1),new n("ившись",6,2),new n("ывшись",6,2)],g=[new n("ее",-1,1),new n("ие",-1,1),new n("ое",-1,1),new n("ые",-1,1),new n("ими",-1,1),new n("ыми",-1,1),new n("ей",-1,1),new n("ий",-1,1),new n("ой",-1,1),new n("ый",-1,1),new n("ем",-1,1),new n("им",-1,1),new n("ом",-1,1),new n("ым",-1,1),new n("его",-1,1),new n("ого",-1,1),new n("ему",-1,1),new n("ому",-1,1),new n("их",-1,1),new n("ых",-1,1),new n("ею",-1,1),new n("ою",-1,1),new n("ую",-1,1),new n("юю",-1,1),new n("ая",-1,1),new n("яя",-1,1)],C=[new n("ем",-1,1),new n("нн",-1,1),new n("вш",-1,1),new n("ивш",2,2),new n("ывш",2,2),new n("щ",-1,1),new n("ющ",5,1),new n("ующ",6,2)],k=[new n("сь",-1,1),new n("ся",-1,1)],P=[new n("ла",-1,1),new n("ила",0,2),new n("ыла",0,2),new n("на",-1,1),new n("ена",3,2),new n("ете",-1,1),new n("ите",-1,2),new n("йте",-1,1),new n("ейте",7,2),new n("уйте",7,2),new n("ли",-1,1),new n("или",10,2),new n("ыли",10,2),new n("й",-1,1),new n("ей",13,2),new n("уй",13,2),new n("л",-1,1),new n("ил",16,2),new n("ыл",16,2),new n("ем",-1,1),new n("им",-1,2),new n("ым",-1,2),new n("н",-1,1),new n("ен",22,2),new n("ло",-1,1),new n("ило",24,2),new n("ыло",24,2),new n("но",-1,1),new n("ено",27,2),new n("нно",27,1),new n("ет",-1,1),new n("ует",30,2),new n("ит",-1,2),new n("ыт",-1,2),new n("ют",-1,1),new n("уют",34,2),new n("ят",-1,2),new n("ны",-1,1),new n("ены",37,2),new n("ть",-1,1),new n("ить",39,2),new n("ыть",39,2),new n("ешь",-1,1),new n("ишь",-1,2),new n("ю",-1,2),new n("ую",44,2)],v=[new n("а",-1,1),new n("ев",-1,1),new n("ов",-1,1),new n("е",-1,1),new n("ие",3,1),new n("ье",3,1),new n("и",-1,1),new n("еи",6,1),new n("ии",6,1),new n("ами",6,1),new n("ями",6,1),new n("иями",10,1),new n("й",-1,1),new n("ей",12,1),new n("ией",13,1),new n("ий",12,1),new n("ой",12,1),new n("ам",-1,1),new n("ем",-1,1),new n("ием",18,1),new n("ом",-1,1),new n("ям",-1,1),new n("иям",21,1),new n("о",-1,1),new n("у",-1,1),new n("ах",-1,1),new n("ях",-1,1),new n("иях",26,1),new n("ы",-1,1),new n("ь",-1,1),new n("ю",-1,1),new n("ию",30,1),new n("ью",30,1),new n("я",-1,1),new n("ия",33,1),new n("ья",33,1)],F=[new n("ост",-1,1),new n("ость",-1,1)],q=[new n("ейше",-1,1),new n("н",-1,2),new n("ейш",-1,1),new n("ь",-1,3)],S=[33,65,8,232],W=new r;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){return w(),W.cursor=W.limit,!(W.cursor
5 | #include
6 | #include
7 | #include
8 | #include "ros/ros.h"
9 |
10 |
11 |
12 | class Orbit
13 | {
14 | public:
15 | Orbit();
16 | Orbit(ros::NodeHandle nh, std::string n);
17 | virtual ~Orbit();
18 |
19 | //Getters
20 | std::string GetName() { return name; }
21 | double GetEccentricity() { return eccentricity; }
22 | double GetSemiMajorAxis() {return semi_major_axis; }
23 | double GetInclination() {return inclination; }
24 | double GetRateOfRightAscension() { return rate_of_right_ascension; }
25 | double GetRightAscensionIni(){return right_ascension_ini; }
26 | double GetArgumentOfPerigeeIni() {return argument_of_perigee_ini; }
27 | double GetRateArgumentOfPerigee() {return rate_argument_of_perigee; }
28 | double GetMeanAnomalyIni() { return mean_anomaly_ini; }
29 | time_t GetTimePassPerigee() {return time_pass_perigee; }
30 | Eigen::Matrix GetPositionEciIni() { return position_eci_ini ; }
31 | Eigen::Matrix GetVelocityEciIni() { return velocity_eci_ini; }
32 | Eigen::Matrix GetLvLhRotationToEciIni() { return lvlh_rotation_to_eci_ini; }
33 | Eigen::Matrix GetPositionEci() { return position_eci; }
34 | Eigen::Matrix GetVelEph() { return vel_eph; };
35 | double GetPositionEciX() { return position_eci(0); }
36 | double GetPositionEciY() { return position_eci(1); }
37 | double GetPositionEciZ() { return position_eci(2); }
38 | Eigen::Matrix GetVelocityEci() { return velocity_eci; }
39 | double GetVelocityEciX(){ return velocity_eci(0); }
40 | double GetVelocityEciY(){ return velocity_eci(1); }
41 | double GetVelocityEciZ(){ return velocity_eci(2); }
42 | Eigen::Matrix GetLvLhRotationToEci() { return lvlh_rotation_to_eci; }
43 | double GetAngularVelocity() { return angular_velocity; }
44 | double GetPeriod(){ return period; }
45 | double GetMeanMotion(){return mean_motion; }
46 | double GetEccentricAnomaly(){return eccentric_anomaly; }
47 | double GetAltitude(){return altitude; }
48 |
49 | double GetSimEccentricity() {return sim_eccentricity;} // Get Orbit Parameters
50 | double GetSimSemiMajorAxis() {return sim_semi_major_axis; }
51 | double GetSimInclination() {return sim_inclination; }
52 | double GetSimRateOfRightAscension() { return sim_right_ascension_node; }
53 | double GetSimArgumentOfPerigee() { return sim_argument_of_perigee; }
54 | double GetSimTrueAnomaly() { return sim_true_anomaly; }
55 | double GetSimPeriod() { return sim_period; }
56 |
57 | //Setters
58 | void SetName(std::string val) { name = val; }
59 | void SetEccentricity(double val) { eccentricity = val; }
60 | void SetSemiMajorAxis (double val) { semi_major_axis = val; }
61 | void SetInclination ( double val ) { inclination = val; }
62 | void SetRateOfRightAscension (double val) { rate_of_right_ascension = val; }
63 | void SetRightAscensionIni (double val) { right_ascension_ini = val; }
64 | void SetArgumentOfPerigeeIni (double val) { argument_of_perigee_ini = val; }
65 | void SetRateArgumentOfPerigee (double val) { rate_argument_of_perigee = val; }
66 | void SetMeanAnomalyIni (double val) { mean_anomaly_ini = val; }
67 | void SetTimePassPerigee (time_t val) { time_pass_perigee = val; }
68 | void SetPosEciIni (Eigen::Matrix val ) {position_eci_ini = val; }
69 | void SetValEciIni (Eigen::Matrix val) { velocity_eci_ini = val; }
70 | void SetLvLhRotationToEciIni (Eigen::Matrix val) { lvlh_rotation_to_eci_ini = val; }
71 | void SetPosEci (Eigen::Matrix val) { position_eci = val; }
72 | void SetValEci (Eigen::Matrix val) { velocity_eci = val; }
73 | void SetLvLhRrEci (Eigen::Matrix val) { lvlh_rotation_to_eci = val; }
74 | void SetAngularVelocity (double val) { angular_velocity = val; }
75 | void SetPeriod ( double val) {period = val; }
76 | void SetMeanMotion(double val) {mean_motion = val;}
77 | void SetEccentricAnomaly(double val) {eccentric_anomaly = val;}
78 |
79 | void SetSimEccentricity(double val) { sim_eccentricity = val;} // Set Orbit Parameters
80 | void SetSimSemiMajorAxis(double val) { sim_semi_major_axis = val; }
81 | void SetSimInclination(double val) { sim_inclination = val; }
82 | void SetSimRateOfRightAscension(double val) { sim_right_ascension_node = val; }
83 | void SetSimArgumentOfPerigee(double val) { sim_argument_of_perigee = val; }
84 | void SetSimTrueAnomaly(double val) { sim_true_anomaly = val; }
85 | void SetSimPeriod(double val) { sim_period = val; }
86 |
87 | //Const
88 | const double kMUe = 398600.5; //Earth's gravitational constant (Km^3/s^2)
89 | const double kRe = 6378; // Earth radius (Km)
90 | const double kOMe = 2.0 * M_PI / (3600.0 * 24.0) ; // Earth's rate (rad/sec)
91 | const double kJ2 = 1.082e-3;
92 | const double kg0 = 9.81 ; // m/s
93 |
94 | //Functions
95 | void KeplerianToEci(double time );
96 | double CalcAltitude(double time);
97 | void CalcOrbitParamsFromSV(double time);
98 |
99 |
100 | private:
101 | std::string name;
102 | double eccentricity;
103 | double semi_major_axis;
104 | double inclination;
105 | double rate_of_right_ascension;
106 | double right_ascension_ini;
107 | double argument_of_perigee_ini;
108 | double rate_argument_of_perigee;
109 | double mean_anomaly_ini;
110 | time_t time_pass_perigee;
111 | double s_from_perigee_to_simulation;
112 | double angular_velocity;
113 | double period;
114 | double mean_motion;
115 | double eccentric_anomaly;
116 | double mu_divided_h;
117 | double altitude;
118 |
119 | double sim_eccentricity;
120 | double sim_semi_major_axis;
121 | double sim_inclination;
122 | double sim_right_ascension_node;
123 | double sim_angular_momentum;
124 | double sim_argument_of_perigee;
125 | double sim_true_anomaly;
126 | double sim_period;
127 |
128 | Eigen::Matrix position_eci_ini;
129 | Eigen::Matrix velocity_eci_ini;
130 | Eigen::Matrix lvlh_rotation_to_eci_ini;
131 | Eigen::Matrix position_eci;
132 | Eigen::Matrix velocity_eci;
133 | Eigen::Matrix lvlh_rotation_to_eci;
134 | Eigen::Matrix vel_eph;
135 | Eigen::Matrix ephemeris_rotation_plane;
136 | Eigen::Matrix velocity_plane;
137 | Eigen::Matrix plane_rotation_to_eci;
138 | Eigen::Matrix right_ascension_rotation;
139 | Eigen::Matrix inclination_rotation;
140 | Eigen::Matrix true_anomaly_rotation;
141 |
142 | double CalcEccenAnom(double eccentricity, double MeanAnomaly);
143 | double KeplerStart(double e, double M);
144 | double ThirdOrderApproximation(double e, double M, double x);
145 | void J2Effect();
146 | };
147 |
148 | #endif // ORBIT_H
149 |
--------------------------------------------------------------------------------
/ets_vii/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.0.2)
2 | project(ets_vii)
3 |
4 | ## Compile as C++11, supported in ROS Kinetic and newer
5 | # add_compile_options(-std=c++11)
6 |
7 | ## Find catkin macros and libraries
8 | ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
9 | ## is used, also find other catkin packages
10 | find_package(catkin REQUIRED COMPONENTS
11 | urdf
12 | )
13 |
14 | ## System dependencies are found with CMake's conventions
15 | # find_package(Boost REQUIRED COMPONENTS system)
16 |
17 |
18 | ## Uncomment this if the package has a setup.py. This macro ensures
19 | ## modules and global scripts declared therein get installed
20 | ## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
21 | # catkin_python_setup()
22 |
23 | ################################################
24 | ## Declare ROS messages, services and actions ##
25 | ################################################
26 |
27 | ## To declare and build messages, services or actions from within this
28 | ## package, follow these steps:
29 | ## * Let MSG_DEP_SET be the set of packages whose message types you use in
30 | ## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
31 | ## * In the file package.xml:
32 | ## * add a build_depend tag for "message_generation"
33 | ## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET
34 | ## * If MSG_DEP_SET isn't empty the following dependency has been pulled in
35 | ## but can be declared for certainty nonetheless:
36 | ## * add a exec_depend tag for "message_runtime"
37 | ## * In this file (CMakeLists.txt):
38 | ## * add "message_generation" and every package in MSG_DEP_SET to
39 | ## find_package(catkin REQUIRED COMPONENTS ...)
40 | ## * add "message_runtime" and every package in MSG_DEP_SET to
41 | ## catkin_package(CATKIN_DEPENDS ...)
42 | ## * uncomment the add_*_files sections below as needed
43 | ## and list every .msg/.srv/.action file to be processed
44 | ## * uncomment the generate_messages entry below
45 | ## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)
46 |
47 | ## Generate messages in the 'msg' folder
48 | # add_message_files(
49 | # FILES
50 | # Message1.msg
51 | # Message2.msg
52 | # )
53 |
54 | ## Generate services in the 'srv' folder
55 | # add_service_files(
56 | # FILES
57 | # Service1.srv
58 | # Service2.srv
59 | # )
60 |
61 | ## Generate actions in the 'action' folder
62 | # add_action_files(
63 | # FILES
64 | # Action1.action
65 | # Action2.action
66 | # )
67 |
68 | ## Generate added messages and services with any dependencies listed here
69 | # generate_messages(
70 | # DEPENDENCIES
71 | # std_msgs # Or other packages containing msgs
72 | # )
73 |
74 | ################################################
75 | ## Declare ROS dynamic reconfigure parameters ##
76 | ################################################
77 |
78 | ## To declare and build dynamic reconfigure parameters within this
79 | ## package, follow these steps:
80 | ## * In the file package.xml:
81 | ## * add a build_depend and a exec_depend tag for "dynamic_reconfigure"
82 | ## * In this file (CMakeLists.txt):
83 | ## * add "dynamic_reconfigure" to
84 | ## find_package(catkin REQUIRED COMPONENTS ...)
85 | ## * uncomment the "generate_dynamic_reconfigure_options" section below
86 | ## and list every .cfg file to be processed
87 |
88 | ## Generate dynamic reconfigure parameters in the 'cfg' folder
89 | # generate_dynamic_reconfigure_options(
90 | # cfg/DynReconf1.cfg
91 | # cfg/DynReconf2.cfg
92 | # )
93 |
94 | ###################################
95 | ## catkin specific configuration ##
96 | ###################################
97 | ## The catkin_package macro generates cmake config files for your package
98 | ## Declare things to be passed to dependent projects
99 | ## INCLUDE_DIRS: uncomment this if your package contains header files
100 | ## LIBRARIES: libraries you create in this project that dependent projects also need
101 | ## CATKIN_DEPENDS: catkin_packages dependent projects also need
102 | ## DEPENDS: system dependencies of this project that dependent projects also need
103 | catkin_package(
104 | # INCLUDE_DIRS include
105 | # LIBRARIES ets_vii
106 | # CATKIN_DEPENDS urdf
107 | # DEPENDS system_lib
108 | )
109 |
110 | ###########
111 | ## Build ##
112 | ###########
113 |
114 | ## Specify additional locations of header files
115 | ## Your package locations should be listed before other locations
116 | include_directories(
117 | # include
118 | ${catkin_INCLUDE_DIRS}
119 | )
120 |
121 | ## Declare a C++ library
122 | # add_library(${PROJECT_NAME}
123 | # src/${PROJECT_NAME}/ets_vii.cpp
124 | # )
125 |
126 | ## Add cmake target dependencies of the library
127 | ## as an example, code may need to be generated before libraries
128 | ## either from message generation or dynamic reconfigure
129 | # add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
130 |
131 | ## Declare a C++ executable
132 | ## With catkin_make all packages are built within a single CMake context
133 | ## The recommended prefix ensures that target names across packages don't collide
134 | # add_executable(${PROJECT_NAME}_node src/ets_vii_node.cpp)
135 |
136 | ## Rename C++ executable without prefix
137 | ## The above recommended prefix causes long target names, the following renames the
138 | ## target back to the shorter version for ease of user use
139 | ## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
140 | # set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
141 |
142 | ## Add cmake target dependencies of the executable
143 | ## same as for the library above
144 | # add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
145 |
146 | ## Specify libraries to link a library or executable target against
147 | # target_link_libraries(${PROJECT_NAME}_node
148 | # ${catkin_LIBRARIES}
149 | # )
150 |
151 | #############
152 | ## Install ##
153 | #############
154 |
155 | # all install targets should use catkin DESTINATION variables
156 | # See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html
157 |
158 | ## Mark executable scripts (Python etc.) for installation
159 | ## in contrast to setup.py, you can choose the destination
160 | # catkin_install_python(PROGRAMS
161 | # scripts/my_python_script
162 | # DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
163 | # )
164 |
165 | ## Mark executables for installation
166 | ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html
167 | # install(TARGETS ${PROJECT_NAME}_node
168 | # RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
169 | # )
170 |
171 | ## Mark libraries for installation
172 | ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html
173 | # install(TARGETS ${PROJECT_NAME}
174 | # ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
175 | # LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
176 | # RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
177 | # )
178 |
179 | ## Mark cpp header files for installation
180 | # install(DIRECTORY include/${PROJECT_NAME}/
181 | # DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
182 | # FILES_MATCHING PATTERN "*.h"
183 | # PATTERN ".svn" EXCLUDE
184 | # )
185 |
186 | ## Mark other files for installation (e.g. launch and bag files, etc.)
187 | # install(FILES
188 | # # myfile1
189 | # # myfile2
190 | # DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
191 | # )
192 |
193 | #############
194 | ## Testing ##
195 | #############
196 |
197 | ## Add gtest based cpp test target and link libraries
198 | # catkin_add_gtest(${PROJECT_NAME}-test test/test_ets_vii.cpp)
199 | # if(TARGET ${PROJECT_NAME}-test)
200 | # target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
201 | # endif()
202 |
203 | ## Add folders to be run by python nosetests
204 | # catkin_add_nosetests(test)
205 |
--------------------------------------------------------------------------------
/axis_by_axis/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.0.2)
2 | project(axis_by_axis)
3 |
4 | ## Compile as C++11, supported in ROS Kinetic and newer
5 | # add_compile_options(-std=c++11)
6 |
7 | ## Find catkin macros and libraries
8 | ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
9 | ## is used, also find other catkin packages
10 | find_package(catkin REQUIRED COMPONENTS
11 | roscpp
12 | rospy
13 | std_msgs
14 | )
15 |
16 | ## System dependencies are found with CMake's conventions
17 | # find_package(Boost REQUIRED COMPONENTS system)
18 |
19 |
20 | ## Uncomment this if the package has a setup.py. This macro ensures
21 | ## modules and global scripts declared therein get installed
22 | ## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
23 | # catkin_python_setup()
24 |
25 | ################################################
26 | ## Declare ROS messages, services and actions ##
27 | ################################################
28 |
29 | ## To declare and build messages, services or actions from within this
30 | ## package, follow these steps:
31 | ## * Let MSG_DEP_SET be the set of packages whose message types you use in
32 | ## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
33 | ## * In the file package.xml:
34 | ## * add a build_depend tag for "message_generation"
35 | ## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET
36 | ## * If MSG_DEP_SET isn't empty the following dependency has been pulled in
37 | ## but can be declared for certainty nonetheless:
38 | ## * add a exec_depend tag for "message_runtime"
39 | ## * In this file (CMakeLists.txt):
40 | ## * add "message_generation" and every package in MSG_DEP_SET to
41 | ## find_package(catkin REQUIRED COMPONENTS ...)
42 | ## * add "message_runtime" and every package in MSG_DEP_SET to
43 | ## catkin_package(CATKIN_DEPENDS ...)
44 | ## * uncomment the add_*_files sections below as needed
45 | ## and list every .msg/.srv/.action file to be processed
46 | ## * uncomment the generate_messages entry below
47 | ## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)
48 |
49 | ## Generate messages in the 'msg' folder
50 | # add_message_files(
51 | # FILES
52 | # Message1.msg
53 | # Message2.msg
54 | # )
55 |
56 | ## Generate services in the 'srv' folder
57 | # add_service_files(
58 | # FILES
59 | # Service1.srv
60 | # Service2.srv
61 | # )
62 |
63 | ## Generate actions in the 'action' folder
64 | # add_action_files(
65 | # FILES
66 | # Action1.action
67 | # Action2.action
68 | # )
69 |
70 | ## Generate added messages and services with any dependencies listed here
71 | # generate_messages(
72 | # DEPENDENCIES
73 | # std_msgs
74 | # )
75 |
76 | ################################################
77 | ## Declare ROS dynamic reconfigure parameters ##
78 | ################################################
79 |
80 | ## To declare and build dynamic reconfigure parameters within this
81 | ## package, follow these steps:
82 | ## * In the file package.xml:
83 | ## * add a build_depend and a exec_depend tag for "dynamic_reconfigure"
84 | ## * In this file (CMakeLists.txt):
85 | ## * add "dynamic_reconfigure" to
86 | ## find_package(catkin REQUIRED COMPONENTS ...)
87 | ## * uncomment the "generate_dynamic_reconfigure_options" section below
88 | ## and list every .cfg file to be processed
89 |
90 | ## Generate dynamic reconfigure parameters in the 'cfg' folder
91 | # generate_dynamic_reconfigure_options(
92 | # cfg/DynReconf1.cfg
93 | # cfg/DynReconf2.cfg
94 | # )
95 |
96 | ###################################
97 | ## catkin specific configuration ##
98 | ###################################
99 | ## The catkin_package macro generates cmake config files for your package
100 | ## Declare things to be passed to dependent projects
101 | ## INCLUDE_DIRS: uncomment this if your package contains header files
102 | ## LIBRARIES: libraries you create in this project that dependent projects also need
103 | ## CATKIN_DEPENDS: catkin_packages dependent projects also need
104 | ## DEPENDS: system dependencies of this project that dependent projects also need
105 | catkin_package(
106 | # INCLUDE_DIRS include
107 | # LIBRARIES axis_by_axis
108 | # CATKIN_DEPENDS roscpp rospy std_msgs
109 | # DEPENDS system_lib
110 | )
111 |
112 | ###########
113 | ## Build ##
114 | ###########
115 |
116 | ## Specify additional locations of header files
117 | ## Your package locations should be listed before other locations
118 | include_directories(
119 | # include
120 | ${catkin_INCLUDE_DIRS}
121 | )
122 |
123 | ## Declare a C++ library
124 | # add_library(${PROJECT_NAME}
125 | # src/${PROJECT_NAME}/axis_by_axis.cpp
126 | # )
127 |
128 | ## Add cmake target dependencies of the library
129 | ## as an example, code may need to be generated before libraries
130 | ## either from message generation or dynamic reconfigure
131 | # add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
132 |
133 | ## Declare a C++ executable
134 | ## With catkin_make all packages are built within a single CMake context
135 | ## The recommended prefix ensures that target names across packages don't collide
136 | add_executable(${PROJECT_NAME}_node src/trajectory.cpp)
137 |
138 |
139 | ## Rename C++ executable without prefix
140 | ## The above recommended prefix causes long target names, the following renames the
141 | ## target back to the shorter version for ease of user use
142 | ## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
143 | # set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
144 |
145 | ## Add cmake target dependencies of the executable
146 | ## same as for the library above
147 | add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
148 |
149 | ## Specify libraries to link a library or executable target against
150 | target_link_libraries(${PROJECT_NAME}_node
151 | ${catkin_LIBRARIES}
152 | )
153 |
154 | #############
155 | ## Install ##
156 | #############
157 |
158 | # all install targets should use catkin DESTINATION variables
159 | # See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html
160 |
161 | ## Mark executable scripts (Python etc.) for installation
162 | ## in contrast to setup.py, you can choose the destination
163 | # catkin_install_python(PROGRAMS
164 | # scripts/my_python_script
165 | # DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
166 | # )
167 |
168 | ## Mark executables for installation
169 | ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html
170 | # install(TARGETS ${PROJECT_NAME}_node
171 | # RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
172 | # )
173 |
174 | ## Mark libraries for installation
175 | ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html
176 | # install(TARGETS ${PROJECT_NAME}
177 | # ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
178 | # LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
179 | # RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
180 | # )
181 |
182 | ## Mark cpp header files for installation
183 | # install(DIRECTORY include/${PROJECT_NAME}/
184 | # DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
185 | # FILES_MATCHING PATTERN "*.h"
186 | # PATTERN ".svn" EXCLUDE
187 | # )
188 |
189 | ## Mark other files for installation (e.g. launch and bag files, etc.)
190 | # install(FILES
191 | # # myfile1
192 | # # myfile2
193 | # DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
194 | # )
195 |
196 | #############
197 | ## Testing ##
198 | #############
199 |
200 | ## Add gtest based cpp test target and link libraries
201 | # catkin_add_gtest(${PROJECT_NAME}-test test/test_axis_by_axis.cpp)
202 | # if(TARGET ${PROJECT_NAME}-test)
203 | # target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
204 | # endif()
205 |
206 | ## Add folders to be run by python nosetests
207 | # catkin_add_nosetests(test)
208 |
--------------------------------------------------------------------------------