A (partial) list of bug fixed and issues resolved in this release can be found here.
Image
ovrheadset
device driver was moved to https://github.com/robotology/yarp-device-ovrheadsetrealsense2
, realsense2withIMU
and realsense2Tracking
device drivers were moved to https://github.com/robotology/yarp-device-realsense2YARP_CONFIG_DIRS
defaults to /etc/xdg/yarp
to be compliant with the XDG Base Directory SpecificationYARP_DATA_DIRS
defaults to %ALLUSERSPROFILE%%\yarp
YARP_CONFIG_DIRS
defaults to %ALLUSERSPROFILE%%\yarp\config
filesystem::path_separator
is deprecated in favour of environment::path_separator
yarp::conf::environment::getEnvironment
is deprecated in favour of yarp::conf::environment::get_string
yarp::conf::environment::setEnvironment
is deprecated in favour of yarp::conf::environment::set_string
yarp::conf::environment::unsetEnvironment
is deprecated in favour of yarp::conf::environment::unset
YARP_DEPRECATED_API
and YARP_DEPRECATED_API_MSG
defines are now deprecated in favour of YARP_DEPRECATED_EXPORT
, YARP_DEPRECATED_IMPORT
, YARP_DEPRECATED_MSG_EXPORT
, and YARP_DEPRECATED_MSG_IMPORT
.Bottle
BOTTLE_TAG_INT
is deprecated in favour of BOTTLE_TAG_INT32
BOTTLE_TAG_DOUBLE
is deprecated in favour of BOTTLE_TAG_FLOAT64
BOTTLE_TAG_VOCAB
is deprecated in favour of BOTTLE_TAG_VOCAB32
addInt
is deprecated in favour of addInt32
addDouble
is deprecated in favour of addFloat64
yarp::os::Bottle::addVocab()
is deprecated in favour of yarp::os::Bottle::addVocab32()
ConnectionReader
expectInt
is deprecated in favour of expectInt32
expectDouble
is deprecated in favour of expectFloat64
ConnectionWriter
appendInt
is deprecated in favour of appendInt32
appendDouble
is deprecated in favour of appendFloat64
LogStream
operator<<
for std::ostream
and std::vector
which caused conflicts with Casadi was removed (#2067).NetType
toHexString
is deprecated in favour of yarp::conf::numeric::to_hex_string
toString
is deprecated in favour of yarp::conf::numeric::to_string
toInt
, toFloat32
and toFloat64
are deprecated in favour of yarp::conf::numeric::from_string
ResourceFinder
yarp::conf::dirs
. The following methods are now deprecated:yarp::os::ResourceFinder::getDataHome()
yarp::os::ResourceFinder::getDataHomeNoCreate()
yarp::os::ResourceFinder::getConfigHome()
yarp::os::ResourceFinder::getConfigHomeNoCreate()
yarp::os::ResourceFinder::getDataDirs()
yarp::os::ResourceFinder::getConfigDirs()
in favour of:yarp::conf::dirs::yarpdatahome()
yarp::conf::dirs::yarpconfighome()
yarp::conf::dirs::yarpdatadirs()
Warnings:yarpdatadirs()
is different (std::vector<std::string>
instead of std::string
).yarpdatahome()
and yarpconfighome()
do not create the directory, it must be created manually (for example with yarp::os::mkdir_p()
) if required.Stamp
Header
instead of Stamp
is now recommended.Value
isInt()
is deprecated in favour of isInt32()
isDouble()
is deprecated in favour of isFloat64()
asInt()
is deprecated in favour of asInt32()
asDouble()
is deprecated in favour of asFloat64()
makeInt()
is deprecated in favour of makeInt32()
makeDouble()
is deprecated in favour of makeFloat64()
isVocab()
is deprecated in favour of isVocab32()
asVocab()
is deprecated in favour of asVocab32()
makeVocab()
is deprecated in favour of makeVocab32()
Vocab
yarp::os::createVocab()
is deprecated in favour of yarp::os::createVocab32()
yarp::os::Vocab::encode()
is deprecated in favour of yarp::os::Vocab32::encode()
yarp::os::Vocab::decode()
is deprecated in favour of yarp::os::Vocab32::decode()
WireReader
getIsVocab()
is deprecated in favour of getIsVocab32()
readVocab()
is now deprecated in favour of readVocab32()
WireWriter
writeVocab()
is now deprecated in favour of writeVocab32()
IntrinsicParams
YARP_PLUM_BOB
is deprecated in favour of YARP_PLUMB_BOB
.yarp/dev/FrameGrabberControl2.h
header file was properly marked as deprecated (it should have been deprecated in YARP 3.0)yarp/dev/FrameGrabberInterfaces.h
header file was deprecated. All interfaces were moved in the corresponding header.framegrabber_protocol
library were removed. This is an API break, but nobody should be using these outside of YARP.VOCAB_NAV_CLEAR_X
, defined in file ILocalization2D.h
has been renamed to VOCAB_NAV_CLEARALL_X
to avoid confusion with flag VOCAB_NAV_DELETE_X
. VOCAB_NAV_CLEARALL_X
clears all data belonging to the same category (all maps, all locations, all areas, etc), while VOCAB_NAV_DELETE_X
, deletes a single entity (a map with name x, a location with name x etc).IVisualParams.h
file was deprecated in favour of IRgbVisualParams.h
and IDepthVisualParams
.IFrameGrabber
and IFrameGrabberRgb
are now deprecated.IDepthVisualParams
retificationMatrix
parameter was renamed rectificationMatrix
IRgbVisualParams
retificationMatrix
parameter was renamed rectificationMatrix
robotinterface
library is no longer considered experimental, all files in the experimental
folder and classes in the experimental
namespace are now deprecated and will be removed in the next release.depthimage_compression_zfp
(zfp
)depthimage_to_mono
(depthimage
)depthimage_to_rgb
(depthimage2
)segmentationimage_to_rgb
(segmentationimage
)test_grabber
in favour of fakeFrameGrabber
fakeMotor
in favour of fakeMotionControl
test_motor
in favour of fakeMotionControl
fakebot
controlboardwrapper2
(replaced by controlboardremapper
+ controlBoard_nws_yarp
)RGBDSensorWrapper
(replaced by rgbdSensor_nws_yarp
)Rangefinder2DWrapper
(replaced by rangefinder2D_nws_yarp
)grabberDual
(replaced by frameGrabber_nws_yarp
, and eventually frameGrabberCropper
)inertial
(replaced by multipleanalogsensorsremapper
+ multipleanalogsensorsserver
+ IMURosPublisher
)localization2DServer
(replaced by localization2D_nws_yarp
)map2DServer
(replaced by map2D_nws_yarp
)transformClient
(replaced by frameTransformClient
)transformServer
(replaced by frameTransformServer
)<yarp/conf/numeric.h>
:
<yarp/conf/string.h>
containing the following functions:
environment::path_separator
<yarp/conf/environment.h>
:yarp::conf::environment::get_string
yarp::conf::environment::set_string
yarp::conf::environment::get_bool
yarp::conf::environment::set_bool
yarp::conf::environment::get_numeric
yarp::conf::environment::set_numeric
yarp::conf::environment::split_path
yarp::conf::environment::join_path
yarp::conf::environment::get_path
yarp::conf::environment::set_path
yarp::conf::environment::unset
yarp::conf::environment::is_set
dirs.h
file with methods to retrieve the important foldersstd::string yarp::conf::dirs::home()
std::string yarp::conf::dirs::tempdir()
std::string yarp::conf::dirs::datahome()
std::vector<std::string> yarp::conf::dirs::datadirs()
std::string yarp::conf::dirs::confighome()
std::vector<std::string> yarp::conf::dirs::configdirs()
std::string yarp::conf::dirs::cachehome()
std::string yarp::conf::dirs::runtimedir()
std::string yarp::conf::dirs::yarpdatahome()
std::vector<std::string> yarp::conf::dirs::yarpdatadirs()
std::string yarp::conf::dirs::yarpconfighome()
std::vector<std::string> yarp::conf::dirs::yarpconfigdirs()
std::string yarp::conf::dirs::yarpcachehome()
std::string yarp::conf::dirs::yarpruntimedir()
yarp::os::Header
class, intended to gradually replace the yarp::os::Stamp
class to handle envelopes, maintaining backwards compatibility. The differences with the Stamp
class:Header
has an extra field to handle the frame id, making it comparable with ROS std_msgs/Header
message.Stamp::getMaxCount()
is replaced with Header::npos
Stamp::getCount()
is replaced with Header::count()
Stamp::getTime()
is replaced with Header::timeStamp()
BOTTLE_TAG_VOCAB32
tag. This is the same as BOTTLE_TAG_VOCAB
.BOTTLE_TAG_VOCAB
is not recommended in new code, use BOTTLE_TAG_VOCAB32
instead.addVocab32()
overloads accepting 4 chars and string.DummyConnector
getReader
methods now accepts a ConnectionWriter
as optional parameter. This writer is returned by getWriter
is called on the ConnectionReader
returned by the writer, and it is therefore used for the replies in Portable
s and in a few other cases.Log
YARP_FORWARD_CODEINFO_ENABLE
, YARP_FORWARD_HOSTNAME_ENABLE
, YARP_FORWARD_PROCESSINFO_ENABLE
, and YARP_FORWARD_BACKTRACE_ENABLE
are no longer considered experimental.PeriodicThread
clockAccuracy
, which enables drift compensation using an absolute time reference to ensure all steps trigger at precise intervals, thus avoiding error accumulation over time. Set it to PeriodicThreadClock::Absolute
to enable the new behavior, default is PeriodicThreadClock::Relative
(old behavior). Beware that, in absolute mode, starvation may occur if two busy threads share a common resource (#2488).PeriodicThread(double period, PeriodicThreadClock clockAccuracy)
.Property
.ini
configuration files can now contain the command [import <contextname> <filename>]
which includes a .ini
file from a different context.Value
makeVocab32()
overload accepting 4 charsWire
yarp()
const overloadWireLink
WireReader
readVocab32
readUI8
readUI16
readUI32
readUI64
readSizeT
WireWriter
writeVocab32
writeUI8
writeUI16
writeUI32
writeUI64
writeSizeT
addVocab32()
overloads accepting 4 chars and stringfile
yarp::sig::file::read_bytestream(Sound& data, const char* bytestream, size_t streamsize, std::string format)
utils
depthRgbToPC
to make the pointcloud unorganized and remove zero points.Image
move()
and swap()
methods.Sound
void amplifyChannel(size_t channel, double gain)
void amplify(double gain)
void findPeakInChannel(size_t channelId, size_t& sampleId, audio_sample& sampleValue) const
void findPeak(size_t& channelId, size_t& sampleId, audio_sample& sampleValue) const
void normalizeChannel(size_t channel)
void normalize()
utils
cropRect()
helper function for cropping a rectangle area out of an image given two opposite vertices.WrapperSingle
and WrapperMultiple
helper classes, that inherit from both IWrapper
and IMultipleWrapper
but require to implement only one of these interfaces.IFrameGrabberOf<typename ImageType>
. It is now possible to implement the same interface as for IFrameGrabberImage
and IFrameGrabberImageRaw
, but for different pixel types or for FlexImage
.yarp::dev::AudioRecorderStatus
yarp::dev::AudioPlayerStatus
AudioPlayerDeviceBase
, all playback device drivers now inherit from this class.AudioRecorerDeviceBase
, all recording device drivers now inherit from this class.IFrameGrabberImage
getImageCrop
method has now a working default implementation.IFrameGrabberImage
interface is now an alias for IFrameGrabberOf<yarp::sig::ImageOf<yarp::sig::PixelRgb>>
.IFrameGrabberImageRaw
getImageCrop
method has now a working default implementation.IFrameGrabberImageRaw
interface is now an alias for IFrameGrabberOf<yarp::sig::ImageOf<yarp::sig::PixelMono>>
.IAudioRender
bool setHWGain(double gain)
bool setSWGain(double gain)
IAudioGrabberSound
bool setHWGain(double gain)
bool setSWGain(double gain)
Lidar2DDeviceBase
Lidar2DDeviceBase
class, now implements yarp::dev::IPreciselyTimed
.acquireDataFromHW()
which is pure virtual in Lidar2DDeviceBase
Lidar2DDeviceBase::updateLidarData
, which calls acquireDataFromHW()
and a few other utility functions (e.g. updateTimestamp(), etc.)updateLidarData()
.Nav2D::IMap2D
bool clearAllMapsTemporaryFlags()
bool clearMapTemporaryFlags(std::string map_name)
bool saveLocationsAndExtras(std::string locations_collection_file)
bool loadLocationsAndExtras(std::string locations_collection_file)
Nav2D::MapGrid2D
void clearMapTemporaryFlags()
write()
and read()
methods handle the compression before sending data to the network.enable_map_compression_over_network()
to enables/disables data compression over the network (default true). Compression is always disabled if Zlib library is not available.Nav2D::Map2DLocation
bool is_near_to(const Map2DLocation& other_loc, double linear_tolerance, double angular_tolerance) const
It is now possible to pass the device
parameter to the attach
action, without defining network
or networks
. For example:
XMLReader
getRobotFromFile
and getRobotFromString
now accept a Searchable
that is used to replace params with the attribute extern-name
. The signatures are now: unix_stream
carrier is no longer considered experimental.yarppm
library (similar to yarpcar
and yarpmod
) that links all the portmonitors in static builds.image_compression_ffmpeg
port monitor to compress a video stream using the H264, H265, or MPEG2VIDEO codec.sound_compression_mp3
port monitor to decompress a mp3 bytestream to yarp::sig::Sound
. Encoding not supported yet.depthimage_compression_zlib
port monitor which uses the Zlib library to compress/decompress (lossless) depth images through the network.setHWGain()
and setSWGain()
.xxx/status:o
portsetHWGain()
and setSWGain()
.xxx/status:o
port--timestamp
option to write the timestamp in the first bytes of the image. This was previously automatically enabled in line
mode, but it can now be used in all modes.getImage()
method no longer blocks the caller. The --syncro
option was added to restore the old behavior.topIsLow
option and the set_topIsLow
rpc command were added to produce images with bottom to top scanlines.--noise
options and set_noise
RPC commands to add a a white noise to the generated image.--snr
option and set_snr
RPC commands. to specify the signal noise ratio if noise
is enabled.map_context
parameter to load a test map from a specific context.generate_view
which generates via dot (graphviz)
a pdf file, containing a diagram of the transforms tree.enable_maps_compression <0/1>
RPC command.getNameOfCurrentTarget()
logic moved from Navigation2DClient
to navigation2DServer
.yarpdataplayer-console
tool that works without without a graphic server.read
subcommand now accepts the trim
argument to reduce the number of characters printed for each message received.yarp latency-test
: performs a latency test exchanging data between a server and a client node.yarp repeat
: repeats in an output port all data received in an input port. The command is useful to control stream flows on a wifi/mobile connection.yarp stats
: opens a temporary port to receive data from a remote port (at maximum speed). It also prints basic statistics about data trasferred on the instantiated connection.yarp trafficgen
: sends generated data over a yarp port. The tool allows to test the communication and the available bandwidth over the network.--type
parameter are now supported:bottle
(default)image
image_jpg
image_png
video
depth
depth_compressed
extern-name
.uint8_t
, uint16_t
, uint32_t
, uint64_t
, size_t
, float32_t
and float64_t
using annotated types. It is now possible to use these types in thrift by defining them using a typedef
, for example: Bar
struct will be serialized as bar1 (foo1 foo2)
, instead of as a flat struct bar1 foo1 foo2
.yarp.qualifier
annotation. For example, this code: Foo
with this method: --rightout <portname>
option that enables intercepting the mouse right button click events:press
point and of the release
one to the specified output port)Image/Intercept right click
checkable menu item to enable/disable the right click interception (not available in minimal
or compact
mode or if the --rightout
option was not enabled).depth
and depth_compressed
data types.yarpdataplayer
tool was refactored, several bugs fixed, and new features added (#1144, #2140, #2151, #2400, #2401, #2442).std::vector<short int>
.yarp::sig::VectorOf<int>
.yarp::sig::Sound
sound2VecNonInterleaved()
vecNonInterleaved2Sound()
sound2VecInterleaved()
vecInterleaved2Sound()
EXPERIMENTAL means that the software is under development, provided with incomplete documentation and it may be modified/renamed/removed without any notice.
websocket
carrier. It works only on the receiving side, and it works on an http request that starts with "GET /?ws"
(for example 'http://127.0.0.1:10002/?ws' or 'ws://127.0.0.1:10002/?ws' if a read port is opened by yarp). The websocket, on the browser side, needs to communicate using the YARP protocol.RGBDFromRosTopic
: it can be wrapped by RGBDSSensorWrapper
to make RGBD data, collected by a ROS device, available on YARP via RGBDSensorClient
.map2DStorage
: store navigation data, e.g MapGrid2D
,Map2DLocation
etc. It implements all the logic previously located inside device 'Map2DServer'.audioFromFileDevice
: wrapped by audioRecorderWrapper
.audioToFileDevice
: wrapped by audioPlayerWrapper
.frameGrabberCropper
: attaches to a frameGrabber and published part of the imageframeTransformStorage
frameTransformSetMultiplexer
frameTransformGetMultiplexer
controlBoard_nws_ros
: ROS NWS that can be used to replace controlboardwrapper2
(does not handle networks, use controlboardremapper
for that). It requires that the yarp::dev::IAxisInfo
is implemented in the device.controlBoard_nws_yarp
: YARP NWS that can be used to replace controlboardwrapper2
(does not handle networks, use controlboardremapper
for that).frameGrabber_nws_ros
: ROS NWS that can be used to replace grabberDual
(does not handle image split, use frameGrabberCropper
for that)frameGrabber_nws_yarp
: YARP NWS that can be used to replace grabberDual
(does not handle image split, use frameGrabberCropper
for that)frameGrabber_nwc_yarp
: YARP NWC that can be used to replace remote_grabber
localization2D_nws_ros
: ROS NWS for devices which implement the ILocalization2D
interface, that can be used to replace localization2DServer
.localization2D_nws_yarp
: YARP NWS for devices which implement the ILocalization2D
interface, that can be used to replace localization2DServer
.map2D_nws_ros
: ROS NWS for a map2DStorage
device.map2D_nws_yarp
: YARP NWS for a map2DStorage
device.rangefinder2D_nws_ros
: ROS NWS for devices exposing IRangefinder2D
interface.rangefinder2D_nws_yarp
: YARP NWS for devices exposing IRangefinder2D
interface.rgbdSensor_nws_ros
: ROS NWS to replace RGBDSensorWrapper
.rgbdSensor_nws_yarp
: YARP NWS to replace RGBDSensorWrapper
.rgbdToPointCloudSensor_nws_ros
: enables point cloud publication from yarp to ros. It converts RGBD data to point cloud and publishes it on a ros topic.frameTransformGet_nws_ros
frameTransformGet_nws_yarp
frameTransformSet_nws_ros
frameTransformSet_nws_yarp
All these interfaces have the following differences with their original wrappers:nws_ros
devices no longer have the "ROS_" prefix".frameTransformClient
and frameTransformServer
. These devices are mostly empty containers for multiple plugins that can be combined together through a yarprobotinterface
xml file. Different configuration files can be used for different purposes, such as publishing/subscribing transforms on YARP, ROS, ROS2 etc. Please refer to the documentation for additional details. Old devices with frame transform management functionality are called transformServer
and transformClient
. These devices should be now considered deprecated and they must be not confused with the new devices included in this PR. A yarp page documentation has been added to show the different possible configurations.laserFromRosTopic
is still considered EXPERIMENTAL, since it will be replaced by an appropriate NWCpip
. A new yarp-middleware
package is now distributed in PyPI.Image
topIsLow
flag is now properly handled, kept in sync with the internal IplImage
, and forwarded through the network.ImageFile
SavePNG()
producing corrupted output files.topIsLow
flag is no longer changed.This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.4.0..v3.5.0
):