C3 Bridge Interface Server

  • Greetings everyone.

    I'd like you to meet the project that I've been working on for the last six months.

    It's called the C3 Bridge Interface.

    The C3 Bridge Interface Server is a lightweight network application that allows remote clients to execute requests to the KUKA Cross 3 subsystem and return responses. The application provides advanced functionality and high performance.

    Some distinctive features

    • Well-documented application protocol. It is fully compatible with KukavarProxy protocol, which means that existing client solutions (RoboDK, ROS) can be used.
    • Executes more functions of the KUKA Cross 3 subsystem (in the future I hope to implement all available functions).
    • Controls the execution of a KRL program (you can start/stop/reset your program).
    • High performance. The software is written in C++ and can be compiled using both modern development tools and development tools of the past years (like Visual C++ 6.0).
    • It does not require additional software libraries to be installed in the control system.
    • It starts minimized to tray and does not take up any space on the screen.
    • There are no limits on the number of simultaneous network connections and idle time.
    • The Discovery Protocol for easy identification of the control system in the network.

    Notes

    To confirm the correctness of the created software product functioning, the C3 Control Panel application was developed.

    It allows displaying coordinates of the robot's current position and controlling the movement of individual axes.

    Work on both programs is carried out in parallel.

    Increasing the functionality of the C3 Bridge Interface Server requires the addition of verification functions to the control panel.

    Unfortunately, I am not ready to publish the C3 Control Panel at this stage because of its primitive and debug oriented nature.

    Protocol Specification

    You can download the application protocol specification from the repository here: https://github.com/ulsu-tech/c…face%20Protocol%201.1.pdf

    Download Links

    The main repository: https://github.com/ulsu-tech/c3bridge-server

    Binary (v1.0, Unicode, for Windows 7 or newer): https://github.com/ulsu-tech/c…oad/v1.0/C3Bridge.1.0.zip

    Binary (v1.0, ANSI, for Windows 95 or newer): https://github.com/ulsu-tech/c…1.0/C3Bridge.1.0.ANSI.zip

    License

    The software is licensed under the 3-clause BSD license.

    The full text of the license is available in the repository: https://github.com/ulsu-tech/c…erver/blob/master/LICENSE

    Project Support

    I'm not sure if I can leave a donation link here.

    If you find this project useful, you can thank me with a donation.

    All necessary links can be found in the README.md file and on the home page of the repository.

    I would also be happy to receive your wishes and comments of any kind.


    Best regards,

    Dmitry Lavygin

    PhD, Senior Researcher

    S.P. Kapitsa Research Institute of Technology, Ulyanovsk State University, Russian Federation

  • AD
  • massula

    Approved the thread.
  • VDm

    Hi

    I am currently developing a program (python script) that reads g code and sends it as commands to a Kuka Robot . On the robot side, I use kukavarproxy. On the other hand, the same script synchronously reads from the g code the commands for control of the spindle, cooling and manages them through the USB port. Other external devices can be added. In other words, it is not necessary to send commands to the robot, which in turn sends them to an external controller.

    I have had a robot for two months and I am still a beginner in this field.

    Today I saw your project and I will test the possibilities using a python.

    I will be happy if I can assist in the development or testing of your project.


    Best regards

    Pipo

    Edited once, last by pipo ().

  • Today I saw your project and I will test the possibilities using a python.

    I will be happy if I can assist in the development or testing of your project.

    Nice. You can try to replace KukavarProxy with C3 Bridge Interface. It's fully compatible.



    does your software meets the requirements of "SPOC"?

    Do you mean Single Point of Control? No, I don't think so. Like the KukavarProxy, my software allows for simultaneous connection of several network clients.

  • VDm

    Hi

    on the kukavarproxy is "debug" option where I can see all IN/OUT traffic. Is there (C3Bridge) some equivalent functionality?

    When start i see only messages for connection options on C3Bridge window.

    With openshowvar and my Python script I connected sucsesfully with C3Bridge.

    Can You share C3 Control Panel .

    It does not matter at what stage of development C3 is, the main goal is tests.


    I will add new functionalities to my Python project, according to the capabilities of C3 and I will send you the test results.

    Greetings!

    Pipo

  • on the kukavarproxy is "debug" option where I can see all IN/OUT traffic. Is there (C3Bridge) some equivalent functionality?

    When start i see only messages for connection options on C3Bridge window.

    No, the C3 Bridge Interface does not have this feature. It was designed for very frequent requests. This would inevitably lead to a log overflow in a matter of seconds.


    Can You share C3 Control Panel .

    Unfortunately, no. I am working hard on this software and maybe in the future I will release a freeware version.

  • High-Speed Jogging with C3 Bridge Interface (Server + Control Panel):

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

  • C3 Control Panel

    The C3 Control Panel is an application to remotely control KUKA robots via the C3 Bridge Interface Server or KUKAVARPROXY.

    Features

    • KRL Variable Control
    • Variable Watch List
    • Actual Position Display
    • Jog, the manual control of robot movement (EXPERIMENTAL)

    System Requirements

    • Windows XP SP3 or later
    • DirectX 9.0c
    • Xbox 360 Controller Driver for Windows (optional)

    Screenshots

    Actual Position

    actual_position.png

    Watch List

    watch_list.png

    Jog

    jog.png

    Download Links

    Repository (license information only): https://github.com/ulsu-tech/c3bridge-client

    Binary (Windows XP or later): https://github.com/ulsu-tech/c…v1.0/C3.Control.Panel.zip

  • Here is my Control Panel for KUKA: one can jog robot with Joystick, inside program with buttons or even voice and record the points and execute the program with voice :)


    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

  • Here is my Control Panel for KUKA: one can jog robot with Joystick, inside program with buttons or even voice and record the points and execute the program with voice :)


    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Hello DannyDJ , we need to do the same connect with usb camera, opencv, neural networks and personnalized KUKAVARPROXY.
    Could you share the KRL code running in background and possibly your server side code?
    Your IHM seem be fantastic.
    No commercial application will be made.
    In addition do you have an idea of the instruction execution time ?
    Thank you in advance.

  • Hi


    Very keen to run programs remotely...


    But please excuse a very basic question - ie. how do I set this up on the robot? Do I also need to install and run the C3bridge.exe program on the robot, and do I need to configure anything on the robot side?


    Thanks

    • Helpful

    first place c3Bridge.exe onto a robot controller and run it there (perhaps place shortcut into StartUp folder so it runs automatically)


    if client is not local (also running on the robot) you will also need to open up port 7000 in the KLI configuration so that messages from client can reach c3Bridge (note this requires reboot. if this is not a real robot controller but OfficeLite, there is no need to open port (since KLI is not there anyway).


    next make sure that your computer and robot are on same subnet. if needed adapt network settings until they are.


    finally run suitable client to send messages to c3Bridge and capture replies. several clients already exist like C3Easy that makes testing a snap.


    to really utilize this one would need to write own client. i am very busy but managed to squeeze some time to do just that. also implemented all functions available in open source version of C3Bridge. Will try to update manual pretty soon.


    about making own client:

    there is a number of commands that one can use. you do not need to implement all of them but should at least implement one of read function and one of write functions.


    commands 0 and 1 (read and write variable, ASCII) are same as on KukaVarProxy. those are the only messages that use plain ASCII and are kept for compatibility with KukaVarProxy. all other messages use wide string format. so commands 4 and 5 do the same things as commands 0 and 1 but - using wide string.


    example byte sequence for command 0 to read $OV_PRO is:

    00 01 00 0A 00 00 07 24 4F 56 5F 50 52 4F


    Response is something like

    00 01 00 08 00 00 02 34 33 00 01 01

    telling that $OV_PRO is 43 %


    red = length of ASCII that follows

    blue = actual ASCII value

    green = command status (error code and message successful or not)

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • example of opening port 7000 for TCP protocol:



    When C3Bridge is running, icon is shown in system tray.

    To open it, rightclick on the icon.

    then you can see status - if all is ok, server will be able to use port 7000.


    example with OL and two clients connected. one is inside OL (robot controller), the other is extern

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Thanks for the clear instructions. C3 Easy and Control Panel are both working. Now I just need to work out if I can write a client... Assuming it's possible in VB...


    Noticed one weird thing about ControlPanel. It doesn't initially report the correct position values for all axes. Only when I start moving axes do they update correctly.

  • Now I just need to work out if I can write a client... Assuming it's possible in VB...

    It is definitely possible to do this in any modern general-purpose programming language. I have three different implementations of the client API for C# (and two internal ones for C++). I could share, but they are far from perfect.


    Noticed one weird thing about ControlPanel. It doesn't initially report the correct position values for all axes. Only when I start moving axes do they update correctly.

    Do you mean Cartesian coordinates? They cannot be calculated unless $BASE and $TOOL are defined. Movement in T1 mode defines them.

  • Hi VDm.


    Thanks - some code in C# might be the most useful as it is pretty similar to VB. :)


    I found that the position values were partially incorrect in both Actuals and Cartesian. I first initialised the robot in my normal start position A1 0 A2 -90 A3 90 A4 0 A5 90 A6 0 in T1 mode.


    Then I ran ControlPanel and this is what I see... If I jog A1 or A4 or A6 a little, they update and return the correct position - as confirmed by the HMI.


    Note - In the cartesian list Y and B should also be zero.)


  • All positions are obtained by querying $AXIS_ACT and $POS_ACT. So these are the values of these variables.

    Do you see the same reporting behaviour?


    I will check if Tool or Base were undefined. But it is odd that both Actual and Cart values are effected...

    Edited once, last by geraldft ().

  • yes, if robot is not running motion, mere change of tool or base (by program or manual assignment), that does not make current position immediately reflect the changes. Cartesian position calculation is not done until motion is started. same goes for some other variables for example if you choose different coordinate system (Tool or World or Base...)

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now