YARP 2.3.68
YARP 2.3.68 (2016-11-28) Release Notes
A (partial) list of bug fixed and issues resolved in this release can be found
here.
Important Changes
Dependencies
- Readline library is no longer used and was replaced with the NetBSD Editline
library (libedit-dev on debian/ubuntu). - YCM 0.2.2 is now an optional dependency.
YARP_OS
- The yarp::os::Contact class was widely refactored:
- The add_() methods are now deprecated. The new set_() methods should be used
instead. - The by*(), invalid() and empty() factory methods are now deprecated. The
class constructors should be used instead (a few new constructors were added
to allow this). - The byConfig() method is now deprecated. fromConfig() should be used
instead. - The Contact::toURI() method now accepts an includeCarrier parameter (true by
default) to simplify the generation of the URI without the carrier.
Moreover the string returned always end with a/
character. - ROS integration was heavily improved and it is now possible to register
onePublisher
and oneSubscriber
on the sameNode
using the same
topic, and to use tools likeroswtf
andrqt
.
If you are using YARP with ROS, upgrading is strongly recommended. - Added
ConnectionReader::setParentConnectionReader
method. This method
should be used byCarriers
that reimplementmodifyIncomingData
and that
return a ConnectionReader that is not the same as the one in input.
- The add_() methods are now deprecated. The new set_() methods should be used
PortCore
now uses the "new" version of the protocol for signalling to
suppress the reply. This was expected since YARP 2.1.2, but it was never
applied. Both versions of the protocol are accepted in input, unless
YARP_NO_DEPRECATED
is enabled, in this case YARP it is not compatible with
previous releases since only the new version is recognized.- It is now possible to get and set parameters to portmonitors directly attached
to a port.
YARP_sig
- Important: we removed methods for interoperability with the GNU Scientific
Library (GSL).
The reason for this was to avoid licensing problems generated by the inclusion
of a structure defined by GSL. Methods for interoperability have been
implemented in a new library libYARP_gsl (see below). In details:- We removed yarp::sig::Matrix::getGslMatrix()
- We removed yarp::sig::Vector::getGslVector()
YARP_dev
- New depth camera stack, device driver interface and wrapper. The old
interfaces and devices will be deprecated in the next release, when all the
features will be ported to the new stack.
YARP_gsl
- This library contains methods for interoperability with the GNU Scientific
Library. Notice that this library is released as GPL (and not LGPL) because it
uses a structure defined by GSL.- Checkout yarp::gsl::GslMatrix and yarp::gsl::GslVector
YARP_math
- libYARP_math can be compiled with GSL or Eigen (via CMake flag
CREATE_LIB_MATH_USING_GSL
). Important: the use of GSL and this flag will be
removed in the next release of YARP.- When compiled with GSL libYARP_math uses libYARP_gsl internally. A small
performance hit could affect methods that use GSL. - When compiled without GSL libYARP_math uses Eigen.
- When compiled with GSL libYARP_math uses libYARP_gsl internally. A small
- The option to link Atlas library has been broken for a while, and therefore it
was removed. On debian/ubuntu it is still possible to use the atlas library by
installing thelibatlas-base-dev
package, and useupdate-alternatives
to
configure the alternatives forlibblas.so
,libblas.so.3
,liblapack.so
,
andliblapack.so.3
CMake Modules
- All deprecated CMake modules have been removed.
- All GTK2 CMake modules have been removed and are no longer installed in
${YARP_MODULE_PATH}
. They can still be found in
YCM. - The
FindReadline
module has been removed. - The
FindAtlas
module has been removed. - The
YarpPlugin
module and the relative templates received several
improvements and fixes:yarp_prepare_plugin
no longer include any directory or namespace.
As a consecuence, it might be necessary to fix theTYPE
for plugins adding
the full namespace to the class name, and to add the current directory to
CMake include directories.yarp_prepare_carrier
andyarp_prepare_device
are deprecated in favour
ofyarp_prepare_plugin
.- The new
TEMPLATE
andTEMPLATE_DIR
accepted byyarp_prepare_plugin
can be used to specify a file name and a directory for the template that
will be configured and added to the plugin. If a template is not specified,
a fileyarp_plugin_<CATEGORY>.cpp.in
is searched in current directory, in
CMake module path, and in YARP cmake modules directory. If still it cannot
be found, but thePARENT_TYPE
argument, containing the name of the parent
class for the plugin, was specified, then a default template is generated in
current binary directory. This should simplify the creation of new types of
plugins. Please note that static plugins will not work with the default
template. - The
CODE
andWRAPPER
arguments for theyarp_prepare_plugin
command are
deprecated, the newEXTRA_CONFIG
argument should be used instead.
Each variable in the formKEY=VALUE
passed to theEXTRA_CONFIG
argument
is changed toYARPPLUG_<KEY>
and used when the template is configured.
For exampleEXTRA_CONFIG WRAPPER=foo
generates theYARPPLUG_WRAPPER
variable that is then replaced in theyarp_plugin_device.cpp.in
. - The
DEFAULT
argument for theyarp_prepare_plugin
can be used to specify
whether the plugin should be enabled by default or not (default = OFF). - The
ADVANCED
option for theyarp_prepare_plugin
can be used to specify
that the generated CMake variable should be marked as advanced
(default = OFF). - The
INTERNAL
option for theyarp_prepare_plugin
can be used to specify
that the generated CMake variable should be marked as internal (and
therefore not displayed in CMake gui). This also impliesDEFAULT=ON
unless
explicitly specified. - The
DOC
argument for theyarp_prepare_plugin
can be used to specify a
documentation line for the generated CMake variable. - The
OPTION
argument for theyarp_prepare_plugin
can be used to rename
the generated CMake option. - The
DEPENDS
argument for theyarp_prepare_plugin
can be used to specify
a list of dependencies that should be satisfied in order to enable the
plugin. If these dependencies are not available, the plugin is disabled, and
the generated CMake option is not shown on CMake.
- All CMake modules from YCM, CMake, and private are now deprecated, and are
installed only ifYARP_NO_DEPRECATED
isOFF
. Projects that require these
files should depend on YCM instead.
Tools
yarpserver2
andyarpserver3
have been deprecated for a long time, and
replaced byyarpserver
, therefore they have been removed. Please update your
scripts
GUIs
- All GTK2 GUIs have a Qt5 replacement and have been deprecated since YARP
2.3.65, therefore they have been removed. yarpmanager++
andyarpbuilder
no longer exists,yarpmanager
now includes
all the builder functionality.
Devices
- The
microphone
device is deprecated in favour ofportaudio
(#891). - The new
depthCamera
camera driver implements theIRGBD
and
FrameGrabberControl2
interfaces, and works with the devices supported by
openni2
.
Bug Fixes
YARP_OS
- Fixed some cases of connections leaving a streaming connection pending.
- Support dynamic plugins when YARP is built without ACE.
- Fixed several possible race conditions in
yarp::os::Thread
. getBusInfo
ROS command was implemented.getMasterUri
ROS command was implemented.getPid
ROS command was fixed and now returns just one integer instead of a
vector.- The right caller_id is returned by
PortCore
forpublisherUpdate
and
requestTopic
ROS commands. - The right caller_id is returned by the tcpros carrier.
yarp::os::Node
now handles correctly multiple publishers and subscribers on
the same topic. The limit on YARP is that only one publisher and one
subscriber can be registered on the same node using the same topic.- The
Carriers
class was moved outside of the impl namespace (#402). - Fixed crash on prop get command from admin rpc port (#969).
Carriers
- Fixed portmonitor and bayer carriers not handling envelope correctly when
attached on the receiving side (#729, #782, #909).
Devices
RemoteControlBoard
- Fixed race condition.
ControlBoardWrapper
- Fixed bug in setRemoteVariable`
- Fixed value not initialized in
CheckMotionDone
fakeMotionControl
controlboardwrapper2
is now used as default wrapper instead of
controlboard
and is no longer erroneously reported as deprecated.
GUIs
- yarpmanager
- Fixed yarpmanager cannot display and disconnect mjpeg connections
(#595).
- Fixed yarpmanager cannot display and disconnect mjpeg connections
- yarplogger
- Fixed segfault when the logger receives a malformed log message.
New Features
YARP_OS
- Improved PortCore
list [in|out]
commands
They also return now:(connectionless 1)
when the connection is connectionless (i.e. udp).(push 0)
when the connection is not push (i.e. mjpeg).
- Improved Portcore
[prop] [get] $portname
command.
It also returns now some more information about the port in this form:
(port ((is_input [0|1]) (is_output [0|1]) (is_rpc [0|1]) (type "[type]")))
- Improved compiler detection and added <yarp/conf/compiler.h> header
containing macros to check if a specific feature is available. - Added method
yarp::os::Thread::yield()
that reschedules the execution of
current thread, allowing other threads to run. - Added method
yarp::os::Contactable::resetReporter()
to remove the
PortReport
set bysetReporter()
.
YARP_math
- Added the
yarp::math::FrameTransform
class.
YARP_dev
- Added the
yarp::dev::IDepthSensor
andyarp::dev::IRGBDSensor
interfaces. - Added the `yarp::dev::IFrameTransform.h interface.
- Added the
transformServer
andtransformClient
devices.
Carriers
- Added
depthimage
portmonitor plugin.
Devices
- The
ControlBoardRemapper
andRemoteControlBoardRemapper
devices were
introduced that is a state-less and thread-less YARP device that takes axes
belonging to several controlboards and expose them as a unique controlboard
device. - The
RGBDSensorClient
andRGBDSensorWrapper
devices were added. - Rangefinder2DWrapper: use timetamp from device driver.
- The
fakeAnalogSensor
has been introduced to easily test and as a reference
for new analogSensor devices. It has only one channel sending timestamp as
data.
GUIs
- yarpmanager
- Use service tag from module description to add as input/output
service port. - It's now possible to set environment variables within application xml file.
- Use service tag from module description to add as input/output
- yarpmotorgui
- Command "Save all joints" from main menu now open a single dialog
box (#912) and propagates file name to all parts.
- Command "Save all joints" from main menu now open a single dialog
Contributors
This is a list of people that contributed to this release (generated from the
git history using git shortlog -ens --no-merges v2.3.68..v2.3.68
):
430 Daniele E. Domenichelli <daniele.domenichelli@iit.it>
49 Andrea Ruzzenenti <andrea.ruzzenenti@iit.it>
47 Marco Randazzo <marco.randazzo@iit.it>
44 Alberto Cardellino <Alberto.Cardellino@iit.it>
41 Silvio Traversaro <silvio.traversaro@iit.it>
34 Tobias Fischer <t.fischer@imperial.ac.uk>
16 Francesco Romano <francesco.romano@iit.it>
13 Claudio Fantacci <claudio.fantacci@iit.it>
12 Alberto Cardellino <alberto.cardellino@iit.it>
10 Lorenzo Natale <lorenzo.natale@iit.it>
10 Matteo Brunettini <matteo.brunettini@iit.it>
9 Ugo Pattacini <ugo.pattacini@iit.it>
8 Vadim Tikhanoff <vadim.tikhanoff@iit.it>
7 Alexandros Paraschos <paraschos@ias.tu-darmstadt.de>
6 Ali Paikan <ali.paikan@iit.it>
3 Giovanni Saponaro <gsaponaro@isr.ist.utl.pt>
1 Claudia Latella <claudia.latella.86@gmail.com>
1 Gabriele Nava <gabriele.nava@mail.polimi.it>
1 Plinio Moreno <plinio@isr.tecnico.ulisboa.pt>
1 Valentina Gaggero <valentina.gaggero@iit.it>
1 YARP Developers <yarp0-devel@lists.sourceforge.net>