Yarp Versions Save

YARP - Yet Another Robot Platform

v3.9.0

5 months ago

YARP 3.9.0 Release Notes

A (partial) list of bug fixed and issues resolved in this release can be found here.

Major Behaviour Changes

  • Yarp now supports C++20 standard.
  • Catch2 library updated to version: 3.4.0
  • YCM library updated to 0.15.3

Deprecations and removals

  • Removed yarp companion command TopicTest.
  • Removed unnecessary rosmsg dependencies in yarpdataplayer.
  • Removed UNMAINTAINED executable yarpfs.
  • Removed UNMAINTAINED library libyarpc.
  • Removed deprecated device controlboardwrapper2.

Fixes

  • General improvement to yarp github CI to support Ubuntu22.04+clang17, Windows2022+VS17
  • Fixed segfault in audioRecorderDeviceBase device.
  • Added missing doxygen tags to several interfaces and devices.
  • Fixed segfault when reading a mono .wav file from disk in SoundFileWav.cpp.
  • Fixed stdin in yarprun --cmd <cmd> --stdio.
  • Removed robot and iCubGui inertial ports from the example app as the GUI is unable to handle the MAS client.
  • Fix bug that forces images to be sent through RPC calls in frameGrabber_nwc_yarp.
  • The error message upon inconsistent encoder timestamps has been throttled in controlBoard_nws_yarp.
  • Fixed issue regarding windows/linux timestamps synchronization: yarp::os::SystemClock::nowSystem() now maps to std::chrono::system_clock instead of std::chrono::high_resolution_clock

New Features

Docker

Added new experimental docker image for Ubuntu22.04 http://github.com/robotology/yarp/docker

GUIs

yarpaudiocontrolgui

Added new gui yarpaudiocontrolgui to start/stop an audioRecorder_nwc_yarp or an audioPlayer_nwc_yarp device.

yarpllmgui

Added new gui yarpllmgui to control IChatbot devices.

Libraries

libYARP_sig

  • The class yarp::sig::sound has refactored to avoid the internal use (private implementation) of yarp::sig::Image data type.

libYARP_companion

  • Added companion command yarp split. The command splits an heterogeneous nested bottle received from a port into multiple ports.

libYARP_dev

  • Added new interface: IJointCoupling, an interface for handling coupled joints.
  • Added new interfaces: ISpeechSynthesizer, ISpeechTranscription.
  • Added new interface: IChatBot to interact with chatbots.
  • The interface 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.

Devices

frameTransformStorage + frameTransformClient + frameTransformServer

  • Added a timeout related parameter (FrameTransform_container_timeout) to change the refresh interval for old timed frame transforms.
  • The parameter has also been added to the frameTransformClient and frameTransformServer configuration files. The extern-name for this parameter is: ftc_storage_timeout for frameTransformClient files; fts_storage_timeout for frameTransformServer files

chatBot

  • Added nwc device chatBot_nwc_yarp for the IChatBot interface and the corresponding test
  • Added nws device chatBot_nws_yarp
  • Added fake device fakeChatBotDevice

speechSynthesizer

  • Added nwc device speechSynthesizer_nwc_yarp for the ISpeechSynthesizer interface and the corresponding test
  • Added nws device speechSynthesizer_nws_yarp
  • Added fake device fakeSpeechSynthesizer

speechTranscription

  • Added nwc device speechTranscription_nwc_yarp for the ISpeechTranscription interface and the corresponding test
  • Added nws device speechTranscription_nws_yarp
  • Added fake device fakeSpeechTranscription

Contributors

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]>

v3.8.1

11 months ago

YARP 3.8.1 Release Notes

A (partial) list of bug fixed and issues resolved in this release can be found here.

Bug Fixes

tools

yarpmotorgui

  • Fixed an issue regarding high CPU usage (#2955).

devices

multipleanalogsensorsserver

Fixed bug that resulted in a segmentation fault if one of the device to which multipleanalogsensorsserver was attached did not resized the measure vector.

serialPort_nws_yarp serialPort_nwc_yarp

Fixed segfault in serialPort_nws_yarp if devices is used but not attached yet. Fixed communication with serialPort_nwc_yarp.

opencv_grabber

Removed use of highgui.h include file.

Contributors

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]>

v3.8.0

1 year ago

YARP 3.8.0 Release Notes

A (partial) list of bug fixed and issues resolved in this release can be found here.

Deprecation and Behaviour Changes

lib_yarp_os

  • Removed old deprecated functions related to the usage of unsafe network data types (e.g. asVocab() -> asVocab32(), asInt() -> asInt32(), asDouble -> asFloat64() etc.)

Devices

  • device group has been removed because of faulty/incomplete implementation and unused. Please use yarprobotinterface instead.
  • Class DriverLinkCreator, used only by device group, has been removed.
  • device pipe has been removed because of faulty/incomplete implementation and unused.
  • device dualGrabber, previously deprecated, has been removed.
  • device remote_grabber, previously deprecated, has been removed.

New Features

Libraries

lib_yarp_companion

  • Added companion command 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

  • Added method bool getAxes(int* ax) to yarp::dev::IAxisInfo interface.

bindings

  • yarp bindings: Added corresponding getAxes() method to IAxisInfo interface + python example.

libYARP_dev_tests

  • A new library yarp_dev_tests: is now exported. It contains common sources to test Yarp device through lib_yarpdev (also outside yarp repo)

libYARP_robotinterface

  • Added support to ${portprefix} variable in parameters (#2819).

Devices

fakeLaserWithMotor

  • added new device fakeLaserWithMotor

rangefinder2D_nwc_yarp

  • added new device rangefinder2D_nwc_yarp (including IRangefinder2D tests)

frameTransformServer + frameTransformClient

  • Now both 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

  • Improved thrift generator in order to handle default values of the variables declared inside a .thrift file.

Extern

Catch

  • Migration from Catch V2.13.8 to Catch V3.2.1.

sqlite3

  • Migration from sqlite to sqlite3. Fixed issue preventing extern/sqlite3 (i.e. YARP_priv_SQLite3) to be correctly found as a dependency by other projects.

GUIs

yarpview

  • Added the possibility to set a custom title for yarpview by passing --title + custom title to the executable
  • If the title argument is not passed yarpview window title will be assigned as it has been until now

yarpmotorgui

  • Added visualization of motor position when a joint is in hardware fault.
  • Improved sliders labels alignment.
  • Added a new option to set the number of decimal digits of the slider.

YCM

  • migration from YCM 0.13 to YCM 0.15.1

Other

  • added option YARP_COMPILE_ALL_FAKE_DEVICES to build all fake devices in one single shot

Portmonitors

image_rotation

  • added new portmonitor image_rotation

Bug Fixes

bindings

  • IGazeControl.storeContext(): now the method is correctly exposed to Python, returning the ID instead of trying to modify a pointer to it.

devices

ffmpeg_grabber

  • Fixed linking problems on Windows.

AudioRecorderWrapper

  • It now inherits from yarp::dev::WrapperSingle instead of yarp::dev::IMultipleWrapper

AudioPlayerWrapper

  • It now inherits from yarp::dev::WrapperSingle instead of yarp::dev::IMultipleWrapper

frameTransformClient

  • Now, if the selected configuration xml file does not include a certain interface, the device is still correctly initialized but that interface won't be available. If a method that involves the missing interface is called, an error will be returned.

controlBoard_nws_yarp

  • Fixed handling of 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

  • Add more verbosity when sensor name is not found.

Tools

yarprobotinterface

  • yarprobotinterface: is now able to parse enabled_by and disabled_by xml attributes. See yarprobotinterface Doxygen documentation.

Yarp companion

  • Fixed yarp command write throwing segmentation fault when argc was less than 2.

Integration Tests

  • Tests: Added integration tests to check the correct execution of the following commands: yarp --version yarpdev --list yarp plugin --all
  • Tests: If no plugins are available, the command yarp plugin --all now returns 0 (OK) instead of 1 (ERROR).

Contributors

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]>

v3.7.2

1 year ago

YARP 3.7.2 Release Notes

A (partial) list of bug fixed and issues resolved in this release can be found here.

Bug Fixes

Documentation

  • Major improvements to Yarp documentation

Libraries

lib_yarp_os

  • Yarp now displays an error message if it is unable to save its configuration file

Devices

controlBoard_nws_yarp

  • Encoder timestamps are now properly updated

Contributors

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]>

v3.7.1

1 year ago

YARP 3.7.1 Release Notes

A (partial) list of bug fixed and issues resolved in this release can be found here.

Bug Fixes

CMake

  • 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.

Devices

  • GenericSensorRosPublisher (and derived devices): added checks if the interfaces are available in the Attach phase

Libraries

lib_yarp_dev

  • added missing timestamp to IOdometry2D::getOdometry() method

Tools

yarpmotorgui

  • This pr solves the problem reported in issue #issue2839. Now yarpmotorgui does not show the error dialog when setting only a subset of the available robot parts to a custom position

Contributors

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.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]>

v3.7.0

1 year ago

YARP 3.7.0 Release Notes

A (partial) list of bug fixed and issues resolved in this release can be found here.

Deprecation and Behaviour Changes

lib_yarp_os

  • Removed old deprecated functions related to the usage of unsafe network data types (e.g. asVocab() -> asVocab32(), asInt() -> asInt32(), asDouble -> asFloat64() etc.)

Devices

  • removed deprecated devices: NavigationServer -> please use: navigation2D_nws_yarp NavigationClient -> please use: navigation2D_nwc_yarp Map2DServer -> please use: map2D_nws_yarp Map2DClient -> please use: map2D_nwc_yarp Localization2DCServer -> please use: localization2D_nws_yarp Localization2DClient -> please use: localization2D_nwc_yarp rangefinder2DWrapper -> please use: rangefinder2D_nws_yarp

New Features

Libraries

lib_yarp_os

idl/WireReader
  • Added readBlock method.
idl/WireWriter
  • Added writeBlock method.
  • Added skip_tag flag to all write methods.

lib_yarp_dev

  • ITorqueControl supports four new friction parameters: viscousPos, viscousNeg, coulombPos, coulombNeg. These parameters are used to improve the friction model (and its compensation at FW level).

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

  • Added support to ${portprefix} variable in parameters (#2819).

Devices

audioToFileDevice

  • added new option --add_marker
  • added new option --save_mode break_file

Port Monitors

  • Added new portmonitor depthimage_to_vector
  • added new portmonitor sound_marker

Tools

yarpidl_thrift

  • Improved serialization for lists of basic types. When possible, instead of being serialized element by element, lists of basic types are now serialized as blocks.

GUIs

yarpmotorgui

  • Added an alternative visualization to the tree view on the left of the yarpmotorgui. It is a Widget visualization with the flow layout. In this way, it is possible to see the status of all the joints in a single screen.

Bug Fixes

Catch2

  • Imported Catch v2.13.8 (#2795). This fixes building the unit tests on some configurations.

CMake

  • fixed compatibility with CMake 3.23.1 on macOS.

GUIs

yarpmotorgui

  • The target box for the joints sliders now lands where expected (#2824).

Contributors

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]>

v3.6.0

2 years ago

YARP 3.6.0 Release Notes

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.
Nav2D::IMap2D
  • Added the following methods:
    • 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 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).
  • Added optional parameter FrameTransform_verbose_debug

frameTransformStorage

  • 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.

Bindings

  • Fixed compilation of Python3 bindings on certain configurations. (#2725)

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):

   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]>

v3.5.1

2 years ago

YARP 3.5.1 Release Notes

A (partial) list of bug fixed and issues resolved in this release can be found here.

New Features

Libraries

math

  • added method yarp::math::Quaternion::isValid()
  • added method yarp::math::FrameTransform::isValid()

Build System

  • Fixed infinite loop when using yarp_add_idl and yarp_idl_to_dir without searching the idl_tools component.
  • Fixed build on Ubuntu Bionic when both PCL and OpenNI are enabled

Libraries

os

Log
  • Fixed custom log components not forwarding the log properly when running under yarprun.
ResourceFinder
  • Fixed folder creation in getHomeContextPath and getHomeRobotPath.
idl::WireReader
  • Fixed reading empty string as latest argument.

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

  • Fixed extern-name for non-string parameters.

run

  • Fixed handling of multiple environment variables with yarprun on win32

Devices

audioFromFileDevice

  • Fixed module when channels are > 1

controlBoard_nws_yarp

  • Fixed segmentation fault if the device to which the nws attempts to attach was not successfully opened.

controlBoard_nws_ros

  • /joint_states is no longer appended to the topic name.

controlboardremapper

  • Fixed segmentation fault.

ffmpeg_grabber

  • Fixed symbol lookup runtime error.

ffmpeg_writer

  • Fixed symbol lookup runtime error.

frameGrabber_nws_ros

  • The frame_id parameter is no longer required to start with /.

frameTransformClient

  • Fixed concurrent access to the internal container.
  • Timestamp is now set also for static_transforms
  • Updated xml files according to the changes to the subdevices.

frameTransformServer

  • Updated xml files according to the changes to the subdevices.

frameTransformGet_nwc_yarp

  • Fixed missing callback initialization. Without it, no data was collected from the streaming port.

frameTransformSetMultiplexer

  • fixed race condition issue in deleteTransform() method.

frameTransformStorage

  • Fixed race condition issue: added extra mutex to protect the periodicThread from set/get/delete operations
  • the periodic thread can be now stopped/started on request by methods IFrameTransformStorageUtils::stopStorageThread and IFrameTransformStorageUtils::startStorageThread.
  • Fixed 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.
  • Fixed attach function that did not performed the view on the iFrameTransformStorageGet interface and did not return true when successful.

frameTransformContainer

  • Added new iterator class. It iterates only on valid transforms.
  • when a transform is deleted, it is marked as invalid. The transform is then removed during the next iteration of the checkAndRemoveExpired().
  • Fixed bug in frameTransformContainer which was not correctly deleting old transforms.

frameTransformSet_nwc_yarp

  • The device was refactored in order to easily manage ports names.

frameTransformSet_nws_yarp

  • The device was refactored in order to easily manage ports names.

frameTransformGet_nwc_yarp

  • The device was refactored in order to easily manage ports names.

frameTransformGet_nws_yarp

  • The device was refactored in order to easily manage ports names.

frameTransformSet_nwc_ros

  • Fixed bug in frameTransformSet_nwc_ros::publishFrameTransforms.

frameTransformSet_nws_ros

  • Fixed time stamps of the static transforms wrongly set to yarp::os::Time::now().

frameTransformGet_nwc_ros

  • Fixed setStrict not called for the subscribers ports for the /tf and /tf_static topics, that was causing a loss of frameTransforms.

map2D_nws_yarp

  • Fixed typos in Map2D_nws_yarp::parse_vocab_command.

opencv_grabber

  • Efficiency has been improved as copies are (in most cases) no longer performed in order to convert from OpenCV frames to YARP image structures.
  • Options --flip_x, --flip_y and --transpose are now also available when reading from file (--movie).

rgbdSensor_nws_ros

  • Fixed bug in rgbdSensor_nws::open. The period was still in milliseconds.

transformClient

  • Fixed method delete in transformClient, now avoiding race conditions during server/client update via streaming port.

Port Monitors

image_compression_ffmpeg

  • Fixed symbol lookup runtime error.

GUIs

yarplogger

  • Fixed bug.

yarpmanager

  • Port names containing trailing or leading white spaces not targeted as non-existing but throwing an error when trying to connect.

Bindings

Python

  • Enable compilation of libYARP_math in the Python wheels

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.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]>

v3.5.0

2 years ago

YARP is a library and toolkit for communication and device interfaces, used on everything from humanoids to embedded devices.

YARP 3.5.0 Release Notes

A (partial) list of bug fixed and issues resolved in this release can be found here.

Important Changes

Dependencies

  • YCM 0.13 is now required.
  • OpenCV 2 is no longer supported.
  • Added optional Zlib dependency.
  • Qt 5.4 or later is now requred to build YARP GUIs.

Libraries

sig

Image
  • Bottom to top images are no longer flipped when sent through the network. This means that the image needs to be manually flipped after it is received.
  • Bottom to top images might cause issues when received by YARP 3.4.5 or earlier.

Devices

Deprecation and Behaviour Changes

  • A few default values for the environment variables used by yarp are now different:
    • Linux:
    • Windows:
      • YARP_DATA_DIRS defaults to %%ALLUSERSPROFILE%%\yarp
      • YARP_CONFIG_DIRS defaults to %%ALLUSERSPROFILE%%\yarp\config

Libraries

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
  • The 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
  • The 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
  • Deprecated methods with alternatives in 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:
    • The return value of yarpdatadirs() is different (std::vector<std::string> instead of std::string).
    • The yarpdatahome() and yarpconfighome() do not create the directory, it must be created manually (for example with yarp::os::mkdir_p()) if required.
Stamp
  • Using 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

  • The yarp/dev/FrameGrabberControl2.h header file was properly marked as deprecated (it should have been deprecated in YARP 3.0)
  • The yarp/dev/FrameGrabberInterfaces.h header file was deprecated. All interfaces were moved in the corresponding header.
  • All classes and vocabs moved in framegrabber_protocol library were removed. This is an API break, but nobody should be using these outside of YARP.
  • The flag 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).
  • The IVisualParams.h file was deprecated in favour of IRgbVisualParams.h and IDepthVisualParams.
  • All headers for the deprecated interfaces are now properly deprecated.
  • The interfaces IFrameGrabber and IFrameGrabberRgb are now deprecated.
IDepthVisualParams
  • The retificationMatrix parameter was renamed rectificationMatrix
IRgbVisualParams
  • The retificationMatrix parameter was renamed rectificationMatrix

robotinterface

  • The 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.

Port Monitors

  • Port monitors were reorganized and renamed without keeping the back compatibility with the old name. The new names are:
    • depthimage_compression_zfp (zfp)
    • depthimage_to_mono (depthimage)
    • depthimage_to_rgb (depthimage2)
    • segmentationimage_to_rgb (segmentationimage)

Devices

  • 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)

New Features

Libraries

conf

  • Added the following functions in <yarp/conf/numeric.h>:
    • yarp::conf::numeric::from_string
    • yarp::conf::numeric::to_string
    • yarp::conf::numeric::to_hex_string
  • Added the header <yarp/conf/string.h> containing the following functions:
    • yarp::conf::string::split
    • yarp::conf::string::join
  • Added environment::path_separator
  • Added the following functions in <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
  • Added the new dirs.h file with methods to retrieve the important folders
  • Added the following methods:
    • std::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

  • Introduced the 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.
    • The counter uses unsigned int instead of int.
    • Stamp::getMaxCount() is replaced with Header::npos
    • Stamp::getCount() is replaced with Header::count()
    • Stamp::getTime() is replaced with Header::timeStamp()

Bottle

  • Added BOTTLE_TAG_VOCAB32 tag. This is the same as BOTTLE_TAG_VOCAB.
  • The usage of BOTTLE_TAG_VOCAB is not recommended in new code, use BOTTLE_TAG_VOCAB32 instead.
  • Added addVocab32() overloads accepting 4 chars and string.
DummyConnector
  • The 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 Portables and in a few other cases.
Log
  • The YARP_FORWARD_CODEINFO_ENABLE, YARP_FORWARD_HOSTNAME_ENABLE, YARP_FORWARD_PROCESSINFO_ENABLE, and YARP_FORWARD_BACKTRACE_ENABLE are no longer considered experimental.
PeriodicThread
  • The constructor now accepts a third (optional) parameter, 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).
  • Added new constructor:
    • 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
  • Added makeVocab32() overload accepting 4 chars
Wire
  • Added yarp() const overload
WireLink
  • The write method is now const. The signature is now:
    bool write(const PortWriter& writer, PortReader& reader) const
    
WireReader
  • Vocabs are now accepted in readI32
  • Added the following methods:
    • readVocab32
    • readUI8
    • readUI16
    • readUI32
    • readUI64
    • readSizeT
WireWriter
  • Added the following methods:
    • writeVocab32
    • writeUI8
    • writeUI16
    • writeUI32
    • writeUI64
    • writeSizeT
  • Added addVocab32() overloads accepting 4 chars and string

sig

file
  • Added read support for JPEG files.
  • added read/write support for MP3 files.
  • Added the following methods:
    • yarp::sig::file::read_bytestream(Sound& data, const char* bytestream, size_t streamsize, std::string format)
utils
  • Added an optional parameter to depthRgbToPC to make the pointcloud unorganized and remove zero points.
Image
  • Added move() and swap() methods.
Sound
  • Added the following methods:
    • 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
  • Added cropRect() helper function for cropping a rectangle area out of an image given two opposite vertices.

dev

  • Added the new WrapperSingle and WrapperMultiple helper classes, that inherit from both IWrapper and IMultipleWrapper but require to implement only one of these interfaces.
  • Added the template class 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.
  • Added the new datatypes generated by thrift:
    • yarp::dev::AudioRecorderStatus
    • yarp::dev::AudioPlayerStatus
  • Added the new class AudioPlayerDeviceBase, all playback device drivers now inherit from this class.
  • Added the new class AudioRecorerDeviceBase, all recording device drivers now inherit from this class.
IFrameGrabberImage
  • The getImageCrop method has now a working default implementation.
  • The IFrameGrabberImage interface is now an alias for IFrameGrabberOf<yarp::sig::ImageOf<yarp::sig::PixelRgb>>.
IFrameGrabberImageRaw
  • The getImageCrop method has now a working default implementation.
  • The IFrameGrabberImageRaw interface is now an alias for IFrameGrabberOf<yarp::sig::ImageOf<yarp::sig::PixelMono>>.
IAudioRender
  • Added the new methods:
    • bool setHWGain(double gain)
    • bool setSWGain(double gain)
IAudioGrabberSound
  • Added the new methods:
    • bool setHWGain(double gain)
    • bool setSWGain(double gain)
Lidar2DDeviceBase
  • The Lidar2DDeviceBase class, now implements yarp::dev::IPreciselyTimed.
  • All lidar devices must implement the method acquireDataFromHW() which is pure virtual in Lidar2DDeviceBase
  • Lidar devices can optionally call the method Lidar2DDeviceBase::updateLidarData, which calls acquireDataFromHW() and a few other utility functions (e.g. updateTimestamp(), etc.)
  • The run() method of the devices, which was previously responsible for the data collection, now just calls updateLidarData().
Nav2D::IMap2D
  • Added the new methods:
    • bool clearAllMapsTemporaryFlags()
    • bool clearMapTemporaryFlags(std::string map_name)
    • bool saveLocationsAndExtras(std::string locations_collection_file)
    • bool loadLocationsAndExtras(std::string locations_collection_file)
Nav2D::MapGrid2D
  • Added the new method:
    • void clearMapTemporaryFlags()
  • Added internal lossless compression using Zlib. The write() and read() methods handle the compression before sending data to the network.
  • Added method 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.
  • Improved logic to convert ros map images to ros occupancy data and viceversa.
Nav2D::Map2DLocation
  • Added the new method
    • 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
  • The 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());
    

Carriers

  • The unix_stream carrier is no longer considered experimental.

Port Monitors

  • There is now a new yarppm library (similar to yarpcar and yarpmod) that links all the portmonitors in static builds.
  • Added image_compression_ffmpeg port monitor to compress a video stream using the H264, H265, or MPEG2VIDEO codec.
  • Added sound_compression_mp3 port monitor to decompress a mp3 bytestream to yarp::sig::Sound. Encoding not supported yet.
  • Added depthimage_compression_zlib port monitor which uses the Zlib library to compress/decompress (lossless) depth images through the network.

Devices

AudioPlayerWrapper

  • Added RPC commands to control the volume via setHWGain() and setSWGain().
  • It now broadcasts its internal status on a xxx/status:o port

AudioRecorderWrapper

  • Added RPC commands to control the volume via setHWGain() and setSWGain().
  • It now broadcasts its internal status on a xxx/status:o port

fakeFrameGrabber

  • added RPC port, to change its mode at runtime. It is also possibile to load a new background image at runtime. Rpc command 'help' will display available commands.
  • Added --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.
  • Double buffering is now used to produce the image on a separate thread. This should improve performances when generating large images.
  • The getImage() method no longer blocks the caller. The --syncro option was added to restore the old behavior.
  • The topIsLow option and the set_topIsLow rpc command were added to produce images with bottom to top scanlines.
  • Added --noise options and set_noise RPC commands to add a a white noise to the generated image.
  • Added --snr option and set_snr RPC commands. to specify the signal noise ratio if noise is enabled.

fakeLaser

  • Added rpc port to dynamically create obstacles in the map. Use the rpc command 'help' to get additional information.
  • Improved the ray tracing algorithm: laser scans are now bound to the map size.
  • Added map_context parameter to load a test map from a specific context.

fakeMicrophone

  • It now generates a fixed tone sound.

fakeNavigation

  • Several improvements for testing purposes.

frameTransformServer

  • Added a new RPC command generate_view which generates via dot (graphviz) a pdf file, containing a diagram of the transforms tree.

map2DServer

  • Added enable_maps_compression <0/1> RPC command.

navigation2DClient

  • getNameOfCurrentTarget() logic moved from Navigation2DClient to navigation2DServer.

Tools

  • Added yarpdataplayer-console tool that works without without a graphic server.

yarp

  • The read subcommand now accepts the trim argument to reduce the number of characters printed for each message received.
  • Added the following new subcommands:
    • 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

  • The following data outputs for the --type parameter are now supported:
    • bottle (default)
    • image
    • image_jpg
    • image_png
    • video
    • depth
    • depth_compressed

yarprobotinterface

  • Arguments taken from the command line are now handled and used to replace parameters marked with the attribute extern-name.

yarpidl_thrift

  • Thrift was updated to version 0.14.1.
  • Added support for 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;
    }
    
  • Types annotated with "yarp.type" are no longer serialized as nested. This improves the compatibility with existing services returning Bottle or other YARP types, and makes it possible to write a thrift file for existing protocols. On the other hand, this breaks compatibility with thrift services returning Bottles or other annotated types, generated before this commit. This is a breaking change, but should impact only a very limited number of cases, and it can be easily fixed by regenerating the files.
  • Added support for vocabs in structs (#2476). Vocabs can be defined in this way:
    typedef i32 ( yarp.type = "yarp::conf::vocab32_t" ) vocab
    
    struct FooStruct
    {
        1: vocab foo;
    }
    
  • Added "yarp.nested" annotation for struct fields When defined = "true", this serialize a struct as a bottle instead of as a flat structure. For example, given these 2 structs:
    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.
  • It is now possible to specify a "const" qualifier to service methods using the 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
    

GUIs

yarpview

  • Added the --rightout <portname> option that enables intercepting the mouse right button click events:
    • Single click (sends the current cursor coordinates to the specified output port)
    • Press, drag, and release (sends the coordinates of the press point and of the release one to the specified output port)
  • Added 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).

yarpdataplayer

  • It is now possible to reproduce depth and depth_compressed data types.
  • The yarpdataplayer tool was refactored, several bugs fixed, and new features added (#1144, #2140, #2151, #2400, #2401, #2442).

Bindings

  • Added support for std::vector<short int>.
  • Added support for yarp::sig::VectorOf<int>.
  • Added the following extensions to yarp::sig::Sound
    • sound2VecNonInterleaved()
    • vecNonInterleaved2Sound()
    • sound2VecInterleaved()
    • vecInterleaved2Sound()

New Experimental Features

EXPERIMENTAL means that the software is under development, provided with incomplete documentation and it may be modified/renamed/removed without any notice.

Carriers

  • Added new EXPERIMENTAL 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.

Devices

  • Added the following new EXPERIMENTAL devices:
    • 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 image
    • frameTransformStorage
    • frameTransformSetMultiplexer
    • frameTransformGetMultiplexer
  • Several new EXPERIMENTAL devices were added in order to implement the Network Wrapper Server/Client Architecture described in #2441. 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.
    • 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:
    • All deprecated parameters were removed
    • Periods are in seconds, and not in milliseconds.
    • Parameters in nws_ros devices no longer have the "ROS_" prefix".
  • Added new EXPERIMENTAL devices 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.
  • The laserFromRosTopic is still considered EXPERIMENTAL, since it will be replaced by an appropriate NWC

Bindings

Python

  • Introduced unofficial support to install YARP with tools like pip. A new yarp-middleware package is now distributed in PyPI.

Bug Fixes

Libraries

sig

Image
  • The topIsLow flag is now properly handled, kept in sync with the internal IplImage, and forwarded through the network.
ImageFile
  • Fixed SavePNG() producing corrupted output files.

Carriers

portmonitor

  • The reply handler is now set correctly, it is therefore now possible to monitor RPC connections.

Devices

grabberDual

  • The topIsLow flag is no longer changed.

Devices

RGBDSensorClient

  • The device no longer crashes when no image was received yet (#2349).
  • The timestamp is now correct.

map2DServer

  • Fixed issue preventing correct file save/load operations of locations data.

GUIs

yarpdataplayer

  • Timestamp is now interpreted correctly, dealing with locale issues (#2558).
  • Fixed step command in RPC exhibiting odd behaviors (#2151).

Contributors

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]>

v3.4.6

2 years ago

YARP 3.4.6 Release Notes

A (partial) list of bug fixed and issues resolved in this release can be found here.

Bug Fixes

Build System

  • The yarpros tool is no longer compiled when YARP_COMPILE_EXECUTABLES is disabled. (#2598)

Libraries

sig

Image

  • Fixed compatibility with images with topIsLow==false sent by YARP 3.5 (#2612).

dev

DeviceResponder

  • Removed the debug messages flooding (#2630, #2631).

GUIs

yarpview

  • Fixed upside down image when topIsLow is false (Qt >= 5.3.2 only) (#2612).

Devices

localization2DClient

  • Implemented missing method getEstimatedOdometry().

navigation2DClient

  • Implemented missing method getEstimatedOdometry(),

localization2DServer

  • Implemented RPC.

Contributors

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]>