Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • sw/armarx/robot-api
  • uwkce_singer/robot-api
  • untcg_hofmann/robot-api
  • ulqba_korosakov/RobotAPI
4 results
Show changes
Commits on Source (7736)
Showing
with 709079 additions and 7 deletions
......@@ -2,9 +2,13 @@
!/build/.gitkeep
!.gitkeep
!.gitignore
.idea
source/*/Test.h
// ignore Aron files
*.aron.generated.h
*.bak
*#
.#*
......@@ -13,11 +17,14 @@ source/*/Test.h
.*.kate-swp
.*.swo
*.pyc
*.orig
.DS_Store
CMakeFiles
CMakeCache.txt
CMakeLists.txt.user
CMakeLists.txt.user*
*.autosave
*~
*.o
*.os
......@@ -42,4 +49,32 @@ mongod.log*
data/db/
data/dbdump/
# Test files
*.roundtriptest
# Generated Scenario Files
startScenario.sh
stopScenario.sh
ttyACM*.js
ttyACM*.log
datapath*.cfg
*.icegrid.xml
data/RobotAPI/logs
worktree/
etc/python/armarx.egg-info/
etc/python/build/*
etc/python/dist/*
.cmake/api/v1/query/cache-v2
.cmake/api/v1/query/codemodel-v2
.cmake/api/v1/query/cmakeFiles-v1
# ArViz Recordings
data/RobotAPI/ArVizStorage/
.vscode/
.clang-format
.clang-tidy
stages:
- build-and-test
- deploy
- post-deploy-test
.build-and-test:
cache:
# https://docs.gitlab.com/ee/ci/caching/#share-caches-across-jobs-in-different-branches
key: one-key-to-rule-them-all
paths:
- .apt
- .ccache
before_script:
# Apt cache configuration.
- rm -rf /var/cache/apt/archives || true
- rm -f /etc/apt/apt.conf.d/docker-clean # Remove docker-clean script to avoid cache deletion.
- mkdir .apt || true
- ln -s "$CI_PROJECT_DIR/.apt" /var/cache/apt/archives
# Update apt info.
- apt-get update
# Ccache configuration and introspection.
- apt-get install ccache --yes
- ccache --set-config=cache_dir="$CI_PROJECT_DIR/.ccache"
- ccache --max-size=20G
- ccache --show-stats
# Activate Axii.
- source /axii/scripts/install_axii.sh
- _axii_auto_env_refresh
script:
- echo "ArmarX Workspace = '$ARMARX_WORKSPACE'"
# Use workspace configuration from project.
- cp "$CI_PROJECT_DIR/.gitlab/ci/armarx-workspace.json" "$ARMARX_WORKSPACE/armarx-workspace.json"
- cat "$ARMARX_WORKSPACE/armarx-workspace.json"
- axii workspace env
- _axii_auto_env_refresh
- echo "Workspace information:"
- axii workspace list-modules
- axii workspace list-modules --deps
- axii workspace info
- export PROJECT_MODULE="armarx/RobotAPI"
- export PROJECT_PATH_IN_WORKSPACE="$armarx__RobotAPI__PATH"
# Symlink project directory into Axii workspace.
- mkdir -p "$(dirname $PROJECT_PATH_IN_WORKSPACE)"
- ln -s "$CI_PROJECT_DIR" "$PROJECT_PATH_IN_WORKSPACE"
# Fix "CMake Error in CMakeLists.txt: Imported target "VirtualRobot" includes non-existent path "/usr/lib/include"
# (caused by at least dmp)
- mkdir -p /usr/lib/include
# Upgrade.
- axii workspace system --accept-apt-install
- axii workspace update --prefer-https
- axii workspace upgrade -m "$PROJECT_MODULE"
- ccache --show-stats
# Test.
# ToDo: Add and use `axii ws test -m "$PROJECT_MODULE"`
- cd "$PROJECT_PATH_IN_WORKSPACE/build"
- ctest --output-on-failure --output-junit "$CI_PROJECT_DIR/report.xml" .
artifacts:
reports:
junit: report.xml
build-and-test-bionic:
stage: build-and-test
extends: .build-and-test
image: git.h2t.iar.kit.edu:5050/sw/armarx/armarx-gui:latest-bionic
build-and-test-jammy:
stage: build-and-test
extends: .build-and-test
image: git.h2t.iar.kit.edu:5050/sw/armarx/armarx-gui:latest-jammy
docker-bionic:
stage: deploy
needs: ["build-and-test-bionic"]
image:
name: gcr.io/kaniko-project/executor:v1.9.0-debug
entrypoint: [""]
script:
- /kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/docker/bionic"
--destination "${CI_REGISTRY_IMAGE}:latest-bionic"
rules:
- if: $CI_COMMIT_BRANCH == "master"
docker-jammy:
stage: deploy
needs: ["build-and-test-jammy"]
image:
name: gcr.io/kaniko-project/executor:v1.9.0-debug
entrypoint: [""]
script:
- /kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/docker/jammy"
--destination "${CI_REGISTRY_IMAGE}:latest-jammy"
rules:
- if: $CI_COMMIT_BRANCH == "master"
.test-docker-image-common:
before_script:
- source /axii/scripts/install_axii.sh
- _axii_auto_env_refresh
script:
- echo "ArmarX Workspace = '$ARMARX_WORKSPACE'"
- printenv
- axii workspace list-modules
- axii workspace list-modules --deps
- axii workspace info
- echo "RobotAPI directory = '$RobotAPI_DIR'"
- which armarx
- which armarx-package
- armarx switch docker_test --ice-host 127.0.0.1 --ice-port 10000 --ice-default-host 127.0.0.1 --mongo-host 127.0.0.1 --mongo-port 10001
- armarx profile
- armarx status || true
- cd $ArmarXGui_DIR
- ctest --output-on-failure .
test-docker-image-bionic:
stage: post-deploy-test
needs: ["docker-bionic"]
extends: .test-docker-image-common
image: git.h2t.iar.kit.edu:5050/sw/armarx/robot-api:latest-bionic
rules:
- if: $CI_COMMIT_BRANCH == "master"
test-docker-image-jammy:
stage: post-deploy-test
needs: ["docker-jammy"]
extends: .test-docker-image-common
image: git.h2t.iar.kit.edu:5050/sw/armarx/robot-api:latest-jammy
rules:
- if: $CI_COMMIT_BRANCH == "master"
# ARON
/source/RobotAPI/libraries/aron/ @peller @dreher
/source/RobotAPI/interface/aron/ @peller @dreher
/source/RobotAPI/interface/aron.ice @peller @dreher
# ArMem
/source/RobotAPI/components/armem/ @peller @kartmann @dreher
/source/RobotAPI/libraries/armem/ @peller @kartmann @dreher
/source/RobotAPI/libraries/armem_robot_localization/ @reister
/source/RobotAPI/libraries/armem_robot_mapping/ @reister
/source/RobotAPI/interface/armem/ @fratty @RainerKartmann @dreher
/source/RobotAPI/interface/armem.ice @fratty @RainerKartmann @dreher
{
"modules": {
"tools/ccache/default": {},
"armarx/RobotAPI": {}
},
"global": {
"prepare": {
"cmake": {
"definitions": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"CMAKE_C_COMPILER_LAUNCHER": "$CCACHE",
"CMAKE_CXX_COMPILER_LAUNCHER": "$CCACHE"
}
}
}
}
}
# RobotAPI
cmake_minimum_required(VERSION 3.10.2)
cmake_minimum_required(VERSION 2.8)
if(POLICY CMP0043)
cmake_policy(SET CMP0043 OLD)
endif()
find_package("ArmarXCore" REQUIRED
PATHS "$ENV{HOME}/armarx/Core/build"
......@@ -8,10 +11,38 @@ find_package("ArmarXCore" REQUIRED
include(${ArmarXCore_USE_FILE})
set(ARMARX_ENABLE_DEPENDENCY_VERSION_CHECK_DEFAULT TRUE)
set(ARMARX_ENABLE_AUTO_CODE_FORMATTING TRUE)
armarx_project("RobotAPI")
depends_on_armarx_package(ArmarXGui)
find_package(DMP QUIET)
find_package(OpenCV QUIET)
find_package(IVT COMPONENTS ivt ivtopencv QUIET)
find_package(manif QUIET)
add_subdirectory(source)
add_subdirectory(interface)
install_project()
add_subdirectory(scenarios)
if (TRUE)
find_package(libmongocxx QUIET)
find_package(libbsoncxx QUIET)
if (NOT libbsoncxx_FOUND OR NOT libbsoncxx_FOUND)
string(ASCII 27 Esc)
set(BoldYellow "${Esc}[1;33m")
set(ColourReset "${Esc}[m")
message(WARNING "${BoldYellow}\
The packages libbsoncxx or libbsoncxx not found. \
They are required to build the memory system (armem and related libraries). \
Please use this installation script to install libmongocxx and libbsoncxx:
cd ${PROJECT_SOURCE_DIR}/etc/mongocxx/ && ./install_mongocxx.sh ~/repos \
or run 'cmake -DCMAKE_PREFIX_PATH=$mongocxx_install_dir' if you have mongocxx already installed \
${ColourReset}")
endif()
endif()
# RobotAPI
[Online Documentation](https://armarx.humanoids.kit.edu/RobotAPI-Overview.html)
Git can only track files and not directory.
Therefore this file is added to all empty directories
which need to be available after a Git clone.
Git can only track files and not directory.
Therefore this file is added to all empty directories
which need to be available after a Git clone.
This is the default folder where ArMem stores episodes
This is the default folder where ArViz stores recordings
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
[{
"name": "guard_frame_right",
"posX": 3100,
"posY": 2330,
"yaw": 0.0,
"axisLengthX": 170,
"axisLengthY": 600,
"refPosX": 3170,
"refPosY": 2320,
"safetyMarginX": 300,
"safetyMarginY": 300
},{
"name": "guard_corner_fix",
"posX": 3670,
"posY": 2780,
"yaw": 0.0,
"axisLengthX": 100,
"axisLengthY": 150,
"refPosX": 3170,
"refPosY": 2320,
"safetyMarginX": 300,
"safetyMarginY": 300
},{
"name": "ctrl_table",
"posX": 4400,
"posY": 2000,
"yaw": 0.0,
"axisLengthX": 1500,
"axisLengthY": 150,
"refPosX": 3170,
"refPosY": 2000,
"safetyMarginX": 200,
"safetyMarginY": 400
},{
"name": "guard_frame_left",
"posX": 700,
"posY": 2380,
"yaw": 0.0,
"axisLengthX": 200,
"axisLengthY": 650,
"refPosX": 500,
"refPosY": 2380,
"safetyMarginX": 400,
"safetyMarginY": 400
},{
"name": "guard_stander",
"posX": 305,
"posY": 6680,
"yaw": -0.23,
"axisLengthX": 700,
"axisLengthY": 200,
"refPosX": 305,
"refPosY": 6680,
"safetyMarginX": 400,
"safetyMarginY": 400
},{
"name": "table_left",
"posX": 3700,
"posY": 4700,
"yaw": 0.75,
"axisLengthX": 550,
"axisLengthY": 300,
"refPosX": 4200,
"refPosY": 4900,
"safetyMarginX": 300,
"safetyMarginY": 300
},{
"name": "table_right",
"posX": 4600,
"posY": 4700,
"yaw": -0.75,
"axisLengthX": 550,
"axisLengthY": 300,
"refPosX": 4200,
"refPosY": 4900,
"safetyMarginX": 400,
"safetyMarginY": 400
},{
"name": "table_corner",
"posX": 3400,
"posY": 4750,
"yaw": 0,
"axisLengthX": 800,
"axisLengthY": 650,
"refPosX": 3400,
"refPosY": 5216,
"safetyMarginX": 300,
"safetyMarginY": 300
}
]
// Configuration set for the Humanoid Robot ARMAR-6
// Reft Hand
sens.Index L 1 Joint.acceleration => HandL
sens.Index L 1 Joint.gravityTorque => HandL
sens.Index L 1 Joint.inertiaTorque => HandL
sens.Index L 1 Joint.inverseDynamicsTorque => HandL
sens.Index L 1 Joint.position => HandL
sens.Index L 1 Joint.torque => HandL
sens.Index L 1 Joint.velocity => HandL
sens.Index L 2 Joint.acceleration => HandL
sens.Index L 2 Joint.gravityTorque => HandL
sens.Index L 2 Joint.inertiaTorque => HandL
sens.Index L 2 Joint.inverseDynamicsTorque => HandL
sens.Index L 2 Joint.position => HandL
sens.Index L 2 Joint.torque => HandL
sens.Index L 2 Joint.velocity => HandL
sens.Index L 3 Joint.acceleration => HandL
sens.Index L 3 Joint.gravityTorque => HandL
sens.Index L 3 Joint.inertiaTorque => HandL
sens.Index L 3 Joint.inverseDynamicsTorque => HandL
sens.Index L 3 Joint.position => HandL
sens.Index L 3 Joint.torque => HandL
sens.Index L 3 Joint.velocity => HandL
sens.Middle L 1 Joint.acceleration => HandL
sens.Middle L 1 Joint.gravityTorque => HandL
sens.Middle L 1 Joint.inertiaTorque => HandL
sens.Middle L 1 Joint.inverseDynamicsTorque => HandL
sens.Middle L 1 Joint.position => HandL
sens.Middle L 1 Joint.torque => HandL
sens.Middle L 1 Joint.velocity => HandL
sens.Middle L 2 Joint.acceleration => HandL
sens.Middle L 2 Joint.gravityTorque => HandL
sens.Middle L 2 Joint.inertiaTorque => HandL
sens.Middle L 2 Joint.inverseDynamicsTorque => HandL
sens.Middle L 2 Joint.position => HandL
sens.Middle L 2 Joint.torque => HandL
sens.Middle L 2 Joint.velocity => HandL
sens.Middle L 3 Joint.acceleration => HandL
sens.Middle L 3 Joint.gravityTorque => HandL
sens.Middle L 3 Joint.inertiaTorque => HandL
sens.Middle L 3 Joint.inverseDynamicsTorque => HandL
sens.Middle L 3 Joint.position => HandL
sens.Middle L 3 Joint.torque => HandL
sens.Middle L 3 Joint.velocity => HandL
sens.Pinky L 1 Joint.acceleration => HandL
sens.Pinky L 1 Joint.gravityTorque => HandL
sens.Pinky L 1 Joint.inertiaTorque => HandL
sens.Pinky L 1 Joint.inverseDynamicsTorque => HandL
sens.Pinky L 1 Joint.position => HandL
sens.Pinky L 1 Joint.torque => HandL
sens.Pinky L 1 Joint.velocity => HandL
sens.Pinky L 2 Joint.acceleration => HandL
sens.Pinky L 2 Joint.gravityTorque => HandL
sens.Pinky L 2 Joint.inertiaTorque => HandL
sens.Pinky L 2 Joint.inverseDynamicsTorque => HandL
sens.Pinky L 2 Joint.position => HandL
sens.Pinky L 2 Joint.torque => HandL
sens.Pinky L 2 Joint.velocity => HandL
sens.Pinky L 3 Joint.acceleration => HandL
sens.Pinky L 3 Joint.gravityTorque => HandL
sens.Pinky L 3 Joint.inertiaTorque => HandL
sens.Pinky L 3 Joint.inverseDynamicsTorque => HandL
sens.Pinky L 3 Joint.position => HandL
sens.Pinky L 3 Joint.torque => HandL
sens.Pinky L 3 Joint.velocity => HandL
sens.Ring L 1 Joint.acceleration => HandL
sens.Ring L 1 Joint.gravityTorque => HandL
sens.Ring L 1 Joint.inertiaTorque => HandL
sens.Ring L 1 Joint.inverseDynamicsTorque => HandL
sens.Ring L 1 Joint.position => HandL
sens.Ring L 1 Joint.torque => HandL
sens.Ring L 1 Joint.velocity => HandL
sens.Ring L 2 Joint.acceleration => HandL
sens.Ring L 2 Joint.gravityTorque => HandL
sens.Ring L 2 Joint.inertiaTorque => HandL
sens.Ring L 2 Joint.inverseDynamicsTorque => HandL
sens.Ring L 2 Joint.position => HandL
sens.Ring L 2 Joint.torque => HandL
sens.Ring L 2 Joint.velocity => HandL
sens.Ring L 3 Joint.acceleration => HandL
sens.Ring L 3 Joint.gravityTorque => HandL
sens.Ring L 3 Joint.inertiaTorque => HandL
sens.Ring L 3 Joint.inverseDynamicsTorque => HandL
sens.Ring L 3 Joint.position => HandL
sens.Ring L 3 Joint.torque => HandL
sens.Ring L 3 Joint.velocity => HandL
sens.Thumb L 1 Joint.acceleration => HandL
sens.Thumb L 1 Joint.gravityTorque => HandL
sens.Thumb L 1 Joint.inertiaTorque => HandL
sens.Thumb L 1 Joint.inverseDynamicsTorque => HandL
sens.Thumb L 1 Joint.position => HandL
sens.Thumb L 1 Joint.torque => HandL
sens.Thumb L 1 Joint.velocity => HandL
sens.Thumb L 2 Joint.acceleration => HandL
sens.Thumb L 2 Joint.gravityTorque => HandL
sens.Thumb L 2 Joint.inertiaTorque => HandL
sens.Thumb L 2 Joint.inverseDynamicsTorque => HandL
sens.Thumb L 2 Joint.position => HandL
sens.Thumb L 2 Joint.torque => HandL
sens.Thumb L 2 Joint.velocity => HandL
// Right Hand
sens.Index R 1 Joint.acceleration => HandR
sens.Index R 1 Joint.gravityTorque => HandR
sens.Index R 1 Joint.inertiaTorque => HandR
sens.Index R 1 Joint.inverseDynamicsTorque => HandR
sens.Index R 1 Joint.position => HandR
sens.Index R 1 Joint.torque => HandR
sens.Index R 1 Joint.velocity => HandR
sens.Index R 2 Joint.acceleration => HandR
sens.Index R 2 Joint.gravityTorque => HandR
sens.Index R 2 Joint.inertiaTorque => HandR
sens.Index R 2 Joint.inverseDynamicsTorque => HandR
sens.Index R 2 Joint.position => HandR
sens.Index R 2 Joint.torque => HandR
sens.Index R 2 Joint.velocity => HandR
sens.Index R 3 Joint.acceleration => HandR
sens.Index R 3 Joint.gravityTorque => HandR
sens.Index R 3 Joint.inertiaTorque => HandR
sens.Index R 3 Joint.inverseDynamicsTorque => HandR
sens.Index R 3 Joint.position => HandR
sens.Index R 3 Joint.torque => HandR
sens.Index R 3 Joint.velocity => HandR
sens.Middle R 1 Joint.acceleration => HandR
sens.Middle R 1 Joint.gravityTorque => HandR
sens.Middle R 1 Joint.inertiaTorque => HandR
sens.Middle R 1 Joint.inverseDynamicsTorque => HandR
sens.Middle R 1 Joint.position => HandR
sens.Middle R 1 Joint.torque => HandR
sens.Middle R 1 Joint.velocity => HandR
sens.Middle R 2 Joint.acceleration => HandR
sens.Middle R 2 Joint.gravityTorque => HandR
sens.Middle R 2 Joint.inertiaTorque => HandR
sens.Middle R 2 Joint.inverseDynamicsTorque => HandR
sens.Middle R 2 Joint.position => HandR
sens.Middle R 2 Joint.torque => HandR
sens.Middle R 2 Joint.velocity => HandR
sens.Middle R 3 Joint.acceleration => HandR
sens.Middle R 3 Joint.gravityTorque => HandR
sens.Middle R 3 Joint.inertiaTorque => HandR
sens.Middle R 3 Joint.inverseDynamicsTorque => HandR
sens.Middle R 3 Joint.position => HandR
sens.Middle R 3 Joint.torque => HandR
sens.Middle R 3 Joint.velocity => HandR
sens.Ring R 1 Joint.acceleration => HandR
sens.Ring R 1 Joint.gravityTorque => HandR
sens.Ring R 1 Joint.inertiaTorque => HandR
sens.Ring R 1 Joint.inverseDynamicsTorque => HandR
sens.Ring R 1 Joint.position => HandR
sens.Ring R 1 Joint.torque => HandR
sens.Ring R 1 Joint.velocity => HandR
sens.Ring R 2 Joint.acceleration => HandR
sens.Ring R 2 Joint.gravityTorque => HandR
sens.Ring R 2 Joint.inertiaTorque => HandR
sens.Ring R 2 Joint.inverseDynamicsTorque => HandR
sens.Ring R 2 Joint.position => HandR
sens.Ring R 2 Joint.torque => HandR
sens.Ring R 2 Joint.velocity => HandR
sens.Ring R 3 Joint.acceleration => HandR
sens.Ring R 3 Joint.gravityTorque => HandR
sens.Ring R 3 Joint.inertiaTorque => HandR
sens.Ring R 3 Joint.inverseDynamicsTorque => HandR
sens.Ring R 3 Joint.position => HandR
sens.Ring R 3 Joint.torque => HandR
sens.Ring R 3 Joint.velocity => HandR
sens.Thumb R 1 Joint.acceleration => HandR
sens.Thumb R 1 Joint.gravityTorque => HandR
sens.Thumb R 1 Joint.inertiaTorque => HandR
sens.Thumb R 1 Joint.inverseDynamicsTorque => HandR
sens.Thumb R 1 Joint.position => HandR
sens.Thumb R 1 Joint.torque => HandR
sens.Thumb R 1 Joint.velocity => HandR
sens.Thumb R 2 Joint.acceleration => HandR
sens.Thumb R 2 Joint.gravityTorque => HandR
sens.Thumb R 2 Joint.inertiaTorque => HandR
sens.Thumb R 2 Joint.inverseDynamicsTorque => HandR
sens.Thumb R 2 Joint.position => HandR
sens.Thumb R 2 Joint.torque => HandR
sens.Thumb R 2 Joint.velocity => HandR
sens.Pinky R 1 Joint.acceleration => HandR
sens.Pinky R 1 Joint.gravityTorque => HandR
sens.Pinky R 1 Joint.inertiaTorque => HandR
sens.Pinky R 1 Joint.inverseDynamicsTorque => HandR
sens.Pinky R 1 Joint.position => HandR
sens.Pinky R 1 Joint.torque => HandR
sens.Pinky R 1 Joint.velocity => HandR
sens.Pinky R 2 Joint.acceleration => HandR
sens.Pinky R 2 Joint.gravityTorque => HandR
sens.Pinky R 2 Joint.inertiaTorque => HandR
sens.Pinky R 2 Joint.inverseDynamicsTorque => HandR
sens.Pinky R 2 Joint.position => HandR
sens.Pinky R 2 Joint.torque => HandR
sens.Pinky R 2 Joint.velocity => HandR
sens.Pinky R 3 Joint.acceleration => HandR
sens.Pinky R 3 Joint.gravityTorque => HandR
sens.Pinky R 3 Joint.inertiaTorque => HandR
sens.Pinky R 3 Joint.inverseDynamicsTorque => HandR
sens.Pinky R 3 Joint.position => HandR
sens.Pinky R 3 Joint.torque => HandR
sens.Pinky R 3 Joint.velocity => HandR
// Arm L
sens.ArmL1_Cla1.acceleration => ArmL
sens.ArmL1_Cla1.gravityTorque => ArmL
sens.ArmL1_Cla1.inertiaTorque => ArmL
sens.ArmL1_Cla1.inverseDynamicsTorque => ArmL
sens.ArmL1_Cla1.position => ArmL
sens.ArmL1_Cla1.torque => ArmL
sens.ArmL1_Cla1.velocity => ArmL
sens.ArmL2_Sho1.acceleration => ArmL
sens.ArmL2_Sho1.gravityTorque => ArmL
sens.ArmL2_Sho1.inertiaTorque => ArmL
sens.ArmL2_Sho1.inverseDynamicsTorque => ArmL
sens.ArmL2_Sho1.position => ArmL
sens.ArmL2_Sho1.torque => ArmL
sens.ArmL2_Sho1.velocity => ArmL
sens.ArmL3_Sho2.acceleration => ArmL
sens.ArmL3_Sho2.gravityTorque => ArmL
sens.ArmL3_Sho2.inertiaTorque => ArmL
sens.ArmL3_Sho2.inverseDynamicsTorque => ArmL
sens.ArmL3_Sho2.position => ArmL
sens.ArmL3_Sho2.torque => ArmL
sens.ArmL3_Sho2.velocity => ArmL
sens.ArmL4_Sho3.acceleration => ArmL
sens.ArmL4_Sho3.gravityTorque => ArmL
sens.ArmL4_Sho3.inertiaTorque => ArmL
sens.ArmL4_Sho3.inverseDynamicsTorque => ArmL
sens.ArmL4_Sho3.position => ArmL
sens.ArmL4_Sho3.torque => ArmL
sens.ArmL4_Sho3.velocity => ArmL
sens.ArmL5_Elb1.acceleration => ArmL
sens.ArmL5_Elb1.gravityTorque => ArmL
sens.ArmL5_Elb1.inertiaTorque => ArmL
sens.ArmL5_Elb1.inverseDynamicsTorque => ArmL
sens.ArmL5_Elb1.position => ArmL
sens.ArmL5_Elb1.torque => ArmL
sens.ArmL5_Elb1.velocity => ArmL
sens.ArmL6_Elb2.acceleration => ArmL
sens.ArmL6_Elb2.gravityTorque => ArmL
sens.ArmL6_Elb2.inertiaTorque => ArmL
sens.ArmL6_Elb2.inverseDynamicsTorque => ArmL
sens.ArmL6_Elb2.position => ArmL
sens.ArmL6_Elb2.torque => ArmL
sens.ArmL6_Elb2.velocity => ArmL
sens.ArmL7_Wri1.acceleration => ArmL
sens.ArmL7_Wri1.gravityTorque => ArmL
sens.ArmL7_Wri1.inertiaTorque => ArmL
sens.ArmL7_Wri1.inverseDynamicsTorque => ArmL
sens.ArmL7_Wri1.position => ArmL
sens.ArmL7_Wri1.torque => ArmL
sens.ArmL7_Wri1.velocity => ArmL
sens.ArmL8_Wri2.acceleration => ArmL
sens.ArmL8_Wri2.gravityTorque => ArmL
sens.ArmL8_Wri2.inertiaTorque => ArmL
sens.ArmL8_Wri2.inverseDynamicsTorque => ArmL
sens.ArmL8_Wri2.position => ArmL
sens.ArmL8_Wri2.torque => ArmL
sens.ArmL8_Wri2.velocity => ArmL
// Arm R
sens.ArmR1_Cla1.acceleration => ArmR
sens.ArmR1_Cla1.gravityTorque => ArmR
sens.ArmR1_Cla1.inertiaTorque => ArmR
sens.ArmR1_Cla1.inverseDynamicsTorque => ArmR
sens.ArmR1_Cla1.position => ArmR
sens.ArmR1_Cla1.torque => ArmR
sens.ArmR1_Cla1.velocity => ArmR
sens.ArmR2_Sho1.acceleration => ArmR
sens.ArmR2_Sho1.gravityTorque => ArmR
sens.ArmR2_Sho1.inertiaTorque => ArmR
sens.ArmR2_Sho1.inverseDynamicsTorque => ArmR
sens.ArmR2_Sho1.position => ArmR
sens.ArmR2_Sho1.torque => ArmR
sens.ArmR2_Sho1.velocity => ArmR
sens.ArmR3_Sho2.acceleration => ArmR
sens.ArmR3_Sho2.gravityTorque => ArmR
sens.ArmR3_Sho2.inertiaTorque => ArmR
sens.ArmR3_Sho2.inverseDynamicsTorque => ArmR
sens.ArmR3_Sho2.position => ArmR
sens.ArmR3_Sho2.torque => ArmR
sens.ArmR3_Sho2.velocity => ArmR
sens.ArmR4_Sho3.acceleration => ArmR
sens.ArmR4_Sho3.gravityTorque => ArmR
sens.ArmR4_Sho3.inertiaTorque => ArmR
sens.ArmR4_Sho3.inverseDynamicsTorque => ArmR
sens.ArmR4_Sho3.position => ArmR
sens.ArmR4_Sho3.torque => ArmR
sens.ArmR4_Sho3.velocity => ArmR
sens.ArmR5_Elb1.acceleration => ArmR
sens.ArmR5_Elb1.gravityTorque => ArmR
sens.ArmR5_Elb1.inertiaTorque => ArmR
sens.ArmR5_Elb1.inverseDynamicsTorque => ArmR
sens.ArmR5_Elb1.position => ArmR
sens.ArmR5_Elb1.torque => ArmR
sens.ArmR5_Elb1.velocity => ArmR
sens.ArmR6_Elb2.acceleration => ArmR
sens.ArmR6_Elb2.gravityTorque => ArmR
sens.ArmR6_Elb2.inertiaTorque => ArmR
sens.ArmR6_Elb2.inverseDynamicsTorque => ArmR
sens.ArmR6_Elb2.position => ArmR
sens.ArmR6_Elb2.torque => ArmR
sens.ArmR6_Elb2.velocity => ArmR
sens.ArmR7_Wri1.acceleration => ArmR
sens.ArmR7_Wri1.gravityTorque => ArmR
sens.ArmR7_Wri1.inertiaTorque => ArmR
sens.ArmR7_Wri1.inverseDynamicsTorque => ArmR
sens.ArmR7_Wri1.position => ArmR
sens.ArmR7_Wri1.torque => ArmR
sens.ArmR7_Wri1.velocity => ArmR
sens.ArmR8_Wri2.acceleration => ArmR
sens.ArmR8_Wri2.gravityTorque => ArmR
sens.ArmR8_Wri2.inertiaTorque => ArmR
sens.ArmR8_Wri2.inverseDynamicsTorque => ArmR
sens.ArmR8_Wri2.position => ArmR
sens.ArmR8_Wri2.torque => ArmR
sens.ArmR8_Wri2.velocity => ArmR
// Neck
sens.Neck_1_Yaw.acceleration => Neck
sens.Neck_1_Yaw.gravityTorque => Neck
sens.Neck_1_Yaw.inertiaTorque => Neck
sens.Neck_1_Yaw.inverseDynamicsTorque => Neck
sens.Neck_1_Yaw.position => Neck
sens.Neck_1_Yaw.torque => Neck
sens.Neck_1_Yaw.velocity => Neck
sens.Neck_2_Pitch.acceleration => Neck
sens.Neck_2_Pitch.gravityTorque => Neck
sens.Neck_2_Pitch.inertiaTorque => Neck
sens.Neck_2_Pitch.inverseDynamicsTorque => Neck
sens.Neck_2_Pitch.position => Neck
sens.Neck_2_Pitch.torque => Neck
sens.Neck_2_Pitch.velocity => Neck
// Torso
sens.TorsoJoint.acceleration => Torso
sens.TorsoJoint.gravityTorque => Torso
sens.TorsoJoint.inertiaTorque => Torso
sens.TorsoJoint.inverseDynamicsTorque => Torso
sens.TorsoJoint.position => Torso
sens.TorsoJoint.torque => Torso
sens.TorsoJoint.velocity => Torso
// Platform
sens.Platform.accelerationX => Platform
sens.Platform.accelerationY => Platform
sens.Platform.accelerationRotation => Platform
sens.Platform.absolutePositionX => Platform
sens.Platform.absolutePositionY => Platform
sens.Platform.absolutePositionRotation => Platform
sens.Platform.relativePositionX => Platform
sens.Platform.relativePositionY => Platform
sens.Platform.relativePositionRotation => Platform
sens.Platform.velocityX => Platform
sens.Platform.velocityY => Platform
sens.Platform.velocityRotation => Platform
// FT L
sens.FT L.fx => FT L
sens.FT L.fy => FT L
sens.FT L.fz => FT L
sens.FT L.gravCompFx => FT L
sens.FT L.gravCompFy => FT L
sens.FT L.gravCompFz => FT L
sens.FT L.gravCompTx => FT L
sens.FT L.gravCompTy => FT L
sens.FT L.gravCompTz => FT L
sens.FT L.tx => FT L
sens.FT L.ty => FT L
sens.FT L.tz => FT L
// FT R
sens.FT R.fx => FT R
sens.FT R.fy => FT R
sens.FT R.fz => FT R
sens.FT R.gravCompFx => FT R
sens.FT R.gravCompFy => FT R
sens.FT R.gravCompFz => FT R
sens.FT R.gravCompTx => FT R
sens.FT R.gravCompTy => FT R
sens.FT R.gravCompTz => FT R
sens.FT R.tx => FT R
sens.FT R.ty => FT R
sens.FT R.tz => FT R
<?xml version="1.0" encoding="UTF-8" ?>
<Robot Type="ArmarIII Head" RootNode="Head Base">
<RobotNode name="Head Base">
<Transform>
<DH theta="90" d="0" a="0" alpha="0" unitsangle="degree" unitslength="mm"/>
</Transform>
<Visualization>
<File type="Inventor">fullmodel/head_base.wrl</File>
</Visualization>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="4" units="kg" />
</Physics>
<CollisionModel>
<File type="Inventor">convexModel/head_base.wrl</File>
</CollisionModel>
<Child name="Neck_1_Pitch"/>
</RobotNode>
<RobotNode name="Neck_1_Pitch">
<Transform>
<DH theta="0" d="0" a="0" alpha="90" unitsangle="degree" unitslength="mm"/>
<DH theta="90" d="0" a="0" alpha="0" unitsangle="degree" unitslength="mm"/>
</Transform>
<Joint type="revolute">
<!--DH theta="90" d="0" a="0" alpha="90" unitsangle="degree" unitslength="mm"/-->
<axis x="0" y="0" z="-1"/>
<Limits unit="degree" lo="-45" hi="37"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/neck_pitch_link.wrl</File>
</Visualization>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="4" units="kg" />
<IgnoreCollision name="Hip Yaw"/>
</Physics>
<CollisionModel>
<File type="Inventor">convexModel/neck_pitch_link.wrl</File>
</CollisionModel>
<Child name="Neck_2_Roll"/>
</RobotNode>
<RobotNode name="Neck_2_Roll">
<Transform>
<DH a="0" d="0" theta="0" alpha="90" unitsangle="degree" unitslength="mm"/>
<DH a="0" d="0" theta="90" alpha="0" unitsangle="degree" unitslength="mm"/>
</Transform>
<Joint type="revolute">
<!--DH theta="90" d="0" a="0" alpha="90" unitsangle="degree" unitslength="mm"/-->
<axis x="0" y="0" z="1"/>
<Limits unit="degree" lo="-45" hi="45"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/neck_roll_link.wrl</File>
</Visualization>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="2" units="kg" />
<IgnoreCollision name="Hip Yaw"/>
<IgnoreCollision name="Head Base"/>
</Physics>
<CollisionModel>
<File type="Inventor">convexModel/neck_roll_link.wrl</File>
</CollisionModel>
<Child name="Neck_3_Yaw"/>
</RobotNode>
<RobotNode name="Neck_3_Yaw">
<Transform>
<DH a="0" d="0" theta="0" alpha="90" unitsangle="degree" unitslength="mm"/>
<DH a="0" d="0" theta="90" alpha="0" unitsangle="degree" unitslength="mm"/>
</Transform>
<Joint type="revolute">
<!--DH theta="90" d="120" a="0" alpha="90" unitsangle="degree" unitslength="mm"/-->
<axis x="0" y="0" z="-1"/>
<Limits unit="degree" lo="-120" hi="120"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/neck_yaw_link.wrl</File>
</Visualization>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="2" units="kg" />
</Physics>
<CollisionModel>
<File type="Inventor">convexModel/neck_yaw_link.wrl</File>
</CollisionModel>
<PrimitiveModel>
<Primitives>
<Sphere radius="140">
<Transform>
<Translation x="40" y="0" z="180" />
</Transform>
</Sphere>
</Primitives>
</PrimitiveModel>
<Child name="Head_Tilt"/>
</RobotNode>
<RobotNode name="Head_Tilt">
<Transform>
<DH theta="0" d="120" a="0" alpha="90" unitsangle="degree" unitslength="mm"/>
</Transform>
<Joint type="revolute">
<!--DH theta="0" d="0" a="0" alpha="-90" unitsangle="degree" unitslength="mm"/-->
<axis x="0" y="0" z="1"/>
<!--<Limits unit="degree" lo="-45" hi="45"/>/-->
<Limits unit="degree" lo="0" hi="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="6.79877000" units="kg" />
<IgnoreCollision name="Neck_2_Roll"/>
<IgnoreCollision name="Hip Yaw"/>
</Physics>
<Visualization>
<File type="Inventor">fullmodel/head.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/head.wrl</File>
</CollisionModel>
<Child name="Head Center1"/>
</RobotNode>
<RobotNode name="Head Center1">
<Transform>
<DH theta="0" d="0" a="0" alpha="-90" unitsangle="degree" unitslength="mm"/>
</Transform>
<Child name="Head Center"/>
</RobotNode>
<RobotNode name="Head Center">
<Transform>
<DH theta="0" d="54.5" a="0" alpha="-90" unitsangle="degree" unitslength="mm"/>
</Transform>
<Child name="Cameras"/>
<Child name="Jaw"/>
<Child name="Kinect"/>
<Child name="DepthCamera"/>
<Child name="DepthCameraSim"/>
<Child name="HeadIMU"/>
</RobotNode>
<RobotNode name="Jaw">
<Joint type="revolute">
<axis x="0" y="0" z="1"/>
<Limits unit="degree" lo="-30" hi="30"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/jaw.wrl</File>
</Visualization>
</RobotNode>
<RobotNode name="Cameras">
<Transform>
<Translation x="100" y="0" z="0" units='mm'/>
</Transform>
<Joint type="revolute">
<Axis x="0" y="0" z="-1"/>
<Limits unit="degree" lo="-20" hi="5"/> <!-- Motor encoder gives values until -24, but eyes only move until -20 or -21 -->
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<CollisionModel>
<File type="Inventor">iv_primitives/cyl2.wrl</File>
</CollisionModel>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="0.2" units="kg" />
<IgnoreCollision name="Neck_2_Roll"/>
<IgnoreCollision name="Hip Yaw"/>
<IgnoreCollision name="Head_Tilt"/>
</Physics>
<Child name="Eye_Left_Dummy"/>
<Child name="Eye_Right_Dummy"/>
<Child name="VirtualCentralGaze"/>
</RobotNode>
<RobotNode name="VirtualCentralGaze">
<Joint type="prismatic">
<TranslationDirection x="1" y="0" z="0"/>
<Limits unit="mm" lo="0" hi="10000"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="3"/>
</Visualization>
</RobotNode>
<RobotNode name="Kinect">
<Transform>
<Translation x="140" y="-100" z="0" units='mm'/>
</Transform>
<Joint type="prismatic">
<TranslationDirection x="1" y="0" z="0"/>
<Limits unit="mm" lo="0" hi="10000"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="3"/>
</Visualization>
</RobotNode>
<RobotNode name="DepthCamera">
<Transform>
<Translation x="105" y="90" z="0" units='mm'/>
<rollpitchyaw roll="0" pitch="90" yaw="0" unitsAngle="degree"/>
<rollpitchyaw roll="0" pitch="0" yaw="180" unitsAngle="degree"/>
<rollpitchyaw roll="21.0" pitch="0" yaw="0" unitsAngle="degree"/>
<rollpitchyaw roll="0" pitch="0" yaw="180" unitsAngle="degree"/>
</Transform>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="3"/>
</Visualization>
</RobotNode>
<RobotNode name="DepthCameraSim">
<Transform>
<Translation x="105" y="70" z="0" units='mm'/>
<rollpitchyaw roll="0" pitch="90" yaw="0" unitsAngle="degree"/>
<rollpitchyaw roll="0" pitch="0" yaw="180" unitsAngle="degree"/>
<rollpitchyaw roll="20.7" pitch="0" yaw="0" unitsAngle="degree"/>
<rollpitchyaw roll="0" pitch="0" yaw="270" unitsAngle="degree"/>
</Transform>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="3"/>
</Visualization>
</RobotNode>
<RobotNode name="HeadIMU">
<Transform>
<Translation x="0" y="-80" z="0" units='mm'/>
<rollpitchyaw roll="90" pitch="0" yaw="0" unitsAngle="degree"/>
<rollpitchyaw roll="0" pitch="0" yaw="180" unitsAngle="degree"/>
</Transform>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="3"/>
</Visualization>
</RobotNode>
<RobotNode name="Eye_Left_Dummy">
<Transform>
<DH a="0" d="46.5" theta="0" alpha="-90" unitsangle="degree" unitslength="mm"/>
</Transform>
<Child name="Eye_Left"/>
</RobotNode>
<RobotNode name="Eye_Right_Dummy">
<Transform>
<DH a="0" d="-46.5" theta="0" alpha="-90" unitsangle="degree" unitslength="mm"/>
</Transform>
<Child name="Eye_Right"/>
</RobotNode>
<RobotNode name="Eye_Left">
<Joint type="revolute">
<Axis x="0" y="0" z="1"/>
<Limits unit="degree" lo="-30" hi="30"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/eye_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">iv_primitives/cyl1.wrl</File>
</CollisionModel>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="0.1" units="kg" />
<IgnoreCollision name="Cameras"/>
<IgnoreCollision name="Head_Tilt"/>
</Physics>
<Child name="Lid Left Bottom"/>
<Child name="Lid Left Top"/>
<Child name="EyeLeftCameraPreTransformation"/>
</RobotNode>
<RobotNode name="Eye_Right">
<Joint type="revolute">
<Axis x="0" y="0" z="1"/>
<Limits unit="degree" lo="-30" hi="30"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/eye_r.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">iv_primitives/cyl1.wrl</File>
</CollisionModel>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="0.1" units="kg" />
<IgnoreCollision name="Cameras"/>
<IgnoreCollision name="Head_Tilt"/>
</Physics>
<Child name="Lid Right Bottom"/>
<Child name="Lid Right Top"/>
<Child name="EyeRightCameraPreTransformation"/>
</RobotNode>
<RobotNode name="EyeLeftCameraPreTransformation">
<Transform>
<translation x="20" y="0" z="0"/>
<RollPitchYaw roll="0" pitch="90" yaw ="0" units="degree"/>
</Transform>
<Child name="EyeLeftCamera"/>
<Child name="EyeLeftCameraSim"/>
</RobotNode>
<RobotNode name="EyeLeftCamera">
<Transform>
<RollPitchYaw roll="0" pitch="0" yaw ="90" units="degree"/>
</Transform>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="5"/>
</Visualization>
<Child name="HeadMotionMeasurementTCP"/>
<!--Sensor type="Camera" name="LeftEyeCam">
</Sensor-->
</RobotNode>
<RobotNode name="EyeLeftCameraSim">
<Transform>
<RollPitchYaw roll="0" pitch="0" yaw ="180" units="degree"/>
</Transform>
</RobotNode>
<RobotNode name="HeadMotionMeasurementTCP">
<Transform>
<translation x="0" y="0" z="1000"/>
</Transform>
</RobotNode>
<RobotNode name="Lid Left Bottom">
<Joint type="revolute">
<Axis x="0" y="1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/lid_l_bottom.wrl</File>
</Visualization>
</RobotNode>
<RobotNode name="Lid Left Top">
<Joint type="revolute">
<Axis x="0" y="1" z="0"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/lid_l_top.wrl</File>
</Visualization>
</RobotNode>
<RobotNode name="EyeRightCameraPreTransformation">
<Transform>
<translation x="20" y="0" z="0"/>
<RollPitchYaw roll="0" pitch="90" yaw ="0" units="degree"/>
</Transform>
<Child name="EyeRightCamera"/>
<Child name="EyeRightCameraSim"/>
</RobotNode>
<RobotNode name="EyeRightCamera">
<Transform>
<RollPitchYaw roll="0" pitch="0" yaw ="90" units="degree"/>
</Transform>
<!--Sensor type="Camera" name="RightEyeCam">
</Sensor-->
</RobotNode>
<RobotNode name="EyeRightCameraSim">
<Transform>
<RollPitchYaw roll="0" pitch="0" yaw ="180" units="degree"/>
</Transform>
</RobotNode>
<RobotNode name="Lid Right Bottom">
<Joint type="revolute">
<Axis x="0" y="1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/lid_r_bottom.wrl</File>
</Visualization>
</RobotNode>
<RobotNode name="Lid Right Top">
<Joint type="revolute">
<Axis x="0" y="1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/lid_r_top.wrl</File>
</Visualization>
</RobotNode>
<RobotNodeSet name="Head" kinematicRoot="Neck_1_Pitch">
<Node name="Neck_1_Pitch"/>
<Node name="Neck_2_Roll"/>
<Node name="Neck_3_Yaw"/>
<Node name="Head_Tilt"/>
<Node name="Cameras"/>
<Node name="Eye_Left"/>
<Node name="Eye_Right"/>
</RobotNodeSet>
<RobotNodeSet name="Neck" kinematicRoot="Neck_1_Pitch">
<Node name="Neck_1_Pitch"/>
<Node name="Neck_2_Roll"/>
<Node name="Neck_3_Yaw"/>
<Node name="Head_Tilt"/>
</RobotNodeSet>
<RobotNodeSet name="IKVirtualGaze" kinematicRoot="Neck_1_Pitch" tcp="VirtualCentralGaze">
<Node name="Neck_1_Pitch"/>
<Node name="Neck_2_Roll"/>
<Node name="Neck_3_Yaw"/>
<Node name="Cameras"/>
<Node name="VirtualCentralGaze"/>
</RobotNodeSet>
<RobotNodeSet name="IKVirtualGazeNoEyes" kinematicRoot="Neck_1_Pitch" tcp="VirtualCentralGaze">
<Node name="Neck_1_Pitch"/>
<Node name="Neck_2_Roll"/>
<Node name="Neck_3_Yaw"/>
<Node name="VirtualCentralGaze"/>
</RobotNodeSet>
<RobotNodeSet name="IKVirtualGaze_NoRoll" kinematicRoot="Neck_1_Pitch" tcp="VirtualCentralGaze">
<Node name="Neck_1_Pitch"/>
<Node name="Neck_3_Yaw"/>
<Node name="Cameras"/>
<Node name="VirtualCentralGaze"/>
</RobotNodeSet>
<RobotNodeSet name="IKVirtualGazeKinect" kinematicRoot="Neck_1_Pitch" tcp="Kinect">
<Node name="Neck_1_Pitch"/>
<Node name="Neck_2_Roll"/>
<Node name="Neck_3_Yaw"/>
<Node name="Kinect"/>
</RobotNodeSet>
<RobotNodeSet name="IKVirtualGaze_WithHeadTilt" kinematicRoot="Neck_1_Pitch" tcp="VirtualCentralGaze">
<Node name="Neck_1_Pitch"/>
<Node name="Neck_2_Roll"/>
<Node name="Neck_3_Yaw"/>
<Node name="Head_Tilt"/>
<Node name="Cameras"/>
<Node name="VirtualCentralGaze"/>
</RobotNodeSet>
</Robot>
<?xml version="1.0" encoding="UTF-8" ?>
<Robot Type="ArmarIII Head" RootNode="Head Base">
<RobotNode name="Head Base">
<Joint type="fixed">
<DH theta="90" d="0" a="0" alpha="90" units="degree"/>
</Joint>
<Child name="Neck_1_Pitch"/>
<Visualization>
<File type="Inventor">fullmodel/head_base.wrl</File>
</Visualization>
</RobotNode>
<RobotNode name="Neck_1_Pitch">
<Joint type="revolute">
<DH theta="90" d="0" a="0" alpha="90" units="degree"/>
<Limits unit="degree" lo="-45" hi="45"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/neck_pitch_link.wrl</File>
</Visualization>
<Child name="Neck_2_Roll"/>
</RobotNode>
<RobotNode name="Neck_2_Roll">
<Joint type="revolute">
<DH theta="90" d="0" a="0" alpha="90" units="degree"/>
<Limits unit="degree" lo="-45" hi="45"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/neck_roll_link.wrl</File>
</Visualization>
<Child name="Neck_3_Yaw"/>
</RobotNode>
<RobotNode name="Neck_3_Yaw">
<Joint type="revolute">
<DH theta="90" d="120" a="0" alpha="90" units="degree"/>
<Limits unit="degree" lo="-45" hi="45"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/neck_yaw_link.wrl</File>
</Visualization>
<Child name="Head_Tilt"/>
</RobotNode>
<RobotNode name="Head_Tilt">
<Joint type="revolute">
<DH theta="0" d="0" a="0" alpha="-90" units="degree"/>
<Limits unit="degree" lo="-45" hi="45"/>
</Joint>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="6.79877000" units="kg" />
</Physics>
<Visualization>
<File type="Inventor">fullmodel/head.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">collisionModel/head.wrl</File>
</CollisionModel>
<Child name="Head Center"/>
</RobotNode>
<RobotNode name="Head Center">
<Joint type="fixed">
<DH theta="0" d="54.5" a="0" alpha="-90" units="degree"/>
</Joint>
<Child name="Cameras"/>
<Child name="Jaw"/>
</RobotNode>
<RobotNode name="Jaw">
<Joint type="revolute">
<DH theta="0" d="0" a="0" alpha="0" units="degree"/>
<Limits unit="degree" lo="-30" hi="30"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/jaw.wrl</File>
</Visualization>
</RobotNode>
<RobotNode name="Cameras">
<!-- TODO: this was an AlphaJoint: but rotations around alpha axis are not supported by DH!! -->
<Joint type="revolute">
<PreJointTransform>
<Transform>
<Translation x="100" y="0" z="0"/>
</Transform>
</PreJointTransform>
<Axis x="0" y="0" z="1"/>
<PostJointTransform>
<Transform>
<Translation x="0" y="0" z="0"/>
</Transform>
</PostJointTransform>
<Limits unit="degree" lo="-30" hi="45"/>
</Joint>
<Child name="Eye_Left_Dummy"/>
<Child name="Eye_Right_Dummy"/>
</RobotNode>
<RobotNode name="Eye_Left_Dummy">
<Joint type="fixed">
<DH a="0" d="46.5" theta="0" alpha="-90" units="degree"/>
</Joint>
<Child name="Eye_Left"/>
</RobotNode>
<RobotNode name="Eye_Right_Dummy">
<Joint type="fixed">
<DH a="0" d="-46.5" theta="0" alpha="-90" units="degree"/>
</Joint>
<Child name="Eye_Right"/>
</RobotNode>
<RobotNode name="Eye_Left">
<Joint type="revolute">
<DH theta="0" d="0" a="0" alpha="0" units="degree"/>
<Limits unit="degree" lo="-30" hi="30"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/eye_l.wrl</File>
</Visualization>
<Child name="Lid Left Bottom"/>
<Child name="Lid Left Top"/>
<Child name="EyeLeftCamera"/>
</RobotNode>
<RobotNode name="Eye_Right">
<Joint type="revolute">
<DH theta="0" d="0" a="0" alpha="0" units="degree"/>
<Limits unit="degree" lo="-30" hi="30"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/eye_r.wrl</File>
</Visualization>
<Child name="Lid Right Bottom"/>
<Child name="Lid Right Top"/>
<Child name="EyeRightCamera"/>
</RobotNode>
<RobotNode name="EyeLeftCamera">
<Joint type="fixed">
<PreJointTransform>
<Transform>
<translation x="20" y="0" z="0"/>
<RollPitchYaw roll="0" pitch="90" yaw ="0" units="degree"/>
</Transform>
</PreJointTransform>
</Joint>
</RobotNode>
<RobotNode name="Lid Left Bottom">
<Joint type="revolute">
<Axis x="0" y="1" z="0"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/lid_l_bottom.wrl</File>
</Visualization>
</RobotNode>
<RobotNode name="Lid Left Top">
<Joint type="revolute">
<Axis x="0" y="1" z="0"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/lid_l_top.wrl</File>
</Visualization>
</RobotNode>
<RobotNode name="EyeRightCamera">
<Joint type="fixed">
<PreJointTransform>
<Transform>
<translation x="20" y="0" z="0"/>
<RollPitchYaw roll="0" pitch="90" yaw ="0" units="degree"/>
</Transform>
</PreJointTransform>
</Joint>
</RobotNode>
<RobotNode name="Lid Right Bottom">
<Joint type="revolute">
<Axis x="0" y="1" z="0"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/lid_r_bottom.wrl</File>
</Visualization>
</RobotNode>
<RobotNode name="Lid Right Top">
<Joint type="revolute">
<Axis x="0" y="1" z="0"/>
</Joint>
<Visualization>
<File type="Inventor">fullmodel/lid_r_top.wrl</File>
</Visualization>
</RobotNode>
<RobotNodeSet name="Head" kinematicRoot="Neck_1_Pitch">
<Node name="Neck_1_Pitch"/>
<Node name="Neck_2_Roll"/>
<Node name="Neck_3_Yaw"/>
<Node name="Head_Tilt"/>
<Node name="Cameras"/>
<Node name="Eye_Left"/>
<Node name="Eye_Right"/>
</RobotNodeSet>
<RobotNodeSet name="Neck" kinematicRoot="Neck_1_Pitch">
<Node name="Neck_1_Pitch"/>
<Node name="Neck_2_Roll"/>
<Node name="Neck_3_Yaw"/>
<Node name="Head_Tilt"/>
</RobotNodeSet>
</Robot>
<?xml version="1.0" encoding="UTF-8" ?>
<Robot Type="ArmarIII LeftArm" RootNode="Left Arm Base">
<RobotNode name="Left Arm Base">
<!-- Trafo BTo0; COS 0; DOF q1 -->
<Transform>
<DH a="0" d="0" theta="-90" alpha="90" units="degree"/>
</Transform>
<Child name="Shoulder 1 L"/>
</RobotNode>
<RobotNode name="Shoulder 1 L">
<!-- Trafo BTo0; COS 0; DOF q1 -->
<Transform>
<DH a="0" d="0" theta="90" alpha="0" units="degree"/>
</Transform>
<Joint type="revolute">
<!--DH a="0" d="0" theta="90" alpha="90" units="degree"/-->
<axis x="0" y="0" z="1"/>
<Limits unit="degree" lo="-107" hi="42"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="3.65" units="kg" />
</Physics>
<Visualization enable="true">
<File type="Inventor">fullmodel/shoulder_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/shoulder_l.wrl</File>
</CollisionModel>
<PrimitiveModel>
<Primitives>
<Capsule height="80" radius="120">
<Transform>
<Translation x="0" y="0" z="-90" />
<rpy roll="90" pitch="0" yaw="00" unit="degree"/>
</Transform>
</Capsule>
</Primitives>
</PrimitiveModel>
<Child name="Shoulder 2 L"/>
</RobotNode>
<RobotNode name="Shoulder 2 L">
<!-- Trafo 0To1; COS 1; DOF q2 -->
<Transform>
<DH a="0" d="0" theta="0" alpha="90" units="degree"/>
<DH a="0" d="0" theta="75" alpha="0" units="degree"/>
</Transform>
<Joint type="revolute">
<!--DH a="0" d="0" theta="75" alpha="90" units="degree"/-->
<axis x="0" y="0" z="-1"/>
<Limits unit="degree" lo="-14" hi="95"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="2.5" units="kg" />
</Physics>
<Visualization enable="true">
<File type="Inventor">fullmodel/shoulder2_l_rot.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/shoulder2_l_rot.wrl</File>
</CollisionModel>
<PrimitiveModel>
<Primitives>
<Capsule height="310" radius="50">
<Transform>
<Translation x="0" y="150" z="0" />
</Transform>
</Capsule>
</Primitives>
</PrimitiveModel>
<Child name="Upperarm L"/>
</RobotNode>
<RobotNode name="Upperarm L">
<!-- Trafo 1To2; COS 2; DOF q3 -->
<Transform>
<DH a="0" d="0" theta="0" alpha="90" units="degree"/>
<DH a="0" d="0" theta="-90" alpha="0" units="degree"/>
</Transform>
<Joint type="revolute">
<!--DH a="20" d="-310" theta="-90" alpha="90" units="degree"/-->
<axis x="0" y="0" z="-1"/>
<Limits unit="degree" lo="-70" hi="70"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="1.55685000" units="kg" />
<IgnoreCollision name="Shoulder 1 L"/>
</Physics>
<Visualization enable="true">
<File type="Inventor">fullmodel/upperarm_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/upperarm_l.wrl</File>
</CollisionModel>
<Child name="Elbow L"/>
</RobotNode>
<RobotNode name="Elbow L">
<Transform>
<DH a="20" d="-310" theta="0" alpha="90" units="degree"/>
<DH a="0" d="0" theta="90" alpha="0" units="degree"/>
</Transform>
<Joint type="revolute">
<!--DH a="0" d="-7.5" theta="90" alpha="-90" units="degree"/-->
<axis x="0" y="0" z="1"/>
<Limits unit="degree" lo="-90" hi="19"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
<File type="Inventor">fullmodel/elbow_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/elbow_l.wrl</File>
</CollisionModel>
<Physics>
<CoM location="Joint"/>
<Mass value="1.15744000" units="kg" />
</Physics>
<Child name="Underarm L"/>
</RobotNode>
<RobotNode name="Underarm L">
<Transform>
<DH a="0" d="-7.5" theta="0" alpha="-90" units="degree"/>
<DH a="0" d="0" theta="90" alpha="0" units="degree"/>
</Transform>
<Joint type="revolute">
<!--DH a="0" d="-240" theta="90" alpha="-90" units="degree"/-->
<axis x="0" y="0" z="-1"/>
<!--Limits unit="degree" lo="-57.29" hi="174.48"/-->
<Limits unit="degree" lo="-90" hi="158"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/underarm_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/underarm_l.wrl</File>
</CollisionModel>
<PrimitiveModel>
<Primitives>
<Capsule height="240" radius="50">
<Transform>
<Translation x="0" y="0" z="-110" />
<rpy roll="90" pitch="0" yaw="0" unit="degree"/>
</Transform>
</Capsule>
</Primitives>
</PrimitiveModel>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="2.26566087" units="kg" />
</Physics>
<Child name="Wrist 1 L"/>
</RobotNode>
<RobotNode name="Wrist 1 L">
<Transform>
<DH a="0" d="-240" theta="0" alpha="-90" units="degree"/>
<DH a="0" d="0" theta="-90" alpha="0" units="degree"/>
</Transform>
<Joint type="revolute">
<!--DH a="0" d="0" theta="-90" alpha="-90" units="degree"/-->
<axis x="0" y="0" z="-1"/>
<Limits unit="degree" lo="-29" hi="30"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="1.29945309" units="kg" />
</Physics>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
<File type="Inventor">fullmodel/wrist1_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/wrist1_l.wrl</File>
</CollisionModel>
<Child name="Wrist 2 L"/>
</RobotNode>
<RobotNode name="Wrist 2 L">
<Transform>
<DH a="0" d="0" theta="0" alpha="-90" units="degree"/>
<DH a="0" d="0" theta="-90" alpha="0" units="degree"/>
</Transform>
<Joint type="revolute">
<!--DH a="0" d="0" theta="-90" alpha="90" units="degree"/-->
<axis x="0" y="0" z="1"/>
<Limits unit="degree" lo="-38" hi="44"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="3000"/>
</Joint>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
<File type="Inventor">fullmodel/wrist2_l.wrl</File>
</Visualization>
<!-- bullet doesn't like two models connected with a fixed joint -> disable this collisison model and just use the hand palm model-->
<!--CollisionModel>
<File type="Inventor">convexModel/wrist2_l.wrl</File>
</CollisionModel>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="2.59945309" units="kg" />
<IgnoreCollision name="Underarm L"/>
</Physics-->
<Sensor type="forcetorque" name="FT L">
<!--Transform>
<Translation x="0" y="-40" z="0"/>
</Transform-->
</Sensor>
<Child name="EndArmL"/>
</RobotNode>
<!--RobotNode name="FTSensorL">
<Transform>
<Translation x="0" y="-40" z="0"/>
</Transform>
<Sensor type="forcetorque"/>
<Child name="EndArmL"/>
</RobotNode-->
<RobotNode name="EndArmL">
<Transform>
<Translation x="0" y="-40" z="0"/>
<DH a="0" d="0" theta="0" alpha="90" units="degree"/>
</Transform>
<Visualization enable="false">
<CoordinateAxis type="Inventor" enable="true" scaling="2"/>
</Visualization>
<ChildFromRobot>
<File importEEF="true">ArmarIII-LeftHand.xml</File>
</ChildFromRobot>
</RobotNode>
<RobotNodeSet name="LeftArm" kinematicRoot="Left Arm Base" tcp="TCP L">
<Node name="Shoulder 1 L"/>
<Node name="Shoulder 2 L"/>
<Node name="Upperarm L"/>
<Node name="Elbow L"/>
<Node name="Underarm L"/>
<Node name="Wrist 1 L"/>
<Node name="Wrist 2 L"/>
</RobotNodeSet>
<RobotNodeSet name="LeftArmElbow" kinematicRoot="Left Arm Base" tcp="Upperarm L">
<Node name="Shoulder 1 L"/>
<Node name="Shoulder 2 L"/>
<Node name="Upperarm L"/>
</RobotNodeSet>
<RobotNodeSet name="LeftArmColModel" kinematicRoot="Left Arm Base" tcp="TCP L">
<Node name="Upperarm L"/>
<Node name="Underarm L"/>
<Node name="Wrist 2 L"/>
</RobotNodeSet>
<RobotNodeSet name="LeftArmHandColModel" kinematicRoot="Left Arm Base" tcp="TCP L">
<Node name="Upperarm L"/>
<Node name="Underarm L"/>
<Node name="Hand Palm 1 L"/>
<Node name="Hand Palm 2 L"/>
<Node name="Thumb L J0"/>
<Node name="Thumb L J1"/>
<Node name="Index L J0"/>
<Node name="Index L J1"/>
<Node name="Middle L J0"/>
<Node name="Middle L J1"/>
<Node name="Ring L J0"/>
<Node name="Ring L J1"/>
<Node name="Pinky L J0"/>
<Node name="Pinky L J1"/>
</RobotNodeSet>
</Robot>
<?xml version="1.0" encoding="UTF-8" ?>
<Robot Type="ArmarIII LeftArm" RootNode="Left Arm Base">
<RobotNode name="Left Arm Base"> <!-- Trafo BTo0; COS 0; DOF q1 -->
<Joint type="fixed">
<DH a="0" d="0" theta="-90" alpha="90" units="degree"/>
</Joint>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
</Visualization>
<Child name="Shoulder 1 L"/>
</RobotNode>
<RobotNode name="Shoulder 1 L"> <!-- Trafo BTo0; COS 0; DOF q1 -->
<Joint type="revolute">
<DH a="0" d="0" theta="90" alpha="90" units="degree"/>
<Limits unit="degree" lo="-106.91" hi="42.8"/>
</Joint>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="3.65" units="kg" />
</Physics>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
<File type="Inventor">fullmodel/shoulder_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">collisionModel/shoulder_l.wrl</File>
</CollisionModel>
<Child name="Shoulder 2 L"/>
</RobotNode>
<RobotNode name="Shoulder 2 L"> <!-- Trafo 0To1; COS 1; DOF q2 -->
<Joint type="revolute">
<DH a="0" d="0" theta="75" alpha="90" units="degree"/>
<Limits unit="degree" lo="-94.62" hi="13.85"/> <!-- ?! -->
</Joint>
<!--Physics>
<CoM location="Joint"/>
<Mass value="2.54491000" units="kg" />
</Physics-->
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
<File type="Inventor">fullmodel/shoulder2_l_rot.wrl</File>
</Visualization>
<Child name="Upperarm L"/>
</RobotNode>
<RobotNode name="Upperarm L"> <!-- Trafo 1To2; COS 2; DOF q3 -->
<Joint type="revolute">
<DH a="20" d="-310" theta="-90" alpha="90" units="degree"/>
<Limits unit="degree" lo="-69.65" hi="108.25"/>
</Joint>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="1.55685000" units="kg" />
</Physics>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
<File type="Inventor">fullmodel/upperarm_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">collisionModel/upperarm_l.wrl</File>
</CollisionModel>
<Child name="Elbow L"/>
</RobotNode>
<RobotNode name="Elbow L">
<Joint type="revolute">
<DH a="0" d="-7.5" theta="90" alpha="-90" units="degree"/>
<Limits unit="degree" lo="-122.96" hi="19.14"/>
</Joint>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
<File type="Inventor">fullmodel/elbow_l.wrl</File>
</Visualization>
<!--Physics>
<CoM location="Joint"/>
<Mass value="1.15744000" units="kg" />
</Physics-->
<!-- TODO elbow_l.wrl does not exist (currently not needed)-->
<!--<CollisionModel>-->
<!--<File type="Inventor">collisionModel/elbow_l.wrl</File>-->
<!--</CollisionModel>-->
<Child name="Underarm L"/>
</RobotNode>
<RobotNode name="Underarm L">
<Joint type="revolute">
<DH a="0" d="-240" theta="90" alpha="-90" units="degree"/>
<!--Limits unit="degree" lo="-57.29" hi="174.48"/-->
<Limits unit="degree" lo="-108.25" hi="69.65"/>
</Joint>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="2.26566087" units="kg" />
</Physics>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
<File type="Inventor">fullmodel/underarm_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">collisionModel/underarm_l.wrl</File>
</CollisionModel>
<Child name="Wrist 1 L"/>
</RobotNode>
<RobotNode name="Wrist 1 L">
<Joint type="revolute">
<DH a="0" d="0" theta="-90" alpha="-90" units="degree"/>
<Limits unit="degree" lo="-29.36" hi="24.11"/>
</Joint>
<!--Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="1.29945309" units="kg" />
</Physics-->
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
<File type="Inventor">fullmodel/wrist1_l.wrl</File>
</Visualization>
<!--CollisionModel>
<File type="Inventor">collisionModel/wrist1_l.wrl</File>
</CollisionModel-->
<Child name="Wrist 2 L"/>
</RobotNode>
<RobotNode name="Wrist 2 L">
<Joint type="revolute">
<DH a="0" d="0" theta="-90" alpha="90" units="degree"/>
<Limits unit="degree" lo="-38.4" hi="44.32"/>
</Joint>
<Physics>
<CoM location="VisualizationBBoxCenter"/>
<Mass value="2.59945309" units="kg" />
</Physics>
<Visualization enable="true">
<CoordinateAxis type="Inventor" enable="false" scaling="8"/>
<File type="Inventor">fullmodel/wrist2_l.wrl</File>
</Visualization>
<!--CollisionModel>
<File type="Inventor">collisionModel/wrist2_l.wrl</File>
</CollisionModel-->
<ChildFromRobot>
<File importEEF="true">ArmarIII-LeftHand_minColModel.xml</File>
</ChildFromRobot>
</RobotNode>
<RobotNodeSet name="LeftArm" kinematicRoot="Left Arm Base" tcp="TCP L">
<Node name="Shoulder 1 L"/>
<Node name="Shoulder 2 L"/>
<Node name="Upperarm L"/>
<Node name="Elbow L"/>
<Node name="Underarm L"/>
<Node name="Wrist 1 L"/>
<Node name="Wrist 2 L"/>
</RobotNodeSet>
<RobotNodeSet name="LeftArmColModel" kinematicRoot="Left Arm Base" tcp="TCP L">
<Node name="Upperarm L"/>
<Node name="Underarm L"/>
<Node name="Wrist 2 L"/>
</RobotNodeSet>
<RobotNodeSet name="LeftArmHandColModel" kinematicRoot="Left Arm Base" tcp="TCP L">
<Node name="Upperarm L"/>
<Node name="Underarm L"/>
<Node name="Hand Palm 1 L"/>
<Node name="Hand Palm 2 L"/>
<Node name="Thumb L J0"/>
<Node name="Thumb L J1"/>
<Node name="Index L J0"/>
<Node name="Index L J1"/>
<Node name="Middle L J0"/>
<Node name="Middle L J1"/>
<Node name="Ring L J0"/>
<Node name="Ring L J1"/>
<Node name="Pinky L J0"/>
<Node name="Pinky L J1"/>
</RobotNodeSet>
</Robot>
<?xml version="1.0" encoding="UTF-8" ?>
<Robot Type="ArmarIII LeftHand" RootNode="Hand L Base">
<RobotNode name="Hand L Base">
<Child name="TCP L"/>
<Child name="GCP L"/>
<Child name="Marker L"/>
<Child name="left_hand_configuration_actual_float"/>
<Child name="Hand Palm 1 L"/>
</RobotNode>
<RobotNode name="TCP L">
<Transform>
<Translation x="0" y="0" z="130"/>
</Transform>
</RobotNode>
<RobotNode name="GCP L">
<Transform>
<Translation X="-40" Y="-20" Z="90"/>
<rollpitchyaw roll="0" pitch="-45" yaw="0" units="degree"/>
</Transform>
</RobotNode>
<RobotNode name="Marker L">
<Transform>
<Translation x="-35" y="45" z="65"/>
</Transform>
<Visualization enable="false">
<CoordinateAxis type="Inventor" enable="true" scaling="1"/>
</Visualization>
</RobotNode>
<RobotNode name="left_hand_configuration_actual_float">
<!--Joint type="revolute">
<Axis x="0" y="0" z="1"/>
<Limits unit="degree" lo="-20" hi="20"/>
</Joint-->
</RobotNode>
<RobotNode name="Hand Palm 1 L">
<Transform>
<Translation x="0" y="0" z="36"/>
</Transform>
<Visualization enable="true">
<File type="Inventor">fullmodel/palm1_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/palm1_l.wrl</File>
</CollisionModel>
<Physics>
<Mass value="800" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
<Child name="Hand Palm 2 L"/>
<Child name="Thumb L"/>
</RobotNode>
<RobotNode name="Hand Palm 2 L">
<Transform>
<Translation x="-8.7" y="13.5" z="29.25"/>
</Transform>
<Joint type="revolute">
<Axis x="0" y="-1" z="0"/>
<Limits unit="degree" lo="-90" hi="90"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/palm2_l.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/palm2_l.wrl</File>
</CollisionModel>
<Physics>
<Mass value="800" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
<Child name="Pinky L"/>
<Child name="Ring L"/>
<Child name="Middle L"/>
<Child name="Index L"/>
</RobotNode>
<RobotNode name="Thumb L">
<Transform>
<Translation x="-48.9" y="0" z="29.25"/>
</Transform>
<Child name="Thumb L J0"/>
</RobotNode>
<RobotNode name="Thumb L J0">
<Joint type="revolute">
<Limits unit="degree" lo="0" hi="180"/>
<Axis x="0" y="1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/thumb_l1.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/thumb_l1.wrl</File>
</CollisionModel>
<Physics>
<Mass value="500" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
<Child name="Thumb L J1"/>
</RobotNode>
<RobotNode name="Thumb L J1">
<Transform>
<Translation x="-40.2" y="0" z="0"/>
</Transform>
<Joint type="revolute">
<Limits unit="degree" lo="0" hi="180"/>
<Axis x="0" y="1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/thumb_l2.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/thumb_l2.wrl</File>
</CollisionModel>
<Physics>
<Mass value="500" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
</RobotNode>
<RobotNode name="Pinky L">
<Transform>
<Translation x="0" y="-73" z="40.4"/>
</Transform>
<Child name="Pinky L J0"/>
</RobotNode>
<RobotNode name="Pinky L J0">
<Joint type="revolute">
<Limits unit="degree" lo="0" hi="180"/>
<Axis x="0" y="-1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/pinky_l1.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/pinky_l1.wrl</File>
</CollisionModel>
<Physics>
<Mass value="500" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
<Child name="Pinky L J1"/>
</RobotNode>
<RobotNode name="Pinky L J1">
<Transform>
<Translation x="0" y="0" z="40.2"/>
</Transform>
<Joint type="revolute">
<Limits unit="degree" lo="0" hi="180"/>
<Axis x="0" y="-1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/pinky_l2.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/pinky_l2.wrl</File>
</CollisionModel>
<Physics>
<Mass value="500" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
</RobotNode>
<RobotNode name="Ring L">
<Transform>
<Translation x="0" y="-51" z="40.4"/>
</Transform>
<Child name="Ring L J0"/>
</RobotNode>
<RobotNode name="Ring L J0">
<Joint type="revolute">
<Limits unit="degree" lo="0" hi="180"/>
<Axis x="0" y="-1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/ring_l1.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/ring_l1.wrl</File>
</CollisionModel>
<Physics>
<Mass value="500" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
<Child name="Ring L J1"/>
</RobotNode>
<RobotNode name="Ring L J1">
<Transform>
<Translation x="0" y="0" z="40.2"/>
</Transform>
<Joint type="revolute">
<Limits unit="degree" lo="0" hi="180"/>
<Axis x="0" y="-1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/ring_l2.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/ring_l2.wrl</File>
</CollisionModel>
<Physics>
<Mass value="500" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
</RobotNode>
<RobotNode name="Middle L">
<Transform>
<Translation x="0" y="-27" z="40.4"/>
</Transform>
<Child name="Middle L J0"/>
</RobotNode>
<RobotNode name="Middle L J0">
<Joint type="revolute">
<Limits unit="degree" lo="0" hi="180"/>
<Axis x="0" y="-1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/middle_l1.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/middle_l1.wrl</File>
</CollisionModel>
<Physics>
<Mass value="500" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
<Child name="Middle L J1"/>
</RobotNode>
<RobotNode name="Middle L J1">
<Transform>
<Translation x="0" y="0" z="40.2"/>
</Transform>
<Joint type="revolute">
<Limits unit="degree" lo="0" hi="180"/>
<Axis x="0" y="-1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/middle_l2.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/middle_l2.wrl</File>
</CollisionModel>
<Physics>
<Mass value="500" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
</RobotNode>
<RobotNode name="Index L">
<Transform>
<Translation x="0" y="0" z="40.2"/>
</Transform>
<Child name="Index L J0"/>
</RobotNode>
<RobotNode name="Index L J0">
<Joint type="revolute">
<Limits unit="degree" lo="0" hi="180"/>
<Axis x="0" y="-1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/index_l1.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/index_l1.wrl</File>
</CollisionModel>
<Physics>
<Mass value="500" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
<Child name="Index L J1"/>
</RobotNode>
<RobotNode name="Index L J1">
<Transform>
<Translation x="0" y="0" z="40.2"/>
</Transform>
<Joint type="revolute">
<Limits unit="degree" lo="0" hi="180"/>
<Axis x="0" y="-1" z="0"/>
<MaxVelocity unit="radian" value="1"/>
<MaxAcceleration value="10"/>
<MaxTorque value="10"/>
</Joint>
<Visualization enable="true">
<File type="Inventor">fullmodel/index_l2.wrl</File>
</Visualization>
<CollisionModel>
<File type="Inventor">convexModel/index_l2.wrl</File>
</CollisionModel>
<Physics>
<Mass value="500" unit="g"/>
<CoM location="VisualizationBBoxCenter"/>
</Physics>
</RobotNode>
<RobotNodeSet name="LeftHandColModel" kinematicRoot="Hand L Base" tcp="TCP L">
<Node name="Hand Palm 1 L"/>
<Node name="Hand Palm 2 L"/>
<Node name="Thumb L J0"/>
<Node name="Thumb L J1"/>
<Node name="Index L J0"/>
<Node name="Index L J1"/>
<Node name="Middle L J0"/>
<Node name="Middle L J1"/>
<Node name="Ring L J0"/>
<Node name="Ring L J1"/>
<Node name="Pinky L J0"/>
<Node name="Pinky L J1"/>
</RobotNodeSet>
<RobotNodeSet name="LeftHandJoints" kinematicRoot="Hand L Base" tcp="TCP L">
<Node name="Thumb L J0"/>
<Node name="Thumb L J1"/>
<Node name="Index L J0"/>
<Node name="Index L J1"/>
<Node name="Middle L J0"/>
<Node name="Middle L J1"/>
<Node name="Ring L J0"/>
<Node name="Ring L J1"/>
<Node name="Pinky L J0"/>
<Node name="Pinky L J1"/>
</RobotNodeSet>
<Endeffector name="TCP L" base="Hand L Base" tcp="TCP L" gcp="GCP L">
<Preshape name="Open Preshape">
<Node name="Thumb L J0" unit="radian" value="0"/>
<Node name="Thumb L J1" unit="radian" value="0"/>
<Node name="Index L J0" unit="radian" value="0"/>
<Node name="Index L J1" unit="radian" value="0"/>
<Node name="Middle L J0" unit="radian" value="0"/>
<Node name="Middle L J1" unit="radian" value="0"/>
<Node name="Ring L J0" unit="radian" value="0"/>
<Node name="Ring L J1" unit="radian" value="0"/>
<Node name="Pinky L J0" unit="radian" value="0"/>
<Node name="Pinky L J1" unit="radian" value="0"/>
</Preshape>
<Preshape name="Close Preshape">
<Node name="Thumb L J0" unit="radian" value="1"/>
<Node name="Thumb L J1" unit="radian" value="1"/>
<Node name="Index L J0" unit="radian" value="1"/>
<Node name="Index L J1" unit="radian" value="1"/>
<Node name="Middle L J0" unit="radian" value="1"/>
<Node name="Middle L J1" unit="radian" value="1"/>
<Node name="Ring L J0" unit="radian" value="1"/>
<Node name="Ring L J1" unit="radian" value="1"/>
<Node name="Pinky L J0" unit="radian" value="1"/>
<Node name="Pinky L J1" unit="radian" value="1"/>
</Preshape>
<Static>
<Node name="Hand Palm 1 L"/>
<Node name="Hand Palm 2 L"/>
</Static>
<Actor name="Thumb Left">
<Node name="Thumb L J0" considerCollisions="Actors"/>
<Node name="Thumb L J1" considerCollisions="All"/>
</Actor>
<Actor name="Index Left">
<Node name="Index L J0" considerCollisions="Actors"/>
<Node name="Index L J1" considerCollisions="All"/>
</Actor>
<Actor name="Middle Left">
<Node name="Middle L J0" considerCollisions="Actors"/>
<Node name="Middle L J1" considerCollisions="All"/>
</Actor>
<Actor name="Ring Left">
<Node name="Ring L J0" considerCollisions="Actors"/>
<Node name="Ring L J1" considerCollisions="All"/>
</Actor>
<Actor name="Pinky Left">
<Node name="Pinky L J0" considerCollisions="Actors"/>
<Node name="Pinky L J1" considerCollisions="All"/>
</Actor>
</Endeffector>
</Robot>