|
3 | 3 | "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
4 | 4 | [
|
5 | 5 | <!ENTITY orocos "<acronym>Orocos</acronym>">
|
6 |
| -<!ENTITY oldversion "2.3"> |
7 |
| -<!ENTITY version "2.4"> |
| 6 | +<!ENTITY oldversion "2.4"> |
| 7 | +<!ENTITY version "2.5"> |
8 | 8 | ]
|
9 | 9 | >
|
10 | 10 |
|
|
35 | 35 | <listitem><para><ulink url="http://www.orocos.org/stable/documentation/rtt/v2.1.x/doc-xml/orocos-rtt-changes.html">Toolchain 2.1 Changes</ulink></para></listitem>
|
36 | 36 | <listitem><para><ulink url="http://www.orocos.org/stable/documentation/rtt/v2.2.x/doc-xml/orocos-rtt-changes.html">Toolchain 2.2 Changes</ulink></para></listitem>
|
37 | 37 | <listitem><para><ulink url="http://www.orocos.org/stable/documentation/rtt/v2.3.x/doc-xml/orocos-rtt-changes.html">Toolchain 2.3 Changes</ulink></para></listitem>
|
| 38 | + <listitem><para><ulink url="http://www.orocos.org/stable/documentation/rtt/v2.4.x/doc-xml/orocos-rtt-changes.html">Toolchain 2.4 Changes</ulink></para></listitem> |
38 | 39 | </itemizedlist>
|
39 | 40 | </para>
|
40 | 41 | </section>
|
|
47 | 48 | whole toolchain and all your applications in order to use this release.
|
48 | 49 | </para>
|
49 | 50 | <note><para>
|
50 |
| - <emphasis>Take care that all previously built components and plugins in the lib/orocos directory and subdirectories |
51 |
| - are removed, since the deployment/plugin logic may want to load it. Especially on 'ROS' systems, which have |
52 |
| - such files in their lib/ directory.</emphasis> |
| 51 | + <emphasis>Take care that all previously built components and plugins in the <install>/lib/orocos directory and subdirectories |
| 52 | + are removed, since the plugin loader may not find older versions. Especially on 'ROS' systems, which have |
| 53 | + such files in their <packagename>/lib/ directory.</emphasis> |
53 | 54 | </para></note>
|
54 | 55 | </listitem>
|
55 | 56 | <listitem>
|
56 | 57 | <para>
|
57 |
| - There are issues with plugin loading on the Mac OS-X platform which might have been fixed |
58 |
| - with this release. We invite Mac users to test the Orocos toolchain on their platform and |
59 |
| - to submit bug reports if some functionality does not work. |
60 |
| - </para> |
61 |
| - </listitem> |
62 |
| - <listitem> |
63 |
| - <para> |
64 |
| - We have confirmed reports of compilation time regressions when using GCC. We are looking into reducing them. |
65 |
| - You can speed-up compilation times of components by including the 'Types.hpp' files of the typekits you |
66 |
| - are using in data ports, properties or operations. For example: |
67 |
| - <programlisting> |
68 |
| - #include <rtt/typekit/Types.hpp> // Speeds up compiling components using regular C types |
69 |
| - #include <geometry_msgs/typekit/Types.hpp> // Speeds up compiling ROS geometry message types (depends on rtt_ros_integration_geometry_messages) |
70 |
| -</programlisting> |
| 58 | + You can only attach one callback to an EvenPort, during the addEventPort() function call. |
| 59 | + If you need multiple call-backs, you need to call these yourself from the function you've |
| 60 | + provided to addEventPort(). In this regard, the port->getNewDataOnPortEvent() call has |
| 61 | + been removed. You can enable it by defining ORO_SIGNALLING_PORTS in the cmake |
| 62 | + configuration step, but this feature will be removed eventually. |
71 | 63 | </para>
|
72 | 64 | </listitem>
|
73 | 65 | </itemizedlist>
|
74 |
| - <section> |
75 |
| - <title> |
76 |
| - <emphasis>Changes in rtt/os/oro_atomic.h atomics headers</emphasis> |
77 |
| - </title> |
78 |
| - <para> |
79 |
| - The atomic operations have been refactored in order to suit future maintainability. |
80 |
| - The GCC-specific implementations have been rewritten in order to use the intrinsics. |
81 |
| - For this, the oro_atomic.h and oro_system.h headers were removed and a new header, |
82 |
| - oro_arch.h is in place for each target to implement the required atomics. |
83 |
| - </para> |
84 |
| - </section> |
85 | 66 | </section>
|
86 | 67 | <section>
|
87 | 68 | <title>Improvements</title>
|
|
90 | 71 | <itemizedlist>
|
91 | 72 | <listitem>
|
92 | 73 | <para>
|
93 |
| - <emphasis>Building of executables on ROS systems using the UseOrocos cmake macros |
94 |
| - has been improved such that <command>rosrun</command> will no longer offer two options. |
95 |
| - If you upgrade OCL in-tree, In order to delete the old executables, use <command>git clean -xdf</command> |
96 |
| - and then rebuild.</emphasis> |
| 74 | + <emphasis>Switching between OROCOS_TARGET configurations is now more robust.</emphasis> |
| 75 | + In environments where multiple OROCOS_TARGET are possible (for example xenomai/gnulinux), |
| 76 | + the OROCOS_TARGET environment variable can be set and will be picked up by the UseOrocos.cmake |
| 77 | + macros. |
| 78 | + </para> |
| 79 | + </listitem> |
| 80 | + <listitem> |
| 81 | + <para> |
| 82 | + <emphasis>ROS_ROOT is no longer influencing your build, unless you're in a ROS_PACKAGE_PATH</emphasis> |
| 83 | + In &oldversion;, the build system would switch to ROS-style if the user had defined the |
| 84 | + ROS_ROOT environment variable. In &newversion;, the build system will only switch if the |
| 85 | + package being built is a ROS package, ie, it is underneath the ROS_PACKAGE_PATH. |
| 86 | + </para> |
| 87 | + <para> |
| 88 | + This allows better integration with AutoProj. |
| 89 | + </para> |
| 90 | + </listitem> |
| 91 | + <listitem> |
| 92 | + <para> |
| 93 | + <emphasis>ROS package builds no longer install in a <package>/install subdirectory</emphasis> |
| 94 | + All Orocos Toolchain ROS packages now install in the <orocos-toolchain>/install directory. |
| 95 | + As such both ROS and non-ROS builds have the same directory layout. You can still use 'rosrun' |
| 96 | + to run an OCL program, since these are still available in the package as well. |
97 | 97 | </para>
|
98 | 98 | <para>
|
| 99 | + This allows better integration with AutoProj. |
| 100 | + </para> |
| 101 | + </listitem> |
| 102 | + <listitem> |
| 103 | + <para> |
| 104 | + <emphasis>RTT builds with clang++ 2.9</emphasis> |
| 105 | + This allows you to speed up RTT builds significantly. |
| 106 | + </para> |
| 107 | + <para> |
| 108 | + This allows better integration with AutoProj. |
99 | 109 | </para>
|
100 | 110 | </listitem>
|
101 | 111 | </itemizedlist>
|
|
105 | 115 | <itemizedlist>
|
106 | 116 | <listitem>
|
107 | 117 | <para>
|
108 |
| - The data flow port implementation has been optimized in order to reduce the number of copies to a |
109 |
| - minimum. |
| 118 | + An important fix was applied when two or more output ports were connected to one |
| 119 | + input port, which led to dropping data samples from time to time. |
110 | 120 | </para>
|
111 | 121 | </listitem>
|
| 122 | + </itemizedlist> |
| 123 | + </section> |
| 124 | + <section> |
| 125 | + <title>Data Types, Toolkits and Typekits</title> |
| 126 | + <itemizedlist> |
112 | 127 | <listitem>
|
| 128 | + <para> The Typekits now support fixed size arrays better. Especially, there is no need anymore for having |
| 129 | + one typekit for each size of an array. The ROS fixed-size array implementation in Electric makes use of |
| 130 | + this feature.</para> |
113 | 131 | <para>
|
114 |
| - There are fixes for the serialization of complex properties (structs and sequences) into the XML file format. |
| 132 | + For this, there was some class-reordering in the TypeInfo hierarchy, but it should remain transparant |
| 133 | + for existing users. |
115 | 134 | </para>
|
116 | 135 | </listitem>
|
117 | 136 | <listitem>
|
118 | 137 | <para>
|
119 |
| - A bug in the Signal implementation lead to a segfault when removing an event port from a TaskContext. |
120 |
| - This has been fixed. |
121 | 138 | </para>
|
122 | 139 | </listitem>
|
123 | 140 | </itemizedlist>
|
124 | 141 | </section>
|
125 | 142 | <section>
|
126 |
| - <title>Data Types, Toolkits and Typekits</title> |
| 143 | + <title>Operating Systems</title> |
127 | 144 | <itemizedlist>
|
128 | 145 | <listitem>
|
129 |
| - <para> The <classname>RTT::rt_string</classname> type has been added to the type system, |
130 |
| - allowing real-time string manipulations in scripts. It has the same featureset as the std string |
131 |
| - type, but uses the real-time memory allocators. You can create an rt_string as such: |
132 |
| - <programlisting> var rt_string test = rt_string("Testit!") </programlisting> |
133 |
| - You can pass an rt_string where is a string is expected and the other way around. Creating |
134 |
| - the rt_string will always be hard real-time. |
| 146 | + <para> |
| 147 | + There were the usual fixes for new compilers or header locations for |
| 148 | + all Operating Systems: Linux, Mac OS-X and Win32. |
135 | 149 | </para>
|
136 | 150 | </listitem>
|
137 | 151 | <listitem>
|
138 |
| - <para> The Posix MQueue transport for flow ports is now supported through orogen/typegen |
139 |
| - using a generic transport plugin. It relies on the type specific typelib transport, which is generated |
140 |
| - automatically when you use orogen/typegen. The traditional MQueue transport remains in place as well. |
| 152 | + <para> |
| 153 | + The CPU affinity Thread function for Xenomai is implemented but not yet stable. We |
| 154 | + are delving into this but already provide it to allow more testing. |
| 155 | + </para> |
| 156 | + </listitem> |
| 157 | + <listitem> |
| 158 | + <para> |
| 159 | + Xenomai threads now run with a default stack size of 128kb, instead of 32kb. This may still |
| 160 | + be too little if you have scripts which load scripts or have heavy stack use. In that case, |
| 161 | + use the <classname>RTT::os::Thread</classname>::setStackSize function before creating a new Thread/Activity. |
141 | 162 | </para>
|
142 | 163 | </listitem>
|
143 |
| - </itemizedlist> |
144 |
| - </section> |
145 |
| - <section> |
146 |
| - <title>Operating Systems</title> |
147 |
| - <itemizedlist> |
148 | 164 | <listitem>
|
149 | 165 | <para>
|
150 |
| - It's now possible to set CPU Affinity when creating an activity or a thread. If your |
151 |
| - OS abstraction supports it, changing the affinity at run-time is possible too. Currently, |
152 |
| - this is only implemented for gnulinux targets. On other targets, setCPUAffinity() will have |
153 |
| - no effect, until their OS interface makes use of it. |
| 166 | + The Xenomai main() thread now runs with priority 0 instead of 10. Since this is the |
| 167 | + thread which is doing all the setup work, it shouldn't have defaulted |
| 168 | + to a real-time priority. |
154 | 169 | </para>
|
155 | 170 | </listitem>
|
156 | 171 | <listitem>
|
157 | 172 | <para>
|
158 |
| - As of this version, Orocos will use the GCC intrinsics API in order to implement atomic |
159 |
| - operations on data, when GCC 4.1.0 or newer is available. |
| 173 | + There have been a bunch of patches for Mac OS-X, but more testing is still necessary. |
160 | 174 | </para>
|
161 | 175 | </listitem>
|
162 | 176 | </itemizedlist>
|
|
166 | 180 | <itemizedlist>
|
167 | 181 | <listitem>
|
168 | 182 | <para>
|
169 |
| - There were fixes in the parsing of the assignment operator. Especially the case a = b = c |
170 |
| - has now been fixed. |
| 183 | + RTT script functions can now be decorated with 'global', 'local' and 'export'. 'local' is the |
| 184 | + default and keeps a function local to the scripting service. 'export' attaches the script |
| 185 | + function to the interface of the component it belongs to. 'global' puts the function in |
| 186 | + the GlobalService, such that other scripts in other components can use it directly, without |
| 187 | + the need to refer to a component. |
171 | 188 | </para>
|
172 | 189 | </listitem>
|
173 | 190 | </itemizedlist>
|
|
180 | 197 | <itemizedlist>
|
181 | 198 | <listitem>
|
182 | 199 | <para>
|
183 |
| - Release 2.4.0 now has Lua 1.0-beta3, providing an as-good-as-stable API for creating |
184 |
| - and using components and applications. A <ulink |
| 200 | + Consult the <ulink |
185 | 201 | url="http://www.orocos.org/wiki/orocos/toolchain/orocostoolchainluacookbook">LuaCookbook</ulink>
|
186 |
| - has been put online which is updated regularly. |
| 202 | + for the latest changes |
187 | 203 | </para>
|
188 | 204 | </listitem>
|
189 | 205 | <listitem>
|
190 | 206 | <para>
|
191 |
| - You are now allowed to write: |
192 |
| - <programlisting> tc:provides():setPeriod( 0.01 ) -- calls operation immediately </programlisting> |
193 |
| - instead of: |
194 |
| - <programlisting> op = tc:provides():getOperation("setPeriod") -- 'getOperation syntax' |
195 |
| - op(0.01) -- calls 'setPeriod'</programlisting> |
196 |
| - Both forms for calling operations is supported. The former is convenient, but may be slower, |
197 |
| - the latter can be used in loops where the operation is first stored and then called with an |
198 |
| - argument later on. |
| 207 | + The TLSF branch of Lua has been merged, which will allow hard real-time script execution in the near |
| 208 | + future. Further minor releases will pollish this feature more. |
199 | 209 | </para>
|
200 | 210 | </listitem>
|
201 |
| - </itemizedlist> |
202 |
| - </section> |
203 |
| - <section> |
204 |
| - <title>Deployment</title> |
205 |
| - <itemizedlist> |
206 | 211 | <listitem>
|
207 | 212 | <para>
|
208 |
| - You can now kickOut any component, also if it was created using a script. A bug was fixed |
209 |
| - which did not shut down components which were not loaded using XML. |
| 213 | + Your scripts have now access to the RTT globals using the <programlisting>rtt.globals</programlisting> |
| 214 | + table. These are the scheduler types, data flow & operations return codes and constants for initializing |
| 215 | + ConnectionPolicy objects. |
210 | 216 | </para>
|
211 | 217 | </listitem>
|
212 | 218 | </itemizedlist>
|
213 | 219 | </section>
|
214 | 220 | <section>
|
215 |
| - <title>TaskBrowser</title> |
| 221 | + <title>Deployment</title> |
216 | 222 | <itemizedlist>
|
217 | 223 | <listitem>
|
218 | 224 | <para>
|
219 |
| - Allows to display all values in hex format using the .hex taskbrowser command. |
220 |
| - </para> |
221 |
| - </listitem> |
222 |
| - <listitem> |
223 |
| - <para> |
224 |
| - Tab-completion on services has been fixed. Properties did not show up. |
| 225 | + There is a new operation called 'setActivityOnCPU' which takes an affinity parameter |
| 226 | + as well. |
225 | 227 | </para>
|
226 | 228 | </listitem>
|
227 | 229 | </itemizedlist>
|
228 | 230 | </section>
|
229 | 231 | <section>
|
230 |
| - <title>Logging Service</title> |
| 232 | + <title>Reporting</title> |
231 | 233 | <itemizedlist>
|
232 | 234 | <listitem>
|
233 | 235 | <para>
|
234 |
| - A new logger for logging to Apache ChainSaw has been added, the |
235 |
| - <classname>OCL::logging::Log4cxxAppender</classname> component. You need ChainSaw running before |
236 |
| - your application starts in order to see the log events in the GUI. Any number of |
237 |
| - applications in your network may log to ChainSaw. For more details about logging in |
238 |
| - Orocos, see the <ulink |
239 |
| - url="http://www.orocos.org/wiki/rtt/rtt-20/real-time-logging/using-real-time-logging"> |
240 |
| - LoggingService wiki page</ulink>. |
| 236 | + The reporting component has been rewritten such that it behaves consistently. When |
| 237 | + being periodic, it will sample all input ports at the frequency it runs. When being |
| 238 | + triggered, it will log the ports which have new data. |
241 | 239 | </para>
|
242 | 240 | </listitem>
|
243 | 241 | </itemizedlist>
|
|
0 commit comments