You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A (partial) list of bug fixed and issues resolved in this release can be found here.
Important Changes
Dependencies
SWIG 4 or later is now required to build YARP bindings
CMake 3.16 or later is now required
A compiler that supports C++17 is now required
Deprecation and Behaviour Changes
Devices
Deprecation of the devices replaced by NWS/NWC was postponed to the next
release.
The following devices will be replaced by NWS/NWC in the next release, and
print a warning when opened:
localization2DClient (replaced by localization2D_nwc_yarp)
map2DClient (replaced by map2D_nwc_yarp)
navigation2DServer (replaced by navigation2D_nws_yarp)
New Features
Libraries
conf
The YARP_VERSION_COMPARE macro has been added to version.h to simplify how
YARP versions are compared e.g. in #if guards. For instance, the condition #if YARP_VERSION_COMPARE(>=, 3, 6, 0) will yield true if the current YARP
version is equal to or greater than 3.6.0.
os
Added CommandBottle class.
This is a class that contains both the command and the reply.
The only advantage of this class compared to using two bottles is that
portmonitors are able to know, in the updateReply method, what was the
request for the reply received.
Log
In addition to the previously supported std::vector, it is now also possible
to call yInfo() << collection where the collection is a std::array, std::list, std::set, std::map, C-array, std::tuple...
Added the new family of logging macros with "Id" (yIDebug).
See [documentation](
ef yarp_logging).
The YARP_LOG_PROCESS_LABEL environment variable is now checked when output
is forwarded. If found, the label is appended to the executable name in the
log port name e.g. (/log/hostname/yarpdev[mylabel]/123123)
ConnectionWriter
Replaced getBuffer with const/non-const versions
ConnectionReader
flushWriter is now an interface method.
idl/WireReader
Added getReader() method.
idl/WireWriter
Flush the connection when the object is destroyed.
sig
Added new method yarp::sig::soundfilters::resample() contained in the new
header file yarp/sig/SoundFilters.h.
dev
Added new interfaces:
yarp::dev::IJointFault.
yarp::dev::Nav2D::IOdometry2D.
DeviceDriver
Added id() and setId() methods
PolyDriver
The device id can be set passing the id option to the open method (or
passing --id to yarpdev).
Nav2D::INavigation2DVelocityActions
applyVelocityCommand() method was moved from yarp::dev::Nav2D::INavigation2DTargetActions to a new interface yarp::dev::Nav2D::INavigation2DVelocityActions.
Nav2D::MapGrid2D
Added internal lossless compression for datatype yarp::dev::Nav2D::MapGrid2D using Zlib: the methods yarp::os::Portable::write() and yarp::os::Portable::read() handle the
compression before sending data to the network.
The method MapGrid2D::enable_map_compression_over_network() enables/disables
the data compression over the network (default true).
If the Zlib library is not available, compression will be disabled.
Nav2D::Map2DArea
Added new method Map2DArea::getCentroid().
Added new description field which can now be filled by the user for generic
purposes.
Nav2D::Map2DLocation
Added new description field which can now be filled by the user for generic
purposes.
Nav2D::Map2DPath
Added new description field which can now be filled by the user for generic
purposes.
INavigation2D interface now derives from IMap2D interface
Devices
Most of the clients/nwcs now implement the option carrier to set the carrier
for the connection with the server.
Added the following new EXPERIMENTAL devices:
rpLidar3 that supports the 3rd revision of the rpLidar hardware.
fakeOdometry that generates a fake odometry and makes it available from IOdometry2D interface.
fakePositionSensor that simulate a position sensor and makes it available
through the IPositionSensors and IOrientationSensors interfaces.
Added more EXPERIMENTAL devices in order to implement the Network Wrapper
Server/Client Architecture described in
ef nws_and_nwc_architecture.
These devices do not implement internal logic, therefore they might need to be
used together with a different device.
This architecture and all these devices are to be considered experimental,
and may be modified/renamed/removed at any time without any notice.
localization2D_nwc_yarp: YARP NWS which connects to localization2D_nws_yarp: and can be used to replace localization2DClient
map2D_nwc_yarp YARP NWS which connects to map2D_nws_yarp and can be used
to replace map2DClient
mobileBaseVelocityControl_nws_yarp: YARP NWS to control the velocity of a
mobile base.
mobileBaseVelocityControl_nwc_yarp: YARP NWC to control the velocity of a
mobile base.
mobileBaseVelocityControl_nws_ros: ROS NWS to control the velocity of a
mobile base.
navigation2D_nws_yarp: YARP NWS that can be used to replace navigation2DServer.
navigation2D_nwc_yarp: YARP NWC that connects to map2D_nws_yarp, localization2D_nws_yarp and navigation2D_nws_yarp.
odometry2D_nws_yarp: YARP NWS which can be attached to a IOdometry2D
interface and publish the data on a YARP port.
odometry2D_nws_ros: ROS NWS which can be attached to a IOdometry2D
interface and publish the data on a ROS topic.
fakeLaser
Can now be connected to localization2D_nwc_yarp instead of localization2DClient
frameTransformServer
Added the option to use an extern xml file (by providing its absolute path).
frameTransformClient
Added the option to use an extern xml file (by providing its absolute path).
Extra debug information is now printed when parameter FrameTransform_verbose_debug is set to 1.
All xml files now expose the parameter FrameTransform_verbose_debug
(default = 0)
frameTransformContainer
Extra debug information is now printed when parameter FrameTransform_verbose_debug is set to 1.
All xml files now expose the parameter FrameTransform_verbose_debug
(default = 0)
map2DStorage
The new v3 file format, which includes the description for Map2DLocation, Map2DArea and Map2DPath is now supported.
map2DServer
Added rpc command enable_maps_compression <0/1>
remote_controlboard
The IJointFault device is now implemented by the device.
controlBoard_nws_yarp
The IJointFault device is now implemented by the device.
controlboardremapper
The IJointFault device is now implemented by the device.
fakeMotionControl
A hardware fault is now simulated when a TorqueCommand > 1Nm is received.
portaudio
'id' parameter was renamed to 'dev_id'.
portaudioPlayer
'id' parameter was renamed to 'dev_id'.
portaudioRecorder
'id' parameter was renamed to 'dev_id'.
Port Monitors
Added bottle_compression_zlib portmonitor to compress bottles (or other
data types which can be converted to bottle).
Added soundfilter_resample portmonitor to resample audio streams.
Added sensorMeasurements_to_vector portmonitor which converts a 6D Pose from
a SensorStreamingData data type to a yarp::sig::Vector data type.
Tools
yarp
Added option testdata_filename to latency-test companion.
It allows to load a file which will be transmitted over the network as
benchmark.
Different files can be used to test latency when using a compression
portmonitor (the compression factor will depend on the entropy of the file).
yarprun
If the environment variable YARP_LOG_PROCESS_LABEL is found, the label is
now appended to the executable name in the log port name
(e.g. /log/yaprunname/yarpdev[mylabel]/123123)
robotinterface
Added --dryrun option to test the xml file without actually opening devices.
Added reverse-shutdown-action-order attribute for the robot tag.
This reverses the order of actions in shutdown and interrupt phase, making it
easier to write the actions when multiple attach and detach are involved.
All device tag parameters are now passed to all devices defined inside that
tag.
Added the YARP_PORTNUMBER<XXX> environment variable.
This allows to change the port number on which the corresponding port is
opened by setting the YARP_PORTNUMBER<XXX> environment variable to the
desired port number of the port.
For example: YARP_PORTNUMBER_read=20050 yarp read /read will open a port
named /read on the 20050 port.
Port numbers (if present) are applied before prefixes specified with YARP_PORT_PREFIX and renames specified with YARP_RENAME (if present). WARNING, if the same port is opened with the same name but different port
number by two processes, this might lead to port stealing by the latest
process executed.
yarpidl_thrift
The return variable is again a class member.
The updateReply method of a portmonitor is not called on the same thread
that reads from the connection, therefore the return variable, as a
thread_local variable, causes it to be empty.
The flush performed in the WireWriter dtor, ensures that any
appendExternalBlock contained in helper serializationis actually written
before the helper is destroyed.
When rpc command is incomplete or contains extra args, the argument fails.
It is no longer possible to have a service function that starts with the same
name as a different function (e.g. get and get_all).
Enum handling was heavily refactored.
It is now possible to use yarp.name and yarp.includefile also for enums.
The 'yarp.nested' annotation was fixed. It is also now possible to annotate a
struct with the yarp.bottlesize annotation, when the struct is not
serialized as a bottle but as a fixed size bottle-like structure (for example
other yarpidl_thrift generated structs).
The editor for structs is now disabled by default. The yarp.editor
annotation should be passed to the struct in order to enable it.
Added generation of portmonitor for services.
See [documentation](
ef thrift_monitor) for details.
GUIs
yarpmotorgui
Added new page "Hardware Fault" which displays the internal hardware error.
Improved slider graphics, with displayed reference value (optional, enabled
from the menu, default off)
yarplogger
Added option --unlimited_size which removes all limits on the log size.
To be used with caution!
Bug Fixes
Build System
Fixed build of lidar sdk with clang.
Libraries
sig
Fixed VectorOf<T>::emplace_back returning void. Now it returns a
reference to the new element as expected.
GUIs
yarplogger
Fixed issue related to saving/loading files containing empty strings.
Fixed how the limits are applied to new logs added to an on-going session.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
YARP 3.6.0 was released today and is now available for download at: https://github.com/robotology/yarp/releases/v3.6.0.
A (partial) list of bug fixed and issues resolved in this release can be found
here.
Important Changes
Dependencies
Deprecation and Behaviour Changes
Devices
release.
print a warning when opened:
localization2DClient
(replaced bylocalization2D_nwc_yarp
)map2DClient
(replaced bymap2D_nwc_yarp
)navigation2DServer
(replaced bynavigation2D_nws_yarp
)New Features
Libraries
conf
YARP_VERSION_COMPARE
macro has been added to version.h to simplify howYARP versions are compared e.g. in
#if
guards. For instance, the condition#if YARP_VERSION_COMPARE(>=, 3, 6, 0)
will yield true if the current YARPversion is equal to or greater than 3.6.0.
os
CommandBottle
class.This is a class that contains both the command and the reply.
The only advantage of this class compared to using two bottles is that
portmonitors are able to know, in the
updateReply
method, what was therequest for the reply received.
Log
std::vector
, it is now also possibleto call
yInfo() << collection
where the collection is astd::array
,std::list
,std::set
,std::map
, C-array,std::tuple
...yIDebug
).See [documentation](
ef yarp_logging).
YARP_LOG_PROCESS_LABEL
environment variable is now checked when outputis forwarded. If found, the label is appended to the executable name in the
log port name e.g. (
/log/hostname/yarpdev[mylabel]/123123
)ConnectionWriter
getBuffer
with const/non-const versionsConnectionReader
flushWriter
is now an interface method.idl/WireReader
getReader()
method.idl/WireWriter
sig
yarp::sig::soundfilters::resample()
contained in the newheader file
yarp/sig/SoundFilters.h
.dev
yarp::dev::IJointFault
.yarp::dev::Nav2D::IOdometry2D
.DeviceDriver
id()
andsetId()
methodsPolyDriver
id
option to theopen
method (orpassing
--id
toyarpdev
).Nav2D::INavigation2DVelocityActions
applyVelocityCommand()
method was moved fromyarp::dev::Nav2D::INavigation2DTargetActions
to a new interfaceyarp::dev::Nav2D::INavigation2DVelocityActions
.Nav2D::MapGrid2D
yarp::dev::Nav2D::MapGrid2D
using Zlib: the methodsyarp::os::Portable::write()
andyarp::os::Portable::read()
handle thecompression before sending data to the network.
The method
MapGrid2D::enable_map_compression_over_network()
enables/disablesthe data compression over the network (default true).
If the Zlib library is not available, compression will be disabled.
Nav2D::Map2DArea
Map2DArea::getCentroid()
.description
field which can now be filled by the user for genericpurposes.
Nav2D::Map2DLocation
description
field which can now be filled by the user for genericpurposes.
Nav2D::Map2DPath
description
field which can now be filled by the user for genericpurposes.
Nav2D::IMap2D
getAllLocations(std::vector<yarp::dev::Nav2D::Map2DLocation>& locations)
getAllAreas(std::vector<yarp::dev::Nav2D::Map2DArea>& areas)
getAllPaths(std::vector<yarp::dev::Nav2D::Map2DPath>& paths)
Nav2D::INavigation2D
INavigation2D
interface now derives fromIMap2D
interfaceDevices
Most of the clients/nwcs now implement the option
carrier
to set the carrierfor the connection with the server.
Added the following new EXPERIMENTAL devices:
rpLidar3
that supports the 3rd revision of the rpLidar hardware.fakeOdometry
that generates a fake odometry and makes it available fromIOdometry2D
interface.fakePositionSensor
that simulate a position sensor and makes it availablethrough the
IPositionSensors
andIOrientationSensors
interfaces.Added more EXPERIMENTAL devices in order to implement the Network Wrapper
Server/Client Architecture described in
ef nws_and_nwc_architecture.
These devices do not implement internal logic, therefore they might need to be
used together with a different device.
This architecture and all these devices are to be considered experimental,
and may be modified/renamed/removed at any time without any notice.
localization2D_nwc_yarp
: YARP NWS which connects tolocalization2D_nws_yarp
: and can be used to replacelocalization2DClient
map2D_nwc_yarp
YARP NWS which connects tomap2D_nws_yarp
and can be usedto replace
map2DClient
mobileBaseVelocityControl_nws_yarp
: YARP NWS to control the velocity of amobile base.
mobileBaseVelocityControl_nwc_yarp
: YARP NWC to control the velocity of amobile base.
mobileBaseVelocityControl_nws_ros
: ROS NWS to control the velocity of amobile base.
navigation2D_nws_yarp
: YARP NWS that can be used to replacenavigation2DServer
.navigation2D_nwc_yarp
: YARP NWC that connects tomap2D_nws_yarp
,localization2D_nws_yarp
andnavigation2D_nws_yarp
.odometry2D_nws_yarp
: YARP NWS which can be attached to aIOdometry2D
interface and publish the data on a YARP port.
odometry2D_nws_ros
: ROS NWS which can be attached to aIOdometry2D
interface and publish the data on a ROS topic.
fakeLaser
localization2D_nwc_yarp
instead oflocalization2DClient
frameTransformServer
frameTransformClient
FrameTransform_verbose_debug
frameTransformStorage
FrameTransform_verbose_debug
is set to 1.FrameTransform_verbose_debug
(default = 0)
frameTransformContainer
FrameTransform_verbose_debug
is set to 1.FrameTransform_verbose_debug
(default = 0)
map2DStorage
v3
file format, which includes the description forMap2DLocation
,Map2DArea
andMap2DPath
is now supported.map2DServer
enable_maps_compression <0/1>
remote_controlboard
IJointFault
device is now implemented by the device.controlBoard_nws_yarp
IJointFault
device is now implemented by the device.controlboardremapper
IJointFault
device is now implemented by the device.fakeMotionControl
portaudio
portaudioPlayer
portaudioRecorder
Port Monitors
bottle_compression_zlib
portmonitor to compress bottles (or otherdata types which can be converted to bottle).
soundfilter_resample
portmonitor to resample audio streams.sensorMeasurements_to_vector
portmonitor which converts a 6D Pose froma
SensorStreamingData
data type to ayarp::sig::Vector
data type.Tools
yarp
testdata_filename
to latency-test companion.It allows to load a file which will be transmitted over the network as
benchmark.
Different files can be used to test latency when using a compression
portmonitor (the compression factor will depend on the entropy of the file).
yarprun
YARP_LOG_PROCESS_LABEL
is found, the label isnow appended to the executable name in the log port name
(e.g.
/log/yaprunname/yarpdev[mylabel]/123123
)robotinterface
--dryrun
option to test the xml file without actually opening devices.reverse-shutdown-action-order
attribute for therobot
tag.This reverses the order of actions in shutdown and interrupt phase, making it
easier to write the actions when multiple attach and detach are involved.
device
tag parameters are now passed to all devices defined inside thattag.
YARP_PORTNUMBER<XXX>
environment variable.This allows to change the port number on which the corresponding port is
opened by setting the
YARP_PORTNUMBER<XXX>
environment variable to thedesired port number of the port.
For example:
YARP_PORTNUMBER_read=20050 yarp read /read
will open a portnamed
/read
on the20050
port.Port numbers (if present) are applied before prefixes specified with
YARP_PORT_PREFIX
and renames specified withYARP_RENAME
(if present).WARNING, if the same port is opened with the same name but different port
number by two processes, this might lead to port stealing by the latest
process executed.
yarpidl_thrift
The updateReply method of a portmonitor is not called on the same thread
that reads from the connection, therefore the return variable, as a
thread_local variable, causes it to be empty.
The flush performed in the WireWriter dtor, ensures that any
appendExternalBlock contained in helper serializationis actually written
before the helper is destroyed.
name as a different function (e.g.
get
andget_all
).It is now possible to use
yarp.name
andyarp.includefile
also for enums.struct with the
yarp.bottlesize
annotation, when the struct is notserialized as a bottle but as a fixed size bottle-like structure (for example
other yarpidl_thrift generated structs).
yarp.editor
annotation should be passed to the struct in order to enable it.
See [documentation](
ef thrift_monitor) for details.
GUIs
yarpmotorgui
from the menu, default off)
yarplogger
--unlimited_size
which removes all limits on the log size.To be used with caution!
Bug Fixes
Build System
Libraries
sig
VectorOf<T>::emplace_back
returningvoid
. Now it returns areference to the new element as expected.
GUIs
yarplogger
Bindings
Contributors
This is a list of people that contributed to this release (generated from the
git history using
git shortlog -ens --no-merges v3.5.0..v3.6.0
):Beta Was this translation helpful? Give feedback.
All reactions