Skip to content

Commit 594241d

Browse files
authored
Merge pull request #33 from stack-of-tasks/pinocchio_v2
Pinocchio v2, fix #31
2 parents 8223cbe + dab03d3 commit 594241d

File tree

10 files changed

+289
-35
lines changed

10 files changed

+289
-35
lines changed

CMakeLists.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,15 @@ IF(EIGEN_NO_AUTOMATIC_RESIZING)
7070
ENDIF(EIGEN_NO_AUTOMATIC_RESIZING)
7171

7272
# ----------------------------------------------------
73-
# --- DEPENDANCIES -----------------------------------
73+
# --- DEPENDENCIES -----------------------------------
7474
# ----------------------------------------------------
7575
ADD_REQUIRED_DEPENDENCY("eigen3 >= 3.2.0") # Eigen::Ref appeared from 3.2.0
76+
77+
# Fail-safe support for catkin-ized pinocchio:
78+
# - If catkin-based pinocchio is installed it runs the CFG_EXTRAS to set up the Pinocchio preprocessor directives
79+
# - If it isn't, nothing happens and the subsequent pkg-config check takes care of everything.
80+
find_package(catkin QUIET COMPONENTS pinocchio)
81+
7682
ADD_REQUIRED_DEPENDENCY("pinocchio >= 1.3.0")
7783

7884
SET(BOOST_REQUIERED_COMPONENTS filesystem system)
@@ -83,6 +89,7 @@ IF(BUILD_PYTHON_INTERFACE)
8389
SET(BOOST_OPTIONAL_COMPONENTS ${BOOST_OPTIONAL_COMPONENTS} python)
8490
FINDPYTHON()
8591
INCLUDE_DIRECTORIES(SYSTEM ${PYTHON_INCLUDE_DIRS})
92+
ADD_REQUIRED_DEPENDENCY("eigenpy >= 1.4.0")
8693
ENDIF(BUILD_PYTHON_INTERFACE)
8794

8895
SET(BOOST_COMPONENTS ${BOOST_REQUIERED_COMPONENTS} ${BOOST_OPTIONAL_COMPONENTS} ${BOOST_BUILD_COMPONENTS})

bindings/python/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ SET(PYWRAP ${PYWRAP} PARENT_SCOPE)
4848

4949
# --- DEPENDENCIES --- #
5050
SET(PKG_CONFIG_PYWRAP_REQUIRES "eigenpy >= 1.4.0")
51+
SET(PKG_CONFIG_PYWRAP_REQUIRES "pinocchio >= 2.0.0")
5152
FOREACH(dep ${PKG_CONFIG_PYWRAP_REQUIRES})
5253
ADD_COMPILE_DEPENDENCY(${dep})
5354
ENDFOREACH(dep ${PKG_CONFIG_PYWRAP_REQUIRES})
@@ -110,6 +111,7 @@ ENDIF(BUILD_WITH_COMMIT_VERSION)
110111
ADD_HEADER_GROUP(${PYWRAP}_HEADERS)
111112
ADD_SOURCE_GROUP(${PYWRAP}_SOURCES)
112113
PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} eigenpy)
114+
PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} pinocchio)
113115

114116
TARGET_LINK_LIBRARIES(${PYWRAP} ${PROJECT_NAME})
115117
TARGET_LINK_BOOST_PYTHON(${PYWRAP})

demo/demo_quadruped.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
robot = tsid.RobotWrapper(urdf, vector, se3.JointModelFreeFlyer(), False)
4848

4949
# for gepetto viewer
50-
robot_display = se3.RobotWrapper(urdf, [path, ], se3.JointModelFreeFlyer())
50+
robot_display = se3.RobotWrapper.BuildFromURDF(urdf, [path, ], se3.JointModelFreeFlyer())
5151
l = commands.getstatusoutput("ps aux |grep 'gepetto-gui'|grep -v 'grep'|wc -l")
5252
if int(l[1]) == 0:
5353
os.system('gepetto-gui &')

demo/demo_romeo.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
contactNormal = np.matrix([0., 0., 1.]).T # direction of the normal to the contact surface
2828
w_com = 1.0 # weight of center of mass task
2929
w_posture = 1e-3 # weight of joint posture task
30-
w_forceRef = 1e-5 # weight of force regularization task
30+
w_forceReg = 1e-5 # weight of force regularization task
3131
w_RF = 1.0 # weight of right foot motion task
3232
kp_contact = 30.0 # proportional gain of contact constraint
3333
kp_com = 30.0 # proportional gain of center of mass task
@@ -51,7 +51,7 @@
5151
srdf = path + '/srdf/romeo_collision.srdf'
5252

5353
# for gepetto viewer .. but Fix me!!
54-
robot_display = se3.RobotWrapper(urdf, [path, ], se3.JointModelFreeFlyer())
54+
robot_display = se3.RobotWrapper.BuildFromURDF(urdf, [path, ], se3.JointModelFreeFlyer())
5555

5656
l = commands.getstatusoutput("ps aux |grep 'gepetto-gui'|grep -v 'grep'|wc -l")
5757
if int(l[1]) == 0:
@@ -61,7 +61,7 @@
6161
gui = cl.gui
6262
robot_display.initDisplay(loadModel=True)
6363

64-
q = se3.getNeutralConfigurationFromSrdf(robot.model(), srdf, False)
64+
q = se3.getNeutralConfiguration(robot.model(), srdf, False)
6565
q[2] += 0.84
6666
v = np.matrix(np.zeros(robot.nv)).transpose()
6767

@@ -80,19 +80,19 @@
8080
contact_Point[0, :] = [-lxn, -lxn, lxp, lxp]
8181
contact_Point[1, :] = [-lyn, lyp, -lyn, lyp]
8282

83-
contactRF =tsid.Contact6d("contact_rfoot", robot, rf_frame_name, contact_Point, contactNormal, mu, fMin, fMax, w_forceRef)
83+
contactRF =tsid.Contact6d("contact_rfoot", robot, rf_frame_name, contact_Point, contactNormal, mu, fMin, fMax)
8484
contactRF.setKp(kp_contact * np.matrix(np.ones(6)).transpose())
8585
contactRF.setKd(2.0 * np.sqrt(kp_contact) * np.matrix(np.ones(6)).transpose())
8686
H_rf_ref = robot.position(data, robot.model().getJointId(rf_frame_name))
8787
contactRF.setReference(H_rf_ref)
88-
invdyn.addRigidContact(contactRF)
88+
invdyn.addRigidContact(contactRF, w_forceReg)
8989

90-
contactLF =tsid.Contact6d("contact_lfoot", robot, lf_frame_name, contact_Point, contactNormal, mu, fMin, fMax, w_forceRef)
90+
contactLF =tsid.Contact6d("contact_lfoot", robot, lf_frame_name, contact_Point, contactNormal, mu, fMin, fMax)
9191
contactLF.setKp(kp_contact * np.matrix(np.ones(6)).transpose())
9292
contactLF.setKd(2.0 * np.sqrt(kp_contact) * np.matrix(np.ones(6)).transpose())
9393
H_lf_ref = robot.position(data, robot.model().getJointId(lf_frame_name))
9494
contactLF.setReference(H_lf_ref)
95-
invdyn.addRigidContact(contactLF)
95+
invdyn.addRigidContact(contactLF, w_forceReg)
9696

9797
comTask = tsid.TaskComEquality("task-com", robot)
9898
comTask.setKp(kp_com * np.matrix(np.ones(3)).transpose())

exercizes/ex_1.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
srdf = path + '/srdf/romeo_collision.srdf'
5353

5454
# for gepetto viewer
55-
robot_display = se3.RobotWrapper(urdf, [path, ], se3.JointModelFreeFlyer())
55+
robot_display = se3.RobotWrapper.BuildFromURDF(urdf, [path, ], se3.JointModelFreeFlyer())
5656
l = commands.getstatusoutput("ps aux |grep 'gepetto-gui'|grep -v 'grep'|wc -l")
5757
if int(l[1]) == 0:
5858
os.system('gepetto-gui &')
@@ -61,7 +61,7 @@
6161
gui = cl.gui
6262
robot_display.initDisplay(loadModel=True)
6363

64-
q = se3.getNeutralConfigurationFromSrdf(robot.model(), srdf, False)
64+
q = se3.getNeutralConfiguration(robot.model(), srdf, False)
6565
q[2] += 0.84
6666
v = np.matrix(np.zeros(robot.nv)).T
6767

@@ -80,19 +80,19 @@
8080
contact_Point[0, :] = [-lxn, -lxn, lxp, lxp]
8181
contact_Point[1, :] = [-lyn, lyp, -lyn, lyp]
8282

83-
contactRF =tsid.Contact6d("contact_rfoot", robot, rf_frame_name, contact_Point, contactNormal, mu, fMin, fMax, w_forceRef)
83+
contactRF =tsid.Contact6d("contact_rfoot", robot, rf_frame_name, contact_Point, contactNormal, mu, fMin, fMax)
8484
contactRF.setKp(kp_contact * matlib.ones(6).T)
8585
contactRF.setKd(2.0 * np.sqrt(kp_contact) * matlib.ones(6).T)
8686
H_rf_ref = robot.position(data, robot.model().getJointId(rf_frame_name))
8787
contactRF.setReference(H_rf_ref)
88-
invdyn.addRigidContact(contactRF)
88+
invdyn.addRigidContact(contactRF, w_forceRef)
8989

90-
contactLF =tsid.Contact6d("contact_lfoot", robot, lf_frame_name, contact_Point, contactNormal, mu, fMin, fMax, w_forceRef)
90+
contactLF =tsid.Contact6d("contact_lfoot", robot, lf_frame_name, contact_Point, contactNormal, mu, fMin, fMax)
9191
contactLF.setKp(kp_contact * matlib.ones(6).T)
9292
contactLF.setKd(2.0 * np.sqrt(kp_contact) * matlib.ones(6).T)
9393
H_lf_ref = robot.position(data, robot.model().getJointId(lf_frame_name))
9494
contactLF.setReference(H_lf_ref)
95-
invdyn.addRigidContact(contactLF)
95+
invdyn.addRigidContact(contactLF, w_forceRef)
9696

9797
comTask = tsid.TaskComEquality("task-com", robot)
9898
comTask.setKp(kp_com * matlib.ones(3).T)

exercizes/ex_2.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
dt = 0.001 # controller time step
4242
PRINT_N = 500 # print every PRINT_N time steps
4343
DISPLAY_N = 25 # update robot configuration in viwewer every DISPLAY_N time steps
44-
N_SIMULATION = 40000 # number of time steps simulated
44+
N_SIMULATION = 4000 # number of time steps simulated
4545

4646
filename = str(os.path.dirname(os.path.abspath(__file__)))
4747
path = filename + '/../models/romeo'
@@ -52,7 +52,7 @@
5252
srdf = path + '/srdf/romeo_collision.srdf'
5353

5454
# for gepetto viewer
55-
robot_display = se3.RobotWrapper(urdf, [path, ], se3.JointModelFreeFlyer())
55+
robot_display = se3.RobotWrapper.BuildFromURDF(urdf, [path, ], se3.JointModelFreeFlyer())
5656
l = commands.getstatusoutput("ps aux |grep 'gepetto-gui'|grep -v 'grep'|wc -l")
5757
if int(l[1]) == 0:
5858
os.system('gepetto-gui &')
@@ -61,7 +61,7 @@
6161
gui = cl.gui
6262
robot_display.initDisplay(loadModel=True)
6363

64-
q = se3.getNeutralConfigurationFromSrdf(robot.model(), srdf, False)
64+
q = se3.getNeutralConfiguration(robot.model(), srdf, False)
6565
q[2] += 0.84
6666
v = np.matrix(np.zeros(robot.nv)).T
6767

@@ -80,27 +80,19 @@
8080
contact_Point[0, :] = [-lxn, -lxn, lxp, lxp]
8181
contact_Point[1, :] = [-lyn, lyp, -lyn, lyp]
8282

83-
contactRF =tsid.Contact6d("contact_rfoot", robot, rf_frame_name, contact_Point, contactNormal, mu, fMin, fMax, w_forceRef)
83+
contactRF =tsid.Contact6d("contact_rfoot", robot, rf_frame_name, contact_Point, contactNormal, mu, fMin, fMax)
8484
contactRF.setKp(kp_contact * matlib.ones(6).T)
8585
contactRF.setKd(2.0 * np.sqrt(kp_contact) * matlib.ones(6).T)
8686
H_rf_ref = robot.position(data, robot.model().getJointId(rf_frame_name))
8787
contactRF.setReference(H_rf_ref)
88-
invdyn.addRigidContact(contactRF)
88+
invdyn.addRigidContact(contactRF, w_forceRef)
8989

90-
contactLF =tsid.Contact6d("contact_lfoot", robot, lf_frame_name, contact_Point, contactNormal, mu, fMin, fMax, w_forceRef)
90+
contactLF =tsid.Contact6d("contact_lfoot", robot, lf_frame_name, contact_Point, contactNormal, mu, fMin, fMax)
9191
contactLF.setKp(kp_contact * matlib.ones(6).T)
9292
contactLF.setKd(2.0 * np.sqrt(kp_contact) * matlib.ones(6).T)
9393
H_lf_ref = robot.position(data, robot.model().getJointId(lf_frame_name))
9494
contactLF.setReference(H_lf_ref)
95-
invdyn.addRigidContact(contactLF)
96-
97-
lh_frame_name = 'LWristPitch'
98-
contactLH =tsid.Contact6d("contact_lhand", robot, lh_frame_name, contact_Point, contactNormal, mu, fMin, fMax, w_forceRef)
99-
contactLH.setKp(kp_contact * matlib.ones(6).T)
100-
contactLH.setKd(2.0 * np.sqrt(kp_contact) * matlib.ones(6).T)
101-
H_lh_ref = robot.position(data, robot.model().getJointId(lh_frame_name))
102-
contactLH.setReference(H_lh_ref)
103-
invdyn.addRigidContact(contactLH)
95+
invdyn.addRigidContact(contactLF, w_forceRef)
10496

10597
comTask = tsid.TaskComEquality("task-com", robot)
10698
comTask.setKp(kp_com * matlib.ones(3).T)
@@ -133,7 +125,7 @@
133125

134126
offset = robot.com(data)
135127
amp = np.matrix([0.0, 0.05, 0.0]).T
136-
two_pi_f = 2*np.pi*np.matrix([0.0, 1.1, 0.0]).T
128+
two_pi_f = 2*np.pi*np.matrix([0.0, 0.5, 0.0]).T
137129
two_pi_f_amp = np.multiply(two_pi_f,amp)
138130
two_pi_f_squared_amp = np.multiply(two_pi_f, two_pi_f_amp)
139131

0 commit comments

Comments
 (0)