YARP - Yet Another Robot Platform
A (partial) list of bug fixed and issues resolved in this release can be found here.
audioRecorderDeviceBase
device.SoundFileWav.cpp
.yarprun --cmd <cmd> --stdio
.iCubGui
inertial ports from the example app as the GUI is unable to handle the MAS client.frameGrabber_nwc_yarp
.controlBoard_nws_yarp
.yarp::os::SystemClock::nowSystem()
now maps to std::chrono::system_clock
instead of std::chrono::high_resolution_clock
Added new experimental docker image for Ubuntu22.04 http://github.com/robotology/yarp/docker
Added new gui yarpaudiocontrolgui
to start/stop an audioRecorder_nwc_yarp
or an audioPlayer_nwc_yarp
device.
Added new gui yarpllmgui
to control IChatbot
devices.
yarp::sig::sound
has refactored to avoid the internal use (private implementation) of yarp::sig::Image
data type.yarp split
. The command splits an heterogeneous nested bottle received from a port into multiple ports.IJointCoupling
, an interface for handling coupled joints.ISpeechSynthesizer
, ISpeechTranscription
.IChatBot
to interact with chatbots.ITorqueControl
now supports four a new friction parameters: velocityThresh
.
These parameters are used to enable the new torque control law and fine tune the the friction compensation at FW level.FrameTransform_container_timeout
) to change the refresh interval for old timed frame transforms.frameTransformClient
and frameTransformServer
configuration files. The extern-name
for this parameter is:
ftc_storage_timeout
for frameTransformClient
files; fts_storage_timeout
for frameTransformServer
fileschatBot_nwc_yarp
for the IChatBot
interface and the corresponding testchatBot_nws_yarp
fakeChatBotDevice
speechSynthesizer_nwc_yarp
for the ISpeechSynthesizer
interface and the corresponding testspeechSynthesizer_nws_yarp
fakeSpeechSynthesizer
speechTranscription_nwc_yarp
for the ISpeechTranscription
interface and the corresponding testspeechTranscription_nws_yarp
fakeSpeechTranscription
This is a list of people that contributed to this release (generated from the
git history using git shortlog -ens --no-merges v3.8.0..v3.9.0
):
127 Marco Randazzo <[email protected]>
37 Ettore Landini <[email protected]>
14 Nicolò Genesio <[email protected]>
14 fbrand-new <[email protected]>
7 Silvio Traversaro <[email protected]>
6 Arren Glover <[email protected]>
4 robotology-bot (Tag Repository Action) <[email protected]>
3 Bartek Łukawski <[email protected]>
2 Davide <[email protected]>
2 Ugo Pattacini <[email protected]>
1 Davide Gorbani <[email protected]>
1 Marco Randazzo <[email protected]>
1 Simone <[email protected]>
1 Simone Girardi <[email protected]>
1 Stefano Dafarra <[email protected]>
A (partial) list of bug fixed and issues resolved in this release can be found here.
yarpmotorgui
Fixed bug that resulted in a segmentation fault if one of the device to which
multipleanalogsensorsserver
was attached did not resized the measure vector.
Fixed segfault in serialPort_nws_yarp if devices is used but not attached yet. Fixed communication with serialPort_nwc_yarp.
Removed use of highgui.h include file.
This is a list of people that contributed to this release (generated from the
git history using git shortlog -ens --no-merges v3.8.0..v3.8.1
):
8 Marco Randazzo <[email protected]>
5 Silvio Traversaro <[email protected]>
2 Nicolò Genesio <[email protected]>
2 robotology-bot (Tag Repository Action) <[email protected]>
1 Bartek Łukawski <[email protected]>
1 Ugo Pattacini <[email protected]>
1 fbrand-new <[email protected]>
A (partial) list of bug fixed and issues resolved in this release can be found here.
lib_yarp_os
Devices
group
has been removed because of faulty/incomplete implementation and unused. Please use yarprobotinterface
instead.DriverLinkCreator
, used only by device group
, has been removed.pipe
has been removed because of faulty/incomplete implementation and unused.dualGrabber
, previously deprecated, has been removed.remote_grabber
, previously deprecated, has been removed.lib_yarp_companion
yarp split
. The command splits an heterogeneous nested bottle received from a port into multiple ports.lib_yarp_os
yarp::os::LogStream
now can chain instances of yarp::sig::VectorOf<T>
.lib_yarp_dev
bool getAxes(int* ax)
to yarp::dev::IAxisInfo
interface.bindings
getAxes()
method to IAxisInfo
interface + python example.libYARP_dev_tests
yarp_dev_tests
: is now exported.
It contains common sources to test Yarp device through lib_yarpdev
(also outside yarp repo)libYARP_robotinterface
${portprefix}
variable in parameters (#2819).rpLidar
, rpLidar2
, rpLidar3
, and the corresponding sdk in extern/rplidar
.
The devices can be now found in https://github.com/robotology/yarp-device-rplidar
fakeLaserWithMotor
fakeLaserWithMotor
rangefinder2D_nwc_yarp
rangefinder2D_nwc_yarp
(including IRangefinder2D tests)frameTransformServer
+ frameTransformClient
frameTransformClient
and frameTransformServer
will search for "test" configurations not relying on an absolute path passed as a parameter but will take advantage of yarp::os::ResourceFinder
using a file name
and a context
passed to them in this way:> yarpdev --device frameTransformClient --testxml_from testconfig.xml --testxml_context test_folder
yarpidl_thrift
Catch
Catch V2.13.8
to Catch V3.2.1
.sqlite3
sqlite
to sqlite3
. Fixed issue preventing extern/sqlite3
(i.e. YARP_priv_SQLite3
) to be correctly found as a dependency by other projects.yarpview
yarpview
by passing --title
+ custom title to the executabletitle
argument is not passed yarpview
window title will be assigned as it has been until nowyarpmotorgui
YCM 0.13
to YCM 0.15.1
YARP_COMPILE_ALL_FAKE_DEVICES
to build all fake devices in one single shotimage_rotation
image_rotation
IGazeControl.storeContext()
: now the method is correctly exposed to Python, returning the ID instead of trying to modify a pointer to it.ffmpeg_grabber
AudioRecorderWrapper
yarp::dev::WrapperSingle
instead of yarp::dev::IMultipleWrapper
AudioPlayerWrapper
yarp::dev::WrapperSingle
instead of yarp::dev::IMultipleWrapper
frameTransformClient
controlBoard_nws_yarp
IRemoteVariables
messages via RPC.RPCMessagesParser
: several calls to various motor control interfaces have been protected so that
if an interface is not available in the hardware device (i.e. the view() fails),
the controlboardwrapper/yarprobotinterface
does not segfaults.multipleanalogsensorsremapper
yarprobotinterface
yarprobotinterface
: is now able to parse enabled_by
and disabled_by
xml attributes. See yarprobotinterface Doxygen documentation.write
throwing segmentation fault when argc
was less than 2.yarp --version
yarpdev --list
yarp plugin --all
yarp plugin --all
now returns 0 (OK) instead of 1 (ERROR).This is a list of people that contributed to this release (generated from the
git history using git shortlog -ens --no-merges v3.7.0..v3.8.0
):
185 Marco Randazzo <[email protected]>
21 Ettore Landini <[email protected]>
13 Silvio Traversaro <[email protected]>
6 robotology-bot (Tag Repository Action) <[email protected]>
5 tumme <[email protected]>
4 Ugo Pattacini <[email protected]>
3 Bartek Łukawski <[email protected]>
3 Nicola Piga <[email protected]>
3 hypothe <[email protected]>
1 Marco Gabriele Fedozzi <[email protected]>
1 Mattia Fussi <[email protected]>
1 fbrand-new <[email protected]>
A (partial) list of bug fixed and issues resolved in this release can be found here.
lib_yarp_os
controlBoard_nws_yarp
This is a list of people that contributed to this release (generated from the
git history using git shortlog -ens --no-merges v3.7.1..v3.7.2
):
5 Marco Randazzo <[email protected]>
3 Nicola Piga <[email protected]>
2 robotology-bot (Tag Repository Action) <[email protected]>
1 Bartek Łukawski <[email protected]>
A (partial) list of bug fixed and issues resolved in this release can be found here.
Fix compilation against graphviz 3 on Windows. To work correctly, the fix requires that YCM >= 0.14.2 is used.
Migrate to use CMake's official FindSQLite3.cmake
module.
GenericSensorRosPublisher
(and derived devices): added checks if the interfaces are available in the Attach phaselib_yarp_dev
IOdometry2D::getOdometry()
methodyarpmotorgui
yarpmotorgui
does not show the error dialog when setting only a subset of the
available robot parts to a custom positionThis is a list of people that contributed to this release (generated from the
git history using git shortlog -ens --no-merges v3.7.0..v3.7.1
):
8 Marco Randazzo <[email protected]>
5 Silvio Traversaro <[email protected]>
2 robotology-bot (Tag Repository Action) <[email protected]>
1 Ettore Landini <[email protected]>
1 Ugo Pattacini <[email protected]>
A (partial) list of bug fixed and issues resolved in this release can be found here.
lib_yarp_os
Devices
lib_yarp_os
idl/WireReader
readBlock
method.idl/WireWriter
writeBlock
method.skip_tag
flag to all write methods.lib_yarp_dev
lib_yarp_companion
added period
option to companion command yarp write
.
added once
option to companion command yarp read
.
Companion commands yarp read
and yarp write
now perform a check to verify that th
target ports do not already exist.
Added new companion command yarp topic-test
.
libYARP_robotinterface
${portprefix}
variable in parameters (#2819).audioToFileDevice
--add_marker
--save_mode break_file
depthimage_to_vector
sound_marker
yarpidl_thrift
yarpmotorgui
Catch v2.13.8
(#2795). This fixes building the unit tests on some configurations.CMake 3.23.1
on macOS.yarpmotorgui
This is a list of people that contributed to this release (generated from the
git history using git shortlog -ens --no-merges v3.6.0..v3.7.0
):
41 Marco Randazzo <[email protected]>
20 Stefano Dafarra <[email protected]>
14 Daniele E. Domenichelli <[email protected]>
13 Silvio Traversaro <[email protected]>
10 Simone Girardi <[email protected]>
2 Ugo Pattacini <[email protected]>
1 Ettore Landini <[email protected]>
1 Matteo Brunettini <[email protected]>
1 Simone <[email protected]>
1 robotology-bot (Tag Repository Action) <[email protected]>
A (partial) list of bug fixed and issues resolved in this release can be found here.
localization2DClient
(replaced by localization2D_nwc_yarp
)map2DClient
(replaced by map2D_nwc_yarp
)navigation2DServer
(replaced by navigation2D_nws_yarp
)conf
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
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
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
...yIDebug
).
See [documentation](
ef yarp_logging).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
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 new
header file yarp/sig/SoundFilters.h
.dev
yarp::dev::IJointFault
.yarp::dev::Nav2D::IOdometry2D
.DeviceDriver
id()
and setId()
methodsPolyDriver
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
.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.Map2DArea::getCentroid()
.description
field which can now be filled by the user for generic
purposes.description
field which can now be filled by the user for generic
purposes.description
field which can now be filled by the user for generic
purposes.getAllLocations(std::vector<yarp::dev::Nav2D::Map2DLocation>& locations)
getAllAreas(std::vector<yarp::dev::Nav2D::Map2DArea>& areas)
getAllPaths(std::vector<yarp::dev::Nav2D::Map2DPath>& paths)
INavigation2D
interface now derives from IMap2D
interfaceMost 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
localization2D_nwc_yarp
instead of
localization2DClient
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 for Map2DLocation
,
Map2DArea
and Map2DPath
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
bottle_compression_zlib
portmonitor to compress bottles (or other
data types which can be converted to bottle).soundfilter_resample
portmonitor to resample audio streams.sensorMeasurements_to_vector
portmonitor which converts a 6D Pose from
a SensorStreamingData
data type to a yarp::sig::Vector
data type.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 is
now 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 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.device
tag parameters are now passed to all devices defined inside that
tag.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
get
and get_all
).yarp.name
and yarp.includefile
also for enums.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).yarp.editor
annotation should be passed to the struct in order to enable it.yarpmotorgui
yarplogger
--unlimited_size
which removes all limits on the log size.
To be used with caution!sig
VectorOf<T>::emplace_back
returning void
. Now it returns a
reference to the new element as expected.yarplogger
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
):
151 Daniele E. Domenichelli <[email protected]>
113 Marco Randazzo <[email protected]>
24 Ettore Landini <[email protected]>
7 Bartek Łukawski <[email protected]>
6 Diego Ferigo <[email protected]>
5 Stefano Bernagozzi <[email protected]>
5 Stefano Dafarra <[email protected]>
2 Silvio Traversaro <[email protected]>
1 Marco Randazzo <[email protected]>
1 Ugo Pattacini <[email protected]>
A (partial) list of bug fixed and issues resolved in this release can be found here.
math
yarp::math::Quaternion::isValid()
yarp::math::FrameTransform::isValid()
idl_tools
component.os
Log
yarprun
.ResourceFinder
getHomeContextPath
and getHomeRobotPath
.idl::WireReader
dev
Fixed parsing of parameters hw_gain
and sw_gain
in the two classes
AudioPlayerDeviceBase
and AudioRecorderDeviceBase
Fixed issue with case insensitive file systems.
Added methods startStorageThread()
and stopStorageThread()
to interface
yarp::dev::IFrameTransformStorageUtils
robotinterface
extern-name
for non-string parameters.run
yarprun
on win32audioFromFileDevice
controlBoard_nws_yarp
controlBoard_nws_ros
/joint_states
is no longer appended to the topic name.controlboardremapper
ffmpeg_grabber
ffmpeg_writer
frameGrabber_nws_ros
frame_id
parameter is no longer required to start with /
.frameTransformClient
frameTransformServer
frameTransformGet_nwc_yarp
frameTransformSetMultiplexer
deleteTransform()
method.frameTransformStorage
IFrameTransformStorageUtils::stopStorageThread
and
IFrameTransformStorageUtils::startStorageThread
.start
method not called after successfully attaching to a
yarp::dev::IFrameTransformStorageGet
interface.
The device is now able to update its FrameTransformContainer
storage by
querying the device it was attached to.iFrameTransformStorageGet
interface and did not return true
when
successful.frameTransformContainer
checkAndRemoveExpired()
.frameTransformContainer
which was not correctly deleting old
transforms.frameTransformSet_nwc_yarp
frameTransformSet_nws_yarp
frameTransformGet_nwc_yarp
frameTransformGet_nws_yarp
frameTransformSet_nwc_ros
frameTransformSet_nwc_ros::publishFrameTransforms
.frameTransformSet_nws_ros
yarp::os::Time::now()
.frameTransformGet_nwc_ros
setStrict
not called for the subscribers ports for the /tf
and
/tf_static
topics, that was causing a loss of frameTransforms.map2D_nws_yarp
Map2D_nws_yarp::parse_vocab_command
.opencv_grabber
--flip_x
, --flip_y
and --transpose
are now also available
when reading from file (--movie
).rgbdSensor_nws_ros
rgbdSensor_nws::open
. The period was still in milliseconds.transformClient
transformClient
, now avoiding race conditions during
server/client update via streaming port.image_compression_ffmpeg
yarplogger
yarpmanager
non-existing
but throwing an error when trying to connect.libYARP_math
in the Python wheelsThis 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.5.1
):
26 Daniele E. Domenichelli <[email protected]>
23 Marco Randazzo <[email protected]>
20 Ettore Landini <[email protected]>
6 Diego Ferigo <[email protected]>
2 Bartek Łukawski <[email protected]>
1 Marco Randazzo <[email protected]>
1 Silvio Traversaro <[email protected]>
1 Stefano Bernagozzi <[email protected]>
1 Ugo Pattacini <[email protected]>
YARP is a library and toolkit for communication and device interfaces, used on everything from humanoids to embedded devices.
A (partial) list of bug fixed and issues resolved in this release can be found here.
sig
Image
ovrheadset
device driver was moved to
https://github.com/robotology/yarp-device-ovrheadset
realsense2
, realsense2withIMU
and realsense2Tracking
device drivers
were moved to https://github.com/robotology/yarp-device-realsense2
YARP_CONFIG_DIRS
defaults to /etc/xdg/yarp
to be compliant with the
XDG Base Directory Specification
YARP_DATA_DIRS
defaults to %%ALLUSERSPROFILE%%\yarp
YARP_CONFIG_DIRS
defaults to %%ALLUSERSPROFILE%%\yarp\config
conf
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
.os
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()
sig
IntrinsicParams
YARP_PLUM_BOB
is deprecated in favour of YARP_PLUMB_BOB
.dev
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
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
)The following devices are now deprecated:
test_grabber
in favour of fakeFrameGrabber
fakeMotor
in favour of fakeMotionControl
test_motor
in favour of fakeMotionControl
fakebot
The following devices will be replaced by NWS/NWC in the next release, and print a warning when opened:
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
)conf
<yarp/conf/numeric.h>
:
yarp::conf::numeric::from_string
yarp::conf::numeric::to_string
yarp::conf::numeric::to_hex_string
<yarp/conf/string.h>
containing the following functions:
yarp::conf::string::split
yarp::conf::string::join
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()
os
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
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
bool write(const PortWriter& writer, PortReader& reader) const
WireReader
readVocab32
readUI8
readUI16
readUI32
readUI64
readSizeT
WireWriter
writeVocab32
writeUI8
writeUI16
writeUI32
writeUI64
writeSizeT
addVocab32()
overloads accepting 4 chars and stringsig
file
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.dev
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
robotinterface
The robotinterface library is no longer considered experimental, files and classes have been moved accordingly.
robotinterface DTD version is now 3.1.
It is now possible to pass the device
parameter to the attach
action,
without defining network
or networks
. For example:
<device name="foo_name" type="foo_type">
<action phase="startup" level="5" type="attach">
<param name="device"> bar_name </param>
</action>
<action phase="shutdown" level="5" type="detach" />
</device>
XMLReader
getRobotFromFile
and getRobotFromString
now accept a Searchable
that
is used to replace params with the attribute extern-name
.
The signatures are now:
XMLReaderResult getRobotFromFile(const std::string& filename,
const yarp::os::Searchable& config = yarp::os::Property());
XMLReaderResult getRobotFromString(const std::string& filename,
const yarp::os::Searchable& config = yarp::os::Property());
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.AudioPlayerWrapper
setHWGain()
and setSWGain()
.xxx/status:o
portAudioRecorderWrapper
setHWGain()
and setSWGain()
.xxx/status:o
portfakeFrameGrabber
--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.fakeLaser
map_context
parameter to load a test map from a specific context.fakeMicrophone
fakeNavigation
frameTransformServer
generate_view
which generates via dot (graphviz)
a pdf file, containing a diagram of the transforms tree.map2DServer
enable_maps_compression <0/1>
RPC command.navigation2DClient
getNameOfCurrentTarget()
logic moved from Navigation2DClient
to
navigation2DServer
.yarpdataplayer-console
tool that works without without a graphic
server.yarp
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.yarpdatadumper
--type
parameter are now supported:
bottle
(default)image
image_jpg
image_png
video
depth
depth_compressed
yarprobotinterface
extern-name
.yarpidl_thrift
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:
typedef i32 ( yarp.type = "yarp::conf::vocab32_t" ) vocab
typedef i8 ( yarp.type = "std::uint8_t" ) ui8
typedef i16 ( yarp.type = "std::uint16_t" ) ui16
typedef i32 ( yarp.type = "std::uint32_t" ) ui32
typedef i64 ( yarp.type = "std::uint64_t" ) ui64
typedef i32 ( yarp.type = "size_t" ) size_t
typedef double ( yarp.type = "yarp::conf::float32_t" ) float32
typedef double ( yarp.type = "yarp::conf::float32_t" ) float64
struct TestAnnotatedTypes
{
1: vocab a_vocab,
2: ui8 a_ui8,
3: ui16 a_ui16,
4: ui32 a_ui32,
5: ui64 a_ui64,
6: float32 a_float32,
7: float64 a_float64,
8: size_t a_size;
}
typedef i32 ( yarp.type = "yarp::conf::vocab32_t" ) vocab
struct FooStruct
{
1: vocab foo;
}
struct Foo
{
1: double foo1;
2: double foo2;
}
struct Bar
{
1: double bar1;
2: Foo ( yarp.nested = "true" );
}
The 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:
service Foo {
bool const_method() (yarp.qualifier = "const");
}
will generate a service Foo
with this method:
bool const_method() const
yarpview
--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.sig
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.portmonitor
grabberDual
topIsLow
flag is no longer changed.RGBDSensorClient
map2DServer
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
):
477 Daniele E. Domenichelli <[email protected]>
201 Marco Randazzo <[email protected]>
92 Stefano Bernagozzi <[email protected]>
62 Ettore Landini <[email protected]>
50 Giulia Martino <[email protected]>
16 Bartek Łukawski <[email protected]>
13 Diego Ferigo <[email protected]>
12 Silvio Traversaro <[email protected]>
10 Fabio Valla <[email protected]>
8 Nicolò Genesio <[email protected]>
7 Valentina Vasco <[email protected]>
5 Plinio Moreno <[email protected]>
5 Ugo Pattacini <[email protected]>
4 Vadim Tikhanoff <[email protected]>
2 Gianpaolo Bontempo <[email protected]>
2 Johnny Willemsen <[email protected]>
2 Stefano Dafarra <[email protected]>
1 Aiko Dinale <[email protected]>
1 Giuseppe L'Erario <[email protected]>
1 Nicola Piga <[email protected]>
A (partial) list of bug fixed and issues resolved in this release can be found here.
yarpros
tool is no longer compiled when YARP_COMPILE_EXECUTABLES
is disabled. (#2598)sig
Image
dev
DeviceResponder
yarpview
localization2DClient
getEstimatedOdometry()
.navigation2DClient
getEstimatedOdometry()
,localization2DServer
This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.4.5..v3.4.6
):
15 Daniele E. Domenichelli <[email protected]>
2 Marco Randazzo <[email protected]>
1 Silvio Traversaro <[email protected]>