Skip to content

Commit b2c684c

Browse files
author
Peter Soetens
committed
Initial v2.5.0 release notes
Signed-off-by: Peter Soetens <[email protected]>
1 parent 417212f commit b2c684c

File tree

2 files changed

+96
-98
lines changed

2 files changed

+96
-98
lines changed

NEWS

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
The Orocos Real-Time Toolkit v2.4.0
1+
The Orocos Real-Time Toolkit v2.5.0
22
===================================================
33

4-
This is the fourth major release of the RTT 2.x release cycle. It is part of
5-
the Orocos Toolchain v2.4, see http://www.orocos.org/toolchain
4+
This is the fifth major release of the RTT 2.x release cycle. It is part of
5+
the Orocos Toolchain v2.5, see http://www.orocos.org/toolchain
66
for all necessary information.
77

88
*******************************************************************

doc/xml/orocos-rtt-changes.xml

+93-95
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
44
[
55
<!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">
88
]
99
>
1010

@@ -35,6 +35,7 @@
3535
<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>
3636
<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>
3737
<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>
3839
</itemizedlist>
3940
</para>
4041
</section>
@@ -47,41 +48,21 @@
4748
whole toolchain and all your applications in order to use this release.
4849
</para>
4950
<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 &lt;install&gt;/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 &lt;packagename&gt;/lib/ directory.</emphasis>
5354
</para></note>
5455
</listitem>
5556
<listitem>
5657
<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 &lt;rtt/typekit/Types.hpp> // Speeds up compiling components using regular C types
69-
#include &lt;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.
7163
</para>
7264
</listitem>
7365
</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>
8566
</section>
8667
<section>
8768
<title>Improvements</title>
@@ -90,12 +71,41 @@
9071
<itemizedlist>
9172
<listitem>
9273
<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 &lt;package&gt;/install subdirectory</emphasis>
94+
All Orocos Toolchain ROS packages now install in the &lt;orocos-toolchain&gt;/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.
9797
</para>
9898
<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.
99109
</para>
100110
</listitem>
101111
</itemizedlist>
@@ -105,58 +115,62 @@
105115
<itemizedlist>
106116
<listitem>
107117
<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.
110120
</para>
111121
</listitem>
122+
</itemizedlist>
123+
</section>
124+
<section>
125+
<title>Data Types, Toolkits and Typekits</title>
126+
<itemizedlist>
112127
<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>
113131
<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.
115134
</para>
116135
</listitem>
117136
<listitem>
118137
<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.
121138
</para>
122139
</listitem>
123140
</itemizedlist>
124141
</section>
125142
<section>
126-
<title>Data Types, Toolkits and Typekits</title>
143+
<title>Operating Systems</title>
127144
<itemizedlist>
128145
<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.
135149
</para>
136150
</listitem>
137151
<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.
141162
</para>
142163
</listitem>
143-
</itemizedlist>
144-
</section>
145-
<section>
146-
<title>Operating Systems</title>
147-
<itemizedlist>
148164
<listitem>
149165
<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.
154169
</para>
155170
</listitem>
156171
<listitem>
157172
<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.
160174
</para>
161175
</listitem>
162176
</itemizedlist>
@@ -166,8 +180,11 @@
166180
<itemizedlist>
167181
<listitem>
168182
<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.
171188
</para>
172189
</listitem>
173190
</itemizedlist>
@@ -180,64 +197,45 @@
180197
<itemizedlist>
181198
<listitem>
182199
<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
185201
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
187203
</para>
188204
</listitem>
189205
<listitem>
190206
<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.
199209
</para>
200210
</listitem>
201-
</itemizedlist>
202-
</section>
203-
<section>
204-
<title>Deployment</title>
205-
<itemizedlist>
206211
<listitem>
207212
<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 &amp; operations return codes and constants for initializing
215+
ConnectionPolicy objects.
210216
</para>
211217
</listitem>
212218
</itemizedlist>
213219
</section>
214220
<section>
215-
<title>TaskBrowser</title>
221+
<title>Deployment</title>
216222
<itemizedlist>
217223
<listitem>
218224
<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.
225227
</para>
226228
</listitem>
227229
</itemizedlist>
228230
</section>
229231
<section>
230-
<title>Logging Service</title>
232+
<title>Reporting</title>
231233
<itemizedlist>
232234
<listitem>
233235
<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.
241239
</para>
242240
</listitem>
243241
</itemizedlist>

0 commit comments

Comments
 (0)