Update (2021/03) - Download Virtual Human 1.2

FlorianKnecht Germany mod
edited March 2021 in RobotStudio

Dear All,

I am proud to release the new Version of the Virtual Human, Version 1.2 for RobotStudio. 

Short Overview:

What is the Virtual Human?

The Virtual Human consists of:
  1. A Smart Component
  2. A Robot Controller (SAC, IRC 5)
  3. Eleven Mechanisms (including the Controller Mechanism)
  4. Different CAD Versions


What can the Virtual Human do?

  1. Positioning a Human inside of a Station 
  2. Programming a Human with RAPID
  3. Creating Simulations containing a Human


How can it be installed?

  1. Download the ‘Virtual_Human-1.2.zip’ from this post & unzip it. Follow the instructions in the document (attached to this post): 
‘Installation of the Virtual Human.pdf’

How to start?

  1. Start by watching the tutorial videos attached to this post. (Tutorials.zip)
  2. Look in the RAPID code of the tutorial to see how you can program it.

Please contact me via email or post in the RobotStudio Forum if you:

  1. run into issues with the Human
  2. found a bug for the Human
  3. created more content for the human (e.g. CAD Versions, Positions, RAPID functionality) – If you want to share it, I can embed it in the next release of the Human.
  4. have new ideas depending on this project -> please have a look at the document  
“Virtual Human Future.pdf”

Email: [email protected]

Best regards,


Post edited by FlorianKnecht on


  • Cool!

    Maxim Riabichev
    PC Software Support Engineer
  • DenisFR
    DenisFR FRANCE ✭✭✭
    Great Work.
    For saved positions, prefer use ISO format as YYYYMMDD_HHNNSS.
    For your video, this becomes jpFingers_20200731_200902.

    In HM_Functionality_HighLevel.sys:VH_PLAN_ReferenceRotation, you wrote:
            WHILE TargetTransRot_LOCAL.n_RotDegree_Z > 180 DO TargetTransRot_LOCAL.n_RotDegree_Z:= TargetTransRot_LOCAL.n_RotDegree_Z - 360;

    Here a function I've wrote (should be integrated in RAPID  ;) ):
      ! Return modulo in range +-(pnDiv/2)
      LOCAL FUNC num NumMOD(num pnNum, num pnDiv)
        VAR num vnRes;
        VAR num vnRes2;

        vnRes:=((pnNum / pnDiv)-Trunc(pnNum / pnDiv)) * pnDiv;
        IF (vnRes < (0 - (pnDiv / 2))) vnRes2 := vnRes + pnDiv;
        IF (vnRes > (0 + (pnDiv / 2))) vnRes2 := vnRes - pnDiv;
        RETURN vnRes2;
    You then can use it in other place in code.

    In HM_Functionality_HighLevel.sys:VH_Plan_WalkToPosition
            n_WalkDistance_mm := sqrt(Pow(n_Distance_X,2)+Pow(n_Distance_Y,2)+Pow(n_Distance_Z,2));
            n_WalkDistance_mm := Distance(,);

    Did you plan to expose your code in Git repository?
    So many user can contribute in it.

    PS: Can you add in RS devs todo list this request?

  • Dear DenisFR,

    Thanks for your constructive & correct suggestions, they will be implemented.

    Saved positions, use ISO format as YYYYMMDD_HHNNSS:
    -> I will use YYYYMMDD_HHNNSS_SSS, (adding ms was already planned before, reason: avoid RAPID errors)
    Reference value inside a specific area:
    -> Thanks for this function, I will use it in my code (I will maybe rename it, & comment that it was written by you ;) ) -> Additional: In some places I will keep my method, as it is faster in most of my use cases.
    Of course, didn't know the name that's why I coded it by myself.

    Did you plan to expose your code in Git repository?
    Yes, for the whole RAPID code, I will inform when it's exposed, hopefully within the next two weeks.

    PS: Can you add in RS devs todo list this request?
    Please make your request more exact, I am pretty sure you will get help or at least an answer afterwards.  (How you imagine it should be, along of pictures and detailed descriptions - The dev Team has a lot of work, if the question is not defined exact, nobody will find the time to check what was meant)

    Best regards, Florian