YARP - Yet Another Robot Platform

Overview

YARP logo YARP

YARP homepage

 __  __ ___  ____   ____
 \ \/ //   ||  _ \ |  _ \
  \  // /| || |/ / | |/ /
  / // ___ ||  _ \ |  _/
 /_//_/  |_||_| \_\|_|
 ========================
Yet Another Robot Platform

Latest release Release date

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

Documentation

YARP documentation

Installation

See full instructions at http://www.yarp.it/install.html

  • On Linux:
sudo apt-get install cmake libace-dev
git clone https://github.com/robotology/yarp
cd yarp && mkdir build && cd build && cmake .. && make
sudo make install  # Optional
brew install robotology/formulae/yarp

Regular YARP builds use the ACE library. On Linux and macOS, YARP can be compiled without ACE by adding -DSKIP_ACE=TRUE when running cmake.

Tutorials

There's a comprehensive list of tutorials here:

License

License

Material included in YARP is Copyright of Istituto Italiano di Tecnologia (IIT), RobotCub Consortium and other contributors.

Most YARP components are released under the terms of the BSD-3-Clause. Some optional components are released under the terms of the LGPL-2.1 or later, GPL-2.0 or later, GPL-3.0 or later, or Apache-2.0 License. See the file COPYING and LICENSE files for details.

CI Status

Build Status

Stats

Github commits (since latest release) GitHub last commit

GitHub commit activity the past week, 4 weeks, year GitHub contributors

GitHub closed issues GitHub issues

GitHub pull requests GitHub closed pull requests

GitHub top language GitHub language count

Development Powered by

GitHub

Slack

ZenHub

Shields.io

YARPino

Comments
  • Several Improvements for ROS Compatibility

    Several Improvements for ROS Compatibility

    See #826 Main contribution is the proper implementation of getBusInfo, which provides a connection list to ROS. It's not yet implemented for services.

    WARNING The following nodes are unexpectedly connected:
    * /rostopic_23303_1468838229656->/chatter-@/yarp/listener (/chatter)
    * unknown (http://icubunicorn:43247/)->/rosout (/rosout)
    

    After applying the commit, roswtf does not complain anymore. I guess that there is a non-consistency with some of the values yarp sends to ROS via the Slave API if the commit is not applied. However I did not investigate further as the commit fixes it nicely.

    return nestedName + category + "@" + nodeName;
    

    getNodeName()

    return nodeName;
    

    Perhaps the NestedContact is created with the wrong nodeName? Can you tell me what is the output of getNestedContact() and toString() for the example above?

    ConstString nestedName = item.nc.getNestedName();
    for (std::multimap<ConstString, NodeItem>::iterator it = by_part_name.begin(); it != by_part_name.end(); ++it) {
    if (it->first == nestedName && it->second.contactable == contactable) {
    by_part_name.erase(it);
    break;
    }
    }
    for (std::multimap<ConstString, NodeItem>::iterator it = by_category.begin(); it != by_category.end(); ++it) {
    if (it->first == nestedName && it->second.contactable == contactable) {
    by_category.erase(it);
    break;
    }
    }
    

    I don't know if Contactable::operator==() is implemented though, perhaps we need more... If you want to take care about this, I'll just focus on the ip->hostname conversion...

    ConstString nestedName = item.nc.getNestedName();
    ConstString category = item.nc.getCategory();
    for (std::multimap<ConstString, NodeItem>::iterator it = by_part_name.begin(); it != by_part_name.end(); ++it) {
    if (it->first == nestedName && it->second.contactable.where().toString() == contactable.where().toString()) {
    by_part_name.erase(it);
    break;
    }
    }
    for (std::multimap<ConstString, NodeItem>::iterator it = by_category.begin(); it != by_category.end(); ++it) {
    if (it->first == category && it->second.contactable.where().toString() == contactable.where().toString()) {
    by_category.erase(it);
    break;
    }
    }
    
    sub = new yarp::os::Subscriber<std_msgs::String>();
    if (!sub->topic("/yarp/foo")) {
    yError() << "Failed to create subscriber to /yarp/foo\n";
    return -1;
    }
    MyReport report;
    sub->asPort().setReporter(report);
    
    if (info.incoming) {
    c = RosNameSpace::rosify(nic.queryName(info.sourceName));
    incomingURIs.insert(std::make_pair(info.portName, c.toURI()));
    } else {
    c = RosNameSpace::rosify(nic.queryName(info.targetName));
    outgoingURIs.insert(std::make_pair(info.portName, c.toURI()));
    }
    

       

    Component: Library - YARP_os Target: YARP v2.3.68 Component: ROS Integration Resolution: Merged 
    opened by Tobias-Fischer 53
  • yarp connect error

    yarp connect error

    we recently see a strange error. When we try to connect 2 buffered ports. The port in initialized with just the name and no other parameters for what I can see.

    The context is the following: there are many different modules connecting togheter, and we found out that one particular module (called attentionPrioritizer) is failing when connecting TO other 2 modules.

    yarp connect output is

    yarp connect /attPrioritiser/icub/cmd:o /gazeArbiter/icub/cmd:i Failure: Cannot connect to 0.516828:/tcp://gazeArbiter/icub/cmd:i icub@icub14:/usr/local/src/robot/attention (master)$ yarp connect /attPrioritiser/icub/cmd:o /gazeArbiter/icub/cmd:i Failure: Cannot connect to 0.516828:/tcp://gazeArbiter/icub/cmd:i icub@icub14:/usr/local/src/robot/attention (master)$ yarp connect /attPrioritiser/icub/cmd:o /gazeArbiter/icub/cmd:i Failure: Cannot connect to 0.000000:/tcp://gazeArbiter/icub/cmd:i icub@icub14:/usr/local/src/robot/attention (master)$ yarp connect /attPrioritiser/icub/cmd:o /gazeArbiter/icub/cmd:i Failure: Cannot connect to 0.963911:/tcp://gazeArbiter/icub/cmd:i icub@icub14:/usr/local/src/robot/attention (master)$ yarp connect /attPrioritiser/icub/cmd:o /gazeArbiter/icub/cmd:i

    The number before :/tcp changes from time to time, it is not a fixed number.

    The yarp server output is;

    • query "/attPrioritiser/icub/cmd:o"
      • query "/gazeArbiter/icub/cmd:i"
      • query "tcp://gazeArbiter/icub/cmd:i" -> announce "/gazeArbiter/icub/cmd:i" 0
      • query "/attPrioritiser/icub/database:o"
      • query "/workingMemory"
      • query "tcp://workingMemory" -> announce "/workingMemory" 0
      • query "/attPrioritiser/icub/database:o"
      • query "/workingMemory"
      • query "tcp://workingMemory" -> announce "/workingMemory" 0
      • query "/attPrioritiser/icub/database:o"
      • query "/workingMemory"
      • query "tcp://workingMemory" -> announce "/workingMemory" 0

    There is this additional query for tcp://port and announce that I do not understand

    The attPrioritiser module, give this error:
    Note: those messages comes from different runs so the number / port names in this case does nor match, but when an error appears, the number listed here as carrier is the same preponed to yarpserver error message.

    yarp: No .ini file found for plugin: 0.936999 yarp: Failed to find library (null) with carrier 0.936999 yarp: Could not find carrier "0.936999" yarp: Removing output from /attPrioritiser/icub/protoObject:o to /blobFinder/icub/left_cam yarp: No .ini file found for plugin: 0.936999 yarp: Failed to find library (null) with carrier 0.936999 yarp: Could not find carrier "0.936999" yarp: No .ini file found for plugin: 0.936999 yarp: Failed to find library (null) with carrier 0.936999 yarp: Could not find carrier "0.936999" yarp: Removing output from /attPrioritiser/icub/highLoop:o to /attPrioritiser/icub/cmd:i yarp: Removing input from /attPrioritiser/icub/highLoop:o to /attPrioritiser/icub/cmd:i yarp: No .ini file found for plugin: 0.936999 yarp: Failed to find library (null) with carrier 0.936999 yarp: Could not find carrier "0.936999" yarp: Removing output from /attPrioritiser/icub/direct:o to /iKinGazeCtrl/mono:

    In the module receiving the connection somtime we see the message [debug]broken index but I don' t know if it is related or not.

    opened by barbalberto 51
  • Change bindings structure and JAVA bindings

    Change bindings structure and JAVA bindings

    This PR mainly focuses on refactoring the JAVA bindings. While I am doing this I am also refactoring the file system organisation of the bindings folder. Regarding the latter, the idea is to have all the language related stuff in a single folder. Each folder than has an examples subfolder, a tests subfolders and a main CMakeLists.txt responsible of generating the bindings.

    Regarding the JAVA, the idea is to generate (and install) two single files:

    • a JAR file containing all the .class files
    • library file, containing the JNI library.

    Users must the add the JAR file to the JAVA class path and the JNI to the java.library.path variable.

    [WIP]

    • [x] finish cleanup file system for some languages
    • [x] prepare cmake for current available tests
    • [x] test JAVA in matlab (@vtikha)
    • [x] choose proper installation destination.
    • [x] update travis
    • [x] update documentation
    • [x] clear from cmake cache old variables (e.g. PREPARE_CLASS_FILES)

    This PR should fix some longstanding issues with bindings, in particular Fixes #481. Fixes #318. Fixes #1327.

    Component: Bindings Resolution: Merged Type: Cleanup PR Status: Changelog - OK Target: YARP v2.3.72 
    opened by francesco-romano 44
  • Windows linking errors

    Windows linking errors

    Hi all, I am still having a hard time using yarp on Windows and Visual Studio 2013. I have set the lib and include directories in my projects, set the environment variables by following the guide for windows... On a terminal, yarpserver runs fine. But I get error like these:

    error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl yarp::os::ConstString::~ConstString(void)" (__imp_??1ConstString@os@yarp@@QEAA@XZ)
    error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl yarp::os::ConstString::ConstString(char const *)" (__imp_??0ConstString@os@yarp@@QEAA@PEBD@Z)
    error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl yarp::os::Bottle::Bottle(void)" (__imp_??0Bottle@os@yarp@@QEAA@XZ)
    error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl yarp::os::Port::Port(void)" (__imp_??0Port@os@yarp@@QEAA@XZ)
    error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl yarp::os::Network::Network(void)" (__imp_??0Network@os@yarp@@QEAA@XZ)
    error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl yarp::os::Network::~Network(void)" (__imp_??1Network@os@yarp@@UEAA@XZ)
    error LNK2001: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl yarp::os::NetworkBase::checkNetwork(double)" (__imp_?checkNetwork@NetworkBase@os@yarp@@SA_NN@Z)
    

    @pattacini You said you are using VS2013? Did you ever have this problem before ?

    Thank you guys!

    Resolution: Invalid Issue Type: QA/Support Resolution: Answered 
    opened by JimmyDaSilva 39
  • ControlBoardWrapper2 ROS topic

    ControlBoardWrapper2 ROS topic

    Since some people uses both YARP and ROS, we tought to have the controlBoardWrapper2 optionally create a ROS topic along the usual yarp port.

    I've done a first implementation of this and now it is able to create a topic publiching a sensor_msgs/JointState message which is one of the 'native' ROS messages documented here http://docs.ros.org/api/sensor_msgs/html/msg/JointState.html

    I used a .msg file to generate the class that will be sent through the topic The data sent are

    • list of joint name (useless on yarp, but needed on ROS)
    • vector of encoders
    • vector os velocities
    • vector of torques

    For now the data is filled with dummy names and numbers just to see if it works as expected.

    I pushed the code on a branch called ControlBoardWrapper2_NewOutputPort. The CMake flag CBW2_USE_ROS_MSG has to be enabled in order to compile the needed code and generate this topic.

    It has been tested with a simple subscriber create by following the tutorial on ROS webpage (http://wiki.ros.org/ROS/Tutorials/ExaminingPublisherSubscriber) so not using yarp code, btw yarp read is able to read the data back if the yarpidl_rosmsg service is running like explained in the page http://wiki.icub.org/yarpdoc/yarp_with_ros.html

    TODO:

    • define exactly with type of ros message could be more useful to implement
    • fix segfault while closing (it is still WIP ... )
    Component: IDL Issue Type: Feat/Enh Req 
    opened by barbalberto 34
  • YARP does not compile with OpenCV 4

    YARP does not compile with OpenCV 4

    I pulled opencv and yarpdataplayer and yarpdatadumper doesn't compile:

    /home/ngenesio/yarp/src/yarpdatadumper/main.cpp:418:30: error: use of undeclared identifier 'IplImage'
                    int frameW=((IplImage*)itemEnd.obj->getPtr())->width;
                                 ^
    /home/ngenesio/yarp/src/yarpdatadumper/main.cpp:418:39: error: expected expression
                    int frameW=((IplImage*)itemEnd.obj->getPtr())->width;
                                          ^
    /home/ngenesio/yarp/src/yarpdatadumper/main.cpp:419:30: error: use of undeclared identifier 'IplImage'
                    int frameH=((IplImage*)itemEnd.obj->getPtr())->height;
                                 ^
    /home/ngenesio/yarp/src/yarpdatadumper/main.cpp:419:39: error: expected expression
                    int frameH=((IplImage*)itemEnd.obj->getPtr())->height;
                                          ^
    /home/ngenesio/yarp/src/yarpdatadumper/main.cpp:428:52: error: use of undeclared identifier 'CV_FOURCC'
                    videoWriter.open(videoFile.c_str(),CV_FOURCC('H','F','Y','U'),
                                                       ^
    /home/ngenesio/yarp/src/yarpdatadumper/main.cpp:429:38: error: use of undeclared identifier 'cvSize'
                                     fps,cvSize(frameW,frameH),true);
                                         ^
    /home/ngenesio/yarp/src/yarpdatadumper/main.cpp:457:49: error: use of undeclared identifier 'IplImage'
                        cv::Mat img=cv::cvarrToMat((IplImage*)item.obj->getPtr());
                                                    ^
    /home/ngenesio/yarp/src/yarpdatadumper/main.cpp:457:58: error: expected expression
                        cv::Mat img=cv::cvarrToMat((IplImage*)item.obj->getPtr());
                                                             ^
    /home/ngenesio/yarp/src/yarpdatadumper/main.cpp:457:37: error: no member named 'cvarrToMat' in namespace 'cv'
                        cv::Mat img=cv::cvarrToMat((IplImage*)item.obj->getPtr());
    
    

    my opencv_version is 4.0.0-pre. I'm afraid that in opencv 4 they will remove IplImage and cvarrToMat. We should make yarp::sig::Image compatible with cv::Mat without taking account of IplImage.

    Component: Library - YARP_sig Component: GUI - yarpdataplayer Component: Tool - yarpdatadumper Resolution: Fixed Fixed in: YARP v3.3.1 
    opened by Nicogene 30
  • OpenNI2 device and possible migration to RGBDWrapper

    OpenNI2 device and possible migration to RGBDWrapper

    Here is @barbalberto's post from issue #683 :

    Ok, I see there is there is good will for improvement and I like it :+1: so here is the 'long answer', I hope you guys can read it all and provide feedback.

    My interest in the OpenNI device came from issue #643 I'm in charge to work on.

    I examined all drivers related to kinect-like devices (in IIT we need one in a new robot) and I recently implemented the same in the Gazebo simulator (https://github.com/robotology/gazebo-yarp-plugins/issues/100) so we can work on simulator and then go on the real robot.

    What I found out is that there is no real 'standard' in yarp for this kind of devices, and the situation is even worse for pointclouds. So I'd like to make some order in this.

    I found out there are 4 kinect-like yarp drivers but all of them lack of some key features or have some dis-advantage. Please think of the following points as ways to improve the yarp-ish software related to this awesome depth cameras devices. My observations are: A) Driver in yarp are meant to be splitted into 2 different part (modules/class/object):

    • Proper driver: this part reads the data from hardware (no yarp port!)
    • Wrapper: this part uses an interface to read data from the former one and it send the data on the network through yarp ports. The reason is to re-use the same wrapper with different hw-devices, i.e. we will have the same ports and same data, same rpc calls regardless of using kinect, xtion or other devices (ideally also a streovision sistem with 2 cameras and disparity) through abstraction layer. Obviously abstraction layer has to be comprehensive to cover small differencies that can arise between different hw producers.

    This is what is done for motioncontrol, so we use the same controlBoardWrapper2 over CAN devices, ETH devices, simulators (iCub, gazebo, robotran), ethercat device and so on. This allows code to work on different robots by abstracting hw level.
    All kinect-like yarp drivers I saw, do the 2 things (driver and wrappper) together in a single module and cannot be separated. This means, for example, there was no 'pure wrapper' I could use with the simulators, therefore I had to write a yet another one.

    B) As follow from lack of an unified wrapper, each device opens it own ports and send data using is own format:

    • OpenNI2 uses one port for rgb and one port for imageOf<PixelMono16> which is unsigned int
    • robotology/kinect-wrapper uses one port for rgb and one port for imageOf<PixelMono16> which is unsigned
    • yarp/modules/kinect/OpenNi(1) uses ImageOf<PixelInt> which is int32 with sign
    • yarp/modules/kinect/freenect uses PortablePair<yarp::sig::ImageOf<yarp::sig::PixelMono16> this is a pair, so different type

    This make the devices incompatible between each other even if they basically provide the same data, therefore software made to work with one driver cannot work with another one. The usage of an unified wrapper/interface will make possible to test the same software with different sensors or change the sensor for example from kinect to xtion effortlessly.

    C) Each device is a bit customized in the way it works, for example both OpenNi2 and kinect-wrapper has a port for skeleton, but their definition of skeleton is not the same while the other 2 devices do not provide skeleton. This again goes against the re-usage of the code. Following comment from @kt10aan

    The philosophy behind the driver is exactly that, of a driver: exposing the functionality and providing an interface to what is available on the physical device and just streaming the data

    to which I agree, I think that since skeleton or pointclouds are not data provided by the sensor, but a software elaboration on top, this feature should be extracted and implemented on a separated module. Again, using this approach will allow user to test the same algorithm (library) for skeleton extraction on different hw or to use different skeleton extraction algorithms (libraries) on the same hw. Those modules could be run on a remote machine more powerful. If I have (and I will) have the sensor installed on board of the robot, maybe compiting skeleton extraction or point cloud generation on board could be too heavy.

    Another advantage is to remove dependencies for compilation. I'm not able to install Nite2 on my machine and, at the end of the day, I don't need it either but I got compilation issues because it is required.

    So, to cut a long story short, as discussed internally with @lornat75, @drdanz and others, the idea in the long run is to have a 'infrastructure' similar to the one we have currently for motor control with:

    • 1 wrapper/client for all RGBD devices
    • many driver as required: kinect1 - kinect2 - OpenNI(1) - OpenNi2 - ... sending data rgb & depth
    • One (or more) module doing skeleton extraction from images (hopefully with a compatible skeleton definition)
    • One (or more) module generating pointclouds from images

    What have been done so far:

    • Interface for depth sensors: https://github.com/robotology/yarp/blob/master/src/libYARP_dev/include/yarp/dev/IDepthSensor.h
    • Interface for RGBD sensor: https://github.com/robotology/yarp/blob/master/src/libYARP_dev/include/yarp/dev/IRGBDSensor.h This one basically inherits from FrameGrabber and Depth sensor adding a method to get data in synch
    • RGBD client/wrapper pair: https://github.com/robotology/yarp/tree/master/src/libYARP_dev/src/modules/RGBDSensorClient https://github.com/robotology/yarp/tree/master/src/libYARP_dev/src/modules/RGBDSensorWrapper Those devices are meant to work together to send/receive data and set/get configuration thorugh RPC calls
    • Gazebo plugin for depth camera sensor
    • Module converting images into ROS pointcloud. It'll create a yarp point cloud too, as soon as the yarp-ish point cloud type is finalized and implemented. ROS compatibility will still be granted as well. (This is not in yarp repo yet.)

    The definition of the interface is tentative, so features can be changed or added. For example mirroring is not present in the interface right now. We could add it so a sw can remotely know how is the mirroring set and comply accordingly.

    Anyway, right now the client/server just exchange the image streams, the RPC calls are not yet implemented. Probably first step will be to create a new OpenNi2 compatible device to be used with the RGBDWrapper and then help migration toward it.

    What do you guys think? Since it is a piece of work, con you spare some time to help in this process?

    I do believe the result will make things more usable clear, improve the reusage of code and share of result and modules.

    Component: Library - YARP_dev Component: Devices Issue Type: Feat/Enh Req 
    opened by kt10aan 30
  • Segmentation fault when using clock synchronisation

    Segmentation fault when using clock synchronisation

    We are experimenting an issue while using yarp with the use of a network clock (see this discussion https://github.com/robotology/gazebo-yarp-plugins/issues/57).

    Our test setup is the following:

    • gazebo with the clock plugin.
    • YARP_CLOCK set to /clock
    • Simple model loaded in gazebo (just to have some control boards and some ports from which read the state)

    If we open a port for read the state this is what we get:

    makaveli$ YARP_CLOCK=/clock ./yarp read ... /doublePendulumGazebo/body/state:o
    yarp: Port /tmp/port/1 active at tcp://10.255.36.165:10007
    yarp: Receiving input from /doublePendulumGazebo/body/state:o to /tmp/port/1 using tcp
    -2.171111 -0.557893
    -2.17073 -0.55793
    -2.170457 -0.557987
    -2.171297 -0.557988
    -2.17037 -0.557922
    -2.171158 -0.557958
    -2.170825 -0.557747
    ^C-2.17039 -0.557735
    yarp: Anonymous port active at tcp://10.255.36.165:53400
    yarp: Receiving input from /clock to /10.255.36.165:53400 using tcp
    [INFO]Interrupting...
    yarp: Removing input from /doublePendulumGazebo/body/state:o to /tmp/port/1
    yarp: Removing input from /clock to /10.255.36.165:53400
    Segmentation Fault: 11
    

    I can't understand if this is a race condition on the network clock, or if when the port (clock) is disconnected it tries to send something and it get stuck on the subsequent read.

    @paulfitz we need your help. This issue is quite blocking for us at the moment.

    cc: @jeljaik

    Issue Type: Bug Component: Library - YARP_os 
    opened by francesco-romano 30
  • Avoid cumulative drift in PeriodicThread

    Avoid cumulative drift in PeriodicThread

    Fixes https://github.com/robotology/yarp/issues/2488. Instead of a relative value obtained from the time elapsed on each step, which was prone to cause error accumulation over time, now I am using an absolute initial reference that helps getting the exact delay to prevent just that. This reference needs to be reset whenever the period is changed. In short, the new computed delay boils down to:

    delay = absolute_reference + period * iterations_since_absolute_reference - now;
    

    In addition, I have added new checks to PeriodicThreadTest, which I'm not sure why weren't there, for testing the timer accuracy.

    Please review. I have tested this on the code snippet attached in https://github.com/robotology/yarp/issues/2488 (using a system clock), and also on a similar example app with yarp::os::Timer instead.

    Component: Library - YARP_os Resolution: Merged PR Type: Bugfix Type: Breaking/Behaviour Change Target: YARP v3.5.0 
    opened by PeterBowman 29
  • openni2 module not taking noMirror parameter into account

    openni2 module not taking noMirror parameter into account

    • Not working: modules/openni2 -> noMirror parameter -> mirrorON variable -X does not set the mirror parameter on the device throughout all https://github.com/robotology/yarp/blob/d7f67c8bfc52c48a545420e02ffdd8357b685069/src/modules/openni2/OpenNI2SkeletonTracker.cpp
    • Solution (tentative): it seems that the OpenNI2 API allows calling setMirroringEnabled() for the RGB and the depth channels.
    • Example of working code on a similar module: modules/kinect/OpenNI -> noMirror parameter -> mirrorON variable -> finally sets the mirror parameter of the device using the OpenNI API: https://github.com/robotology/yarp/blob/d7f67c8bfc52c48a545420e02ffdd8357b685069/src/modules/kinect/OpenNI/KinectYarpDeviceServerLib/KinectSkeletonTracker.cpp#L107
    • Note: the motivation for this parameter was described for modules/kinect/OpenNI; e.g. robot teleoperation vs PbD.
    Component: Devices Fixed in: YARP v2.3.65 Resolution: Fixed 
    opened by jgvictores 28
  • Implementation of a RPC helper for Yarp Module.

    Implementation of a RPC helper for Yarp Module.

    During the development of a controller we usually come up with the requirement of setting its parameters through the .ini file and later through the RPC port. This task is time consuming and error prone.

    One way to automate this process is the paramHelp project

    After some discussions with @lornat75 @drdanz @traversaro we think this facility can be improved and integrated in Yarp.

    I now write here the summary of the discussion we had today, together with a sketch of the architecture of the library and the issues remained open.

    We would like to use thrift to generate automatically getters and setters for the module. In the thrift file we can specify a new statement of this kind (name, and syntax can be changed of course)

    property __type__ __name__ (__attribute_list__)
    

    This statement will generate automatically a pair of getter and setter with the following signature:

    virtual const __type__& get__Name__();
    virtual void set__Name__(const __type__&);
     //using camel case for the method names, with first letter lowercase
    

    The real advantage of the autogeneration is that the two methods are not simply stubs to be implemented, but already implemented methods. I would like to list now the three use cases that guided our design:

    • the user does nothing a part from writing the thrift file. All the communication through RPC is handled by the utility. When the user needs to use a parameter, he simply invoke the relative getter and he will use the most recent value for the parameter.
    • the user wants to be notified when a value changes so that he can update its behaviour, e.g. some gains in the controller. (This use case is motivated by the fact that we think the communication logic should stay in the module, or at least, separate from the controller logic)
    • the user implements the setter and/or the getter to perform some functionality he can't perform with the callback.

    Some more details on the implementation.

    Requirements on the object type:

    • The type specified should have a default constructor, so to easily allocate the storage variable, and be assignable (or copy contructable).

    Discussion about the callback process. There is one callback per parameter, and not a global one, which would force the user to implement a long switch in it. @lornat75 suggested the creation of two callbacks: one before the actual set (e.g. willSet__Name__), and one after the set (e.g. didSet__Name__). I also suggested the addition of a validation method. It can be implemented with the following method:

    bool validate__Name__(const __type__& newValue);
    

    which by default return true, but can be overloaded by the user. The actual implementation of the callback mechanism can be done with interfaces, or function pointers.

    Attribute list: At this point we thought about the following possible attributes:

    • atomic/nonatomic: the implementation uses (or does not use) a mutex to access the variable
    • readonly: only the getter will be generated
    • storage=name: explicitly specify the name for the backing variable (otherwise a default one is given, e.g. a_name, or something else).
    • nostorage: no backing variables are used: the setter and getter are pure virtual functions and they must be implemented by the user.
    • vector: specify that the type is a vector type. If thrift is able to detect this, we can avoid this property.

    Last notes on the vector type.

    We must be able to support vector types (as they are very common). This opens another feature of the utility and one possible issue we must resolve. If the object is a vector we would like to be able to set one particular object in the vector. To do this, only if the type is a vector, the utility generates two other methods:

    virtual const __type__& get__Name__AtIndex(int index);
    virtual void set__Name__AtIndex(const __type__&, index);
    

    To be able to directly access an element in an array we could add another requirement: the type must implement the operator() (or operator[]).

    The last issue, which is related to vector type, currently open is: how to specify the size for it, in order to perform a proper allocation and range checking during assignment and element retrieval?

    opened by francesco-romano 28
  • yarpmotorgui - added Deselect All/Select all parts button

    yarpmotorgui - added Deselect All/Select all parts button

    As per title, this PR adds a button in the start diolog to deselect or select all parts. It also sets the default button to OK and not Cancel

    Screen Capture_select-area_20221220150703

    cc @randaz81 @pattacini @marcoaccame @sgiraz @mfussi66 @valegagge @maggia80

    Component: GUI - yarpmotorgui 
    opened by davidetome 1
  • yarpmotorgui - add Select/Deselect all parts Button

    yarpmotorgui - add Select/Deselect all parts Button

    It could be nice to have a button to select/deselect all parts of the robot in the yarpmotorgui

    @randaz81 , I can work on this today and open a PR when done.

    cc @pattacini

    Component: GUI - yarpmotorgui 
    opened by davidetome 1
  • Improve yarpmotorgui open speed

    Improve yarpmotorgui open speed

    During the XPrize finals, we noticed that the yarpmotorgui can take some time to start.

    I check the code and I found that there are some checks on whether there are other yarpmotogui opened. See for example https://github.com/robotology/yarp/blob/76fe34dfd5bb6b07557a816116cf48ae35a0e279/src/yarpmotorgui/partitem.cpp#L86

    My guess is that this call can be costly in case of a delayed network.

    Moreover, there was a useless call to get each joint position PID: https://github.com/robotology/yarp/blob/76fe34dfd5bb6b07557a816116cf48ae35a0e279/src/yarpmotorgui/partitem.cpp#L230-L232

    Finally, there are some delays to make sure that the reading of the joint values is valid: https://github.com/robotology/yarp/blob/76fe34dfd5bb6b07557a816116cf48ae35a0e279/src/yarpmotorgui/partitem.cpp#L184-L194

    Hence, with this PR:

    • I have added a dummy port such that the check to avoid conflicts is done only once, instead of multiple times per part.
    • I have removed the useless PID request.
    • I have parallelized the opening of the different parts using std::async

    I have measured the initialization time before and after when opening yarpmotorgui with the robot on Gazebo in my PC (so all local communication), and the improvement was more than half a second.

    opened by S-Dafarra 2
  • sender rate

    sender rate

    Hi everyone I'm starting testing YARP and I would like to know if is there a way in the simple_sender example, to establish the sent messages rate. I tried to use RateThread class but it seems to be out in the last version. Thanks in advance

    opened by laurafbec 1
  • macOS configuration with CMake 3.25.1 fails

    macOS configuration with CMake 3.25.1 fails

    Describe the bug Configuration fails with:

    2022-12-01T19:35:05.2691860Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2692950Z   CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.2693420Z 
    2022-12-01T19:35:05.2693900Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2694600Z   src/yarpview/src/CMakeLists.txt:72 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2695010Z 
    2022-12-01T19:35:05.2695270Z 
    2022-12-01T19:35:05.2695830Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2696890Z   CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.2697260Z 
    2022-12-01T19:35:05.2697730Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2698400Z   src/yarpview/src/CMakeLists.txt:72 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2698810Z 
    2022-12-01T19:35:05.2699070Z 
    2022-12-01T19:35:05.2699630Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2700780Z   INTERFACE_CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.2701210Z 
    2022-12-01T19:35:05.2701640Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2702270Z   src/yarpview/src/CMakeLists.txt:72 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2702760Z 
    2022-12-01T19:35:05.2702960Z 
    2022-12-01T19:35:05.2703510Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2704690Z   INTERFACE_CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.2705100Z 
    2022-12-01T19:35:05.2705600Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2706250Z   src/yarpview/src/CMakeLists.txt:72 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2706680Z 
    2022-12-01T19:35:05.2706920Z 
    2022-12-01T19:35:05.2707470Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2708570Z   CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.2708970Z 
    2022-12-01T19:35:05.2709460Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2710100Z   src/yarpscope/src/CMakeLists.txt:75 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2710530Z 
    2022-12-01T19:35:05.2710770Z 
    2022-12-01T19:35:05.2711340Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2712380Z   CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.2712810Z 
    2022-12-01T19:35:05.2713300Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2713950Z   src/yarpscope/src/CMakeLists.txt:75 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2714370Z 
    2022-12-01T19:35:05.2714610Z 
    2022-12-01T19:35:05.2715180Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2716290Z   INTERFACE_CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.2716730Z 
    2022-12-01T19:35:05.2717210Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2717870Z   src/yarpscope/src/CMakeLists.txt:75 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2718290Z 
    2022-12-01T19:35:05.2718520Z 
    2022-12-01T19:35:05.2719100Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2720160Z   INTERFACE_CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.2720570Z 
    2022-12-01T19:35:05.2721320Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2721990Z   src/yarpscope/src/CMakeLists.txt:75 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2722400Z 
    2022-12-01T19:35:05.2722640Z 
    2022-12-01T19:35:05.2723220Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2724320Z   CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.2724730Z 
    2022-12-01T19:35:05.2725140Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2725790Z   src/yarpmanager/CMakeLists.txt:195 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2726210Z 
    2022-12-01T19:35:05.2726700Z 
    2022-12-01T19:35:05.2727260Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2728340Z   CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.2728720Z 
    2022-12-01T19:35:05.2729200Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2729850Z   src/yarpmanager/CMakeLists.txt:195 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2730270Z 
    2022-12-01T19:35:05.2730480Z 
    2022-12-01T19:35:05.2730960Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2732080Z   INTERFACE_CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.2732490Z 
    2022-12-01T19:35:05.2732980Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2733620Z   src/yarpmanager/CMakeLists.txt:195 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2734030Z 
    2022-12-01T19:35:05.2734190Z 
    2022-12-01T19:35:05.2734660Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2735670Z   INTERFACE_CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.2735990Z 
    2022-12-01T19:35:05.2736390Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2736940Z   src/yarpmanager/CMakeLists.txt:195 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2737330Z 
    2022-12-01T19:35:05.2737500Z 
    2022-12-01T19:35:05.2738020Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2739060Z   CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.2739470Z 
    2022-12-01T19:35:05.2739900Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2740510Z   src/yarplogger/CMakeLists.txt:79 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2740880Z 
    2022-12-01T19:35:05.2741070Z 
    2022-12-01T19:35:05.2741590Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2742580Z   CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.2743020Z 
    2022-12-01T19:35:05.2743440Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2744040Z   src/yarplogger/CMakeLists.txt:79 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2744410Z 
    2022-12-01T19:35:05.2744590Z 
    2022-12-01T19:35:05.2747650Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2749320Z   INTERFACE_CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.2749720Z 
    2022-12-01T19:35:05.2750140Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2750740Z   src/yarplogger/CMakeLists.txt:79 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2751120Z 
    2022-12-01T19:35:05.2751320Z 
    2022-12-01T19:35:05.2751820Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.2752870Z   INTERFACE_CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.2753230Z 
    2022-12-01T19:35:05.2753650Z Call Stack (most recent call first):
    2022-12-01T19:35:05.2754300Z   src/yarplogger/CMakeLists.txt:79 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.2754750Z 
    2022-12-01T19:35:05.2754980Z 
    2022-12-01T19:35:05.3903230Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.3905170Z   CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.3905600Z 
    2022-12-01T19:35:05.3906070Z Call Stack (most recent call first):
    2022-12-01T19:35:05.3906700Z   src/yarpdataplayer/CMakeLists.txt:134 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.3907580Z 
    2022-12-01T19:35:05.3907780Z 
    2022-12-01T19:35:05.3908320Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.3909360Z   CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.3909770Z 
    2022-12-01T19:35:05.3910250Z Call Stack (most recent call first):
    2022-12-01T19:35:05.3910920Z   src/yarpdataplayer/CMakeLists.txt:134 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.3911340Z 
    2022-12-01T19:35:05.3911580Z 
    2022-12-01T19:35:05.3914010Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.3915770Z   INTERFACE_CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.3916210Z 
    2022-12-01T19:35:05.3916690Z Call Stack (most recent call first):
    2022-12-01T19:35:05.3917310Z   src/yarpdataplayer/CMakeLists.txt:134 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.3917690Z 
    2022-12-01T19:35:05.3917910Z 
    2022-12-01T19:35:05.3918430Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.3920060Z   INTERFACE_CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.3920520Z 
    2022-12-01T19:35:05.3921140Z Call Stack (most recent call first):
    2022-12-01T19:35:05.3921840Z   src/yarpdataplayer/CMakeLists.txt:134 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.3922660Z 
    2022-12-01T19:35:05.3922950Z 
    2022-12-01T19:35:05.5070120Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.5074690Z   CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.5076420Z 
    2022-12-01T19:35:05.5081120Z Call Stack (most recent call first):
    2022-12-01T19:35:05.5083010Z   src/yarpmotorgui/CMakeLists.txt:118 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.5084670Z 
    2022-12-01T19:35:05.5086290Z 
    2022-12-01T19:35:05.5088130Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.5090600Z   CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.5092190Z 
    2022-12-01T19:35:05.5093920Z Call Stack (most recent call first):
    2022-12-01T19:35:05.5095750Z   src/yarpmotorgui/CMakeLists.txt:118 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.5097400Z 
    2022-12-01T19:35:05.5098780Z 
    2022-12-01T19:35:05.5100740Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.5103110Z   INTERFACE_CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.5105040Z 
    2022-12-01T19:35:05.5106280Z Call Stack (most recent call first):
    2022-12-01T19:35:05.5108230Z   src/yarpmotorgui/CMakeLists.txt:118 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.5109720Z 
    2022-12-01T19:35:05.5111220Z 
    2022-12-01T19:35:05.5112920Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.5115350Z   INTERFACE_CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.5116910Z 
    2022-12-01T19:35:05.5118590Z Call Stack (most recent call first):
    2022-12-01T19:35:05.5120770Z   src/yarpmotorgui/CMakeLists.txt:118 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.5122800Z 
    2022-12-01T19:35:05.5124610Z 
    2022-12-01T19:35:05.6164050Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.6166060Z   CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.6166490Z 
    2022-12-01T19:35:05.6166970Z Call Stack (most recent call first):
    2022-12-01T19:35:05.6167970Z   src/yarpbatterygui/CMakeLists.txt:86 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.6168600Z 
    2022-12-01T19:35:05.6168810Z 
    2022-12-01T19:35:05.6169340Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.6170680Z   CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.6171160Z 
    2022-12-01T19:35:05.6171620Z Call Stack (most recent call first):
    2022-12-01T19:35:05.6172350Z   src/yarpbatterygui/CMakeLists.txt:86 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.6172750Z 
    2022-12-01T19:35:05.6173340Z 
    2022-12-01T19:35:05.6174340Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.6175740Z   INTERFACE_CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.6176190Z 
    2022-12-01T19:35:05.6176620Z Call Stack (most recent call first):
    2022-12-01T19:35:05.6177260Z   src/yarpbatterygui/CMakeLists.txt:86 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.6177660Z 
    2022-12-01T19:35:05.6177850Z 
    2022-12-01T19:35:05.6178390Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.6179490Z   INTERFACE_CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.6180140Z 
    2022-12-01T19:35:05.6180580Z Call Stack (most recent call first):
    2022-12-01T19:35:05.6181370Z   src/yarpbatterygui/CMakeLists.txt:86 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.6181830Z 
    2022-12-01T19:35:05.6182110Z 
    2022-12-01T19:35:05.7242050Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.7243950Z   CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.7244390Z 
    2022-12-01T19:35:05.7244870Z Call Stack (most recent call first):
    2022-12-01T19:35:05.7245820Z   src/yarpmobilebasegui/CMakeLists.txt:91 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.7246580Z 
    2022-12-01T19:35:05.7246830Z 
    2022-12-01T19:35:05.7247330Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.7248600Z   CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.7248990Z 
    2022-12-01T19:35:05.7249500Z Call Stack (most recent call first):
    2022-12-01T19:35:05.7250470Z   src/yarpmobilebasegui/CMakeLists.txt:91 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.7250880Z 
    2022-12-01T19:35:05.7251030Z 
    2022-12-01T19:35:05.7252190Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.7253620Z   INTERFACE_CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.7254060Z 
    2022-12-01T19:35:05.7254530Z Call Stack (most recent call first):
    2022-12-01T19:35:05.7255170Z   src/yarpmobilebasegui/CMakeLists.txt:91 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.7255570Z 
    2022-12-01T19:35:05.7255770Z 
    2022-12-01T19:35:05.7256310Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.7257390Z   INTERFACE_CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.7257910Z 
    2022-12-01T19:35:05.7258430Z Call Stack (most recent call first):
    2022-12-01T19:35:05.7259140Z   src/yarpmobilebasegui/CMakeLists.txt:91 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.7259590Z 
    2022-12-01T19:35:05.7259850Z 
    2022-12-01T19:35:05.8377380Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.8380260Z   CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.8380730Z 
    2022-12-01T19:35:05.8381220Z Call Stack (most recent call first):
    2022-12-01T19:35:05.8381870Z   src/yarplaserscannergui/CMakeLists.txt:72 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.8382480Z 
    2022-12-01T19:35:05.8382670Z 
    2022-12-01T19:35:05.8383300Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.8384380Z   CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.8384690Z 
    2022-12-01T19:35:05.8385100Z Call Stack (most recent call first):
    2022-12-01T19:35:05.8386070Z   src/yarplaserscannergui/CMakeLists.txt:72 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.8387090Z 
    2022-12-01T19:35:05.8387330Z 
    2022-12-01T19:35:05.8388880Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.8391240Z   INTERFACE_CXX_MODULE_HEADER_UNIT_SETS property is read-only
    2022-12-01T19:35:05.8392300Z 
    2022-12-01T19:35:05.8392800Z Call Stack (most recent call first):
    2022-12-01T19:35:05.8393400Z   src/yarplaserscannergui/CMakeLists.txt:72 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.8393830Z 
    2022-12-01T19:35:05.8394410Z 
    2022-12-01T19:35:05.8396100Z CMake Error at cmake/YarpMacOSUtilities.cmake:106 (set_target_properties):
    2022-12-01T19:35:05.8397940Z   INTERFACE_CXX_MODULE_SETS property is read-only
    2022-12-01T19:35:05.8398880Z 
    2022-12-01T19:35:05.8400040Z Call Stack (most recent call first):
    2022-12-01T19:35:05.8404700Z   src/yarplaserscannergui/CMakeLists.txt:72 (yarp_macos_duplicate_and_add_bundle)
    2022-12-01T19:35:05.8405790Z 
    

    To Reproduce Steps to reproduce the behavior:

    • Configure latest (as of 2022/12/1) build of YARP with CMake 3.25.1

    Expected behavior Configuration is successful.

    opened by traversaro 5
Releases(v3.7.2)
  • v3.7.2(Jun 30, 2022)

    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]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-3.7.2-2.buster_amd64.deb(7.90 MB)
    yarp-3.7.2-2.focal_amd64.deb(8.09 MB)
    yarp-3.7.2-2.jammy_amd64.deb(9.12 MB)
  • v3.7.1(Jun 30, 2022)

    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]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-3.7.1-2.buster_amd64.deb(7.89 MB)
    yarp-3.7.1-2.focal_amd64.deb(8.08 MB)
    yarp-3.7.1-2.jammy_amd64.deb(9.12 MB)
  • v3.7.0(May 25, 2022)

    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]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-3.7.0-2.buster_amd64.deb(7.89 MB)
    yarp-3.7.0-2.focal_amd64.deb(8.08 MB)
    yarp-3.7.0-2.jammy_amd64.deb(9.12 MB)
    yarp-3.7.0-3.buster_amd64.deb(7.89 MB)
    yarp-3.7.0-3.focal_amd64.deb(8.09 MB)
    yarp-3.7.0-3.jammy_amd64.deb(9.12 MB)
  • v3.6.0(Dec 31, 2021)

    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]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-3.6.0-2.bionic_amd64.deb(8.05 MB)
    yarp-3.6.0-2.bullseye_amd64.deb(8.11 MB)
    yarp-3.6.0-2.buster_amd64.deb(7.99 MB)
    yarp-3.6.0-2.focal_amd64.deb(8.15 MB)
  • v3.5.1(Nov 10, 2021)

    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]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-3.5.1-2.bionic_amd64.deb(7.34 MB)
    yarp-3.5.1-2.buster_amd64.deb(7.33 MB)
    yarp-3.5.1-2.focal_amd64.deb(7.47 MB)
  • v3.5.0(Jul 15, 2021)

    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

    • The ovrheadset device driver was moved to https://github.com/robotology/yarp-device-ovrheadset
    • The realsense2, realsense2withIMU and realsense2Tracking device drivers were moved to https://github.com/robotology/yarp-device-realsense2
    • This release introduces the Network Wrapper Server/Client Architecture as described in #2441. This architecture enables ROS2 compatibility which is currently developed in the yarp-ros2 repository.

    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]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-3.5.0-2.bionic_amd64.deb(7.33 MB)
    yarp-3.5.0-2.buster_amd64.deb(7.31 MB)
    yarp-3.5.0-2.focal_amd64.deb(7.46 MB)
  • v3.4.6(Jul 2, 2021)

    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]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.4.5(May 24, 2021)

    YARP 3.4.5 Release Notes

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

    Bug Fixes

    Libraries

    sig

    Image
    • Allocate the right amount of bytes for YUV422 images
    • Decode vocabs when printing

    Devices

    BatteryWrapper

    • Data is now published on the yarp port even if some of the methods belonging to IBattery interface are not implemented (returning false). The only mandatory method is getBatteryStatus().

    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.4..v3.4.5):

         6	Daniele E. Domenichelli <[email protected]>
         1	Marco Randazzo <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.4.4(May 19, 2021)

    YARP 3.4.4 Release Notes

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

    Bug Fixes

    Build System

    • Fixed use of CMAKE_INSTALL_PYTHON3DIR CMake variable to specify the installation path of Python bindings, as in previous versions the variable was defined but ignored (#2523).
    • Fixed the build of Python bindings on Windows (#2525, #2527).

    Libraries

    conf

    • Fixed float128_t where long double is 64 bit (#2510).

    os

    • If in a yarp::os::NetworkClock a clock reset is detected, fill the gap between the waiter and the time published by the network clock port. A network clock reset is defined as a jump in the past of the time published by the network clock port. This fix avoids that all the threads that are waiting a yarp::os::NetworkClock::delay call on that network clock remain blocked when a time reset occurs (#800, #2494).
    • Fixed error in race condition during the scan of plugins in YarpPluginSelector, avoided concurrent access to variables (#2538).

    Tools

    yarplogger

    • Fixed crash when attempting to clear a selected log with its log tab opened (#2554).

    Bindings

    Python

    • Added example_callback.py, which showcases a BufferedPort with an attached callback handler for logging incoming bottles (#2555).

    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.3..v3.4.4):

        25	Daniele E. Domenichelli <[email protected]>
         4	Bartek Łukawski <[email protected]>
         4	Silvio Traversaro <[email protected]>
         3	Stefano Bernagozzi <[email protected]>
         1	Ettore Landini <[email protected]>
         1	Giuseppe L'Erario <[email protected]>
         1	Nicolò Genesio <[email protected]>
         1	Silvio Traversaro <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.4.3(Feb 23, 2021)

    YARP 3.4.3 Release Notes

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

    Libraries

    robotinterface

    • Fixed handling of attach action for IWrapper devices.

    Devices

    controlboardwrapper2

    • getTorque is no longer called twice.

    fakeFrameGrabber

    • The rand mode was fixed.
    • The timestamp is now correct.
    • The image is no longer initialized when all the pixels are overwritten.

    virtualAnalogWrapper

    • Fixed favor the use of parentheses with the keyword networks in the XML files. The old style is deprecated but still accepted. This is a fix in the sense that virtualAnalogWrapper was behaving differently from ControlBoardWrapper.

    GUI

    yarpmotorgui

    • Fixed colors on dark mode desktop (#2466).

    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.2..v3.4.3):

        30	Daniele E. Domenichelli <[email protected]>
         1	Ugo Pattacini <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.4.2(Jan 19, 2021)

    YARP 3.4.2 Release Notes

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

    Build System

    • YCM is now searched when compiling bindings externally.
    • Fixed dependency on YARP_math for several devices (laserFromExternalPort, laserFromPointCloud, laserFromRosTopic).
    • rpLidar2 device is now disabled when building with Clang.
    • Fixed upowerBattery device in static builds.
    • Fixed include directories for PortAudio on Windows (#2387).
    • Fixed toggling the value of SKIP_ACE from ON to OFF
    • Dependencies for the INTERFACE libraries (YARP_cv, YARP_pcl) are now properly set (#2438).
    • PCL is now required to build the YARP_pcl library.
    • OpenCV is now required to build the YARP_cv library.

    Libraries

    os

    LogComponent
    • Log components are now printed in colors when YARP_COLORED_OUTPUT is enabled.

    NameSpace

    • Fix checkNetwork timeout variant not working as checkNetwork when NetworkBase::setLocalMode(true) is called.---

    sig

    PointCloudTypes
    • Fixed logging of RGBA values via toString() for types DataRGBA, DataXYZRGBA and DataXYZNormalRGBA.
    utils
    • Fixed ROI bug in depthToPC(), values are now correctly clipped.

    Devices

    controlboardwrapper2

    • Fixed access to the timestamp not protected by mutex (#2396).
    • Deprecated old format of networks keyword in the XML files to favor the use of parentheses.

    ffmpeg

    • Corrected a minor error in FfmpegGrabber.cpp that caused a segmentation fault when using a video with audio track as a source for the device.

    realsense2

    • Avoid dereferencing nullptr on optional argument.

    Tools

    yarpmotorgui

    • Fixed UI file (slider options). Some text was truncated.

    yarpmobilebasegui

    • Fixed gui buttons when the value of max linear/angular velocity is < 0

    GUIs

    yarpviz

    • Added a new menu voice View-> Render options. This checkable option labbelled Background grid allows to enable/disable the background grid.
    • Labels are now fully readable regardless of their length.

    yarpbatterygui

    • The window can no longer be resized.
    • The window background can no longer be moved around.
    • The window no longer stays on top automatically. A new --keep-above switch is provided to restore this behavior.

    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.1..v3.4.2):

        66	Daniele E. Domenichelli <[email protected]>
         5	Bartek Łukawski <[email protected]>
         3	Ettore Landini <[email protected]>
         3	Silvio Traversaro <[email protected]>
         3	Ugo Pattacini <[email protected]>
         2	Marco Randazzo <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.4.1(Sep 28, 2020)

    YARP 3.4.1 Release Notes

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

    • Fixed Ruby bindings with CMake 3.18

    Bug Fixes

    Build System

    • The license check is now disabled for non-git checkouts.
    • The check on the bindings folder in YARPConfig.cmake was removed.
    • User defined build flags are no longer overridden in subfolders.
    • The -f(debug|macro|file)-prefix-map compile options are no longer exported in the YARPConfig.cmake file.
    • Fixed build when the -fsanitize compile options is passed by the user.

    Libraries

    os

    Stamp
    • Fixed the max count using std::numeric_limits.

    sig

    PointCloudUtils
    • Fixed yarp::sig::utils::depthRgbToPC for types without alpha channel (#1959).
    • Fixed bug in method utils::depthToPC() which was not properly decimating the pointcloud given in input.

    Devices

    FakeFrameGrabber

    • The ball test is now displayed in the center of the image instead of the right-bottom corner. The bug was affecting windows only.

    multipleanalogsensorsserver

    • Fixed missing timestamp and and sequence number in messages streamed by measures:o port.

    realsense2Tracking

    • Fixed missing timestamp for device realsense2Tracking
    • added option --timestamp yarp : yarp timestamp will be used
    • added option --timestamp realsense : realsense timestamp will be used
    • default value is yarp timestamp.

    ovrheadset

    • Fixed a typo in TextureBuffer.cpp

    Tools

    yarpdatadumper

    • Fixed a regression that broke support for OpenCV 2.x.

    yarpmanager

    • Fixed issue that disables side menubar buttons when changing tab (#2355).

    yarprobotinterface

    • Fixed build on i386.

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

        43	Daniele E. Domenichelli <[email protected]>
         7	Nicolò Genesio <[email protected]>
         5	Marco Randazzo <[email protected]>
         2	Bartek Łukawski <[email protected]>
         2	Stefano Dafarra <[email protected]>
         1	Silvio Traversaro <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.4.0(Aug 26, 2020)

    YARP 3.4.0 Release Notes

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

    Important Changes

    • YCM 0.11 or later is now a hard dependency and must be installed on the system before installing YARP.
    • Python 2 is no longer supported.

    Deprecation and Behaviour Changes

    • The scripts/WindowsPowerShell files are now in data/WindowsPowerShell.
    • The scripts/yarp_completion file is now in data/bash-completion/yarp.

    Build System

    yarp_prepare_plugin
    • INCLUDE must now be an existing file, either using a path relative to current directory, or an absolute path. Using a path relative to one of the include directories is deprecated.

    os

    • The method yarp::os::getenv() is deprecated in favour of std::getenv()
    yarp::os::ConnectionState
    • The yarp::os::ConnectionState::getLog() method was removed without deprecation, due to the changes to the logging system, that made it impossible to preserve this method.
    yarp::os::NetworkBase
    • The yarp::os::NetworkBase::setVerbosity method is deprecated in favor of Log Components.
    • The yarp::os::NetworkBase::getEnvironment() method is deprecated in favour of yarp::conf::environment::getEnvironment()
    • The yarp::os::NetworkBase::setEnvironment() method is deprecated in favour of yarp::conf::environment::setEnvironment()
    • The yarp::os::NetworkBase::unsetEnvironment() method is deprecated in favour of yarp::conf::environment::unsetEnvironment()
    yarp::os::Port
    • The yarp::os::Port::setVerbosity method is deprecated in favour of Log Components.
    • The yarp::os::Port::getVerbosity method is deprecated in favour of Log Components.
    yarp::os::ResourceFinder
    • The yarp::os::ResourceFinder::setVerbose() method is deprecated in favour of Log Components.
    • The yarp::os::ResourceFinder::setQuiet() method is deprecated in favour of Log Components.
    yarp::os::YarpPluginSettings
    • The yarp::os::YarpPluginSettings::setVerboseMode() method is deprecated in favour of Log Components.
    yarp::os::Log
    • The yarp::os::Log::setLogCallback() method is deprecated in favour of setPrintCallback()

    dev

    • The following classes were moved from the yarp::dev namespace to the yarp::dev::Nav2D namespace
      • yarp::dev::Nav2D::Map2DArea
      • yarp::dev::Nav2D::Map2DPath
      • yarp::dev::Nav2D::Map2DLocation
      • yarp::dev::Nav2D::MapGrid2D
      • yarp::dev::Nav2D::MapGrid2DInfo
    • yarp::dev::Nav2D::Map2DPath is now replacing std::vector<yarp::dev::Nav2D::Map2DLocation> in all APIs.
    • The following functions have been moved from yarp::dev::Nav2D::MapGrid2D into yarp::dev::Nav2D::MapGrid2DInfo:
      • yarp::dev::Nav2D::XYWorld yarp::dev::Nav2D::MapGrid2DInfo::cell2World(yarp::dev::Nav2D::XYCell cell) const;
      • yarp::dev::Nav2D::Map2DLocation yarp::dev::Nav2D::MapGrid2DInfo::toLocation(yarp::dev::Nav2D::XYCell cell) const;
      • yarp::dev::Nav2D::XYCell yarp::dev::Nav2D::MapGrid2DInfo::toXYCell(yarp::dev::Nav2D::Nav2D::Map2DLocation loc) const;
      • yarp::dev::Nav2D::XYCell yarp::dev::Nav2D::MapGrid2DInfo::world2Cell(yarp::dev::Nav2D::XYWorld world) const;
      • yarp::dev::Nav2D::Nav2D::Map2DLocation yarp::dev::Nav2D::MapGrid2DInfo::toLocation(yarp::dev::Nav2D::XYWorld cell) const;
      • yarp::dev::Nav2D::XYWorld yarp::dev::Nav2D::MapGrid2DInfo::toXYWorld(yarp::dev::Nav2D::Map2DLocation loc) const;
    • modified signature of the yarp::dev::Nav2D::INavigation2D::getAllNavigationWaypoints method.
    • The format of .map file loaded by yarp::dev::Nav2D::MapGrid2D has been changed. It can now include the parameters resolution <double> and orientation <bottle> to adjust the map reference frame.

    Devices

    • The test_grabber device was renamed fakeFrameGrabber. The old name is kept for compatibility, but it will be deprecated and removed in a future release.
    • The test_motor was renamed fakeMotor. The old name is kept for compatibility, but it will be deprecated and removed in a future release.

    Tools

    yarp
    • The regression subcommand was removed.

    New Features

    Build System

    • The bash-completion file is now installed automatically (#1101).
    • It is now possible to build some of the examples in the main build using the YARP_COMPILE_EXAMPLES CMake Option
    • It is now possible to build some of the YARP examples as test using the YARP_ENABLE_EXAMPLES_AS_TESTS CMake Option
    yarp_add_idl
    • It's now possible to pass options to the commands using CMake variables (for example YARP_ADD_IDL_THRIFT_INCLUDE_PREFIX and YARP_ADD_IDL_THRIFT_NO_NAMESPACE_PREFIX.
    yarp_prepare_plugin
    • Including current directory (either explicitly, or using CMAKE_INCLUDE_CURRENT_DIR) is no longer required by the generated files.

    Libraries

    conf

    • Added yarp::conf::clamp. Will be replaced by std::clamp as soon as c++17 is required in YARP.
    • Added the yarp/conf/environment.h header.
    • Added the following functions:
      • yarp::conf::environment::getEnvironment()
      • yarp::conf::environment::setEnvironment()
      • yarp::conf::environment::unsetEnvironment()

    os

    • Add yarp::os::gethostname() overload to return a std::string
    yarp::os::NetworkBase
    • Added bool yarp::os::NetworkBase::isNetworkInitialized() method.
    yarp::os::NetType
    • The following methods were added:
      • static std::string yarp::os::NetType::toString(yarp::conf::float32_t)
      • static std::string yarp::os::NetType::toString(yarp::conf::float64_t)
      • static yarp::conf::float32_t yarp::os::NetType::toFloat32(const std::string&)
      • static yarp::conf::float64_t yarp::os::NetType::toFloat64(const std::string&)
      • static yarp::conf::float32_t yarp::os::NetType::toFloat32(std::string&&)
      • static yarp::conf::float64_t yarp::os::NetType::toFloat64(std::string&&)
      • static std::string yarp::os::NetType::toHexString(long)
      • static std::string yarp::os::NetType::toHexString(unsigned int)
    yarp::os::Time
    • Added bool yarp::os::Time::isClockInitialized() method.
    yarp::os::Log
    • The yarp logging system was heavily refactored, please check out the [documentation](\ref yarp_logging).
    • The name of the port used to forward the output no longer contains the full path, but only the executable name.
    • Added yarp::os::LogComponent to define log components:
      • A log component can be declared using the YARP_LOG_COMPONENT() macro (in a .cpp file) and eventually forward declared using YARP_DECLARE_LOG_COMPONENT().
      • It is possible to set custom printing and forwarding macros for each component, and it is possible to enable and disable specific levels for each component.
      • At the moment it is not yet possible to change the defaults set in the code, but this will be enabled in the future.
    • The output forwarded is now a property and contains several useful information including component and system/network time, file, line, function.
    • The logger is now able to detect if it is running in yarprun and eventually change the output format.
    • Logging is now protected by a mutex to avoid garbled output.
    • The YARP_DEBUG_LOG_ENABLE environment variable can be set to debug the log of the application.
    • When color is enabled, the loglevel can be represented by a single colored character by setting the YARP_COMPACT_OUTPUT environment variable to 1.
    • The limit of 1024 characters for the c-style yDebug() macro family was removed. A dynamic allocation is now used, but only when the size of the output exceeds this size.
    • Trace should no longer generate code when building in release mode. When building with -DYARP_NO_DEBUG_OUTPUT debug should not generate any code as well. See https://godbolt.org/z/hSAC56
    • Added the yCDebug macro family to pass a component to the logger (This macro is also available for all log levels, and assert).
    • Added the following new debug macro families limiting the log output (all these macros are available for all log levels, except for [FATAL], and in the component version):
      • yDebugOnce(): Printed only once in the execution of the program.
      • yDebugThreadOnce(): Printed at most once by every thread during the execution of the program.
      • yDebugThrottle(): Printed at most once every period seconds.
      • yDebugThreadThrottle(): Printed at most once by every thread every period seconds.
    • Added the yDebugExternalTime() macro family to pass a timestamp generated by an external source (This macros is also available for all log levels, in the component version, and in the limited version):
    yarp::os::ManagedBytes
    • Added move semantics.
    yarp::os::Portable
    • The first argument of yarp::os::Portable::copyPortable() is now const. The new signature is:
        bool yarp::os::Portable::copyPortable(const PortWriter& writer, PortReader& reader)
      
    yarp::os::Port
    • It's now possible to try to fix any issues by entrusting a Superior Entity.

    sig

    yarp::sig::ImageOf
    • Added support to load a PNG file into a yarp::sig::ImageOf<yarp::sig::PixelRgb>
    yarp::sig::VectorOf
    • Added const_iterator yarp::sig::VectorOf::begin() const and const_iterator yarp::sig::VectorOf::end() const in yarp::sig::VectorOf class.
    • Added move semantics.

    math

    • Added yarp::math::Vec2D<size_t> datatype.

    dev

    • Added yarp::dev::LaserScan2D datatype.
    • Added yarp::dev::MobileBaseVelocity datatype.
    • Added yarp::dev::OdometryData datatype.
    • Added yarp::dev::OdometryData6D datatype.
    • Added yarp::dev::IPositionSensors interface.
    • Added yarp::dev::Lidar2DDeviceBase class to use as a base class for all lidar devices.
    • Added yarp::dev::Nav2D::TrajectoryTypeEnum
    • Added the following methods to yarp::dev::Nav2D::ILocalization2D interface
      • yarp::dev::Nav2D::ILocalization2D::startLocalizationService();
      • yarp::dev::Nav2D::ILocalization2D::stopLocalizationService();
      • yarp::dev::Nav2D::ILocalization2D::getCurrentPosition(yarp::dev::Nav2D::Map2DLocation& loc, yarp::sig::Matrix& cov);
      • yarp::dev::Nav2D::ILocalization2D::setInitialPose(const yarp::dev::Nav2D::Map2DLocation& loc, const yarp::sig::Matrix& cov);
    • Added new class yarp::dev::Nav2D::MapGrid2DInfo which contains infos about the name, the resolution and the origin of the map (e.g. yarp::dev::Nav2D::MapGrid2DOrigin) etc.
    • Added new path-related methods to yarp::dev::Nav2D::IMap2D interface:
      • virtual bool yarp::dev::Nav2D::IMap2D::storePath(std::string path_name, Nav2D::Map2DPath path) = 0;
      • virtual bool yarp::dev::Nav2D::IMap2D::getPath(std::string path_name, Nav2D::Map2DPath& path) = 0;
      • virtual bool yarp::dev::Nav2D::IMap2D::getPathsList(std::vector<std::string>& paths) = 0;
      • virtual bool yarp::dev::Nav2D::IMap2D::deletePath(std::string path_name) = 0;
      • virtual bool yarp::dev::Nav2D::IMap2D::renamePath(std::string original_name, std::string new_name) = 0;
      • virtual bool yarp::dev::Nav2D::IMap2D::clearAllPaths() = 0;
    • Added method yarp::dev::Nav2D::ILocalization2D::getEstimatedOdometry() to the interface yarp::dev::Nav2D::ILocalization2D.
    • yarp::dev::Nav2D::MapGrid2DOrigin can now handle a generic orientation. Previously only the translational part was handled by methods world2Cell and cell2World
    • The terminator port now tries to use the default value for --name accepted by the device. For example yarpdev --device fakeFrameGrabber will open the port /grabber/quit instead of /fakeFrameGrabber/quit.

    logger

    • Interpret the new message format containing extra info.

    Carriers

    • Added depthimage2 portmonitor to transform a depth image (VOCAB_PIXEL_FLOAT format) into a rgb image, using a precomputed colormap.
    • Added segmentationimage portmonitor to transform a segmentation image (VOCAB_PIXEL_MONO or VOCAB_PIXEL_MONO16) into a rgb image, using a precomputed colormap.

    Devices

    • Added laserFromExternalPort device, which is able to receive a LaserScan2D datatype from a YARP port, and expose it as a device driver through the IRangefinder2D interface.
    • Added laserFromPointCloud device, which receives a depth stream through an IRGBDSensor sensor a produces a laser compatible stream of data from the computed point cloud.
    • Added IMURosPublisher device. This wrapper connects to a device and publishes a ROS topic of type sensor_msgs::Imu.
    • Added MagneticFieldRosPublisher device. This wrapper connects to a device and publishes a ROS topic of type sensor_msgs::MagneticField.
    • Added PoseStampedRosPublisher device. This wrapper connects to a device and publishes a ROS topic of type geometry_msgs::PoseStamped.
    • Added TemperatureRosPublisher device. This wrapper connects to a device and publishes a ROS topic of type sensor_msgs::Temperature.
    • Added WrenchStampedRosPublisher device. This wrapper connects to a device and publishes a ROS topic of type geometry_msgs::WrenchStamped.
    • Added upowerBattery device to view the battery of a linux laptop in YARP using the yarp::dev::IBattery interface.
    fakeBattery
    • Added a new port <name>/control/rpc:i to retrieve and change the values reported by the fake battery.
    • The battery is now charged or discharged depending on the sign of the current.
    • The default values for voltage and current are now more realistic.
    • It is now possible to change the starting values as device options.
    fakeLaser
    • Added --use_constant option.
    • The device is now derived from yarp::dev::Lidar2DDeviceBase
    laserFromDepth
    • The device is now derived from yarp::dev::Lidar2DDeviceBase
    Localization2DServer
    • Added missing ROS initialization. It will now publish odometry data on ROS topic.
    multipleAnalogSensorsMsgs
    • multipleAnalogSensorsSerializations.thrift have been extended to handle position sensors.
    multipleanalogsensorsserver
    • Added handlers for yarp::dev::IPositionSensors interface.
    • Added support for wrapped subdevices, i.e. those explicitly instantiated via --subdevice option on initial device configuration. (#2154)
    multipleanalogsensorsclient
    • Added handlers for yarp::dev::IPositionSensors interface.
    multipleanalogsensorsremapper
    • Added handlers for yarp::dev::IPositionSensors interface.
    • Update MAS_NrOfSensorTypes. This avoids segfaults due to uninitialized yarp::dev::IPositionSensors interfaces.
    ovrheadset
    • Port to the new rendering API and make it focus aware (SDK 1.19 is required).
    • Add P command to print current settings.
    Rangefinder2DClient
    • Rangefinder2DClient now use yarp::dev::LaserScan2D datatype.
    Rangefinder2DWrapper
    • Rangefinder2DWrapper now use yarp::dev::LaserScan2D datatype.
    rpLidar2
    • The device is now derived from yarp::dev::Lidar2DDeviceBase
    transformClient
    • Added support for identical frame transforms.
    transformServer
    • Cleanup of --USER_TF option.

    Tools

    yarp
    • The --help, -h and --version arguments are now accepted.
    • Added the priority-qos subcommand that allows to set/get the packet priority value of both the source and the destination port.
    • Added the priority-sched subcommand that allows to set/get the thread priority and policy values of both the source and the destination port.
    • Added the env subcommand to print one or the full list of environment variables.
    • The qos subcommand is accepted as an alias to priority-qos.
    • The sched subcommand is accepted as an alias to priority-sched.
    • When logic fails, it's time to yarp pray. Watch out for palindrome mode.
    yarprun
    • The name of the port used to forward the output no longer contains the full path, but only the executable name.
    • The following enviromnent variables are now set in the child processes:
      • YARP_IS_YARPRUN is set to 1 for all child processes
      • YARPRUN_IS_FORWARDING_LOG is set to 1 when yarprun is forwarding the log and to 0 otherwise

    GUIs

    • Added new yarpmobilebasegui GUI which allows the user to control the mobile base of the robot via keyboard or mouse and sends yarp::dev::MobileBaseVelocity commands on a yarp port.
    yarpmanager
    • Moved the builder, from the hidden place to a tab in the application view.
    yarplaserscannergui
    • Multiple instances are now allowed with --local option.
    • Added --debug option.
    yarpdataplayer
    • It's now possible to reproduce several ROS types, i.e.
      • sensor_msgs/LaserScan
      • nav_msgs/Odometry
      • tf/tfMessage
      • tf2_msgs/tfMessage
      • geometry_msgs/Pose
      • geometry_msgs/Pose2D
    • Added getSliderPercentage method to the rpc port. This method returns the progress percentage of the seek bar while playing a dataset. (#2148)
    yarpview
    • Added a checkable menu item that, if checked, shows an additional line in the status bar that displays the color value of the pixel pointed by the mouse cursor. The string has the following format
      Pixel("x","y") = "hexstring"
      

      Where x and y are the coordinates of the pixel and hexstring is the hexadecimal (in the ARGB format) string representing the pixel color. The additional line on the status bar contains also a little rectangle that will turn the same color of the currently selected pixel.

    yarplogger
    • The new info from yarp log (component, time, etc.) are now displayed (the columns that are not shown by default can be enabled from the Options menu).
    • Cleaned up interface, removed status bar and improved colors.

    Bindings

    • Several previously inaccessible methods from motor interfaces are now correctly wrapped. This covers pretty much everything the pair remote_controlboard/controlboardwrapper2 wraps and implements, only excluding calibration interfaces. In addition, two more interfaces can be accessed through the PolyDriver idiom: IEncodersTimed and IMotor.

    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.

    Libraries

    os

    • The following EXPERIMENTAL environment variables can be enabled to enable forwarding of some extra log information:
      • YARP_FORWARD_CODEINFO_ENABLE (file name, line number and function name)
      • YARP_FORWARD_HOSTNAME_ENABLE (hostname)
      • YARP_FORWARD_PROCESSINFO_ENABLE (command, arguments, pid and thread id)
      • YARP_FORWARD_BACKTRACE_ENABLE (stack trace) These environment variables could be removed in the future.

    robotinterface

    • Created the new EXPERIMENTAL YARP_robotinterface library by refactoring as a library the logic of the yarprobotinterface tool, including support for attaching devices created by the library to external devices created in some other way.

    Carriers

    • Added the new EXPERIMENTAL unix_stream carriers to communicate with a process on the same machine using a unix socket. It's possible to use the ack option (unix_stream+ack) in case you need flow control.

    Devices

    • Added Realsense2WithIMU EXPERIMENTAL device. This is a driver for Realsense D435i.
    • Added Relasense2Tracking EXPERIMENTAL device. This is a driver for Realsense T265.
    • added laserFromRosTopic EXPERIMENTAL device. It exposes a lidar ROS topic (dataype sensor_msgs::LaserScan) on YARP, using the yarp::dev::IRangefinder2D interface.

    Bug Fixes

    Libraries

    os

    Port
    • Passing an invalid string when setting the QoS by DSCP no longer sets it to 0.

    sig

    Image
    • Fixed pixel type and the orientation settings when using the move constructor and the move assignment operator.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.3.0..v3.4.0):

       470	Daniele E. Domenichelli <[email protected]>
        75	Marco Randazzo <[email protected]>
        27	Nicolò Genesio <[email protected]>
        18	Silvio Traversaro <[email protected]>
         8	Ettore Landini <[email protected]>
         7	Bartek Łukawski <[email protected]>
         4	Prashanth Ramadoss <[email protected]>
         3	Alexandre Gomes Pereira Antunes <[email protected]>
         3	Giulio Romualdi <[email protected]>
         2	Andrea Ruzzenenti <[email protected]>
         1	Alessandro Roncone <[email protected]>
         1	Paul Fitzpatrick <[email protected]>
         1	Ugo Pattacini <[email protected]>
         1	Valentina Gaggero <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-3.4.0-2.bionic_amd64.deb(6.29 MB)
    yarp-3.4.0-2.buster_amd64.deb(6.31 MB)
    yarp-3.4.0-2.focal_amd64.deb(6.41 MB)
  • v3.3.3(Jul 20, 2020)

    YARP 3.3.3 Release Notes

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

    Bug Fixes

    Build System

    • Bison and flex are no longer run when crosscompiling.

    Libraries

    os

    Bottle
    • Fixed precision for floating point numbers, to ensure that they are read as the original floating point written.
    • Fixed toString and fromString when writing or reading infinity, negative infinity or nan.
    • Fixed fromString when reading a 64 bit integer.
    WireReader
    • Fixed reading a Float32 from a Float64 (#2227). This is not a common use case, but it can happen when a Float32 is written on a file, and then read again into YARP (as a Float64), and then restored in the original type using copyPortable().
    Timer
    • Fixed Timer in monothread mode taking 100% of the CPU.
    • Fixed Timers in separate threads not updating their settings.

    dev

    • Fixed dependency from YARP_math that should be PUBLIC. A few headers include YARP_math headers.

    Devices

    batteryClient

    • Fixed methods returning int instead of double:
      • getVoltage()
      • getCurrent()
      • getCharge()
      • getTemperature()

    batteryWraper

    • Fixed parameters accepted by subdevice not printed with --verbose.

    Navigation2DClient

    • The method checkNearToLocation now correctly checks if two orientations are similar (below a certain threshold), also considering the critical points 0, 180, 360, -180, -180, etc.

    controlboardwrapper2

    • Exposed missing yarp::dev::IMotor::setGearboxRatio method via RPC.

    remote_controlboard

    • Implemented missing yarp::dev::IMotor::setGearboxRatio method.
    • Fixed group command yarp::dev::IInteractionMode::getInteractionModes.

    fakeBattery

    • Fixed PeriodicThread using 100% CPU.

    GUIs

    yarpview

    • Now the "checked" state of the two checkable elements in the File menu of yarpview (i.e. "Save single image..." and "Save a set of images...") turns to false when the corresponding dialogs are closed.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.3.2..v3.3.3):

        28	Daniele E. Domenichelli <[email protected]>
         2	Andrea Ruzzenenti <[email protected]>
         2	Bartek Łukawski <[email protected]>
         1	Ettore Landini <[email protected]>
         1	Marco Randazzo <[email protected]>
         1	Silvio Traversaro <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.3.2(Feb 19, 2020)

    YARP 3.3.2 Release Notes

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

    Tools

    yarpdatadumper

    • Fixed generation of video when invoked with the command line option --type video

    Devices

    usbCamera

    • Fixed build with OpenCV 4

    ovrheadset

    • Fixed race condition causing randomly frame drops.
    • Fixed behaviour of the CTRL button. Both CTRL buttons can now be pressed, only SHIFT will decide which eye offsets should be modified.
    • Fixed --no-logo option.
    • Fixed --userpose option.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.3.1..v3.3.2):

        16	Daniele E. Domenichelli <[email protected]>
         1	Ugo Pattacini <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-3.3.2-1.bionic_amd64.deb(5.83 MB)
    yarp-3.3.2-1.buster_amd64.deb(5.88 MB)
    yarp-3.3.2-2.focal_amd64.deb(5.97 MB)
  • v3.3.1(Jan 17, 2020)

    YARP 3.3.1 Release Notes

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

    Important Changes

    Dependencies

    • OpenCV 4 is now supported.

    Bug Fixes

    Libraries

    YARP_dev

    • Fixed missing header for deprecation warning macro.

    Devices

    grabberDual

    • Fixed the double open issue. (#2121)

    Tools

    yarpdataplayer

    • Fixed the part-port mismatch due to bad sorting. (#2173)
    • Fixed the clock drifting when the player was paused for long time. (#2139)
    • Fixed the rpc request play while it is already running. (#2144)

    Bindings

    Perl

    • The RPATH for installed perl bindings is now correct.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.3.0..v3.3.1):

        16	Nicolò Genesio <[email protected]>
         6	Daniele E. Domenichelli <[email protected]>
         1	Bartek Łukawski <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.3.0(Dec 5, 2019)

    YARP 3.3.0 Release Notes

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

    Important Changes

    Dependencies

    • CMake 3.12 or later is now required.
    • Optional dependency on YCM now requires version 0.11.0 or later.
    • C++14 is now required.
    • OpenCV 4 is now explicitly unsupported.
    • Visual Studio 2015 is no longer supported.

    Build System

    • CMake config files are now installed in lib/cmake also on windows.
    • The OS component is deprecated in favour of os (lowercase).

    Libraries

    YARP_os

    • The YARP_OS was renamed YARP_os. Using the old name is still supported, but deprecated.
    • yAssert is now a proper assertion macro (removed when NDEBUG is defined, i.e. `Release builds). If the expression tested has side-effects, program behavior will be different depending on whether NDEBUG is defined. This may create Heisenbugs which go away when debugging is turned on.
    • All yarp::os::Mutex related classes and methods are now deprecated in favour of std::mutex:
      • Classes:
        • yarp::os::Mutex
        • yarp::os::RecursiveMutex
        • yarp::os::AbstractLockGuard
        • yarp::os::LockGuard
        • yarp::os::RecursiveLockGuard
      • Methods:
        • yarp::os::Contactable::setCallbackLock(yarp::os::Mutex*)
        • yarp::os::AbstractContactable::setCallbackLock(yarp::os::Mutex*)
        • yarp::os::Port::setCallbackLock(yarp::os::Mutex*)
        • yarp::os::Buffered::setCallbackLock(yarp::os::Mutex*)
        • yarp::os::Timer::Timer(..., yarp::os::Mutex*)
    • yarp::os::Network::getDirectorySeparator and yarp::os::Network::getPathSeparator are now deprecated in favour of yarp::conf::filesystem::preferred_separator and yarp::conf::filesystem::path_separatorrespectively.
    • yarp::os::Runnable is now deprecated.
    • yarp::os::RateThreadWrapper is now deprecated.
    • The yarp::os::Property constructor using 'hash_size' was deprecated (it was already unused since the internal structure was ported to use std::map).
    • yarp::os::MessageStack constructor now accepts the max number of thread as size_t instead of int.
    • yarp::os::MessageStack constructor is now explicit.
    • yarp::os::MessageStack copy and move constructors and operators are now explicitly deleted.

    YARP_dev

    • All devices are now plugins. They are enabled by default, but can be disabled if required.
    • The <yarp/dev/GenericSensorInterfaces.h> include file is deprecated in favour of <yarp/dev/IGenericSensor.h>.
    • The <yarp/dev/PreciselyTimed.h> include file is deprecated in favour of <yarp/dev/IPreciselyTimed.h>.
    • The <yarp/dev/SerialInterfaces.h> include file is deprecated in favour of <yarp/dev/ISerialDevice.h>.
    • The <yarp/dev/Wrapper.h> include file is deprecated in favour of <yarp/dev/IWrapper.h> and <yarp/dev/IMultipleWrapper.h>.
    • yarp::dev::DataSource and yarp::dev::DataSource2 are now deprecated.
    • yarp::dev::DataWriter and yarp::dev::DataWriter2 are now deprecated

    New Features

    Build System

    • The yarp_idl_to_dir command now accepts the PLACEMENT option:
      • MERGED: headers and sources in <OUTPUT_DIR>/<namespace>
      • SEPARATE: headers in <OUTPUT_DIR>/include/<namespace> sources in <OUTPUT_DIR>/src/<namespace>
      • SEPARATE_EVEN: alias for SEPARATE
      • SEPARATE_ODD: headers in <OUTPUT_DIR>/include/<namespace> sources in <OUTPUT_DIR>/src For backwards compatibility the default value is SEPARATE_ODD.
    • After calling the yarp_add_idl method, the YARP_ADD_IDL_INCLUDE_DIR variable contains the include directory for using the header files

    Libraries

    YARP_conf

    • Added yarp::conf::filesystem utilities (robotology/yarp#1855).

    YARP_os

    • Cleanup of the signature of the following methods of yarp::os::Network:
      • static bool connect(const std::string& src, const std::string& dest, const ContactStyle& style)
      • static bool connect(const std::string& src, const std::string& dest, const std::string& carrier = "", bool quiet = true)
      • static bool connect(const char* src, const char* dest, const char* carrier, bool quiet = true)
      • static bool disconnect(const std::string& src, const std::string& dest, bool quiet)
      • static bool disconnect(const std::string& src, const std::string& dest, const ContactStyle& style)
      • static bool disconnect(const std::string& src, const std::string& dest, const std::string& carrier = "", bool quiet = true)
      • static bool disconnect(const char* src, const char* dest, const char* carrier, bool quiet = true)
      • static bool isConnected(const std::string& src, const std::string& dest, bool quiet)
      • static bool isConnected(const std::string& src, const std::string& dest, const ContactStyle& style)
      • static bool isConnected(const std::string& src, const std::string& dest, const std::string& carrier = "", bool quiet = true)
      • static bool isConnected(const char* src, const char* dest, const char* carrier, bool quiet = true)
    • Added move constructor and assignment operator to yarp::os::Searchable.
    • Added move constructor and assignment operator to yarp::os::Bottle.
    • Added move constructor and assignment operator to yarp::os::Property.
    • Added constructors that accept std::mutex instead of yarp::os::Mutex to yarp::os::Timer.
    • The Log colors can now be enabled also on windows when supported (robotology/yarp#2076)
    • Added setCallbackLock overrides to yarp::os::Contactable, yarp::os::AbstractContactable, yarp::os::Port, yarp::os::BufferedPort to pass a std::mutex instead of a yarp::os::Mutex.

    YARP_dev

    • Added new interface yarp::dev::IFrameTranformClientControl
    • yarp::dev::TransformClient implements the new interface yarp::dev::IFrameTranformClientControl.
    • The rpc port of the yarp::dev::TransformClient allows to reconnect to the server.
    • yarp::dev::TransformServer allows the use of wildcard to erase all the transforms between a specified source and * or between * and a specified destination.
    • The rpc port of the yarp::dev::TransformServer allows to delete a given transform.

    YARP_run

    • The ENABLE_YARPRUN_LOG fixed and deprecated in favour of YARP_ENABLE_YARPRUN_LOG.

    Tools

    yarpidl_trift

    • yarpidl_thrift now places the source files according to the "separate" layout.

    yarpdatadumper

    • Fixed creating directories whose name contains not allowed characters (e.g. :, *, ...).
    • It's now possible to dump PNG images.
    • The timestamp info are now provided within info.log.

    GUIs

    yarpdataplayer

    • info.log files containing timestamp info are now handled.

    devices

    multipleanalogsensorsclient

    • Added the option externalConnection(false by default). This option disables the automatic connect to the rpc:o and measures:o of the respective multipleanalogsensorsserver. This implies that with this configuration the metadata is missing, then the device lacks of some informations such as the sensor name, the frame name etc. On the other hand it allows to connect/disconnect the client to the port measures:o of the server after being opened, and to work also when the rpc:o port is missing (e.g with the yarpdataplayer).

    realsense2

    • Deprecated the needAlignment parameter in favour of alignmentFrame. The default behaviour has been maintaned, if not specified alignmentFrame is RGB. The allowed values are RGB, Depth and None.

    mjpeg

    • The MJPEG_AUTOCOMPRESS CMake option is deprecated in favour of YARP_MJPEG_AUTOCOMPRESS

    mpi

    • The MPI_DEBUG_MSG CMake option is deprecated in favour of YARP_MPI_DEBUG_MSG.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.2.0..v3.3.0):

       332	Daniele E. Domenichelli <[email protected]>
        26	Nicolò Genesio <[email protected]>
         7	Ugo Pattacini <[email protected]>
         5	Vadim Tikhanoff <[email protected]>
         4	Marco Randazzo <[email protected]>
         2	Bartek Łukawski <[email protected]>
         1	Carlotta Sartore <[email protected]>
         1	Giovanni Saponaro <[email protected]>
         1	Giulio Romualdi <[email protected]>
         1	Nicola Piga <[email protected]>
         1	Silvio Traversaro <[email protected]>
         1	Valentina Gaggero <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.2.2(Nov 29, 2019)

    YARP 3.2.2 Release Notes

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

    Bug Fixes

    Build System

    • OpenCV 4 is not supported yet, and rejected by the build system.

    Devices

    ovrheadset

    • Added the hands_relative parameter (robotology/yarp#2106)

    USBCameraDriverRaw

    • Do not try to build when missing dependencies

    Tools

    yarpdataplayer

    • Fixed speed control not working

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.2.1..v3.2.2):

         7	Daniele E. Domenichelli <[email protected]>
         3	Vadim Tikhanoff <[email protected]>
         1	Giulio Romualdi <[email protected]>
         1	Marco Randazzo <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.2.1(Sep 25, 2019)

    YARP 3.2.1 Release Notes

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

    Bug Fixes

    Carriers

    mjpeg

    • Fixed mjpeg carrier using BGR images (#2060, #2061).

    Devices

    MultipleAnalogSensorsRemapper

    • Fixed getTemperatureSensorMeasure method (#2056, #2058).

    Tools

    yarpidl_thrift

    • Fixed deserialization for map types (#2054).

    yarprun

    • Fixed remote commands execution getting stucks with no answer (#2091).

    GUIs

    yarpdataplayer

    • Fixed internal virtual timing in the yarpdataplayer as timestamps were not consistent (#2049, #2052).

    yarpmanager

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.2.0..v3.2.1):

       170	Daniele E. Domenichelli <[email protected]>
         4	Nicolò Genesio <[email protected]>
         2	Vadim Tikhanoff <[email protected]>
         1	Giovanni Saponaro <[email protected]>
         1	Valentina Gaggero <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.2.0(Jun 27, 2019)

    YARP 3.2.0 Release Notes

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

    Important Changes

    Dependencies

    • Optional dependency on YCM now requires version 0.10.4 or later.
    • Optional dependency on RobotTestingFramework now requires version 2 or later.
    • Rplidar SDK updated to 1.9.0
    • Thrift updated to 0.12.0
    • QCustomPlot 2 is now supported.
    • Optional dependency on LibOVR now requires version 1.17 or later.

    Bindings

    • Removed support for 'Chicken Scheme' and 'Allegro Common Lisp'.
    • Swig 4 is now supported.

    Devices

    • The portaudio and the ServerSoundGrabber device drivers are deprecated.

    New Features

    Build System

    • .ini files for plugins configured with yarp_prepare_plugin can now be automatically generated by yarp_add_plugin and installed by passing the YARP_INI DESTINATION argument to yarp_install.
    • The CREATE_LIB_MATH CMake option was renamed YARP_COMPILE_libYARP_math.
    • The CREATE_GUIS CMake option was renamed YARP_COMPILE_GUIS.
    • All the CREATE_<UPPERCASE_EXECUTABLE> were renamed YARP_COMPILE_<lowercase-executable>
    • All the YARP_USE_<UPPERCASEPACKAGENAME> were renamed YARP_USE_<PackageName>
    • All the YARP_USE_SYSTEM_<UPPERCASEPACKAGENAME> were renamed YARP_USE_SYSTEM_<PackageName>
    • All the internal CMake variables related to packages now use the same case as the relative CMake module (i.e. YARP_HAS_OpenCV instead of YARP_HAS_OPENCV)
    • yarp_idl_to_dir signature changed, and now supports passing optional parameters:
         yarp_idl_to_dir(INPUT_FILES <file> [file]
                         OUTPUT_DIR <dir>
                         [SOURCES_VAR <var>]
                         [HEADERS_VAR <var>]
                         [INCLUDE_DIRS_VAR <var>]
                         [THRIFT_INCLUDE_PREFIX]
                         [THRIFT_NO_NAMESPACE_PREFIX]
                         [THRIFT_NO_COPYRIGHT}
                         [THRIFT_NO_EDITOR]
                         [THRIFT_NO_DOC]
                         [VERBOSE])
      

      The old behaviour is still supported, but deprecated.

    • yarp_idl_to_dir always regenerates files if they are not available.
    • yarp_idl_to_dir No longer generates build targets.
    • Files returned by yarp_idl_to_dir are now relative to current directory.

    Libraries

    YARP_conf

    • The yarp/conf/options.h header file is deprecated.

    YARP_OS

    • The following methods signatures were changed to accept const char instead of int as terminating character:
      • ConnectionReader::expectText()
      • ConnectionWriter::appendString()
      • InputStream::readLine()
    • Added YarpPluginSelector::checkPlugin() static method.
    • ConnectionWriter::appendString() is deprecated in favour of appendText().
    • ConnectionWriter::appendRawString() is deprecated in favour of appendString().
    • Added ConnectionReader::expectString().
    • Added the initiliizer_list constructor in yarp::os::Property.
    • Added the initiliizer_list constructor in yarp::os::Bottle.
    • yarp::os::NameSpace: All methods in the interface that take ContactStyle as parameter, are now passed by reference instead of by value.
      • - virtual bool connectPortToTopic(const Contact& src, const Contact& dest, ContactStyle style) = 0;
        + virtual bool connectPortToTopic(const Contact& src, const Contact& dest, const ContactStyle& style) = 0;
        
      • - virtual bool connectTopicToPort(const Contact& src, const Contact& dest, ContactStyle style) = 0;
        + virtual bool connectTopicToPort(const Contact& src, const Contact& dest, const ContactStyle& style) = 0;
        
      • - virtual bool disconnectPortFromTopic(const Contact& src, const Contact& dest, ContactStyle style) = 0;
        + virtual bool disconnectPortFromTopic(const Contact& src, const Contact& dest, const ContactStyle& style) = 0;
        
      • - virtual bool disconnectTopicFromPort(const Contact& src, const Contact& dest, ContactStyle style) = 0;
        + virtual bool disconnectTopicFromPort(const Contact& src, const Contact& dest, const ContactStyle& style) = 0;
        
      • - virtual bool connectPortToPortPersistently(const Contact& src, const Contact& dest, ContactStyle style) = 0;
        + virtual bool connectPortToPortPersistently(const Contact& src, const Contact& dest, const ContactStyle& style) = 0;
        
      • - virtual bool disconnectPortToPortPersistently(const Contact& src, const Contact& dest, ContactStyle style) = 0;
        + virtual bool disconnectPortToPortPersistently(const Contact& src, const Contact& dest, const ContactStyle& style) = 0;
        

    YARP_sig

    • Added ImageUtils.h, an header containing the following image utilities:

      • utils::vertSplit
      • utils::horzSplit
      • utils::vertConcat
      • utils::horzConcat
    • yarp::sig::file Added support to write .png files

    • Added the following methods to VectorOf:

      • VectorOf(std::initializer_list)
      • begin(), end(), cbegin(), cend()
      • reserve(size_t)
      • capacity()
      • push_back(T&&)
      • emplace_back(_Args...)
    • Deprecated VectorOf::getFirst() in favour of data() and begin(). Use either data() if you need the pointer to the first element, or begin() if you need the iterator.

    • Added yarp::sig::IntrinsicParams and yarp::sig::YarpDistortion emum.

    • Added two methods for computing a yarp::sig::PointCloud from depth images:

      • utils::depthToPC
      • utils::depthRgbToPC
    • Deprecated getIplImage and wrapIplImage in favour of the new utilities of YARP_cv.

    • Added move semantics in yarp::sig::Image.

    • The yarp::sig::Sound class was heavily refactored:

      • New data types:
        • Sound::audio_sample (short int)
      • Changed signatures:
        • - Sound(int bytesPerSample)
          + Sound(size_t bytesPerSample)
          
        • - int get(size_t sample, size_t channel) const
          + audio_sample get(size_t sample, size_t channel) const
          
        • - void set(int value, size_t sample, size_t channel)
          + void set(audio_sample value, size_t sample, size_t channel)
          
        • - void setSafe(int value, size_t sample, size_t channel)
          + void setSafe(audio_sample value, size_t sample, size_t channel)
          
        • - size_t getFrequency() const
          + int getFrequency() const
          
        • - void setFrequency(size_t freq)
          + void setFrequency(int freq)
          
      • Removed methods:
        • unsigned char *getRawData() const
        • size_t getRawDataSize() const
      • Added methods:
        • bool operator==(const Sound& alt) const
        • bool clearChannel(size_t channel)
        • Sound extractChannelAsSound(size_t channel_id) const
        • std::vector<std::reference_wrapper<audio_sample>> getChannel(size_t channel_id)
        • bool replaceChannel(size_t id, Sound channel)
        • std::vector<std::reference_wrapper<audio_sample>> getInterleavedAudioRawData() const
        • std::vector<std::reference_wrapper<audio_sample>> getNonInterleavedAudioRawData() const
        • std::string toString() const
        • double getDuration() const

    YARP_dev

    • yarp::dev::IMap2D::clear() method renamed to yarp::dev::IMap2D::clearAllMaps().
    • yarp::dev::INavigation2D derives from INavigation2DControlActions and INavigation2DTargetActions.
    • yarp::dev::INavigation2DControlActions. The following methods have been added: getAllNavigationWaypoints(std::vector<yarp::dev::Map2DLocation>& waypoints) getCurrentNavigationWaypoint(yarp::dev::Map2DLocation& curr_waypoint) getCurrentNavigationMap(yarp::dev::NavigationMapTypeEnum map_type, yarp::dev::MapGrid2D& map)
    • yarp::dev::INavigation2DTargetActions. The following method has been added: gotoTargetByRelativeLocation(double x, double y)
    • The following method now accepts a parameter (with default value = infinite for backward compatibility): yarp::dev::INavigation2DTargetActions::suspendNavigation(const double time_s = std::numeric_limits<double>::infinity())
    • yarp::dev::ILocalization2D added the new two following methods:
      • bool getLocalizationStatus(LocalizationStatusEnum& status)
      • bool getEstimatedPoses(std::vector<yarp::dev::Map2DLocation>& poses)
    • yarp::dev::ILocalization2D added the new type: LocalizationStatusEnum
    • yarp::dev::IBattery::getBatteryStatus() now uses Battery_status enum, instead of int.
    • yarp::dev::INavigation2D. Added method yarp::dev::INavigation2DControlActions::recomputeCurrentNavigationPath().
    • yarp::dev::INavigation2D. Added helper static methods:
      • yarp::dev::INavigation2DHelpers::statusToString()
      • yarp::dev::INavigation2DHelpers::stringToStatus()
    • yarp::dev::INavigation2D. Added method: yarp::dev::INavigation2D::getNameOfCurrentTarget() to the interface.
    • yarp::dev::INavigation2D. Method: yarp::dev::INavigation2D::gotoTargetByLocationName() now accepts area names.
    • yarp::dev::INavigation2D. Added class yarp::dev::Map2DArea.
    • yarp::dev::INavigation2D. Added methods getArea(), checkInsideArea() and checkNearToLocation().
    • yarp::dev::INavigation2DTargetActions. Added method applyVelocityCommand().
    • yarp::dev::Map2DServer. Changed locations.ini file format to support load/save of Map2DLocation and Map2DArea.
    • Updated AnalogWrapper to open multiple ros topics for wrenchStamped ros msg type.
    • Added const counterpart of yarp::dev::CanBuffer::getPointer().
    • yarp::dev::IMap2D Added method yarp::dev::IMap2D::renameLocation()
    • yarp::dev::IMap2D Added method yarp::dev::IMap2D::renameArea()
    • Added yarp::dev::CircularAudioBuffer and yarp::dev::AudioBufferSize classes.
    • IAudioRender:
      • Changed signatures:
        • - bool renderSound(yarp::sig::Sound& sound)
          + bool renderSound(const yarp::sig::Sound& sound)
          
      • Added methods:
        • bool getPlaybackAudioBufferMaxSize(yarp::dev::AudioBufferSize& size)
        • bool getPlaybackAudioBufferCurrentSize(yarp::dev::AudioBufferSize& size)
        • bool resetPlaybackAudioBuffer()
        • bool getRecordingAudioBufferMaxSize(yarp::dev::AudioBufferSize& size)
        • bool getRecordingAudioBufferCurrentSize(yarp::dev::AudioBufferSize& size)
        • bool resetRecordingAudioBuffer()
    • IAudioGrabberSound:
      • Changed signatures:
        • - bool getSound(yarp::sig::Sound& sound)
          + bool getSound(yarp::sig::Sound& sound, size_t min_number_of_samples, size_t max_number_of_samples, double max_samples_timeout_s)
          
      • Added methods:
        • bool getRecordingAudioBufferMaxSize(yarp::dev::AudioBufferSize& size)
        • bool getRecordingAudioBufferCurrentSize(yarp::dev::AudioBufferSize& size)
        • bool resetRecordingAudioBuffer()

    YARP_cv

    • Added YARP_cv, a conversion library from YARP images to cv::Mat and viceversa.

    Devices

    • New devices:
      • fakeBattery
      • navigation2DServer
      • localization2DServer
      • usbCamera (imported from the iCub repository)
      • fakeNavigation
      • fakeLocalizer
      • audioRecorderWrapper
      • portaudioRecorder
      • portaudioPlayer
      • audioPlayerWrapper
      • fakeSpeaker
      • fakeMicrophone
    • Add physFocalLength parameter for RGBD devices (check documentation for more details).

    BatteryWrapper

    • Now handles correctly --subdevice option.

    imuBosch_BNO055

    • Added MultipleAnalogSensor interface support.
    • Fixed conversion factor for gyro and magnetometer.
    • Fixed unit measure in ThreeAxis interface.

    Navigation2DClient

    • Added handler for rpc string commands. By default the port is called <client_name>/user_commands/rpc.

    fakeLaser

    • Added configuration parameters to set the range and the resolution of the device.

    analogServer

    • Has learned to forward return codes to analogSensorClient (#1981).
    • Now forwards calibrateSensor(const yarp::sig::Vector& value) calls to wrapped subdevices.

    ServerSoundGrabber

    • No longer implements IAudioGrabberSound.

    ServerFrameGrabber

    • No longer implements audio interfaces.

    RFModules

    • Added the possibility to compile RFModules as plugin and load them runtime in a single process context.

    Tools

    yarprobotinterface

    • YARP//DTD yarprobotinterface 3.0//EN is now the default parser for robot xml configuration files. yarprobotinterface will not run anymore deprecated DTD format v1.0

    yarpidl_thrift

    • The thrift tool was refactored.
    • Fix list serialization for i8, i16 and i64 (#1962)
    • Structs can now be exported in dll APIs using the yarp.api.include and yarp.api.keyword annotations.
    • Portables serialized using appendExternalBlock (i.e. yarp::sig::Vector) can now be safely returned by thrift methods.
    • Files are now generating using namespace as subdirectory (this can be disabled using the no_namespace_prefix option.
    • Constants and typedefs are now properly generated in the namespace.

    yarphear

    • Use portaudioPlayer instead of portaudio device.

    GUIs

    yarpmanager

    • Allow to specify an address for every host in the cluster-config.xml file. This allow to use host names that cannot be resolved automatically by the network.

    yarpview

    • Added size (w,h) info for:
      • the image received on the yarp port
      • the image currently displayed in yarpview

    Bug Fixes

    Libraries

    YARP_dev

    • ImplementPositionControl::checkMotionDone now correctly returns a single value as from API (#2027).

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.1.0..v3.2.0):

       411	Daniele E. Domenichelli <[email protected]>
       154	Nicolò Genesio <[email protected]>
        76	Marco Randazzo <[email protected]>
        70	Alberto Cardellino <[email protected]>
        19	Valentina Gaggero <[email protected]>
        13	Silvio Traversaro <[email protected]>
        11	Bartek Łukawski <[email protected]>
         8	Damiano Enerli <[email protected]>
         7	Ugo Pattacini <[email protected]>
         5	Yeshasvi Tirupachuri <[email protected]>
         4	Andrea Ruzzenenti <[email protected]>
         4	Claudio Fantacci <[email protected]>
         4	Stefano Dafarra <[email protected]>
         3	Andrea Ruzzenenti <[email protected]>
         3	Matteo Brunettini <[email protected]>
         2	Arren Glover <[email protected]>
         2	Diego Ferigo <[email protected]>
         2	Nuno Guedelha <[email protected]>
         2	Prashanth Ramadoss <[email protected]>
         2	Tobias Fischer <[email protected]>
         1	Austin Kothig <[email protected]>
         1	Emilio Benenati <[email protected]>
         1	Francesco Romano <[email protected]>
         1	GiulioRomualdi <[email protected]>
         1	Jason Chevrie <[email protected]>
         1	Mohamed Babiker Mohamed Elobaid <[email protected]>
         1	Vadim Tikhanoff <[email protected]>
         1	YARP Developers <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-3.2.0-2.bionic_amd64.deb(5.70 MB)
    yarp-3.2.0-2.bionic_i386.deb(5.92 MB)
    yarp-3.2.0-2.buster_amd64.deb(5.72 MB)
    yarp-3.2.0-2.buster_i386.deb(5.96 MB)
    yarp-3.2.0-2.disco_amd64.deb(5.77 MB)
    yarp-3.2.0-2.disco_i386.deb(6.05 MB)
    yarp-3.2.0-2.stretch_amd64.deb(5.83 MB)
    yarp-3.2.0-2.stretch_i386.deb(6.03 MB)
  • v3.1.2(Jun 3, 2019)

    YARP 3.1.2 Release Notes

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

    Bug Fixes

    CMake

    • Fixed issue in YarpPlugin when INTERNAL is enabled and dependencies are not available (#2024).

    Libraries

    YARP_dev

    • Fixed PolyDriver linking issues on Ubuntu 18.04.

    Devices

    realsense2

    • Correctly detect color sensor on D435i (#2010).

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.1.1..v3.1.2):

         8	Daniele E. Domenichelli <[email protected]>
         2	Alberto Cardellino <[email protected]>
         1	Bartek Łukawski <[email protected]>
         1	Emilio Benenati <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.1.1(Apr 18, 2019)

    YARP 3.1.1 Release Notes

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

    New Features

    Build System

    • Added YARP_DISABLE_VERSION_SOURCE cmake variable to disable version source when building YARP. This is an useful option for developers, since it avoids rebuilding everything whenever the commit or the dirty state changes. Please disable this option when including YARP version in bugs reports.

    Bug Fixes

    CMake Modules

    YarpInstallationHelpers

    • Changed / in \ path.d under Windows (#1513).

    Libraries

    YARP_OS

    • Fixed write() in BufferedPort after interrupting-resuming(#1834).
    • Fixed assertion when YARP_FORWARD_LOG_ENABLE=1 (#1851).
    • Fixed impl/PlatformSysStat.h installation.
    • Fixed Port from performing resume() operations if not interrupted(#1896).
    • Fixes missing initialization value for Network Clock port

    YARP_dev

    • Fixed IControlLimits.h not being a self-sufficient header (#1845).
    • Added missing YARP_dev_API to IRobotDescription.
    • Made optional the view of IFrameGrabberControls in RGBDSensorWrapper (#1875).
    • Fixed header inclusion in ImplementControlLimits2.h.
    • Fixed interface pointer checks in ControlBoardWrapper.
    • Added timeout check in all data streamed by *\stateExt:o ports (#1833).

    YARP_companion

    • Fixed api.h installation.

    YARP_sig

    • Fixed element contruction when calling VectorOf<T>::push_back().
    • Fixed build when ZFP is installed.
    • Fixed possible buffer overrun in PointCloudTypes

    Tools

    yarpidl_thrift

    • Fixed serialisation / deserialisation of maps (#1802).

    Bindings

    • Fixed usage of methods that take in input a yarp::sig::Vector in bindings (#1828).
    • Disabled extended analog sensor interfaces in C# to allow compilation of these bindings (#1830).
    • Added bindings for yarp::os::Wire and yarp::os::WireLink

    GUIs

    yarpdataplayer

    • Fixed memory leak when using cvLoad(...).

    Devices

    RemoteControlBoard

    • Added timeout parameter.

    realsense2

    • Fixed set/getDepthAccuracy methods (#1877).

    ffmpeg

    • Fixed compilation on debian testing (#1849).

    imuBosch_BNO055

    • Fixed runtime linking issue.
    • Fixed shifted read from i2c.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.1.0..v3.1.1):

       112	Daniele E. Domenichelli <[email protected]>
        33	Nicolò Genesio <[email protected]>
         8	Damiano Enerli <[email protected]>
         7	Alberto Cardellino <[email protected]>
         6	Silvio Traversaro <[email protected]>
         3	Bartek Łukawski <[email protected]>
         3	Marco Randazzo <[email protected]>
         2	Andrea Ruzzenenti <[email protected]>
         2	Arren Glover <[email protected]>
         2	Diego Ferigo <[email protected]>
         2	Nuno Guedelha <[email protected]>
         2	Tobias Fischer <[email protected]>
         2	Ugo Pattacini <[email protected]>
         1	Claudio Fantacci <[email protected]>
         1	Matteo Brunettini <[email protected]>
         1	Mohamed Babiker Mohamed Elobaid <[email protected]>
         1	Valentina Gaggero <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v3.1.0(Jul 31, 2018)

    YARP 3.1.0 (2018-07-31) Release Notes

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

    New Features

    Libraries

    YARP_OS

    • Vocab is now a namespace, and yarp::os::createVocab replaces VOCAB1\2\3\4 that are now deprecated.

    YARP_DEV

    • The following files have been renamed:
      • yarp/dev/ImplementControlLimits.h (from yarp/dev/IControlLimitsImpl.h)
      • yarp/dev/ImplementControlLimits2.h (from yarp/dev/IControlLimits2Impl.h)
      • yarp/dev/ImplementInteractionMode.h (from yarp/dev/IInteractionModeImpl.h)
      • yarp/dev/ImplementPidControl.h (from yarp/dev/IPidControlImpl.h)
      • yarp/dev/ImplementPositionControl.h (from yarp/dev/IPositionControlImpl.h)
      • yarp/dev/ImplementPositionControl2.h (from yarp/dev/IPositionControl2Impl.h)
      • yarp/dev/ImplementPositionDirect.h (from yarp/dev/IPositionDirectImpl.h)
      • yarp/dev/ImplementVelocityControl.h (from yarp/dev/IVelocityControlImpl.h)
      • yarp/dev/ImplementVelocityControl2.h (from yarp/dev/IVelocityControl2Impl.h)
      • yarp/dev/ImplementVirtualAnalogSensor.h (from yarp/dev/IVirtualAnalogSensorImpl.h)
    • The following classes have been refactored.
      • These classes are no more template classes:
        • ImplementControlCalibration
        • ImplementAmplifierControl
        • ImplementEncoders
      • Class definitions were moved from yarp/dev/ImplementControlBoardInterfaces.h to:
        • yarp/dev/ImplementControlCalibration.h
        • yarp/dev/ImplementAmplifierControl.h
        • yarp/dev/ImplementEncoders.h
      • File yarp/dev/ControlBoardInterfacesImpl-inl.h has been removed.
    • Class IControlCalibration refactored. The following methods were renamed:
      • done(int j) -> calibrationDone(int j)
      • doneRaw(int j) -> calibrationDoneRaw(int j)
      • calibrate() -> calibrateRobot()
    • Class IControlCalibrationRaw refactored. The following methods were renamed:
      • calibrateRaw(int, unsigned int, double, double, double) -> calibrateAxisWithParamsRaw(int, unsigned int, double, double, double)
      • calibrate(int, unsigned int, double, double, double) -> calibrateAxisWithParams(int, unsigned int, double, double, double)
    • The file yarp/dev/ControlBoardInterfaces.h has been split into multiple files:
      • yarp/dev/IAmplifierControl.h
      • yarp/dev/IAxisInfo.h
      • yarp/dev/IControlDebug.h
      • yarp/dev/IControlLimits.h

    YARP_sig

    • Vector made typedef of VectorOf<double>(#1598).

    Devices

    imuBosch_BNO055

    • Added support for i2c.

    yarp_test_grabber

    • Added test [time] which draws a text timestamp directly on the image.

    Tools

    yarp

    • Added yarp name runners command to get a list of the ports offering yarprun utilities

    Bindings

    IInteractionMode interface bindings

    • Added bindings for the interface IInteractionMode. The change extends the yarp::dev::IInteractionMode and the yarp::dev::IImpedanceControl classes.

    Multiple Analog Sensors interfaces bindings

    • Minor refactoring of main header MultipleAnalogSensorsInterfaces.h defining the interfaces: IThreeAxisGyroscopes, IThreeAxisLinearAccelerometers, IThreeAxisMagnetometers, IOrientationSensors, ITemperatureSensors, ISixAxisForceTorqueSensors, IContactLoadCellArrays, IEncoderArrays, ISkinPatches.
    • Extended these interfaces for wrapping the cast functions (PolyDriver*)->view(<sensor_interface*>).
    • For this purpose, defined and used a new macro CAST_POLYDRIVER_TO_INTERFACE.
    • extended the new interfaces for wrapping all other methods which Swig struggles to handle, using a new Swig macro defined in macrosForMultipleAnalogSensors.i
    • refactored the from/toMatlab() wrappers and extended them to the classes: std::vector<double>, std::vector<bool>, std::vector<int>, yarp::sig::Vector.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.0.0..v3.1.0):

       100	Daniele E. Domenichelli <[email protected]>
        69	Nicolò Genesio <[email protected]>
        26	Damiano Enerli <[email protected]>
        17	Marco Randazzo <[email protected]>
         8	Nuno Guedelha <[email protected]>
         4	Valentina Gaggero <[email protected]>
         2	Bartek Łukawski <[email protected]>
         2	Emilio Cartoni <[email protected]>
         2	Lorenzo Rapetti <[email protected]>
         2	Matteo Brunettini <[email protected]>
         2	Ugo Pattacini <[email protected]>
         1	Alberto Cardellino <[email protected]>
         1	Andrea Ruzzenenti <[email protected]>
         1	Claudio Fantacci <[email protected]>
         1	Mohamed Babiker Mohamed Elobaid <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp--3.1.0.high_sierra.bottle.tar.gz(8.80 MB)
    yarp-3.1.0-1.bionic_amd64.deb(5.65 MB)
    yarp-3.1.0-1.bionic_i386.deb(5.94 MB)
    yarp-3.1.0-1.cosmic_amd64.deb(5.73 MB)
    yarp-3.1.0-1.cosmic_i386.deb(6.03 MB)
    yarp-3.1.0-1.disco_amd64.deb(5.74 MB)
    yarp-3.1.0-1.disco_i386.deb(6.03 MB)
    yarp-3.1.0-1.stretch_amd64.deb(5.73 MB)
    yarp-3.1.0-1.stretch_i386.deb(5.97 MB)
    yarp-3.1.0-1.xenial_amd64.deb(5.65 MB)
    yarp-3.1.0-1.xenial_i386.deb(5.70 MB)
    yarp_3.1.0_v14_x86_1.exe(769.29 MB)
    yarp_3.1.0_v14_x86_amd64_1.exe(824.71 MB)
  • v3.0.1(Jul 25, 2018)

    YARP 3.0.1 (2018-07-25) Release Notes

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

    Important Changes

    • Optional dependency on YCM now requires version 0.9.0 or later.
    • The idl_tools component is now required in order to use yarp_idl_to_dir and yarp_add_idl.

    YARP_rosmsg

    • Removed all getTypeText() and typeText() methods, replaced by static constexpr const char* typeText variable.

    New Features

    • Python and ruby bindings tests are now integrated with ctest

    Libraries

    YARP_rosmsg

    • Added static constexpr const char* typeName, static constexpr const char* typeChecksum and static constexpr const char* typeText variables to all generated classes.

    Tools

    yarprobotinterface

    • Added parser for yarprobotinterface .xml format 3.0

    Bug Fixes

    Build System

    • Fixed issue with vtk config files when looking for the pcl component.
    • Fixed java bindings.
    • Fixed static builds.
    • Added components for private libraries (needed for static builds)
    • Added components for yarpcar and yarpmod.
    • When using YARP_MODULE_PATH a deprecation warning is printed (YCM should be used instead).
    • Deprecation warnings when calling find_package(YARP) more than once are no longer printed.
    • Fix configuration when YARP_COMPILE_CARRIER_PLUGINS and YARP_COMPILE_DEVICE_PLUGINS is set to OFF.
    • When using FeatureSummary, find_package(YARP) adds the DESCRIPTION and URL properties.
    • When using FeatureSummary, find_package(YARP) no longer adds YCM to the optional dependencies.
    • Fixed behavior of OPTIONAL_COMPONENTS in find_package(YARP) calls when the REQUIRED option was passed on. Now, a YARP bundle will be considered not found if any of such components is missing.
    • Plugins not enabled due to missing dependencies are now shown in ccmake and cmake-gui together with a list of dependencies that are not satisfied.
    • Removed the NO_RECURSE argument to yarp_idl_to_dir and yarp_add_idl.

    Libraries

    YARP_OS

    • Fixed SharedLibraryClass::getContent(). Now a const and a non const version are available.
    • Fixed SharedLibraryClassFactory::destroy(). Now it is const like create().
    • Added initialization of MultiNameSpace in Network::initMinimum.

    YARP_dev

    • Fixed getCurrent/getCurrents. Now the stateExt port is used, and the methods are called through the iCurrentControl interface.
    • Fixed deprecation message placement for the constructor of IJoypadEventDriven. It was failing enabling c++14 compiling with gcc(#1747).
    • Fixed ImplementCurrentControl::getCurrentRanges(double*min, double *max): where conversion from Sensor to Ampere was missing.
    • Fixed ImplementCurrentControl::getCurrentRanges(j, double *min, double *max): where conversion from Sensor to Ampere was missing.
    • Fixed ImplementPositionControl::checkMotionDone(bool *flag) where axes conversion was missing.

    YARP_math

    • Fixed a regression in the build system that prevented YARP from being compiled if Eigen3 was available.

    YARP_pcl

    • Fixed missing isDense parmeter.

    YARP_sig

    • Fixed negative vocab(#1749).

    YARP_rosmsg

    • Fixed message_definition property for all classes.

    Tools

    yarpidl_rosmsg

    • Removed the --no-recurse option.
    • The message_definition property is now properly generated.

    GUIs

    yarpscope

    • Fixed double free during the closure. It has been introduced by #1685 (commit 02abf63).

    Devices

    rplidar2

    • Fixed compilation (#1689).

    realsense2

    • Fixed deadlock on macOS(see IntelRealSense/librealsense:#1855). Actually to fix it also are needed these changes IntelRealSense/librealsense:#2022.

    multipleanalogsensorsremapper

    • Fixed sensors name remapping in MultipleAnalogSensorsRemapper class.

    batteryClient

    • Fixed plugin name.

    batteryWrapper

    • Fixed plugin name.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v3.0.0..v3.0.1):

        93	Daniele E. Domenichelli <[email protected]>
        28	Nicolò Genesio <[email protected]>
        24	Damiano Enerli <[email protected]>
         5	Marco Randazzo <[email protected]>
         3	Valentina Gaggero <[email protected]>
         2	Bartek Łukawski <[email protected]>
         2	Lorenzo Rapetti <[email protected]>
         2	Ugo Pattacini <[email protected]>
         1	Alberto Cardellino <[email protected]>
         1	Claudio Fantacci <[email protected]>
         1	Mohamed Babiker Mohamed Elobaid <[email protected]>
         1	Nuno Guedelha <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-3.0.1-1.bionic_amd64.deb(5.63 MB)
    yarp-3.0.1-1.bionic_i386.deb(5.92 MB)
    yarp-3.0.1-1.stretch_amd64.deb(5.72 MB)
    yarp-3.0.1-1.stretch_i386.deb(5.96 MB)
    yarp-3.0.1-1.xenial_amd64.deb(5.74 MB)
    yarp-3.0.1-1.xenial_i386.deb(5.83 MB)
    yarp_3.0.1_v14_x86_1.exe(472.61 MB)
    yarp_3.0.1_v14_x86_amd64_1.exe(473.33 MB)
  • v3.0.0(Jun 11, 2018)

    YARP 3.0.0 (2018-06-11) Release Notes

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

    Important Changes

    • All YARP libraries can now be modified and distributed under the terms of the BSD-3-Clause license. See the accompanying LICENSE file for details.
    • Visual Studio 2013 is no longer supported.
    • CMake 3.5 or later is now required.
    • Optional dependency on YCM now requires version 0.8.0 or later.
    • All the functionalities deprecated before YARP 2.3.72 were removed.

    Build System

    • The CREATE_DEVICE_LIBRARY_MODULES option was renamed YARP_COMPILE_DEVICE_PLUGINS and is now enabled by default.
    • The CREATE_OPTIONAL_CARRIERS option was renamed YARP_COMPILE_CARRIER_PLUGINS and is now enabled by default.
    • YARP now accepts the keyboard COMPONENTS in find_package(YARP) calls. The YARP_LIBRARIES variable contains only the libraries corresponding to the components requested in the last find_package(YARP) call. If no components are specified, the OS, sig, dev and math (only when enabled) components are searched.
    • The YARP_INCLUDE_DIRS variable is deprecated, as it is handled automatically by CMake targets.
    • The YARP_MATH_LIBRARY is deprecated. You can check for YARP_math using find_package(YARP COMPONENTS math)

    Libraries

    YARP_conf

    • The YARP_WRAP_STL_STRING and YARP_WRAP_STL_STRING_INLINE are now always undefined, and they are now considered deprecated.

    YARP_OS

    • The shmem carrier is no longer builtin inside YARP_OS and it is now a plugin.
    • The Run class was moved to the new library YARP_run
    • yarp::os::setprogname() is now deprecated.
    • yarp::os::getprogname() is now deprecated.
    • yarp::os::SystemInfo::getProcessInfo() now returns info for current process when called without arguments.
    • The methods yarp::os::Mutex::tryLock() and yarp::os::RecursiveMutex::tryLock() were deprecated in favour of try_lock().
    • ConstString is now deprecated in favour of std::string.
    • Replaced YARP_INT{8,16,32,64} with std::int{8,16,32,64}_t from cstdint
    • Use defines from cinttypes instead of YARP_INT64_FMT
    • Add yarp::conf::float{32,64,128}_t (128 only if supported)
    • Add yarp::conf::ssize_t
    • Deprecate YARP_INT{8,16,32,64} in favour of std::int{8,16,32,64}_t
    • Deprecate YARP_FLOAT{32,64} in favour of yarp::conf::float{32,64}_t
    • Deprecate YARP_INT64_FMT in favour of PRId64
    • Deprecate YARP_CONF_SSIZE_T in favour of yarp::conf::ssize_t
    • Add the following methods:
      • yarp::os::Bottle::addInt{8,16,32,64}()
      • yarp::os::Bottle::addFloat{32,64}()
      • yarp::os::Value::{is,as,make}Int{8,16,32,64}()
      • yarp::os::Value::{is,as,make}Float{32,64}()
      • yarp::os::ConnectionWriter::appendInt{8,16,32,64}()
      • yarp::os::ConnectionWriter::appendFloat{32,64}()
      • yarp::os::ConnectionReader::expectInt{8,16,32,64}()
      • yarp::os::ConnectionReader::expectFloat{32,64}()
      • BOTTLE_TAG_INT{8,16,32,64} (BOTTLE_TAG_INT32 = BOTTLE_TAG_INT)
      • BOTTLE_TAG_FLOAT{32,64} (BOTTLE_TAG_FLOAT64 = BOTTLE_TAG_DOUBLE)
    • The following methods are not deprecated due to the large codebase where they are used, but their usage in new code is discouraged, and it is forbidden inside YARP. Anyway, all these methods are now calling the corresponding Int32 and Float64 version, but are not architecture safe, since they still accept int and double.
      • yarp::os::Bottle::addInt()
      • yarp::os::Bottle::addDouble()
      • yarp::os::Value::isInt()
      • yarp::os::Value::isDouble()
      • yarp::os::Value::asInt()
      • yarp::os::Value::asDouble()
      • yarp::os::Value::makeInt()
      • yarp::os::Value::makeDouble()
      • yarp::os::ConnectionWriter::appendInt()
      • yarp::os::ConnectionWriter::appendDouble()
      • yarp::os::ConnectionReader::expectInt()
      • yarp::os::ConnectionReader::expectDouble()
      • BOTTLE_TAG_INT
      • BOTTLE_TAG_DOUBLE
    • Value constructors are now explicit.
    • Thread setOptions() and setDefaultStackSize() are now deprecated and no longer doing anything.
    • The YARP_STACK_SIZE environment variable is no longer used.
    • Portable::getType() became Portable::getType() const(#1617).
    • PortWriter::getWriteType() became PortWriter::getWriteType() const(#1621).
    • PortReader::getReadType() became PortReader::getReadType() const(#1616).
    • Companion has been moved to a dedicated library (#1509). As consequences:
      • Following functions has been moved from Companion to NetworkBase: disconnectInput, poll, sendMessage, wait (wait() has been splitted into two new functions waitConnection() and waitPort().
      • Companion::exists() has been removed unifying its code with NetworkBase::exists().
      • readString() function has been deprecated in NetworkBase.
    • RateThread has been deprecated in favour of the new class PeriodicThread. Note that RateThread used the period in msec(int), PeriodicThread requires the period in sec(double), so remember to consider a x1000 factor when migrate the code.
    • Several methods in public interfaces have a slightly different signature (see #1738 for details).
    • It is now possible to write a const Portable on a Port.
    • const Bytes and const ManagedBytes can no longer return non-const pointers to the underlying data.

    YARP_dev

    • The serial device is no longer a plugin, but it is automatically built with YARP_dev.
    • The following devices are no longer built with YARP_dev and are now plugins:
      • ServerSoundGrabber
      • BatteryClient
      • BatteryWrapper
      • FrameTransformClient
      • FrameTransformServer
      • Localization2DClient
      • Map2DClient
      • Map2DServer
      • Navigation2DClient
      • Rangefinder2DClient
      • Rangefinder2DWrapper
    • The following headers were removed:
      • /yarp/dev/DeviceGroup.h
      • /yarp/dev/DevicePipe.h
      • /yarp/dev/IKinectDeviceDriver.h
      • /yarp/dev/IOpenNI2DeviceDriver.h
      • /yarp/dev/RemoteFrameGrabber.h
      • /yarp/dev/ServerFrameGrabber.h
      • /yarp/dev/ServerSerial.h
      • /yarp/dev/ServerSoundGrabber.h
      • /yarp/dev/TestMotor.h
      • /yarp/dev/RemoteFrameGrabberDC1394.h
    • A class of interfaces to wrap multiple analog sensors is now available in:
      • /yarp/dev/MultipleAnalogSensorsInterfaces.h
    • The devices multipleanalogsensorsserver, multipleanalogsensorsclient and multipleanalogsensorsremapper are available for exposing and accessing the multiple analog sensors over a network, and for combining multiple devices in a single device (remapper).
    • Major changes to IPidControlImpl.cpp to allow conversion of PID gains from metric to machine units.
    • Major changes to TorqueControlImpl to allow conversion of bemf, ktau parameters from metric to machine units.
    • Major changes to ControlBoardHelper classes, implementation is now contained in a separate .cpp file. Removed inline functions.
    • Added file PidEnums.h
    • Added missing method setNominalCurrentRaw() to IAmplifierControl interface.
    • Removed all control board interfaces methods e.g. setTorquePid(), setPositionMode() etc, marked as deprecated since 2.3.70
    • In ControlBoardWrapper functions for all joints invoke the equivalent function for all joints of motion control device. In the previous versions, that function call the equivalent function single-joint in a for-cicle, so the function for all joints in motion control devices have never been called. So please, check the implementation of function for all joints in your motion control device because now they will be invoked for the fisrt time.
    • The following classes have been deprecated:
      • ICalibrateControl2 in favour of ICalibrateControl.
      • ICalibrateControl2Raw in favour of ICalibrateControlRaw.
      • IFrameGrabberControl2 in favour of IFrameGrabberControl.
      • FrameGrabberControl2Impl in favour of FrameGrabberControlImpl
      • IControlLimits2 in favour of IControlLimits.
      • IControlLimits2Raw in favour of IControlLimitsRaw.
      • ImplementControlLimits2 in favour of ImplementControlLimits.
      • IControlMode2 in favour of IControlMode.
      • IControlMode2Raw in favour of IControlModeRaw.
      • ImplementControlMode2 in favour of ImplementControlMode.
      • IPositionControl2Raw in favour of IPositionControlRaw.
      • IPositionControl2 in favour of IPositionControl.
      • ImplementPositionControl2 in favour of ImplementPositionControl.
      • IVelocityControl2Raw in favour of IVelocityControlRaw.
      • IVelocityControl2 in favour of IVelocityControl.
      • ImplementVelocityControl2 in favour of ImplementVelocityControl.
    • IPositionDirectRaw::setPositionsRaw(const int, const int*, double*) became IPositionDirectRaw::setPositionsRaw(const int, const int*, const double*).
    • IPositionDirect::setPositions(const int, const int*, double*) became IPositionDirect::setPositions(const int, const int*, const double*)(#1351).
    • The file yarp/dev/ControlBoardInterfacesImpl.inl was renamed yarp/dev/ControlBoardInterfacesImpl-inl.h
    • Several methods in public interfaces have a slightly different signature (see #1738 for details).

    YARP_sig

    • The file yarp/sig/IplImage.h is deprecated, use opencv headers instead.
    • Added the yarp::sig::PointCloud class. See the documentation for details.
    • if libjpeg is found, namespace yarp::sig::file implements a write method to save jpeg images.

    YARP_manager

    • The following headers were removed:
      • /yarp/manager/ymm-dir.h

    libyarpcxx

    • The libyarpcxx was removed.

    YARP_math

    • added new utility methods to Quaternion class.
    • method toRotationMatrix() has been renamed to toRotationMatrix4x4() to avoid confusion with method toRotationMatrix3x3().
    • operators for yarp::math::<class>es have been moved from the yarp::math to the global namespace.
    • libYARP_math is now enabled by default if Eigen3 is found.

    YARP_companion

    • new library created to isolate the old yarp::os::Companion.

    Tools

    yarpidl_thrift

    • Classes generated by yarpidl_thrift now transfer 8/16 bit integers using 8/16 bits instead of 32. This makes it incompatible with YARP 2.

    Devices

    • The following devices are no longer available in YARP, they will be available in the yarp-deprecated-devices repository:
      • cuda
      • nvidia
      • stage
      • vfw
      • wxsdl
      • jrkerr
      • urbtc
      • kinect
      • openni2
      • PumaCalibrator
      • meiMotionControl
      • microphone
      • dimax_u2c

    New Features

    Build System

    • It is possible to have coloured output when running CMake, by setting the CLICOLOR_FORCE=1 environment variable. This is not enabled by default because it is not GUI friendly.

    CMake Modules

    YarpPlugin

    • Added OPTION, DEFAULT and DOC options to yarp_begin_plugin_library. If the option is disabled, all plugins in the bundle are automatically disabled.
    • Removed VERBOSE and YarpPlugin_VERBOSE options to yarp_prepare_plugin

    Libraries

    • New auto-generated interface libraries for ros messages:
      • YARP_rosmsg_std_msgs
      • YARP_rosmsg_actionlib_msgs
      • YARP_rosmsg_diagnostic_msgs
      • YARP_rosmsg_geometry_msgs
      • YARP_rosmsg_nav_msgs
      • YARP_rosmsg_sensor_msgs
      • YARP_rosmsg_shape_msgs
      • YARP_rosmsg_stereo_msgs
      • YARP_rosmsg_trajectory_msgs
      • YARP_rosmsg_visualization_msgs
      • YARP_rosmsg_tf
      • YARP_rosmsg_tf2_msgs
      • YARP_rosmsg (includes all the other rosmsg libraries)

    YARP_OS

    • yarp::os::Mutex and yarp::os::RecursiveMutex now implement the C++11 Mutex concept.
    • Added a Timer class to execute a static or member function in a separate thread after a period x, every y milliseconds, for z times or w seconds.
    • Improved performance of tcp and fast_tcp carriers. TCP_NODELAY and TCP_CORK has been added in the SocketTwoWayStream::open(), in SocketTwoWayStream::flush is disabled and then re-enabled.
    • Added ResourceFinder::setDefault() overloads for int32_t and float64_t.

    YARP_sig

    • yarp::sig::file::[read|write](ImageOf<PixelFloat>&) services refactored to store data in binary formats.

    Carriers

    • mjpeg carrier is now compatible also with mono images.

    Tools

    yarpidl_thrift

    • Ported to thrift 0.11.0.

    yarpdatadumper

    • Added option --type image_jpg to save frames as jpeg images.

    yarpidl_rosmsg

    • Fixed verbose output.
    • Added new --no-cache argument.
    • Added new --no-index argument.
    • Fixed generation when message files are in the msg folder.
    • Added new --no-recurse argument. This option can be enabled when using yarp_idl_to_dir and yarp_add_idl, using the NO_RECURSE argument.
    • Classes are now in the yarp::rosmsg namespace.
    • Files are now in the yarp/rosmsg subfolder.
    • _indexALL.txt files are generated only for the requested types.
    • Old style files are still generated if yarpidl_rosmsg is not built with YARP_NO_DEPRECATED enabled, but they are considered deprecated.
    • Only required included files are now included.
    • Updated YarpIDL to support the new file names in yarp_add_idl.

    Devices

    ControlBoardWrapper

    • Added error code in attaching subdevices.
    • Added realsense2 device.

    Bindings

    IMotorEncoders interface bindings

    • IMotorEncoders interface methods can be used to directly monitor the motor shaft position and speed or even to control the motor positions individually when estimating coupled motors friction parameters.
    • Added bindings for the interface IMotorEncoders. The change extends the yarp::dev::PolyDriver and the yarp::dev::IMotorEncoders classes.

    Bug Fixes

    Libraries

    YARP_OS

    • Fixed race condition in yarp::os::Nodes.
    • An Int64 value no longer returns true when isInt() is called.

    GUIs

    • Made yarpdataplayer able to deal with ImageOf<PixelFloat> also with OpenCV.
    • Fixed yarpdataplayer image overlapping.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v2.3.72..v3.0.0):

       490	Daniele E. Domenichelli <[email protected]>
       242	Nicolò Genesio <[email protected]>
        28	Marco Randazzo <[email protected]>
        14	Juan G. Victores <[email protected]>
        13	Silvio Traversaro <[email protected]>
        12	Alberto Cardellino <[email protected]>
        12	Valentina Gaggero <[email protected]>
        10	Andrea Ruzzenenti <[email protected]>
         8	Damiano Enerli <[email protected]>
         8	Ugo Pattacini <[email protected]>
         6	Nuno Guedelha <[email protected]>
         4	Bartek Łukawski <[email protected]>
         4	Lorenzo Rapetti <[email protected]>
         4	Matteo Brunettini <[email protected]>
         2	Claudio Fantacci <[email protected]>
         2	Prashanth Ramadoss <[email protected]>
         2	Yeshasvi Tirupachuri <[email protected]>
         1	Bertrand Higy <[email protected]>
         1	Vadim Tikhanoff <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v2.3.72.1(Jun 11, 2018)

    YARP 2.3.72.1 (2018-06-11) Release Notes

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

    Bug Fixes

    Build System

    • Fixed build with CMake < 3.4

    CMake Modules

    • Removed IMPORTED_GLOBAL property from YarpOSXUtilities.cmake.

    Libraries

    YARP_sig

    • Fixed bug in yarp::sig::Sound::operator+=

    YARP_dev

    • ControlBoardWrapper now correctly passes on any monitoring to wrapped subdevices.
    • Subdevices wrapped by ControlBoardWrapper are now identified by their actual name by the monitor object, that is, their name will be displayed on the command line if yarpdev was called with --verbose. Previously, it used a generic "subdevice" identifier.
    • Added missing IFrameGrabberControl2 to RGBDSensorWrapper.
    • Fixed RGBDSensorWrapper compatibilty with frameGrabberGui2.
    • Fixed joint remapping in method getRefVelocity().
    • Fix VOCAB_CURRENT_REF_GROUP message parser in ControlBoardWrapper (#1734)

    YARP_serversql

    • Added check if rossrv, tcpros and xmlrpc are installed when yarpserver is launched with --ros option. (#722)

    YARP_OS

    • Added timeout parameter in TcpConnector::connect() to unify behaviour with the ACE_SOCK_Connector.

    GUIs

    yarpscope

    • Fixed bottle handling.

    yarpmanager

    • Added checkNetwork before contacting the nameserver.(#1536)
    • Added the ping on yarprun nodes.
    • Fixed mismatch of port connections when not ordered by ID.(#964)
    • Fixed mismatch of resources when not ordered by ID

    yarpmotorgui

    • Fixed compilation on macOS

    yarplogger

    • Fixed compilation on macOS

    Devices

    ControlBoardRemapper

    • Fixed getEncoderAccelerations() method.

    depthCamera

    • Fixed find OpenNI2 in CMakelists.txt.

    AnalogWrapper

    • Fixed issue preventing publication of FT sensor data to ROS.

    Bindings

    • Fixed out of source builds.
    • Added SWIG_PREPROCESSOR_SHOULD_SKIP_THIS to avoid the SWIG preprocessor from parsing VOCAB. Introduced SWIG-compliant working VOCAB definitions in yarp.i, with required checks on target language and SWIG version.
    • Removed related hacks required for compilation from YARP internals.
    • Added test_vocab.lua to catch regressions on VOCAB in the future.
    • Renamed test_string.lua to more representative test_port.lua, enabled it to run without the yarpserver, and integrate it in the test infrastructure.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v2.3.72..v2.3.72.1):

        55	Daniele E. Domenichelli <[email protected]>
        21	Nicolò Genesio <[email protected]>
        14	Juan G. Victores <[email protected]>
         6	Alberto Cardellino <[email protected]>
         5	Silvio Traversaro <[email protected]>
         3	Damiano Enerli <[email protected]>
         3	Ugo Pattacini <[email protected]>
         2	Bartek Łukawski <[email protected]>
         2	Claudio Fantacci <[email protected]>
         2	Marco Randazzo <[email protected]>
         2	Matteo Brunettini <[email protected]>
         2	Nuno Guedelha <[email protected]>
         1	Andrea Ruzzenenti <[email protected]>
         1	Lorenzo Rapetti <[email protected]>
         1	Prashanth Ramadoss <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
  • v2.3.72(Feb 12, 2018)

    YARP 2.3.72 (2018-02-12) Release Notes

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

    Important Changes

    • All the functionalities deprecated in YARP 2.3.65 and previous releases were removed.
    • C++11 is required also for using YARP, not just for compiling.
    • Optional dependency on YCM now requires version 0.6.0 or later.
    • Optional dependency on RTF now requires version 1.4.0 or later.
    • Dropped YARP1 support.
    • Changed how JAVA bindings are generated
    • yarp::sig::image::getIplImage() now can return a null pointer (instead of teminating with an assert) for not valid Ipl image formats
    • yarp::sig::image::setPixelCode() now set the pixelSize accordingly (which should not be set). Since yarp::sig::image::setPixelSize() also sets an arbitrary pixel code equal to negative itself (setPixelSize(3) will set the pixelCode to -3), it should be use only for image with custom formats not covered by a yarp pixelCode.

    Libraries

    YARP_OS

    • Clock refactoring: clock type can be initialized in the yarp::os::Network constructor or in the Network::init() function. This will take precedence over the environment variable. yarp::os::SystemRateThread class created as RateThread clone but runs using system clock only, independently from other settings. Any call to yarp::os::Time::now() or delay() before the object yarp::os::Network is initialized will abort the program in order to avoid undefined behaviour of uninitialized Time object
    • Contactable::open(void) was deprecated. Use open("...") instead.
    • The following methods in yarp::os::RateThread are now protected instead of public:
      • virtual bool threadInit();
      • virtual void threadRelease();
      • virtual void run() = 0;
      • virtual void beforeStart();
      • virtual void afterStart(bool success);
    • The following methods in yarp::os::PortReaderBufferBase are now deprecated:
      • void setAllowReuse(bool flag = true)
      • void release(yarp::os::PortReader* completed)
    • The methods yarp::os::Bottle::operator==() and yarp::os::Bottle::operator!=() are now const.

    New Features

    Libraries

    YARP_OS

    • Added the property yarprun to ports opened through yarprun --server.
    • Added the property nameserver for the port opened through yarpserver.
    • The method yarp::os::Network::runNameServer() was removed.
    • Added possibility to enable and disable macOS AppNap (yarp/os/Os.h).
    • Added a few missing ConstString::assign overloads.
    • Added method yarp::os::carrier::createFace(), that returns the needed face of the carrier. This method is used in carriers::listen() and carriers::connect() in order to open new connection using the correct face.
    • The YARP_WRAP_STL_STRING option value is now by default OFF on non-MSVC platforms. This means that yarp::os::ConstString is now by default a typedef to std::string on these platforms.
    • Improve how parameters are given to the chosen carrier for a connection: all parameters given both on registration and on connect command are collected and made available in the connection initialization step.
    • Added support for register a contact with an associated carrier different from tcp. If the chosen carrier provides a custom yarp::os::Face implementation this becomes the handler of incoming connections. In any case the carrier becomes the default for future connections.

    YARP_dev

    • Added a new interface for visual servoing: IVisualServoing.h.
    • yarp::dev::CanBuffer now supports a const version of operator[].
    • Methods of yarp::dev::IVirtualAnalogSensor renamed in order to avoid conflicts with similar methods of yarp::dev::IAnalogSensor.
    • FrameGrabber: add a way to get cropped image via RPC. Streaming of full images can be disabled.

    YARP_serversql

    • Added a new Server class for using yarp server inside an applications. Both the yarp server application and the yarpserver rtf fixture use it.

    Carriers

    • New H264 carrier. It let you to read and decoding a h264 stream published by Gstreamer server.

    Devices

    ovrheadset

    • Added hud element setted by the configuration file and connected diretly to image ports

    Map2DServer

    • Several RPC commands were added and removed.
    • Added options ROS::enable_ros_subscriber and ROS::enable_ros_publisher.

    laserHokuyo

    • Serial port configuration is now searched in the SERIAL_PORT_CONFIGURATION configuration group.

    GUIs

    • New yarpviz gui imported from https://github.com/robotology/yarpviz

    yarpmanager

    • Imported the iCubCluster GUI from iCub (https://github.com/robotology/icub-main/tree/master/app/iCubCluster). It is available only on Unix.
    • Added file system watcher to reload the applications when the xml has been modified externally. The automatic reload can be disabled through a dedicated checkbox in "File" menu.
    • Added yarp name list and yarp clean actions after importing profiling capabilities of yarpviz.
    • Added modifiers column in the connection list for portmonitors.
    • Added the possibility to switch broker run-time, from LocalBroker to YarpBroker and viceversa.

    RTF Plugins

    • yarpserver: created a RTF Fixture manager for running yarpserver as a fixture.

    Bindings

    Java

    • Completely refactored JAVA Bindings (#1372) Java sources and pre-compiled classes are no more generated during the build process (PREPARE_CLASS_FILES option has been removed too). Two .jar files are instead generated and installed:
      • <install_dir>/share/yarp/java/yarp.jar: contains all the YARP Java classes.
      • <install_dir>/share/yarp/java/yarp_matlab_java.jar: contains Java utilities for MATLAB. The JNI libraries to be loaded by the JAVA application is now called libyarp_java.jnilib and it is installed in <install_dir>/lib/jni/libyarp_java.jnilib.
    • Changed package of JAVA MATLAB Utilities: from global package to yarp.matlab

    Bug Fixes

    Libraries

    YARP_OS

    • Added unprepare method to Publisher. See BufferedPort for documentation on how to use prepare and unprepare (#1425).
    • Optimized Stamp::read() and Stamp::write() for textMode.

    YARP_sig

    • Fixed pixelSize information loss in yarp::sig::FlexImage:::read().

    GUIs

    yarpmanager

    • Fixed the check of the status of the Computers, now it verifies that the corresponding port has been opened through yarp run. Be aware that after these changes yarpmanager will not detect machines with yarp 2.3.70 and earlier.
    • Added scan among the available carriers when you click connect and disconnect, if the specified carrier is not available a proper error message will be written on log.
    • the column carrier in the connection list has been substituted with a combobox with the available carriers.

    yarpdataplayer

    • Fixed yarpdataplayer going to idle because of AppNap on macOS (#1153)

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v2.3.70..v2.3.72):

       192	Daniele E. Domenichelli <[email protected]>
       169	Nicolò Genesio <[email protected]>
       166	Damiano Enerli <[email protected]>
        64	Alberto Cardellino <[email protected]>
        49	Andrea Ruzzenenti <[email protected]>
        35	Marco Randazzo <[email protected]>
        25	Francesco Romano <[email protected]>
        22	Ali Paikan <[email protected]>
        14	Claudio Fantacci <[email protected]>
        13	Silvio Traversaro <[email protected]>
        12	Valentina Gaggero <[email protected]>
         7	YARP Developers <[email protected]>
         5	Bartek Łukawski <[email protected]>
         5	Nuno Guedelha <[email protected]>
         4	Ugo Pattacini <[email protected]>
         3	David-Estevez <[email protected]>
         3	Lorenzo Natale <[email protected]>
         2	Juan G Victores <[email protected]>
         2	Matteo Brunettini <[email protected]>
         1	Elena Rampone <[email protected]>
         1	Giovanni Saponaro <[email protected]>
         1	Marco Monforte <[email protected]>
         1	Massimiliano Iacono <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-2.3.72-1.artful_amd64.deb(5.20 MB)
    yarp-2.3.72-1.artful_i386.deb(5.47 MB)
    yarp-2.3.72-1.bionic_amd64.deb(5.20 MB)
    yarp-2.3.72-1.bionic_i386.deb(5.47 MB)
    yarp-2.3.72-1.jessie_amd64.deb(5.26 MB)
    yarp-2.3.72-1.jessie_i386.deb(5.26 MB)
    yarp-2.3.72-1.xenial_amd64.deb(5.17 MB)
    yarp-2.3.72-1.xenial_i386.deb(5.26 MB)
    yarp_2.3.72_v12_x86_1.exe(472.46 MB)
    yarp_2.3.72_v12_x86_amd64_1.exe(472.97 MB)
    yarp_2.3.72_v14_x86_1.exe(471.21 MB)
    yarp_2.3.72_v14_x86_amd64_1.exe(471.66 MB)
  • v2.3.70.2(Dec 11, 2017)

    YARP 2.3.70.2 (2017-12-11) Release Notes

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

    Important Changes

    Libraries

    YARP_OS

    • Unification of code in DGramTwoWayStream for the allocation of write and read buffers (#899).
    • Added extra checks in the port names in Network:metaConnect(), with dedicated error messages.

    YARP_math

    • The RandScalar methods are now using C++11 mersenne_twister_engine instead of a custom engine.

    Carriers

    • portmonitor, rossrv, tcpros, and xmlrpc carriers can now be enabled when SKIP_ACE is ON.

    Build System

    • Added YARP_DISABLE_OSX_BUNDLES option to disable macOS bundles.

    • Added YARP_DISABLE_FAILING_TESTS option to disable tests known for randomly failing due to race conditions.

    Bug Fixes

    • Fixed several warnings reported by Clang static analyzer.
    • Fixed several defects reported by Coverity.

    Libraries

    YARP_OS

    • Fixed truncation of double in Property::fromString().
    • Fixed append to wrong string in BufferedConnectionWriter.h.
    • Fixed yarp::os::ConstString::getline for MSVC (#1357).
    • Reverted flush() added in YARP v2.3.71.1 at the end of AbstractCarrier::writeYarpInt().

    YARP_dev

    • Fixed RPC calls when connecting to right image port (split mode on)

    Tools

    • Added the fallback port in yarpserver also if yarp is compiled without ACE, since we support mcast without ACE since v2.3.70.
    • Fixed yarpdev --list for Windows.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v2.3.70.1..v2.3.70.2):

       144  Damiano Enerli <[email protected]>
        60  Nicolò Genesio <[email protected]>
        39  Daniele E. Domenichelli <[email protected]>
         9  Alberto Cardellino <[email protected]>
         3  Silvio Traversaro <[email protected]>
         1  Marco Monforte <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-2.3.70.2.sierra.bottle.tar.gz(8.38 MB)
  • v2.3.70.1(Sep 21, 2017)

    YARP 2.3.70.1 (2017-09-21) Release Notes

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

    Bug Fixes

    CMake Modules

    • Full paths were never exported by yarp_configure_external_installation command. This has been fixed.

    Libraries

    YARP_OS

    • Fixed Route::swapNames() segfault in Windows and MacOS.
    • Fixed mcast without ACE on macOS
    • Fixed memory leak for inactive carriers
    • Fixed mcast, the connection now continue working also if you disconnect the first mcast connection.
    • Removed the inheritance from SocketTwoWayStream in LocalCarrierStream.
    • Fixed setConnectionQos() for local carrier.
    • Added flush() at the end of AbstractCarrier::writeYarpInt() to finalize the write.
    • Fixed memory leak in port authentication.
    • Fixed Buffer not null terminated in impl/SplitString.
    • Added the check for spaces in the port names in Network:metaConnect().

    YARP_dev

    • IPWMControl and ICurrentControl interfaces are now correctly wrapped by the the ControlBoardRemapper.

    YARP_manager

    • Removed using namespace directive from headers.

    Devices

    rplidar2

    • Fixed build on MSVC

    GUIs

    yarpview

    • Fixed coordinates of clicked point when yarpview window is resized.
    • Added Unix signal handler(SIGQUIT, SIGINT, SIGTERM, SIGHUP).

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v2.3.70..v2.3.70.1):

        30  Daniele E. Domenichelli <[email protected]>
        21  Nicolò Genesio <[email protected]>
         3  Marco Randazzo <[email protected]>
         2  Bartek Łukawski <[email protected]>
         1  Andrea Ruzzenenti <[email protected]>
         1  Matteo Brunettini <[email protected]>
         1  Nuno Guedelha <[email protected]>
         1  Silvio Traversaro <[email protected]>
         1  Ugo Pattacini <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-2.3.70.1.sierra.bottle.tar.gz(8.39 MB)
  • v2.3.70(Jun 22, 2017)

    YARP 2.3.70 Release Notes

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

    Important Changes

    System Configuration

    • The YARP_CONF environment variable has been deprecated for a long time (since April 2013) and it is no longer used. Since there was not a proper warning, the warning is printed now at runtime when the variable is set. See ResourceFinder::getConfigHome() documentation for informations about paths used by YARP to detect the configuration files. If you still need to use the YARP_CONF for some reason, you can use the YARP_CONFIG_HOME environment variable instead.

    Build System

    • A compiler supporting C++11 is now required.
    • CMake 3.0 or newer is now required.
    • Optional dependency on YCM now requires version 0.4.0 (devel) or later.
    • Robot Testing Framework (RTF) 1.2.0 is now an optional dependency.

    CMake Modules

    • YarpPlugin
      • The following commands, deprecated since YARP 2.3.21, were removed:
        • BEGIN_PLUGIN_LIBRARY
        • ADD_PLUGIN_NORMALIZED
        • PREPARE_PLUGIN
        • PREPARE_DEVICE
        • PREPARE_CARRIER
        • END_PLUGIN_LIBRARY
        • ADD_PLUGIN_LIBRARY_EXECUTABLE
        • YARP_ADD_PLUGIN_LIBRARY_EXECUTABLE
    • The YARP_HAS_NAME_LIB variable has been removed since YARP_name is always available, and is considered a private library.
    • All CMake targets now export the include directories required to build using that library. Using include_directories(${YARP_INCLUDE_DIRS}) should no longer be required.
    • YarpPlugin.cmake and YarpInstallationHelpers.cmake are now automatically included from YARPConfig.cmake, therefore all commands defined in these files are available after find_package(YARP). Including them explicitly is now considered deprecated. For the same reason, adding YARP_MODULE_PATH to the CMAKE_MODULE_PATH variable is considered deprecated. If you need some modules not available in CMake, please consider using YCM.

    Libraries

    • A lot of refactoring was performed in order to improve c++11 usage and to simplify porting to other platforms without ACE

    YARP_conf

    • Added the new YARP_conf header only library target. Formerly these files existed but they did not belong to any target.

    YARP_OS

    • The i command is now enabled only in Debug and DebugFull builds.
    • The following commands have been marked as deprecated and will be removed in future version of YARP:
      • yarp::os::exit()
      • yarp::os::abort()
      • yarp::os::signal()
      • yarp::os::ResourceFinder::setContext(const char* contextName)

    YARP_dev

    • Opening a device using a configuration of type (device (device (foo bar))) is now deprecated, use (device (foo bar)) instead.
    • Removed some old interfaces methods, deprecated since yarp 2.3.65. i.e: setPositionDirectMode(), setPositionMode(), setVelocityMode(), setOpenLoopMode(),setTorqueMode()`, etc.
    • Removed Interface IOpenLoopControl, deprecated since yarp 2.3.65.
    • Removed deprecated device ClientControlBoard and related tests.
    • Removed deprecated device ServerControlBoard and related tests.
    • Major changes to iPIDControl methods. Now they aren't bound anymore to Position Control. (#499) They accept a new parameter PidControlTypeEnum which defines the PID id on which the method will operate. For example setPid(const PidControlTypeEnum& pidtype, int j, const Pid &pid). Currently, pidtype can be one of the following types:
      • VOCAB_PIDTYPE_POSITION,
      • VOCAB_PIDTYPE_VELOCITY,
      • VOCAB_PIDTYPE_TORQUE,
      • VOCAB_PIDTYPE_CURRENT.
    • All pid-related methods from interfaces different from iPidControl have been deprecated. To provide backward-compatibility, old methods automatically call the new methods (e.g. setTorquePid(int j, const Pid &pid) calls setPid(VOCAB_PIDTYPE_TORQUE,int j,const PID &pid))
    • The following methods have been deprecated, use IControlMode2::setControlMode(int, VOCAB_CM_XXX) instead:
      • IControlMode::setPositionMode(int)
      • IControlMode::setVelocityMode(int)
      • IControlMode::setTorqueMode(int)
      • IControlMode::setImpedancePositionMode(int)
      • IControlMode::setImpedanceVelocityMode(int)
      • ...plus their IControlModeRaw counterparts

    YARP_math

    • YARP_math can no longer be built using GSL. The CREATE_LIB_MATH_USING_GSL option was removed. Only Eigen is supported. FindGSL.cmake is no longer installed.

    New Features

    CMake Modules

    • YarpPlugin
      • Add QUIET/VERBOSE arguments and YarpPlugin_QUIET/VERBOSE variables.
    • YarpInstallationHelpers
      • A new command yarp_configure_plugins_installation has been introduced to simplify installation of YARP plugins when yarp_configure_external_installation is not invoked.

    Libraries

    • New library libYARP_rtf to simplify the creation of unit tests using the Robot Testing Framework (RTF) and YARP. This is a slightly modified version of the RTF_YARP_utilities library in RTF 1.0. It can be enabled with the option YARP_COMPILE_RTF_ADDONS.

    YARP_OS

    • The following methods were added to the yarp::os namespace:
      • char* yarp::os::getcwd(char *buf, size_t size)
      • int yarp::os::fork(void)
    • The following methods were added to the yarp::os::Publisher class:
      • virtual void onRead(T &datum)
      • void useCallback(TypedReaderCallback< T > &callback)
      • void useCallback()
      • void disableCallback()
    • The following methods were added to the yarp::os::Subscriber class:
      • void setStrict(bool strict = true)
    • The following overload method is added to the yarp::os::ResourceFinder class:
      • bool setDefaultContext(const yarp::os::ConstString& contextName)
    • Added clear() method to PID class.
    • The class yarp::os::Route was refactored:
      • The following methods were deprecated:
        • addFromName()
        • addToName()
        • addCarrierName()
        • addToContact()
      • The following methods were added:
        • setFromName()
        • setToName()
        • setCarrierName()
        • setToContact()
        • swapNames()

    YARP_dev

    • Added getRgbResolution and getRgbSupportedConfigurations to the IRgbVisualParams interface.
    • Added the new yarp::dev::IJoypadController interface and the new JoypadControlClient and JoypadControlServer devices.
    • Added rpc port to dialogue with FrameTransformClient. The implemented commands are:
      • get_transform: print the transform from src to dst
      • list_frames: print all the available refence frames
      • list_ports: print all the opened ports for tranform broadcasting
      • publish_transform: opens a port to publish transform from src to dst
      • unpublish_transform: closes a previously opened port to publish a transform
      • unpublish_all: closes a all previously opened ports to publish a transform
    • iPIDControl class pulled out from ControlBoardInterfaces yarpdev headers and put in separated files. Reimplemented without templates.
    • Gaze control: added sync equivalent to lookAt-like methods in order to wait for reply.
    • Added iRobotDescription interface.
    • Added two new motion control interfaces: IPWMControl, ICurrentControl and related helpers for units conversions.
    • Added IMap2D interface.
    • Added yarp::dev::MapGrid2D data type.
    • Added IHapticDevice interface.

    YARP_math

    • Added methods:
      • yarp::sig::Vector dcm2ypr(const yarp::sig::Matrix&)
      • yarp::sig::Matrix ypr2dcm(const yarp::sig::Vector&)
    • Added template class Vec2d<>. can be only instantiated as int or double.
    • Added operator*(quaternion, quaternion) overload for quaternion multiplication
    • Added normalize method in the quaternion class

    Tools

    yarpidl_rosmsg

    • All generated classes now implement the clear() method.

    GUIs

    yarplaserscannergui

    • Accept --help argument.

    yarpview

    • Added --autosize and checkbox to force yarpview to resize whenever a frame of a different size is received.
    • Implemented dragvector function on yarpview. Left-click on the image and keep left button pressed: yarpview starts to draw a line. When the left button is released, the coordinates of the initial and the final point are sent to the 'out' yarp port.

    yarpmotorgui:

    • Create an instance of RobotDescriptionClient to automatically get the names of robot parts.
    • New button "idle all parts".
    • New button "execute script1/2".
    • yarpmotorgui now enforces the correct "go to home" behaviour:
      • home is asked to the robot, and, as a consequence, the "Home" button will apply the robot home position as specified by the Calibrator, see this comment in QA#108
      • added possibility to specified custom positions in the configuration file. These positions can be executed by newly introduced "Custom positions" submenus. Syntax is described in the yarpmotorgui documentation. #1160
    • Added CurrentPid tab in yarpmotorgui.
    • Added new control mode widgets to handle current and pwm control modes.

    yarpmanager

    • Handle also wait states upon shutting down the modules of an application (#1051).
    • Added local and environment variable parsing (#885, #1031).
    • Added --add_current_dir option.

    Carriers

    • New zfp portmonitor for compressing floating point arrays using the ZFP library (see http://computation.llnl.gov/projects/floating-point-compression).

    Devices

    • Added new RobotDescriptionServer device to store devices info.
    • Added new RobotDescriptionClient device. User module can ask a list of registered devices using the iRobotDescription interface.
    • Added new device Map2DServer to store navigation maps.
    • Added new device Map2DClient. User module can perform operations on the stored maps using the iMap2D interface.
    • Added new SDLJoypad device.
    • Added new rpLidar2 device.
    • Added new fakeDepthCamera device.
    • Added new device ServerGrabber to handle one or two camera devices in function of the configuration.

    AnalogWrapper

    • ROS param was changed from joint_names to jointNames like the controlBoardWrapper. The old name is deprecated.
    • Deprecated all the constructors except for the one without arguments.

    controlboardwrapper

    • Reduced message size of of the stateExt:o port of nearly 30%.

    TestFrameGrabber

    • The TestFrameGrabber was removed from libYARP_dev and it is now an optional plugin.

    ovrheadset

    • Ported to the latest Oculus SDK. Compatibility with the old SDK was dropped. Supporting both the old and the new SDK is really not worth the effort. Therefore, since Linux and macOS are not supported by the latest SDK, only Windows is currently supported. If you need support on Linux or macOS you can checkout commit a05fec65e7bc67cceba5c59f26881e98590fccf7 from git history.
    • A few options (--multisample, --no-overdrive, --no-hqdistortion, and --no-timewarp) and the relative toggles were removed, since they can no longer be enabled/disabled from the SDK .
    • It can now display YARP logo in the bottom-right corner (disable with --no-logo from command line or toggle with [T] while running). This is useful to ensure that the device is working while waiting for the connection.
    • It can now display a crosshairs at the center of the scene (disable with --no-crosshairs from command line or toggle with [C] while running).
    • It can now be connected to a battery and display the status as an overlay at the top-right corner (disable with --no-battery from command line or toggle with [B] while running)

    RemoteControlBoard

    • Dropped compatibility with ControlBoardWrapper2 devices that does not have the stateExt:o port. The state:o port in the wrapper is still available for encoder reading.
    • The protocol was changed and compatibility for devices using the old protocol was dropped.
    • added implementation of IPWMControl, ICurrentControl.
    • added control modes: VOCAB_CM_CURRENT, VOCAB_CM_PWM.
    • Added new values in the statExt : pwmDutycycle, current.
    • Removed deprecated value from statExt: PidOutput.

    ServerFrameGrabber

    • ServerFrameGrabber now implements the interface yarp::dev::IRgbVisualParams for parsing rgb camera parameters.

    TestFrameGrabber

    • Added new 'mode = size option to broadcast a simple video with variable frame size.
    • TestFrameGrabber now implements the interface yarp::dev::IRgbVisualParams for parsing rgb camera parameters.

    RTF Plugins

    • The yarpmanager RTF Fixture Managers was imported from robotology/robot-testing, and allows one to start a fixture using yarpmanager. It can be enabled with the option YARP_COMPILE_RTF_ADDONS.
    • The yarpplugin RTF Fixture Managers was imported from robotology/icub-tests (Originally YarpPluginFixture), and allows one to check if a yarp plugin is available. It can be enabled with the option YARP_COMPILE_RTF_ADDONS.

    Bindings

    • Add bindings for yarp/os/Log.h and yarp/os/LogStream.h. It allows the following:
    import yarp
    logger = yarp.Log()
    logger.debug('See how cool this is')
    

    Bug Fixes

    Libraries

    YARP_OS

    • Fixed mcast carrier without ACE.

    YARP_dev

    • Fixed FrameTransformClient::getTransform() (#1184)
    • Fixed an on-closure segfault in FrameTransformClient (if running without the FrameTransformServer)
    • Added timeout check for ROS timed transforms in FrameTransformClient. Beware: we are currently using yarp time, not ros timestamps

    Tools

    yarprobotinterface

    • Print a warning when when parenthesis are not balanced and added protection against syntax errors (#832).
    • Added option all to attach to all yarprobotinterface devices (used by RobotDescriptionServer).

    yarpidl_rosmsg

    • Fixed an issues when working with custom, nested ros messages.

    GUIs

    • Replaced QT_DEVICE_PIXEL_RATIO with Qt::AA_EnableHighDpiScaling when supported by the installed Qt5 version. (#837, #1122, #1038, #1267)

    yarpmotorgui

    • The number of parts is no longer hardcoded.
    • It is now possible to close the gui using CTRL+C.
    • Fixed issue preventing correct save operation of position sequences.

    yarpmanager

    • Sub-folders are now automatically loaded by default.
    • Opening single application multiple times is no longer allowed (#1007).

    Devices

    laserFromDepth

    • Added horizontal flip to align angle direction.
    • Added distortion to simulate RGBD devices distance calculation method.

    RGBDSensorWrapper

    • Fixed deadlock when closing device.
    • Fixed device failure not detected at startup.

    imuBosch_BNO055

    • Fixed the sharing of data between the run() and read() methods.

    Contributors

    This is a list of people that contributed to this release (generated from the git history using git shortlog -ens --no-merges v2.3.68..v2.3.70):

       344	Daniele E. Domenichelli <[email protected]>
       122	Nicolò Genesio <[email protected]>
        98	Marco Randazzo <[email protected]>
        74	Andrea Ruzzenenti <[email protected]>
        40	Alberto Cardellino <[email protected]>
        19	Silvio Traversaro <[email protected]>
        15	Ali Paikan <[email protected]>
        14	Francesco Romano <[email protected]>
        10	Bartek Łukawski <[email protected]>
         9	Claudio Fantacci <[email protected]>
         8	Matteo Brunettini <[email protected]>
         7	Ugo Pattacini <[email protected]>
         6	Diego Ferigo <[email protected]>
         5	Lorenzo Natale <[email protected]>
         5	Massimo Regoli <[email protected]>
         4	Andrea Ruzzenenti <Andrea Ruzzenenti>
         4	Juan G Victores <[email protected]>
         3	Aiko Dinale <[email protected]>
         3	Tobias Fischer <[email protected]>
         2	Andrea Ruzzenenti <andrea.ruzzenenti.iit.it>
         2	Bertrand Higy <[email protected]>
         2	Valentina Gaggero <[email protected]>
         1	Alessandro Scalzo <[email protected]>
         1	Giovanni Saponaro <[email protected]>
         1	Giulia Vezzani <[email protected]>
         1	Vítor Galvão <[email protected]>
         1	Zero King <[email protected]>
    
    Source code(tar.gz)
    Source code(zip)
    yarp-2.3.70-1.jessie_amd64.deb(5.55 MB)
    yarp-2.3.70-1.jessie_i386.deb(5.56 MB)
    yarp-2.3.70-1.stretch_amd64.deb(5.61 MB)
    yarp-2.3.70-1.stretch_i386.deb(5.79 MB)
    yarp-2.3.70-1.xenial_amd64.deb(5.48 MB)
    yarp-2.3.70-1.xenial_i386.deb(5.56 MB)
    yarp-2.3.70-1.yakkety_amd64.deb(5.59 MB)
    yarp-2.3.70-1.yakkety_i386.deb(5.87 MB)
    yarp-2.3.70-1.zesty_amd64.deb(5.64 MB)
    yarp-2.3.70-1.zesty_i386.deb(5.88 MB)
    yarp-2.3.70.el_capitan.bottle.tar.gz(8.35 MB)
    yarp-2.3.70.sierra.bottle.tar.gz(8.18 MB)
    yarp_2.3.70_v12_x86_1.exe(472.25 MB)
    yarp_2.3.70_v12_x86_amd64_1.exe(472.81 MB)
    yarp_2.3.70_v14_x86_1.exe(470.99 MB)
    yarp_2.3.70_v14_x86_amd64_1.exe(471.48 MB)
Owner
Robotology
Group software repositories of the iCub eco-system (but code developed is not necessarily iCub specific!).
Robotology
Yet another alarm (control) panel for Home Assistant.

HASS-YAAP Yet another alarm (control) panel for Home Assistant. Change alarm system mode (away, home, night, disarmed) Welcome people arriving by thei

Paul-Vincent Roll 48 Dec 4, 2021
Yet Another Ghidra Integration for IDA

Yagi Yet Another Ghidra Integration for IDA Overview Yagi intends to include the wonderful Ghidra decompiler into both IDA pro and IDA Free. ?? You ca

Airbus CERT 390 Dec 8, 2022
Yet another abstraction layer - a general purpose C++ library.

Yet Another Abstraction Layer What yaal is a cross platform, general purpose C++ library. This library provides unified, high level, C++ interfaces an

Marcin Konarski 14 Jul 27, 2022
Yet another Hi-C scaffolding tool

YaHS: yet another Hi-C scaffolding tool Overview YaHS is scaffolding tool using Hi-C data. It relies on a new algothrim for contig joining detection w

null 55 Dec 19, 2022
YACHT: Yet Another C++ Helper Template

YACHT: Yet Another C++ Helper Template A template for C++ projects. Welcome to your YACHT! Because why build a boat from scratch, when you can enjoy a

Dimitri Belopopsky 11 Apr 2, 2022
Yet another matrix client. Click packaging for locally running on Ubuntu Touch

Cinny Click Packaging Cinny is a Matrix client focusing primarily on simple, elegant and secure interface. License Cinny source package licensed under

Nitan Alexandru Marcel 6 Nov 15, 2022
WIP: ESP32 powered robot dog, quadruped robot. This is just code, hardware in the other repositories

Small Robot dog (quadruped) Hardware ESP32 IMU (not implemented) 12 servos TowerPro mg90d (hope it will work) Two 18650 Software Arduino IDE compatibl

Gleb Devyatkin 74 Dec 22, 2022
SomeSmile - a free, open source and not yet cross-platform

SomeSmile - a free, open source and not yet cross-platform Table Of Contents For What? Structure Start Usage Guide How To Build Screenshots End For Wh

SonicTheHedgehog 3 Aug 3, 2022
SMARTmBOT - a new, customizable, scalable, and fully opensource mobile robot platform

The goal of this repository is to introduce a new, customizable, scalable, and fully opensource mobile robot platform, called SMARTmBOT. This repository provides a guide, and all design files and source codes so that you can build your own SMARTmBOT. SMARTmBOT can be useful for studying the basics of robotics, especially mobile robotics. It can also be used to study advanced topics such as swarm robotics.

SMART Lab at Purdue University 39 Jan 2, 2023
A perfect blend of C, Java, and Python tailored for those who desire a simple yet powerful programming language.

Fastcode A perfect blend of C, Java, and Python tailored for those who desire a simple yet powerful programming language. FastCode is a procedural/str

null 28 Aug 19, 2022
RISC-V has a 128-bit ISA that is fairly developed, but not standardized fully yet.

128-bit RISC-V assembler RISC-V has a 128-bit ISA that is fairly developed, but not standardized fully yet. I am maintaining a RISC-V userspace emulat

Alf-André Walla 39 Nov 20, 2022
The pico can be used to program other devices. Raspberry pi made such an effort. However there is no board yet, that is open-source and can be used with OpenOCD as a general-purpose programmer

pico-probe-programmer The pico can be used to program other devices. Raspberry pi made such an effort. However there is no board yet, that is open-sou

martijn 22 Oct 15, 2022
Implementation of the (not yet written) std::experimental::rational proposal.

Rational Implementation of the (not yet written) std::experimental::rational proposal. Getting started Copy include/std/experimental/rational.hpp to y

Ali Can Demiralp 9 Nov 18, 2022
"the French term for a watch movement that is not completely assembled yet."

Chablon "the French term for a watch movement that is not completely assembled yet." Today it's a program to draw rectangles on the display of a PineT

Daniel Barlow 3 Jan 3, 2022
Mobile robot simulator

The Stage Simulator This is the Stage README file, containing an introduction, license and citation information. Stage is a 2(.5)D robotics standalone

Richard Vaughan 356 Jan 7, 2023
Zerobug is a 3D-printed micro-servo hexapod robot powered by a Raspberry Pi Zero and a STM32F103

ZeroBug - DIY Hexapod Robot Zerobug is a 3D-printed micro-servo hexapod robot powered by a Raspberry Pi Zero and a STM32F103. The Pi Zero is in charge

Max K 179 Dec 22, 2022
Smart Robot that avoids obstacles and finds a way to move

ObstacleAvoider Obstacle Avoider is an intelligent device which can automatically sense the obstacle in front of it and avoid them by turning itself.

IEEE VIT Student Chapter 14 Oct 2, 2022
A robot maze project for ELEC1601

ELEC1601 Robot-Maze Project Template by Chris. P taken from https://github.sydney.edu.au/cpol3526/ELEC1601-project-template Table of Contents Structur

null 1 Mar 3, 2022
Source Code and Embedded Design of Our Factory Robot at AUTCup 2015 Competitions

AUTCup 2015 @Factory Robot This repository contains the source code and embedded design of our @Factory robot at AUTCup 2015 competitions. The robot w

Meysam Parvizi 1 Oct 20, 2021