Git Product home page Git Product logo

fri's Introduction

fri

This folder adds CMake support to KUKA's Fast Robot Interface (FRI).

FRI Version Build Status
1.11 Build status
1.14 Build status
1.15 Build status
1.16 Build status
2.5 Build status
2.7 Build status

Build

To build, run

cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_FRI_APPS=ON
cmake --build build

Run the Apps

To run the example applications, run

./build/LBRJointSineOverlayApp

On the smartPAD, run the LBRJointSineOverlay application. You should see the robot execute a sine wave.

Contributing

Do you use a different FRI version?

  1. Fork this repository.
  2. Replace FRI-Client-SDK_Cpp.zip with your client SDK as extracted from KUKA Sunrise Workbench. Therefore (see images):
    • In the Software tab of StationSetup.cat, add Fast Robot Interface Extension.
    • Save via ctrl+s, click Save and apply.
    • Under FastRobotInterface_Client_Source, find FRI-Client-SDK_Cpp.zip.

  1. Open an issue and ask for a branch named fri-major.minor (e.g. fri-1.15).
  2. Open a pull request against this new branch.

License

Please note that we distribute the CMake support under Apache-2.0 license. Please note that third party libraries under FRI-Client-SDK_Cpp.zip are distributed under their respective license. See NOTICE.

fri's People

Contributors

mhubii avatar omidrezayof avatar bowangfrommars avatar fredrocs avatar liver121888 avatar petermitrano avatar

Stargazers

Vishal avatar BA7LYA avatar  avatar Antoine Hoarau avatar  avatar Ian Chuang avatar  avatar  avatar Tao Pang avatar Zhao Youjun avatar Nalin Das avatar

Watchers

James Cloos avatar Tom Vercauteren avatar Marc Modat avatar Chris Mower avatar Gilmar Barbosa avatar

fri's Issues

FRI creating connection to Localhost and not PC IP

Hey,

Thanks for the great work and step-by-step setup tutorial.
I think I'm missing something but I can't quite figure out what. When I run the application on the smart pad, FRI setups the connection with 127.0.0.1 and fails after a few seconds.

I've done the static IP on my pc and I've connected it to the KONI Eth port but that didn't seem to help.
Any ideas on how to get it to create the connection to my IP (172.31.1.148) as shown in the examples?
(I can ping the robot IP (172.31.1.147) on both Ethernet ports from my PC)

Thanks!

Clarify License for FRI and any other third party dependency

The repo advertises an MIT license:
https://github.com/KCL-BMEIS/fri/blob/fri-1.15/LICENSE

However, Kuka provides FRI under a custom license as listed in their docs:

The following license terms and conditions apply, unless a redistribution
agreement or other license is obtained by KUKA Roboter GmbH, Augsburg, Germany.

SCOPE

The software KUKA Sunrise.Connectivity FRI Client SDK is targeted to work in
conjunction with the KUKA Sunrise.Connectivity FastRobotInterface toolkit.
In the following, the term software refers to all material directly
belonging to the provided SDK Software development kit, particularly source
code, libraries, binaries, manuals and technical documentation.

COPYRIGHT

All Rights Reserved
Copyright (C) 2014-2019
KUKA Roboter GmbH
Augsburg, Germany

LICENSE

Redistribution and use of the software in source and binary forms, with or
without modification, are permitted provided that the following conditions are
met:
a) The software is used in conjunction with KUKA products only.
b) Redistributions of source code must retain the above copyright notice, this
list of conditions and the disclaimer.
c) Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the disclaimer in the documentation and/or other
materials provided with the distribution. Altered source code of the
redistribution must be made available upon request with the distribution.
d) Modification and contributions to the original software provided by KUKA
must be clearly marked and the authorship must be stated.
e) Neither the name of KUKA nor the trademarks owned by KUKA may be used to
endorse or promote products derived from this software without specific prior
written permission.

DISCLAIMER OF WARRANTY

The Software is provided "AS IS" and "WITH ALL FAULTS," without warranty of
any kind, including without limitation the warranties of merchantability,
fitness for a particular purpose and non-infringement.
KUKA makes no warranty that the Software is free of defects or is suitable for
any particular purpose. In no event shall KUKA be responsible for loss or
damages arising from the installation or use of the Software, including but
not limited to any indirect, punitive, special, incidental or consequential
damages of any character including, without limitation, damages for loss of
goodwill, work stoppage, computer failure or malfunction, or any and all other
commercial damages or losses.
The entire risk to the quality and performance of the Software is not borne by
KUKA. Should the Software prove defective, KUKA is not liable for the entire
cost of any service and repair.

The licensing tems in this repo needs to be clarified including mention taht third party dependencies may have other licenses, e.g. nanopb:
https://github.com/KCL-BMEIS/fri/blob/fri-1.15/third_party/nanopb/LICENSE.txt

package.xml

provide a package.xml so rosdep can resolve the dependency.

Requires re-naming of FRIClient -> fri_client or similar to follow ROS convention and circumvent errors.

Mention contributors under their tag as contributors (changed zip files don't attribute contributions correctly):

#22: fredRocs
#23: peterMitrano
#18: bowangFromMars
#27: OmidRezayof
FRI 2.x testing: liver121888

License issues for contributing FRI v1.10

I am currently using an LBR7 Med robot with FRI v1.10 on it. I wanted to contribute the Client SDK for CPP of FRI v1.10 to this repository, but then saw the copyright notice in the source code of v1.10 (included below).

Am I correct in assuming that this notice in FRI v1.10 does indeed not allow sharing the source code on this repository? If not, I would be happy to contribute that FRI version.

Notice of one of the source files of Client SDK for FRI version 1.10:

/**

DISCLAIMER OF WARRANTY

The Software is provided "AS IS" and "WITH ALL FAULTS," 
without warranty of any kind, including without limitation the warranties 
of merchantability, fitness for a particular purpose and non-infringement. 
KUKA makes no warranty that the Software is free of defects or is suitable 
for any particular purpose. In no event shall KUKA be responsible for loss 
or damages arising from the installation or use of the Software, 
including but not limited to any indirect, punitive, special, incidental 
or consequential damages of any character including, without limitation, 
damages for loss of goodwill, work stoppage, computer failure or malfunction, 
or any and all other commercial damages or losses. 
The entire risk to the quality and performance of the Software is not borne by KUKA. 
Should the Software prove defective, KUKA is not liable for the entire cost 
of any service and repair.


COPYRIGHT

All Rights Reserved
Copyright (C)  2014-2016 
KUKA Roboter GmbH
Augsburg, Germany

This material is the exclusive property of KUKA Roboter GmbH and must be returned 
to KUKA Roboter GmbH immediately upon request.  
This material and the information illustrated or contained herein may not be used, 
reproduced, stored in a retrieval system, or transmitted in whole 
or in part in any way - electronic, mechanical, photocopying, recording, 
or otherwise, without the prior written consent of KUKA Roboter GmbH.  






\file
\version {1.10}
*/

And as an unrelated personal question, is it possible/easy/backwards compatible to upgrade the FRI version on my robot and the client SDK to higher versions, or would I need to contact KUKA support for this?

best way to add own project outside of build

Hello and thanks so far

Im trying to add my own executable working in clion:

Details

====================[ Build | mastersAPP | Release ]============================
/home/mirko/Downloads/clion/bin/cmake/linux/x64/bin/cmake --build /home/mirko/OneDrive/codespace/fri_cmake/build --target mastersAPP -- -j 6
[ 33%] Built target FRIClient
[ 35%] Building CXX object CMakeFiles/mastersAPP.dir/masters/masters.cpp.o
[ 38%] Building CXX object CMakeFiles/mastersAPP.dir/masters/mastersclient.cpp.o
[ 41%] Building CXX object CMakeFiles/mastersAPP.dir/CMakeFiles/3.27.8/CompilerIdCXX/CMakeCXXCompilerId.cpp.o
[ 43%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/IOAccess/IOAccessApp.cpp.o
[ 46%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/IOAccess/IOAccessClient.cpp.o
[ 48%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/LBRClientTemplate/MyLBRApp.cpp.o
[ 51%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/LBRClientTemplate/MyLBRClient.cpp.o
[ 53%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/LBRJointSineOverlay/LBRJointSineOverlayApp.cpp.o
[ 56%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/LBRJointSineOverlay/LBRJointSineOverlayClient.cpp.o
[ 58%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/LBRTorqueSineOverlay/LBRTorqueSineOverlayApp.cpp.o
[ 61%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/LBRTorqueSineOverlay/LBRTorqueSineOverlayClient.cpp.o
[ 64%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/LBRWrenchSineOverlay/LBRWrenchSineOverlayApp.cpp.o
[ 66%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/LBRWrenchSineOverlay/LBRWrenchSineOverlayClient.cpp.o
[ 69%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/SimulatedTransformationProvider/SimulatedTransformationProviderApp.cpp.o
[ 71%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/SimulatedTransformationProvider/SimulatedTransformationProviderClient.cpp.o
[ 74%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/TransformationProvider/TransformationProviderApp.cpp.o
[ 76%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/example/TransformationProvider/TransformationProviderClient.cpp.o
[ 79%] Building CXX object CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/src/base/friClientApplication.cpp.o
In file included from /home/mirko/OneDrive/codespace/fri_cmake/build/FRI-Client-SDK_Cpp/src/base/friClientApplication.cpp:64:
/home/mirko/OneDrive/codespace/fri_cmake/build/FRI-Client-SDK_Cpp/src/base/friClientData.h:65:10: fatal error: FRIMessages.pb.h: No such file or directory
   65 | #include "FRIMessages.pb.h"
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[3]: *** [CMakeFiles/mastersAPP.dir/build.make:314: CMakeFiles/mastersAPP.dir/FRI-Client-SDK_Cpp/src/base/friClientApplication.cpp.o] Error 1
gmake[3]: *** Waiting for unfinished jobs....
gmake[2]: *** [CMakeFiles/Makefile2:279: CMakeFiles/mastersAPP.dir/all] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:286: CMakeFiles/mastersAPP.dir/rule] Error 2

Details

################
# build masters
################
file(GLOB_RECURSE MASTERS_SOURCES RELATIVE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/masters *.cpp)
#file(GLOB_RECURSE MASTERS_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/masters/src *.cpp)

add_executable(mastersAPP
        ${MASTERS_SOURCES}
)

target_include_directories(mastersAPP
        PRIVATE
        ${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/
        ${CMAKE_CURRENT_SOURCE_DIR}/masters/include
        # Add other include directories if needed
)

target_link_libraries(mastersAPP
        PRIVATE

        FRIClient
        #${CMAKE_CURRENT_BINARY_DIR}/${FRIClient_SDK_NAME}/FRIClient
        # Add other libraries if needed
)

➜  fri_cmake git:(fri-1.17) ✗ tree --nolinks -L 1        
.
├── build
├── CMakeLists.txt
├── FRI-Client-SDK_Cpp.zip
├── LICENSE
├── masters
└── README.md

2 directories, 4 files

Im missing something here since iam no pro in cmake.

TwinCAT Real Time Support

TwinCAT is the software that we use to separate some CPU kernels from the Windows operating system. This allows for real time control, which is currently being supported for our haptic devices, as well as the concentric tube robots.

Therefore, the FRI must be compiled within the TwinCAT framework. To make this compatible with our CMake approach, it might be possible to alter the generator within the CMakeSettings.json, which is used by Visual Studio to read in the compiler settings.

Server.app for FRI 1.16

Could you please provide the equivalent Server.app version for FRI 1.16?
Thank you very much.

FRI 3.0 / Sunrise 2.7

There appears to be a connection issue when compiling fri-2.7 branch. The source for the error is currently unclear.

The error message can be found here: lbr-stack/lbr_fri_ros2_stack#181 (comment)

Proposed approach

Compile without cmake, simply using make:

  1. Go to
cd <path_to>/FRI-Client-SDK_Cpp/build/GNUMake
  1. Build
make
  1. Run
cd <path_to>/FRI-Client-SDK_Cpp/example/LBRJointSineOverlay
./LBRJointSineOverlay

If you could test this @OmidRezayof, would be awesome! But don't worry.

Related documentation

Source documentation:
fri_2 7

PDF documentation:
Screenshot from 2024-05-31 09-37-32

TODO

[JOSS Review] Repository License Issues

As part of the JOSS review, openjournals/joss-reviews#6138, this repository needs to have an OSI approved license. While this repository does have a license listed, I am worried about the license issues of including the KUKA FRI SDK in this repository.

This also appears to be related to #6 and #14. Please fix this issue using at least one of the methods suggested in your existing issues.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.