YARP 3.0.0 (2018-06-11)
YARP 3.0.0 (2018-06-11) Release Notes
A (partial) list of bug fixed and issues resolved in this release can be found
here.
Important Changes
- All YARP libraries can now be modified and distributed under the terms of the
BSD-3-Clause license. See the accompanying LICENSE file for details. - Visual Studio 2013 is no longer supported.
- CMake 3.5 or later is now required.
- Optional dependency on YCM now requires version 0.8.0 or later.
- All the functionalities deprecated before YARP 2.3.72 were removed.
Build System
- The
CREATE_DEVICE_LIBRARY_MODULES
option was renamed
YARP_COMPILE_DEVICE_PLUGINS
and is now enabled by default. - The
CREATE_OPTIONAL_CARRIERS
option was renamed
YARP_COMPILE_CARRIER_PLUGINS
and is now enabled by default. - YARP now accepts the keyboard
COMPONENTS
infind_package(YARP)
calls.
TheYARP_LIBRARIES
variable contains only the libraries corresponding to the
components requested in the lastfind_package(YARP)
call.
If no components are specified, theOS
,sig
,dev
andmath
(only when
enabled) components are searched. - The
YARP_INCLUDE_DIRS
variable is deprecated, as it is handled automatically
by CMake targets. - The
YARP_MATH_LIBRARY
is deprecated.
You can check for YARP_math usingfind_package(YARP COMPONENTS math)
Libraries
YARP_conf
- The
YARP_WRAP_STL_STRING
andYARP_WRAP_STL_STRING_INLINE
are now
always undefined, and they are now considered deprecated.
YARP_OS
- The
shmem
carrier is no longer builtin insideYARP_OS
and it is now a
plugin. - The
Run
class was moved to the new libraryYARP_run
yarp::os::setprogname()
is now deprecated.yarp::os::getprogname()
is now deprecated.yarp::os::SystemInfo::getProcessInfo()
now returns info for current process
when called without arguments.- The methods
yarp::os::Mutex::tryLock()
and
yarp::os::RecursiveMutex::tryLock()
were deprecated in favour of
try_lock()
. ConstString
is now deprecated in favour ofstd::string
.- Replaced
YARP_INT{8,16,32,64}
withstd::int{8,16,32,64}_t
fromcstdint
- Use defines from
cinttypes
instead ofYARP_INT64_FMT
- Add
yarp::conf::float{32,64,128}_t
(128 only if supported) - Add
yarp::conf::ssize_t
- Deprecate
YARP_INT{8,16,32,64}
in favour ofstd::int{8,16,32,64}_t
- Deprecate
YARP_FLOAT{32,64}
in favour ofyarp::conf::float{32,64}_t
- Deprecate
YARP_INT64_FMT
in favour ofPRId64
- Deprecate
YARP_CONF_SSIZE_T
in favour ofyarp::conf::ssize_t
- Add the following methods:
yarp::os::Bottle::addInt{8,16,32,64}()
yarp::os::Bottle::addFloat{32,64}()
yarp::os::Value::{is,as,make}Int{8,16,32,64}()
yarp::os::Value::{is,as,make}Float{32,64}()
yarp::os::ConnectionWriter::appendInt{8,16,32,64}()
yarp::os::ConnectionWriter::appendFloat{32,64}()
yarp::os::ConnectionReader::expectInt{8,16,32,64}()
yarp::os::ConnectionReader::expectFloat{32,64}()
BOTTLE_TAG_INT{8,16,32,64}
(BOTTLE_TAG_INT32
=BOTTLE_TAG_INT
)BOTTLE_TAG_FLOAT{32,64}
(BOTTLE_TAG_FLOAT64
=BOTTLE_TAG_DOUBLE
)
- The following methods are not deprecated due to the large codebase where they
are used, but their usage in new code is discouraged, and it is forbidden
inside YARP.
Anyway, all these methods are now calling the corresponding Int32 and Float64
version, but are not architecture safe, since they still acceptint
and
double
.yarp::os::Bottle::addInt()
yarp::os::Bottle::addDouble()
yarp::os::Value::isInt()
yarp::os::Value::isDouble()
yarp::os::Value::asInt()
yarp::os::Value::asDouble()
yarp::os::Value::makeInt()
yarp::os::Value::makeDouble()
yarp::os::ConnectionWriter::appendInt()
yarp::os::ConnectionWriter::appendDouble()
yarp::os::ConnectionReader::expectInt()
yarp::os::ConnectionReader::expectDouble()
BOTTLE_TAG_INT
BOTTLE_TAG_DOUBLE
- Value constructors are now explicit.
Thread
setOptions()
andsetDefaultStackSize()
are now deprecated and
no longer doing anything.- The
YARP_STACK_SIZE
environment variable is no longer used. Portable::getType()
becamePortable::getType() const
(#1617).PortWriter::getWriteType()
becamePortWriter::getWriteType() const
(#1621).PortReader::getReadType()
becamePortReader::getReadType() const
(#1616).Companion
has been moved to a dedicated library (#1509). As consequences:- Following functions has been moved from
Companion
toNetworkBase
:
disconnectInput
,poll
,sendMessage
,wait
(wait()
has been splitted
into two new functionswaitConnection()
andwaitPort()
. Companion::exists()
has been removed unifying its code with
NetworkBase::exists()
.readString()
function has been deprecated inNetworkBase
.
- Following functions has been moved from
RateThread
has been deprecated in favour of the new classPeriodicThread
.
Note thatRateThread
used the period in msec(int),PeriodicThread
requires the period in sec(double), so remember to consider a x1000 factor
when migrate the code.- Several methods in public interfaces have a slightly different signature (see
#1738 for details). - It is now possible to write a
const Portable
on aPort
. const Bytes
andconst ManagedBytes
can no longer return non-const pointers
to the underlying data.
YARP_dev
- The
serial
device is no longer a plugin, but it is automatically built with
YARP_dev
. - The following devices are no longer built with
YARP_dev
and are now plugins:ServerSoundGrabber
BatteryClient
BatteryWrapper
FrameTransformClient
FrameTransformServer
Localization2DClient
Map2DClient
Map2DServer
Navigation2DClient
Rangefinder2DClient
Rangefinder2DWrapper
- The following headers were removed:
/yarp/dev/DeviceGroup.h
/yarp/dev/DevicePipe.h
/yarp/dev/IKinectDeviceDriver.h
/yarp/dev/IOpenNI2DeviceDriver.h
/yarp/dev/RemoteFrameGrabber.h
/yarp/dev/ServerFrameGrabber.h
/yarp/dev/ServerSerial.h
/yarp/dev/ServerSoundGrabber.h
/yarp/dev/TestMotor.h
/yarp/dev/RemoteFrameGrabberDC1394.h
- A class of interfaces to wrap multiple analog sensors is now available in:
/yarp/dev/MultipleAnalogSensorsInterfaces.h
- The devices
multipleanalogsensorsserver
,multipleanalogsensorsclient
and
multipleanalogsensorsremapper
are available for exposing and accessing the
multiple analog sensors over a network, and for combining multiple devices in
a single device (remapper). - Major changes to IPidControlImpl.cpp to allow conversion of PID gains from
metric to machine units. - Major changes to
TorqueControlImpl
to allow conversion ofbemf
,ktau
parameters from metric to machine units. - Major changes to
ControlBoardHelper
classes, implementation is now contained
in a separate.cpp
file. Removed inline functions. - Added file
PidEnums.h
- Added missing method
setNominalCurrentRaw()
toIAmplifierControl
interface. - Removed all control board interfaces methods e.g.
setTorquePid()
,
setPositionMode()
etc, marked as deprecated since 2.3.70 - In ControlBoardWrapper functions for all joints invoke the equivalent function
for all joints of motion control device. In the previous versions, that
function call the equivalent function single-joint in a for-cicle, so the
function for all joints in motion control devices have never been called.
So please, check the implementation of function for all joints in your motion
control device because now they will be invoked for the fisrt time. - The following classes have been deprecated:
ICalibrateControl2
in favour ofICalibrateControl
.ICalibrateControl2Raw
in favour ofICalibrateControlRaw
.IFrameGrabberControl2
in favour ofIFrameGrabberControl.
FrameGrabberControl2Impl
in favour ofFrameGrabberControlImpl
IControlLimits2
in favour ofIControlLimits
.IControlLimits2Raw
in favour ofIControlLimitsRaw
.ImplementControlLimits2
in favour ofImplementControlLimits
.IControlMode2
in favour ofIControlMode
.IControlMode2Raw
in favour ofIControlModeRaw
.ImplementControlMode2
in favour ofImplementControlMode
.IPositionControl2Raw
in favour ofIPositionControlRaw
.IPositionControl2
in favour ofIPositionControl
.ImplementPositionControl2
in favour ofImplementPositionControl
.IVelocityControl2Raw
in favour ofIVelocityControlRaw
.IVelocityControl2
in favour ofIVelocityControl
.ImplementVelocityControl2
in favour ofImplementVelocityControl
.
IPositionDirectRaw::setPositionsRaw(const int, const int*, double*)
became
IPositionDirectRaw::setPositionsRaw(const int, const int*, const double*)
.IPositionDirect::setPositions(const int, const int*, double*)
became
IPositionDirect::setPositions(const int, const int*, const double*)
(#1351).- The file
yarp/dev/ControlBoardInterfacesImpl.inl
was renamed
yarp/dev/ControlBoardInterfacesImpl-inl.h
- Several methods in public interfaces have a slightly different signature (see
#1738 for details).
YARP_sig
- The file
yarp/sig/IplImage.h
is deprecated, use opencv headers instead. - Added the
yarp::sig::PointCloud
class. See the documentation for details. - if libjpeg is found, namespace yarp::sig::file implements a write method to
save jpeg images.
YARP_manager
- The following headers were removed:
/yarp/manager/ymm-dir.h
libyarpcxx
- The
libyarpcxx
was removed.
YARP_math
- added new utility methods to Quaternion class.
- method toRotationMatrix() has been renamed to toRotationMatrix4x4() to avoid
confusion with method toRotationMatrix3x3(). - operators for
yarp::math::<class>
es have been moved from theyarp::math
to
the global namespace. libYARP_math
is now enabled by default ifEigen3
is found.
YARP_companion
- new library created to isolate the old
yarp::os::Companion
.
Tools
yarpidl_thrift
- Classes generated by yarpidl_thrift now transfer 8/16 bit integers using
8/16 bits instead of 32. This makes it incompatible with YARP 2.
Devices
- The following devices are no longer available in YARP, they will be
available in the
yarp-deprecated-devices
repository:- cuda
- nvidia
- stage
- vfw
- wxsdl
- jrkerr
- urbtc
- kinect
- openni2
- PumaCalibrator
- meiMotionControl
- microphone
- dimax_u2c
New Features
Build System
- It is possible to have coloured output when running CMake, by setting the
CLICOLOR_FORCE=1
environment variable. This is not enabled by default
because it is not GUI friendly.
CMake Modules
YarpPlugin
- Added
OPTION
,DEFAULT
andDOC
options toyarp_begin_plugin_library
.
If the option is disabled, all plugins in the bundle are automatically
disabled. - Removed
VERBOSE
andYarpPlugin_VERBOSE
options toyarp_prepare_plugin
Libraries
- New auto-generated interface libraries for ros messages:
- YARP_rosmsg_std_msgs
- YARP_rosmsg_actionlib_msgs
- YARP_rosmsg_diagnostic_msgs
- YARP_rosmsg_geometry_msgs
- YARP_rosmsg_nav_msgs
- YARP_rosmsg_sensor_msgs
- YARP_rosmsg_shape_msgs
- YARP_rosmsg_stereo_msgs
- YARP_rosmsg_trajectory_msgs
- YARP_rosmsg_visualization_msgs
- YARP_rosmsg_tf
- YARP_rosmsg_tf2_msgs
- YARP_rosmsg (includes all the other rosmsg libraries)
YARP_OS
- yarp::os::Mutex and yarp::os::RecursiveMutex now implement the
C++11 Mutex concept. - Added a Timer class to execute a static or member function in a separate
thread after a period x, every y milliseconds, for z times or w seconds. - Improved performance of tcp and fast_tcp carriers. TCP_NODELAY and TCP_CORK
has been added in theSocketTwoWayStream::open()
, in
SocketTwoWayStream::flush
is disabled and then re-enabled. - Added
ResourceFinder::setDefault()
overloads forint32_t
andfloat64_t
.
YARP_sig
yarp::sig::file::[read|write](ImageOf<PixelFloat>&)
services
refactored to store data in binary formats.
Carriers
mjpeg
carrier is now compatible also with mono images.
Tools
yarpidl_thrift
- Ported to thrift 0.11.0.
yarpdatadumper
- Added option --type image_jpg to save frames as jpeg images.
yarpidl_rosmsg
- Fixed verbose output.
- Added new --no-cache argument.
- Added new --no-index argument.
- Fixed generation when message files are in the msg folder.
- Added new --no-recurse argument. This option can be enabled when using
yarp_idl_to_dir
andyarp_add_idl
, using theNO_RECURSE
argument. - Classes are now in the
yarp::rosmsg
namespace. - Files are now in the
yarp/rosmsg
subfolder. _indexALL.txt
files are generated only for the requested types.- Old style files are still generated if
yarpidl_rosmsg
is not built with
YARP_NO_DEPRECATED
enabled, but they are considered deprecated. - Only required included files are now included.
- Updated YarpIDL to support the new file names in
yarp_add_idl
.
Devices
ControlBoardWrapper
- Added error code in attaching subdevices.
- Added realsense2 device.
Bindings
IMotorEncoders interface bindings
IMotorEncoders
interface methods can be used to directly monitor the motor
shaft position and speed or even to control the motor positions individually
when estimating coupled motors friction parameters.- Added bindings for the interface IMotorEncoders.
The change extends theyarp::dev::PolyDriver
and the
yarp::dev::IMotorEncoders
classes.
Bug Fixes
Libraries
YARP_OS
- Fixed race condition in yarp::os::Nodes.
- An
Int64
value no longer returns true whenisInt()
is called.
GUIs
- Made
yarpdataplayer
able to deal withImageOf<PixelFloat>
also with
OpenCV. - Fixed
yarpdataplayer
image overlapping.
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.72..v3.0.0
):
490 Daniele E. Domenichelli <[email protected]>
242 Nicolò Genesio <[email protected]>
28 Marco Randazzo <[email protected]>
14 Juan G. Victores <[email protected]>
13 Silvio Traversaro <[email protected]>
12 Alberto Cardellino <[email protected]>
12 Valentina Gaggero <[email protected]>
10 Andrea Ruzzenenti <[email protected]>
8 Damiano Enerli <[email protected]>
8 Ugo Pattacini <[email protected]>
6 Nuno Guedelha <[email protected]>
4 Bartek Łukawski <[email protected]>
4 Lorenzo Rapetti <[email protected]>
4 Matteo Brunettini <[email protected]>
2 Claudio Fantacci <[email protected]>
2 Prashanth Ramadoss <[email protected]>
2 Yeshasvi Tirupachuri <[email protected]>
1 Bertrand Higy <[email protected]>
1 Vadim Tikhanoff <[email protected]>