From 03bb50f0cfb469f39fbe943c961c24df16530373 Mon Sep 17 00:00:00 2001 From: Jacopo Date: Tue, 24 Feb 2026 11:06:23 +0000 Subject: [PATCH 1/2] Add walking files for ergoCubSN003 --- .../autonomous/inverseKinematics.ini | 28 ++++++ .../autonomous/jointRetargeting.ini | 28 ++++++ .../autonomous/qpInverseKinematicsBlf.ini | 31 +++++++ .../dcm_walking/autonomous/robotControl.ini | 36 ++++++++ .../autonomous/tasks/regularization.ini | 36 ++++++++ .../autonomous/tasks/retargeting.ini | 37 ++++++++ .../dcm_walking/autonomous/tasks/torso.ini | 16 ++++ .../dcm_walking/common/controllerParams.ini | 10 +++ .../common/dcmReactiveControllerParams.ini | 1 + .../dcm_walking/common/forceTorqueSensors.ini | 10 +++ .../dcm_walking/common/forwardKinematics.ini | 18 ++++ .../common/freeSpaceEllipseParams.ini | 31 +++++++ .../dcm_walking/common/globalCoPEvaluator.ini | 14 +++ .../dcm_walking/common/pidParams.ini | 37 ++++++++ .../dcm_walking/common/plannerParams.ini | 87 ++++++++++++++++++ .../dcm_walking/common/transformHelper.ini | 23 +++++ .../dcm_walking/common/transformServer.ini | 9 ++ .../dcm_walking/common/walkingLogger.ini | 1 + .../common/zmpControllerParams.ini | 20 +++++ .../inverseKinematics.ini | 28 ++++++ .../jointRetargeting.ini | 29 ++++++ .../qpInverseKinematicsBlf.ini | 31 +++++++ .../iFeel_joint_retargeting/robotControl.ini | 36 ++++++++ .../tasks/regularization.ini | 31 +++++++ .../tasks/retargeting.ini | 29 ++++++ .../iFeel_joint_retargeting/tasks/torso.ini | 16 ++++ .../joypad_control/inverseKinematics.ini | 49 ++++++++++ .../joypad_control/qpInverseKinematicsBlf.ini | 28 ++++++ .../joypad_control/robotControl.ini | 32 +++++++ .../joypad_control/tasks/regularization.ini | 27 ++++++ .../joypad_control/tasks/torso.ini | 16 ++++ .../ergoCubSN003/dcm_walking_autonomous.ini | 89 +++++++++++++++++++ .../dcm_walking_iFeel_joint_retargeting.ini | 86 ++++++++++++++++++ .../ergoCubSN003/dcm_walking_with_joypad.ini | 78 ++++++++++++++++ 34 files changed, 1078 insertions(+) create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/inverseKinematics.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/jointRetargeting.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/qpInverseKinematicsBlf.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/robotControl.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/regularization.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/retargeting.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/torso.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/controllerParams.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/dcmReactiveControllerParams.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/forceTorqueSensors.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/forwardKinematics.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/freeSpaceEllipseParams.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/globalCoPEvaluator.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/pidParams.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/plannerParams.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/transformHelper.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/transformServer.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/walkingLogger.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/zmpControllerParams.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/inverseKinematics.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/jointRetargeting.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/qpInverseKinematicsBlf.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/robotControl.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/regularization.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/retargeting.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/torso.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/inverseKinematics.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/qpInverseKinematicsBlf.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/robotControl.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/tasks/regularization.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/tasks/torso.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_autonomous.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_iFeel_joint_retargeting.ini create mode 100644 src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_with_joypad.ini diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/inverseKinematics.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/inverseKinematics.ini new file mode 100644 index 000000000..558e9e63f --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/inverseKinematics.ini @@ -0,0 +1,28 @@ +#The left_foot_frame is supposed to have the same orientation of the Inertia frame, which have the z axis pointing upwards, +#the x axis pointing forward and and the y concludes a right-handed frame +left_foot_frame l_sole +right_foot_frame r_sole + +#Remove the following line in order not to consider the +#additional frame +additional_frame neck_2 + +#The additional rotation is defined (by rows) in the Inertia frame. +#Remove the following line to keep the identity as additional rotation +additional_rotation ((1.0 0.0 0.0),(0.0 1.0 0.0),(0.0 0.0 1.0)) + +# solver paramenters +solver-verbosity 0 +# solver_name ma27 +max-cpu-time 20 + +#DEGREES +jointRegularization (0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, + 12.0, 7.0, -12.0, 41.0, 0.0, 0.0, 0.0, + 12.0, 7.0, -12.0, 41.0, 0.0, 0.0, 0.0, + 5.76, 1.61, -0.31, -31.64, -20.52, -1.52, + 5.76, 1.61, -0.31, -31.64, -20.52, -1.52) + +#jointRegularization (0, 15, 0, 0, -29.794, 29.97, 0.00, 44.977, -29.794, 29.97, 0.00, 44.977, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351) +#jointRegularization (15, 0, 0, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/jointRetargeting.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/jointRetargeting.ini new file mode 100644 index 000000000..6d22ce374 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/jointRetargeting.ini @@ -0,0 +1,28 @@ +approaching_phase_duration 4.0 +hde_port_name /humanState:i +data_arrived_timeout 1.0 + +[HAND_RETARGETING] + + +[JOINT_RETARGETING] +## List of the retargeting joint. This list must be the same or a subset of the +## "joints_list" in robotControl.ini. The order of the joints should be choseen +## accordingly to the order of the joints received in the +## "joint_retargeting_port_name" port +retargeting_joint_list ("camera_tilt", "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_yaw", "l_wrist_roll", "l_wrist_pitch", + "r_shoulder_pitch", "r_shoulder_roll", "r_shoulder_yaw", "r_elbow", "r_wrist_yaw", "r_wrist_roll", "r_wrist_pitch") + +smoothing_time_approaching 2.0 +smoothing_time_walking 0.03 + +[VIRTUALIZER] +robot_orientation_port_name /torsoYaw:o + +[COM_RETARGETING] +smoothing_time_approaching 2.0 +smoothing_time_walking 1.0 +com_height_scaling_factor 0.5 +variation_range (-0.05 0.0) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/qpInverseKinematicsBlf.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/qpInverseKinematicsBlf.ini new file mode 100644 index 000000000..b16519e48 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/qpInverseKinematicsBlf.ini @@ -0,0 +1,31 @@ +use_feedforward_term_for_joint_retargeting false + +[IK] +robot_velocity_variable_name "robot_velocity" + +[COM_TASK] +robot_velocity_variable_name "robot_velocity" +kp_linear 2.0 +mask (true, true, false) + +[ROOT_TASK] +robot_velocity_variable_name "robot_velocity" +frame_name "root_link" +kp_linear 0.5 +mask (false, false, true) + +[RIGHT_FOOT_TASK] +robot_velocity_variable_name "robot_velocity" +frame_name "r_sole" +kp_linear 7.0 +kp_angular 5.0 + +[LEFT_FOOT_TASK] +robot_velocity_variable_name "robot_velocity" +frame_name "l_sole" +kp_linear 7.0 +kp_angular 5.0 + +[include TORSO_TASK "./tasks/torso.ini"] +[include JOINT_REGULARIZATION_TASK "./tasks/regularization.ini"] +[include JOINT_RETARGETING_TASK "./tasks/retargeting.ini"] diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/robotControl.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/robotControl.ini new file mode 100644 index 000000000..fbcd01641 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/robotControl.ini @@ -0,0 +1,36 @@ +robot ergocub + + +joints_list ("camera_tilt", "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_yaw", "l_wrist_roll", "l_wrist_pitch", + "r_shoulder_pitch", "r_shoulder_roll", "r_shoulder_yaw", "r_elbow", "r_wrist_yaw", "r_wrist_roll", "r_wrist_pitch", + "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") + +remote_control_boards ("head", "torso", "left_arm", "right_arm", "left_leg", "right_leg") + +# filters +# if use_*_filter is equal to 0 the low pass filters are not used +use_joint_velocity_filter 0 +joint_velocity_cut_frequency 10.0 + +use_wrench_filter 0 +wrench_cut_frequency 10.0 + + +# if true the joint is in stiff mode if false the joint is in compliant mode +joint_is_stiff_mode (true, true, true, true, + true, true, true, + true, true, true, true, true, true, true, + true, true, true, true, true, true, true, + true, true, true, true, true, true, + true, true, true, true, true, true) + +# if true a good joint traking is considered mandatory +good_tracking_required (false, false, false, false + true, true, true, + false, false, true, true, false, false, false, + false, false, true, true, false, false, false, + true, true, true, true, true, true, + true, true, true, true, true, true) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/regularization.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/regularization.ini new file mode 100644 index 000000000..47fdc9b78 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/regularization.ini @@ -0,0 +1,36 @@ +robot_velocity_variable_name "robot_velocity" +kp (5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0) + +states ("STANCE", "WALKING") +sampling_time 0.001 +settling_time 5.0 + +[STANCE] +name "stance" +weight (0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) + +[WALKING] +name "walking" +# weight (0.0, 0.0, 0.0, +# 2.0, 2.0, 2.0, +# 2.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0, +# 2.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0, +# 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, +# 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) + +weight (0.0, 0.0, 0.0, 0.0, + 2.0, 2.0, 2.0, + 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/retargeting.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/retargeting.ini new file mode 100644 index 000000000..af2c08826 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/retargeting.ini @@ -0,0 +1,37 @@ +robot_velocity_variable_name "robot_velocity" +kp (5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0) + +states ("STANCE", "WALKING") +sampling_time 0.001 +settling_time 5.0 + +[STANCE] +name "stance" +weight (2.0, 2.0, 2.0, 2.0, + 2.0, 2.0, 2.0, + 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) + +[WALKING] +name "walking" +# weight (2.0, 2.0, 2.0, +# 0.0, 0.0, 0.0, +# 0.0, 0.0, 0.0, 2.0, 2.0, 5.0, 5.0, +# 0.0, 0.0, 0.0, 2.0, 2.0, 5.0, 5.0, +# 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, +# 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) + + +weight (2.0, 2.0, 2.0, 2.0, + 0.0, 0.0, 0.0, + 2.0, 0.0, 2.0, 2.0, 2.0, 2.0, 2.0, + 2.0, 0.0, 2.0, 2.0, 2.0, 2.0, 2.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/torso.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/torso.ini new file mode 100644 index 000000000..dc626bbb2 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/autonomous/tasks/torso.ini @@ -0,0 +1,16 @@ +robot_velocity_variable_name "robot_velocity" +frame_name "chest" +kp_angular 5.0 + + +states ("STANCE", "WALKING") +sampling_time 0.001 +settling_time 3.0 + +[STANCE] +name "stance" +weight (0.0, 0.0, 0.0) + +[WALKING] +name "walking" +weight (5.0, 5.0, 5.0) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/controllerParams.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/controllerParams.ini new file mode 100644 index 000000000..112d2aa80 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/controllerParams.ini @@ -0,0 +1,10 @@ +controllerHorizon 2 + +stateWeightTriplets ((0,0,7500), (1,1,7500)) +inputWeightTriplets ((0,0,9000000), (1,1,9000000)) + +#Foot Dimensions x_min x_max y_min y_max +foot_size ((-0.12 0.12), (-0.05 0.05)) +initial_zmp_position (0.0 0.0) + +convex_hull_tolerance 0.05 diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/dcmReactiveControllerParams.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/dcmReactiveControllerParams.ini new file mode 100644 index 000000000..0e1b4a677 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/dcmReactiveControllerParams.ini @@ -0,0 +1 @@ +kDCM 1.2 diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/forceTorqueSensors.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/forceTorqueSensors.ini new file mode 100644 index 000000000..6916c0356 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/forceTorqueSensors.ini @@ -0,0 +1,10 @@ +# name of the left and right feet wrench ports +left_foot_wrench_input_port_name ("/left_foot_front/cartesianEndEffectorWrench:i", + "/left_foot_rear/cartesianEndEffectorWrench:i") +left_foot_wrench_output_port_name ("/wholeBodyDynamics/left_foot_front/cartesianEndEffectorWrench:o", + "/wholeBodyDynamics/left_foot_rear/cartesianEndEffectorWrench:o") + +right_foot_wrench_input_port_name ("/right_foot_front/cartesianEndEffectorWrench:i", + "/right_foot_rear/cartesianEndEffectorWrench:i") +right_foot_wrench_output_port_name ("/wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o", + "/wholeBodyDynamics/right_foot_rear/cartesianEndEffectorWrench:o") diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/forwardKinematics.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/forwardKinematics.ini new file mode 100644 index 000000000..69b30a70d --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/forwardKinematics.ini @@ -0,0 +1,18 @@ +#the x axis pointing forward the z axis pointing upward and the y concludes a right-handed frame +left_foot_frame l_sole +right_foot_frame r_sole + +# hand frames +left_hand_frame l_hand_palm +right_hand_frame r_hand_palm + +head_frame head + +root_frame root_link +torso_frame neck_2 + +# filters +# if it is equal to 0 the low pass filters are not used +use_filters 0 + #Hz +cut_frequency 10.0 diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/freeSpaceEllipseParams.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/freeSpaceEllipseParams.ini new file mode 100644 index 000000000..76c2bac05 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/freeSpaceEllipseParams.ini @@ -0,0 +1,31 @@ +[ELLIPSE_METHOD_SETTINGS] +#This factor affects the reference of the unicycle. It allows switching between the specified ellipse and a smaller one to +#take into account the robot dimensions. If 0, it always considers only the specified ellipse. If greater than zero, the reference +#to the unicycle will be projected in a smaller ellipse as soon as the unicycle is no more perpendicular to the ellipse. +#Greater values make this behavior more sensitive. +conservative_factor 2.0 + +#This offset is subtracted from the semi_minor_axis and semi_major_axis to obtain the inner ellipse +inner_ellipse_offset 0.5 + +[ELLIPSE_MANAGER_SETTINGS] +port_name freeSpaceEllipse:in + +use_initial_ellipse 0 + +[INITIAL_ELLIPSE] + +#Axis along the x direction +semi_major_axis 1.0 + +#Axis along the y direction +semi_minor_axis 1.0 + +#Rotation around the z axis +angle 0.0 + +#x coordinate of the center +center_x 0.1 + +#y coordinate of the center +center_y 0.0 diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/globalCoPEvaluator.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/globalCoPEvaluator.ini new file mode 100644 index 000000000..e0d5edb9f --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/globalCoPEvaluator.ini @@ -0,0 +1,14 @@ +# Minimum force to consider the CoP valid. +minimum_normal_force 1.0 + +# Limit to consider the CoP valid. +# |x| |y| +cop_admissible_limits (0.35, 0.25) + +# Tolerance radius to consider the measured CoP constant. +constant_cop_tolerance 0.000001 + +# Consecutive times in which the CoP remains constant. +# If this limit is reached, the module stops. +# Use a negative value to disable. +constant_cop_max_counter 125 diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/pidParams.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/pidParams.ini new file mode 100644 index 000000000..4571eb3f1 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/pidParams.ini @@ -0,0 +1,37 @@ +# PID handling file + +# All the following phases are those of the left foot. In a specific phase, a joint will have the PIDs specified in the corresponding section. If not, the default will be used (if specified, the original PID otherwise). + +# Possible phases: SWING_LEFT, SWING_RIGHT, SWITCH + +# Each group, except DEFAULT, contains: +# -the field activationPhase with one of the possible phases defined above, +# -the field activationOffset which specified the time advance/delay (if the sign is + it will be a delay) wrt the begin of the phase (OPTIONAL, default 0.0) +# -the field smoothingTime which defines the smoothing time with which the PIDs will be changed (OPTIONAL, default 1.0) + +# if 0 only the default group will be taken into consideration +useGainScheduling 0 + +[DEFAULT] +#NAME P I D +#torso_pitch 5.0 1.0 0.5 +l_knee -18000.0 -1000.0 0.0 +r_knee 18000.0 1000.0 0.0 +l_ankle_pitch -18000.0 -800.0 0.0 +r_ankle_pitch 18000.0 800.0 0.0 +l_ankle_roll -12000.0 -1000.0 0.0 +r_ankle_roll 12000.0 1000.0 0.0 +l_hip_pitch -15000.0 -1500.0 0.0 +r_hip_pitch 15000.0 1500.0 0.0 +l_hip_roll 18000.0 1000.0 0.0 +r_hip_roll -18000.0 -1000.0 0.0 +r_hip_yaw 15000.0 2000.0 0.0 +l_hip_yaw -15000.0 -2000.0 0.0 +# #r_shoulder_pitch -10000.0 -10000.0 0.0 +# #r_shoulder_roll -10000.0 -10000.0 0.0 +# #r_shoulder_yaw -3000.0 -1500.0 0.0 +# #r_elbow 4000.0 4000.0 0.0 +# #l_shoulder_pitch 10000.0 10000.0 0.0 +# #l_shoulder_roll 10000.0 10000.0 0.0 +# #l_shoulder_yaw 3000.0 1500.0 0.0 +# #l_elbow -4000.0 -4000.0 0.0 diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/plannerParams.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/plannerParams.ini new file mode 100644 index 000000000..dd45f9e7a --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/plannerParams.ini @@ -0,0 +1,87 @@ +##Timings +plannerHorizon 3.0 #10.0 + +##Unicycle controller. Available types: personFollowing, direct +controlType direct + +##Unicycle Related Quantities +unicycleGain 10.0 +referencePosition (0.1 0.0) +timeWeight 2.5 +positionWeight 1.0 +slowWhenTurningGain 2.0 +slowWhenBackwardFactor 0.4 +slowWhenSidewaysFactor 0.2 + +# Conservative factors that multiply the unicycle velocity saturations +# computed from the other parameters, like the minStepDuration. +# The first number multiplies the saturation for the linear and lateral +# velocity. The second number multiplies the angular velocity saturation. +saturationFactors (0.7, 0.7) + +##Bounds +#Step length +maxStepLength 0.30 #0.32 +minStepLength 0.01 +maxLengthBackwardFactor 0.8 +#Width +minWidth 0.15 +#Angle Variations in DEGREES +#maxAngleVariation 12.0 +maxAngleVariation 18.0 +minAngleVariation 5.0 +#Timings +maxStepDuration 1.5 +minStepDuration 0.7 + +##Nominal Values +#Width +nominalWidth 0.20 #0.24 +#Height +stepHeight 0.05 +stepLandingVelocity -0.1 +footApexTime 0.5 +comHeightDelta 0.01 +#Timings +nominalDuration 0.9 +lastStepSwitchTime 0.15 +switchOverSwingRatio 0.3 + +#ZMP Delta +leftZMPDelta (0.0 -0.005) +rightZMPDelta (0.0 0.005) + +#Feet cartesian offset on the yaw +leftYawDeltaInDeg 0.0 +rightYawDeltaInDeg 0.0 + +# Last Step DCM Offset +# If it is 0.5 the final DCM will be in the middle of the two footsteps; +# If it is 0 the DCM position coincides with the stance foot ZMP; +# If it is 1 the DCM position coincides with the next foot ZMP position. +lastStepDCMOffset 0.5 + +# Last Step DCM Stillness Percentage +# The percentage of the last step duration in which the DCM is still. +lastStepDCMStillPercentage 0.1 + +#MergePoint +# The ratios of the double support in which it is present a merge point. +# The first number is the ratio at which the merge points begin, the second +# when they ends. +mergePointRatios (0.4, 0.4) + +# pitch delta +pitchDelta 0.0 + +##Should be the first step with the left foot? +swingLeft 0 +startAlwaysSameFoot 1 + +##Remove this line if you don't want to use the minimum jerk trajectory in feet interpolation +# useMinimumJerkFootTrajectory 1 + +##Remove this line if you want to enable the pause conditon +isPauseActive 1 + +additional_chest_rotation ((1.0 0.0 0.0),(0.0 1.0 0.0),(0.0 0.0 1.0)) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/transformHelper.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/transformHelper.ini new file mode 100644 index 000000000..ebcbc5d05 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/transformHelper.ini @@ -0,0 +1,23 @@ +# Parameters to setup the transform server/client + +# Frame wrt which the transforms are published +rootFrame world +# Name of the base frame to be published in the transform server +baseFrame root_link +# Name of the frame used for interpreting the joystick commands +joystickFrame joystick + +# List of additional frames to be published in the transform server +additionalFrames ("l_sole", "r_sole", "realsense_rgb_frame") + +# Parameters for the transform client +device frameTransformClient +filexml_option ftc_yarp_only.xml +ft_server_prefix ftsRobot +ftc_storage_timeout 1.0 +period 0.1 + +# If true, the transform server will be run by the walking module +runServer true + +[include SERVER "./transformServer.ini"] diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/transformServer.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/transformServer.ini new file mode 100644 index 000000000..63be0bb45 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/transformServer.ini @@ -0,0 +1,9 @@ +# This configuration file is useful to start the frameTransformServer +# device within the walking, or to run it externally via +# yarpdev --from dcm_walking/common/transformServer.ini + +device frameTransformServer +filexml_option fts_yarp_only.xml +ft_server_prefix ftsRobot +local_rpc /ftsRobot/rpc +period 0.1 diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/walkingLogger.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/walkingLogger.ini new file mode 100644 index 000000000..11221de29 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/walkingLogger.ini @@ -0,0 +1 @@ +remote "/logger" diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/zmpControllerParams.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/zmpControllerParams.ini new file mode 100644 index 000000000..3a68089ac --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/common/zmpControllerParams.ini @@ -0,0 +1,20 @@ +# remove the following line if you do not want the gain scheduling +useGainScheduling 1 + +smoothingTime 0.05 + +# if the gain scheduling is off only k*_walking parameters are used +# kZMP_walking 1.8 +kZMP_walking 1.3 +kCoM_walking 5.0 + +# kZMP_stance 0.5 +kZMP_stance 0.1 +kCoM_stance 4.0 + +# old parameters +#kZMP 2.0 low velocity reactive +#kZMP 1.9 low velocity MPC + +#kCoM 10.0 low velocity reactive +#kCoM 8.0 low velocity MPC diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/inverseKinematics.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/inverseKinematics.ini new file mode 100644 index 000000000..2d9b1857c --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/inverseKinematics.ini @@ -0,0 +1,28 @@ +#The left_foot_frame is supposed to have the same orientation of the Inertia frame, which have the z axis pointing upwards, +#the x axis pointing forward and and the y concludes a right-handed frame +left_foot_frame l_sole +right_foot_frame r_sole + +#Remove the following line in order not to consider the +#additional frame +additional_frame neck_2 + +#The additional rotation is defined (by rows) in the Inertia frame. +#Remove the following line to keep the identity as additional rotation +additional_rotation ((1.0 0.0 0.0),(0.0 1.0 0.0),(0.0 0.0 1.0)) + +# solver paramenters +solver-verbosity 0 +# solver_name ma27 +max-cpu-time 20 + +#DEGREES +jointRegularization (0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, + 12.0, 7.0, -12.0, 41.0, 0.0, 0.0, 0.0, + 12.0, 7.0, -12.0, 41.0, 0.0, 0.0, 0.0, + 5.76, 1.61, -0.31, -31.64, -20.52, -1.52, + 5.76, 1.61, -0.31, -31.64, -20.52, -1.52) + +#jointRegularization (0, 15, 0, 0, -29.794, 29.97, 0.00, 44.977, -29.794, 29.97, 0.00, 44.977, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351) +#jointRegularization (15, 0, 0, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/jointRetargeting.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/jointRetargeting.ini new file mode 100644 index 000000000..60942fd69 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/jointRetargeting.ini @@ -0,0 +1,29 @@ +approaching_phase_duration 4.0 +hde_port_name /humanState:i +data_arrived_timeout 1.0 + +[HAND_RETARGETING] + + +[JOINT_RETARGETING] +## List of the retargeting joint. This list must be the same or a subset of the +## "joints_list" in robotControl.ini. The order of the joints should be choseen +## accordingly to the order of the joints received in the +## "joint_retargeting_port_name" port +retargeting_joint_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_yaw", "l_wrist_roll", "l_wrist_pitch", + "r_shoulder_pitch", "r_shoulder_roll", "r_shoulder_yaw", "r_elbow", "r_wrist_yaw", "r_wrist_roll", "r_wrist_pitch") + + +smoothing_time_approaching 2.0 +smoothing_time_walking 0.03 + +[VIRTUALIZER] +robot_orientation_port_name /torsoYaw:o + +[COM_RETARGETING] +smoothing_time_approaching 2.0 +smoothing_time_walking 1.0 +com_height_scaling_factor 0.5 +variation_range (-0.1 0.0) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/qpInverseKinematicsBlf.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/qpInverseKinematicsBlf.ini new file mode 100644 index 000000000..b16519e48 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/qpInverseKinematicsBlf.ini @@ -0,0 +1,31 @@ +use_feedforward_term_for_joint_retargeting false + +[IK] +robot_velocity_variable_name "robot_velocity" + +[COM_TASK] +robot_velocity_variable_name "robot_velocity" +kp_linear 2.0 +mask (true, true, false) + +[ROOT_TASK] +robot_velocity_variable_name "robot_velocity" +frame_name "root_link" +kp_linear 0.5 +mask (false, false, true) + +[RIGHT_FOOT_TASK] +robot_velocity_variable_name "robot_velocity" +frame_name "r_sole" +kp_linear 7.0 +kp_angular 5.0 + +[LEFT_FOOT_TASK] +robot_velocity_variable_name "robot_velocity" +frame_name "l_sole" +kp_linear 7.0 +kp_angular 5.0 + +[include TORSO_TASK "./tasks/torso.ini"] +[include JOINT_REGULARIZATION_TASK "./tasks/regularization.ini"] +[include JOINT_RETARGETING_TASK "./tasks/retargeting.ini"] diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/robotControl.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/robotControl.ini new file mode 100644 index 000000000..7c38fb402 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/robotControl.ini @@ -0,0 +1,36 @@ +robot ergocub + + +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_yaw", "l_wrist_roll", "l_wrist_pitch", + "r_shoulder_pitch", "r_shoulder_roll", "r_shoulder_yaw", "r_elbow", "r_wrist_yaw", "r_wrist_roll", "r_wrist_pitch", + "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") + +remote_control_boards ("head", "torso", "left_arm", "right_arm", "left_leg", "right_leg") + +# filters +# if use_*_filter is equal to 0 the low pass filters are not used +use_joint_velocity_filter 0 +joint_velocity_cut_frequency 10.0 + +use_wrench_filter 0 +wrench_cut_frequency 10.0 + + +# if true the joint is in stiff mode if false the joint is in compliant mode +joint_is_stiff_mode (true, true, true, + true, true, true, + true, true, true, true, true, true, true, + true, true, true, true, true, true, true, + true, true, true, true, true, true, + true, true, true, true, true, true) + +# if true a good joint traking is considered mandatory +good_tracking_required (false, false, false + true, true, true, + false, false, true, true, false, false, false, + false, false, true, true, false, false, false, + true, true, true, true, true, true, + true, true, true, true, true, true) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/regularization.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/regularization.ini new file mode 100644 index 000000000..2d219dfa6 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/regularization.ini @@ -0,0 +1,31 @@ +robot_velocity_variable_name "robot_velocity" +kp (5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0) + +states ("STANCE", "WALKING") +sampling_time 0.001 +settling_time 5.0 + +[STANCE] +name "stance" +weight (0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) + +[WALKING] +name "walking" +weight (0.0, 0.0, 0.0, + 2.0, 2.0, 2.0, + 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) + + diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/retargeting.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/retargeting.ini new file mode 100644 index 000000000..086fc9266 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/retargeting.ini @@ -0,0 +1,29 @@ +robot_velocity_variable_name "robot_velocity" +kp (5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0) + +states ("STANCE", "WALKING") +sampling_time 0.001 +settling_time 5.0 + +[STANCE] +name "stance" +weight (2.0, 2.0, 2.0, + 2.0, 2.0, 2.0, + 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) + +[WALKING] +name "walking" +weight (2.0, 2.0, 2.0, + 0.0, 0.0, 0.0, + 2.0, 0.0, 2.0, 2.0, 2.0, 2.0, 2.0, + 2.0, 0.0, 2.0, 2.0, 2.0, 2.0, 2.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) \ No newline at end of file diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/torso.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/torso.ini new file mode 100644 index 000000000..dc626bbb2 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/iFeel_joint_retargeting/tasks/torso.ini @@ -0,0 +1,16 @@ +robot_velocity_variable_name "robot_velocity" +frame_name "chest" +kp_angular 5.0 + + +states ("STANCE", "WALKING") +sampling_time 0.001 +settling_time 3.0 + +[STANCE] +name "stance" +weight (0.0, 0.0, 0.0) + +[WALKING] +name "walking" +weight (5.0, 5.0, 5.0) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/inverseKinematics.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/inverseKinematics.ini new file mode 100644 index 000000000..ef948ede3 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/inverseKinematics.ini @@ -0,0 +1,49 @@ +#The left_foot_frame is supposed to have the same orientation of the Inertia frame, which have the z axis pointing upwards, +#the x axis pointing forward and and the y concludes a right-handed frame +left_foot_frame l_sole +right_foot_frame r_sole + +# #Remove the following line in order not to consider the +# #additional frame +additional_frame chest + +# #The additional rotation is defined (by rows) in the Inertia frame. +#Remove the following line to keep the identity as additional rotation +additional_rotation ((1.0 0.0 0.0),(0.0 1.0 0.0),(0.0 0.0 1.0)) + +# solver paramenters +solver-verbosity 1 +solver_name mumps +max-cpu-time 20 + + +# 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" + + +#DEGREES +# jointRegularization (7, 0.12, -0.01, +# -3.7, 20.0, -13.0, 40.769, +# -3.7, 20.0, -13.0, 40.769, +# 5.76, 1.61, -0.31, -31.64, -20.52, -1.52, +# 5.76, 1.61, -0.31, -31.64, -20.52, -1.52) + +jointRegularization (7, 0.12, -0.01, + 12.0, 7.0, -12.0, 40.769, + 12.0, 7.0, -12.0, 40.769, + 5.76, 1.61, -0.31, -31.64, -20.52, -1.52, + 5.76, 1.61, -0.31, -31.64, -20.52, -1.52) + + +# jointRegularization (7, 0.12, -0.01, +# -70.0, 46.70, 25.0, 40.769, +# -70.0, 46.70, 25.0, 40.769, +# 5.76, 1.61, -0.31, -31.64, -20.52, -1.52, +# 5.76, 1.61, -0.31, -31.64, -20.52, -1.52) + + +#jointRegularization (0, 15, 0, 0, -29.794, 29.97, 0.00, 44.977, -29.794, 29.97, 0.00, 44.977, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351) +#jointRegularization (15, 0, 0, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351, 5.082, 0.406, -0.131, -45.249, -26.454, -0.351) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/qpInverseKinematicsBlf.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/qpInverseKinematicsBlf.ini new file mode 100644 index 000000000..82acb692e --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/qpInverseKinematicsBlf.ini @@ -0,0 +1,28 @@ +[IK] +robot_velocity_variable_name "robot_velocity" + +[COM_TASK] +robot_velocity_variable_name "robot_velocity" +kp_linear 2.0 +mask (true, true, false) + +[ROOT_TASK] +robot_velocity_variable_name "robot_velocity" +frame_name "root_link" +kp_linear 1.0 +mask (false, false, true) + +[RIGHT_FOOT_TASK] +robot_velocity_variable_name "robot_velocity" +frame_name "r_sole" +kp_linear 7.0 +kp_angular 5.0 + +[LEFT_FOOT_TASK] +robot_velocity_variable_name "robot_velocity" +frame_name "l_sole" +kp_linear 7.0 +kp_angular 5.0 + +[include TORSO_TASK "./tasks/torso.ini"] +[include JOINT_REGULARIZATION_TASK "./tasks/regularization.ini"] diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/robotControl.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/robotControl.ini new file mode 100644 index 000000000..13582ae21 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/robotControl.ini @@ -0,0 +1,32 @@ +robot ergocub + +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") + + +remote_control_boards ("torso", "left_arm", "right_arm", "left_leg", "right_leg") +# filters +# if use_*_filter is equal to 0 the low pass filters are not used +use_joint_velocity_filter 0 +joint_velocity_cut_frequency 10.0 + +use_wrench_filter 0 +wrench_cut_frequency 10.0 + + +# if true the joint is in stiff mode if false the joint is in compliant mode +joint_is_stiff_mode (true, true, true, + true, true, true, true, + true, true, true, true, + true, true, true, true, true, true, + true, true, true, true, true, true) + +# if true a good joint traking is considered mandatory +good_tracking_required (true, true, true, + true, true, true, false, + true, true, true, false, + true, true, true, true, true, true, + true, true, true, true, true, true) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/tasks/regularization.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/tasks/regularization.ini new file mode 100644 index 000000000..0e5d267a4 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/tasks/regularization.ini @@ -0,0 +1,27 @@ +robot_velocity_variable_name "robot_velocity" +kp (5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, + 5.0, 5.0, 5.0, 5.0, 5.0, 5.0) + + +states ("stance", "walking") +sampling_time 0.001 +settling_time 0.5 + +[stance] +name "stance" +weight (1.0, 1.0, 1.0, + 2.0, 2.0, 2.0, 2.0, + 2.0, 2.0, 2.0, 2.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) + +[walking] +name "walking" +weight (1.0, 1.0, 1.0, + 2.0, 2.0, 2.0, 2.0, + 2.0, 2.0, 2.0, 2.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/tasks/torso.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/tasks/torso.ini new file mode 100644 index 000000000..b804b6a85 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking/joypad_control/tasks/torso.ini @@ -0,0 +1,16 @@ +robot_velocity_variable_name "robot_velocity" +frame_name "chest" +kp_angular 5.0 + + +states ("stance", "walking") +sampling_time 0.001 +settling_time 0.5 + +[stance] +name "stance" +weight (5.0, 5.0, 5.0) + +[walking] +name "walking" +weight (5.0, 5.0, 5.0) diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_autonomous.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_autonomous.ini new file mode 100644 index 000000000..e7889b897 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_autonomous.ini @@ -0,0 +1,89 @@ +# Remove this line if you don't want to use the MPC +# use_mpc 1 + +# Remove this line if you don't want to use the QP-IK +use_QP-IK 1 + +# remove this line if you don't want to save data of the experiment +dump_data 1 + +# Limit on the maximum initial velocity. This avoids the robot to jump at startup +max_initial_com_vel 0.15 + +# If set to true, the desired ZMP is used directly in the COM/ZMP controller +skip_dcm_controller 1 + +# The goal port receives 2 or 3 doubles according to the selected planner controller +goal_port_suffix /goal:i + +# Scales the input coming from the goal port +goal_port_scaling (0.5, 1.0, 0.5) + +# How much in advance the planner should be called. The time is in seconds +planner_advance_time_in_s 0.03 + +# How much time (in seconds) before failing due to missing feedback +max_feedback_delay_in_s 1.0 + +# If set true, we remove the zmp-com offset at startworking and rotate in evaluateZMP +remove_zmp_offset 1 + +# general parameters +[GENERAL] +name walking-coordinator +# height of the com +com_height 0.70 +# sampling time +sampling_time 0.001 +# enable joint retargeting +use_joint_retargeting 1 +# enable the virtualizer +use_virtualizer 1 +use_com_retargeting 0 +# Specify the frame to use to control the robot height. Currently, we support only the following options: com, root_link +height_reference_frame root_link + +# include robot control parameters +[include ROBOT_CONTROL "./dcm_walking/autonomous/robotControl.ini"] + +# include trajectory planner parameters +[include TRAJECTORY_PLANNER "./dcm_walking/common/plannerParams.ini"] + +# include free space ellipsoid manager parameters +[include FREE_SPACE_ELLIPSE_MANAGER "./dcm_walking/common/freeSpaceEllipseParams.ini"] + +# include MPC parameters +[include DCM_MPC_CONTROLLER "./dcm_walking/common/controllerParams.ini"] + +# include MPC parameters +[include DCM_REACTIVE_CONTROLLER "./dcm_walking/common/dcmReactiveControllerParams.ini"] + +# include MPC parameters +[include ZMP_CONTROLLER "./dcm_walking/common/zmpControllerParams.ini"] + +# include inverse kinematcs parameters +[include INVERSE_KINEMATICS_SOLVER "./dcm_walking/autonomous/inverseKinematics.ini"] + +# include qp inverse kinematcs parameters +[include INVERSE_KINEMATICS_QP_SOLVER "./dcm_walking/autonomous/qpInverseKinematicsBlf.ini"] + +# include inverse kinematcs parameters +[include FORWARD_KINEMATICS_SOLVER "./dcm_walking/common/forwardKinematics.ini"] + +# include FT sensors parameters +[include FT_SENSORS "./dcm_walking/common/forceTorqueSensors.ini"] + +# include CoP evaluator parameters +[include COP_EVALUATOR "./dcm_walking/common/globalCoPEvaluator.ini"] + +# include Logger parameters +[include WALKING_LOGGER "./dcm_walking/common/walkingLogger.ini"] + +# include lower PID parameters +[include PID "./dcm_walking/common/pidParams.ini"] + +# retargeting +[include RETARGETING "./dcm_walking/autonomous/jointRetargeting.ini"] + +# include parameters for the transform helper +[include TRANSFORM_HELPER "./dcm_walking/common/transformHelper.ini"] diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_iFeel_joint_retargeting.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_iFeel_joint_retargeting.ini new file mode 100644 index 000000000..89e601b5a --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_iFeel_joint_retargeting.ini @@ -0,0 +1,86 @@ +# Remove this line if you don't want to use the MPC +# use_mpc 1 + +# Remove this line if you don't want to use the QP-IK +use_QP-IK 1 + +# remove this line if you don't want to save data of the experiment +dump_data 1 + +# Limit on the maximum initial velocity. This avoids the robot to jump at startup +max_initial_com_vel 0.15 + +# If set to true, the desired ZMP is used directly in the COM/ZMP controller +skip_dcm_controller 1 + +# The goal port receives 2 or 3 doubles according to the selected planner controller +goal_port_suffix /goal:i + +# Scales the input coming from the goal port +goal_port_scaling (0.5, 1.0, 0.5) + +# How much in advance the planner should be called. The time is in seconds +planner_advance_time_in_s 0.03 + +# How much time (in seconds) before failing due to missing feedback +max_feedback_delay_in_s 1.0 + +# If set true, we remove the zmp-com offset at startworking and rotate in evaluateZMP +remove_zmp_offset 1 + +# general parameters +[GENERAL] +name walking-coordinator +# height of the com +com_height 0.70 +# sampling time +sampling_time 0.001 +# enable joint retargeting +use_joint_retargeting 1 +# enable the virtualizer +use_virtualizer 1 +use_com_retargeting 0 +# Specify the frame to use to control the robot height. Currently, we support only the following options: com, root_link +height_reference_frame root_link + +# include robot control parameters +[include ROBOT_CONTROL "./dcm_walking/iFeel_joint_retargeting/robotControl.ini"] + +# include trajectory planner parameters +[include TRAJECTORY_PLANNER "./dcm_walking/common/plannerParams.ini"] + +# include free space ellipsoid manager parameters +[include FREE_SPACE_ELLIPSE_MANAGER "./dcm_walking/common/freeSpaceEllipseParams.ini"] + +# include MPC parameters +[include DCM_MPC_CONTROLLER "./dcm_walking/common/controllerParams.ini"] + +# include MPC parameters +[include DCM_REACTIVE_CONTROLLER "./dcm_walking/common/dcmReactiveControllerParams.ini"] + +# include MPC parameters +[include ZMP_CONTROLLER "./dcm_walking/common/zmpControllerParams.ini"] + +# include inverse kinematcs parameters +[include INVERSE_KINEMATICS_SOLVER "./dcm_walking/iFeel_joint_retargeting/inverseKinematics.ini"] + +# include qp inverse kinematcs parameters +[include INVERSE_KINEMATICS_QP_SOLVER "./dcm_walking/iFeel_joint_retargeting/qpInverseKinematicsBlf.ini"] + +# include inverse kinematcs parameters +[include FORWARD_KINEMATICS_SOLVER "./dcm_walking/common/forwardKinematics.ini"] + +# include FT sensors parameters +[include FT_SENSORS "./dcm_walking/common/forceTorqueSensors.ini"] + +# include CoP evaluator parameters +[include COP_EVALUATOR "./dcm_walking/common/globalCoPEvaluator.ini"] + +# include Logger parameters +[include WALKING_LOGGER "./dcm_walking/common/walkingLogger.ini"] + +# include lower PID parameters +[include PID "./dcm_walking/common/pidParams.ini"] + +# retargeting +[include RETARGETING "./dcm_walking/iFeel_joint_retargeting/jointRetargeting.ini"] diff --git a/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_with_joypad.ini b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_with_joypad.ini new file mode 100644 index 000000000..0827f0cc2 --- /dev/null +++ b/src/WalkingModule/app/robots/ergoCubSN003/dcm_walking_with_joypad.ini @@ -0,0 +1,78 @@ +# Remove this line if you don't want to use the MPC +# use_mpc 1 + +# Remove this line if you don't want to use the QP-IK +use_QP-IK 1 + +# remove this line if you don't want to save data of the experiment +dump_data 1 + +# Limit on the maximum initial velocity. This avoids the robot to jump at startup +max_initial_com_vel 0.15 + +# If set to true, the desired ZMP is used directly in the COM/ZMP controller +skip_dcm_controller 1 + +# The goal port receives 2 or 3 doubles according to the selected planner controller +goal_port_suffix /goal:i + +# Scales the input coming from the goal port +goal_port_scaling (0.5, 1.0, 0.5) + +# How much in advance the planner should be called. The time is in seconds +planner_advance_time_in_s 0.03 + +# How much time (in seconds) before failing due to missing feedback +max_feedback_delay_in_s 1.0 + +# If set true, we remve the zmp-com offset at startworking and rotate in evaluateZMP +remove_zmp_offset 1 + +# general parameters +[GENERAL] +name walking-coordinator +# height of the com +com_height 0.70 +# sampling time +sampling_time 0.001 +# Specify the frame to use to control the robot height. Currently, we support only the following options: com, root_link +height_reference_frame root_link + +# include robot control parameters +[include ROBOT_CONTROL "./dcm_walking/joypad_control/robotControl.ini"] + +# include trajectory planner parameters +[include TRAJECTORY_PLANNER "./dcm_walking/common/plannerParams.ini"] + +# include free space ellipsoid manager parameters +[include FREE_SPACE_ELLIPSE_MANAGER "./dcm_walking/common/freeSpaceEllipseParams.ini"] + +# include MPC parameters +[include DCM_MPC_CONTROLLER "./dcm_walking/common/controllerParams.ini"] + +# include MPC parameters +[include DCM_REACTIVE_CONTROLLER "./dcm_walking/common/dcmReactiveControllerParams.ini"] + +# include MPC parameters +[include ZMP_CONTROLLER "./dcm_walking/common/zmpControllerParams.ini"] + +# include inverse kinematcs parameters +[include INVERSE_KINEMATICS_SOLVER "./dcm_walking/joypad_control/inverseKinematics.ini"] + +# include qp inverse kinematcs parameters +[include INVERSE_KINEMATICS_QP_SOLVER "./dcm_walking/joypad_control/qpInverseKinematicsBlf.ini"] + +# include inverse kinematcs parameters +[include FORWARD_KINEMATICS_SOLVER "./dcm_walking/common/forwardKinematics.ini"] + +# include FT sensors parameters +[include FT_SENSORS "./dcm_walking/common/forceTorqueSensors.ini"] + +# include CoP evaluator parameters +[include COP_EVALUATOR "./dcm_walking/common/globalCoPEvaluator.ini"] + +# include Logger parameters +[include WALKING_LOGGER "./dcm_walking/common/walkingLogger.ini"] + +# include lower PID parameters +[include PID "./dcm_walking/common/pidParams.ini"] From 9438de34720c69c664f5c9ca905960f2c22081ce Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Tue, 24 Feb 2026 12:29:49 +0100 Subject: [PATCH 2/2] Bump version to 0.10.0 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 192ca793c..2e0aae3b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.5) ## MAIN project project(WalkingControllers - VERSION 0.9.0) + VERSION 0.10.0) # Defines the CMAKE_INSTALL_LIBDIR, CMAKE_INSTALL_BINDIR and many other useful macros. # See https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html