Skip to content

Commit

Permalink
Add configuration file for XPRIZE demo Feb 2021 (#47)
Browse files Browse the repository at this point in the history
* First test with iCubGenova09

* Add the xprizeDemo.xml application

* add configuration files for iCubGenova09

* Some fixes after testing on the robot.

* Using 1 channel for the microphone of the operator.

This allows using the microphone in the oculus rift.

* Added visualizer to the xprize demo.

* Add stop walking option in the oculus module

* Tune oculus camera paramters

* Tune scale_X and scale_Y in virtualizer module

* fixes on yarpmanager application to run first xprize video (Feb 2nd)

* Apply suggestions from code review

Co-authored-by: Stefano Dafarra <[email protected]>

* Update leftHandRetargetingParams.ini

* Update rightHandRetargetingParams.ini

* Rename xprizeDemo.xml to xprizeDemoVirtualizerXsensGlove.xml

Co-authored-by: icub <[email protected]>
Co-authored-by: Kourosh Darvish <[email protected]>
Co-authored-by: Stefano Dafarra <[email protected]>
  • Loading branch information
4 people committed Mar 2, 2021
1 parent 42480ba commit 076ecab
Show file tree
Hide file tree
Showing 13 changed files with 419 additions and 2 deletions.
18 changes: 18 additions & 0 deletions app/robots/iCubGenova09/XsensRetargetingWalking.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name XsensRetargeting
samplingTime 0.01
robot icub
# if the following is enabled we will use smoothing with smoothingTime value (default is true)
useSmoothing 0
smoothingTime 0.25
# The max difference (threshold) of a joint value coming from the human (rad)
jointDifferenceThreshold 0.5
wholeBodyJointsPort /HumanStateWrapper/state:i
controllerJointsPort /jointPosition:o
controllerCoMPort /CoM:o

# ROBOT JOINT LIST (Notice the order of the joint list is not wrong)
# Indeed they are written according to the joint order of the walking-coordinator
joints_list ("neck_pitch", "neck_roll", "neck_yaw",
"torso_pitch", "torso_roll", "torso_yaw",
"l_shoulder_pitch", "l_shoulder_roll", "l_shoulder_yaw", "l_elbow", "l_wrist_prosup", "l_wrist_pitch", "l_wrist_yaw",
"r_shoulder_pitch", "r_shoulder_roll", "r_shoulder_yaw", "r_elbow", "r_wrist_prosup", "r_wrist_pitch", "r_wrist_yaw")
19 changes: 19 additions & 0 deletions app/robots/iCubGenova09/XsensRetargetingYoga.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name XsensRetargeting
samplingTime 0.01
robot icub
# if the following is enabled we will use smoothing with smoothingTime value (default is true)
useSmoothing 1
smoothingTime 0.25
# The max difference (threshold) of a joint value coming from the human (rad)
jointDifferenceThreshold 0.5
wholeBodyJointsPort /HumanStateWrapper/state:i
controllerJointsPort /jointPosition:o
controllerCoMPort /CoM:o

# ROBOT JOINT LIST (Notice the order of the joint list is not wrong)
# Indeed they are written according to the joint order of the yoga-retargeting
joints_list ( "torso_pitch", "torso_roll", "torso_yaw",
"l_shoulder_pitch", "l_shoulder_roll", "l_shoulder_yaw", "l_elbow",
"r_shoulder_pitch", "r_shoulder_roll", "r_shoulder_yaw", "r_elbow",
"l_hip_pitch", "l_hip_roll", "l_hip_yaw", "l_knee", "l_ankle_pitch", "l_ankle_roll",
"r_hip_pitch", "r_hip_roll", "r_hip_yaw", "r_knee", "r_ankle_pitch", "r_ankle_roll")
8 changes: 8 additions & 0 deletions app/robots/iCubGenova09/headRetargetingParams.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
remote_control_boards ("head")
# Notice the order of the joint list is not wrong.
# Indeed they are written according to the joint order of the icub-neck
joints_list ("neck_pitch", "neck_roll", "neck_yaw")

smoothingTime 1.0
PreparationSmoothingTime 3.0
PreparationJointReferenceValues (0.0 , 0.0 , 0.0)
6 changes: 6 additions & 0 deletions app/robots/iCubGenova09/leftFingersRetargetingParams.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
remote_control_boards ("left_arm")
joints_list ("l_thumb_proximal", "l_thumb_distal", "l_index_proximal", "l_index-distal", "l_middle-proximal", "l_middle-distal", "l_little-fingers")

useVelocity 1

fingersScaling (1, 3.5, 2, 3.5, 1, 3.5, 5)
17 changes: 17 additions & 0 deletions app/robots/iCubGenova09/leftHandRetargetingParams.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# additional rotations
# the following rotation map the hand oculus frame and the hand robot frame
handOculusFrame_R_handRobotFrame ((0.0 0.0 -1.0), (-1.0 0.0 0.0), (0.0 1.0 0.0))

# the following rotation map the teleoperation frame and the teleoperation robot
# frame the Teleoperation robot frame chosen is "imu_frame" and according to iCub
# CAD has:
# The z-axis is parallel to gravity but pointing upwards.
# The x-axis points behind the robot.
# The y-axis points laterally and is chosen according to the right-hand rule.
# the Teleoperation frame is attached to the virtualizer and the origin is the
# same oculus inertial frame. In other words:
# The z-axis is parallel to gravity but pointing upwards
# The x-axis points forward
# The y-axis points laterally and is chosen according to the right-hand rule.
# So the rotation matrix is simply given by Rotz(pi)
teleoperationRobotFrame_R_teleoperationFrame ((1.0 0.0 0.0), (0.0 1.0 0.0), (0.0 0.0 1.0))
60 changes: 60 additions & 0 deletions app/robots/iCubGenova09/oculusConfig.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name oculusRetargeting

# ports
leftHandPosePort /leftHandPose:o
rightHandPosePort /rightHandPose:o
playerOrientationPort /playerOrientation:i
rpcWalkingPort_name /walkingRpc
rpcVirtualizerPort_name /virtualizerRpc

[GENERAL]
samplingTime 0.01
robot icub
useXsens 1
enableLogger 0
enableMoveRobot 1
# the following value is a threshold used to update the teleoperation frame position
# when the human rotates inside the virtualizer
playerOrientationThreshold 0.2

# For kinematic scaling for task-space retargeting
humanHeight 1.76
# The robot arm span is the distance between the left and right index fingertips when the arms are aligned, i.e. T pose.
robotArmSpan 1.0
# If resetCameras !=0, the module will attempt to reset the cameras during the initialization phase.
resetCameras 1
# The leftCameraPort and rightCameraPort are needed only if resetCameras is 1
leftCameraPort /icub/cam/left
rightCameraPort /icub/cam/right


# include head parameters
[include HEAD_RETARGETING "headRetargetingParams.ini"]

# include fingers parameters
[include LEFT_FINGERS_RETARGETING "leftFingersRetargetingParams.ini"]
[include RIGHT_FINGERS_RETARGETING "rightFingersRetargetingParams.ini"]

# include hand parameters
[include LEFT_HAND_RETARGETING "leftHandRetargetingParams.ini"]
[include RIGHT_HAND_RETARGETING "rightHandRetargetingParams.ini"]

# include Torso parameters [iff using Xsens]
[include TORSO_RETARGETING "torsoRetargeting.ini"]

[OCULUS]
root_frame_name mobile_base_body_link
left_hand_frame_name loculus
right_hand_frame_name roculus
oculusOrientationPort /oculusOrientation:i
oculusPositionPort /oculusPosition:i

move_icub_using_joypad 1
deadzone 0.3
fullscale 1.0
scale_X 5.0
scale_Y 5.0
use_left 1

# root_frame_name oculusworld
# head_frame_name headoculus
6 changes: 6 additions & 0 deletions app/robots/iCubGenova09/rightFingersRetargetingParams.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
remote_control_boards ("right_arm")
joints_list ("r_thumb_proximal", "r_thumb_distal", "r_index_proximal", "r_index-distal", "r_middle-proximal", "r_middle-distal", "r_little-fingers")

useVelocity 1

fingersScaling (1, 3.5, 2, 3.5, 1, 3.5, 5)
17 changes: 17 additions & 0 deletions app/robots/iCubGenova09/rightHandRetargetingParams.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# additional rotations
# the following rotation map the hand oculus frame and the hand robot frame
handOculusFrame_R_handRobotFrame ((0.0 0.0 -1.0), (-1.0 0.0 0.0), (0.0 1.0 0.0))

# the following rotation map the teleoperation frame and the teleoperation robot
# frame the Teleoperation robot frame chosen is "imu_frame" and according to iCub
# CAD has:
# The z-axis is parallel to gravity but pointing upwards.
# The x-axis points behind the robot.
# The y-axis points laterally and is chosen according to the right-hand rule.
# the Teleoperation frame is attached to the virtualizer and the origin is the
# same oculus inertial frame. In other words:
# The z-axis is parallel to gravity but pointing upwards
# The x-axis points forward
# The y-axis points laterally and is chosen according to the right-hand rule.
# So the rotation matrix is simply given by Rotz(pi)
teleoperationRobotFrame_R_teleoperationFrame ((1.0 0.0 0.0), (0.0 1.0 0.0), (0.0 0.0 1.0))
2 changes: 2 additions & 0 deletions app/robots/iCubGenova09/torsoRetargeting.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
remote_control_boards ("torso")
joints_list ("torso_pitch", "torso_roll", "torso_yaw")
Loading

0 comments on commit 076ecab

Please sign in to comment.