sot-talos-balance  2.0.5
Collection of dynamic-graph entities aimed at implementing balance control on talos.
appli_admittance_single_joint.py
Go to the documentation of this file.
1 # flake8: noqa
2 from dynamic_graph import plug
3 from dynamic_graph.sot.core import SOT
4 from dynamic_graph.sot.core.meta_tasks_kine import (
5  MetaTaskKine6d,
6  MetaTaskKineCom,
7  gotoNd,
8 )
9 
11 from dynamic_graph.sot_talos_balance.meta_task_joint import MetaTaskKineJoint
12 
13 N_JOINTS = 32
14 N_CONFIG = N_JOINTS + 6
15 
16 robot.timeStep = robot.device.getTimeStep()
17 dt = robot.timeStep
18 
19 JOINT = 25
20 QJOINT = JOINT + 6
21 
22 target = -10.0
23 
24 # --- Joint
25 robot.taskJoint = MetaTaskKineJoint(robot.dynamic, QJOINT)
26 robot.taskJoint.featureDes.errorIN.value = [0.0]
27 robot.taskJoint.task.controlGain.value = 100
28 
29 # --- filter
30 robot.device_filters = create_device_filters(robot, dt)
31 
32 # --- Admittance controller
33 Kp = [0.5]
34 robot.admittance_control = create_joint_admittance_controller(JOINT, Kp, dt, robot)
35 plug(robot.admittance_control.qRef, robot.taskJoint.featureDes.errorIN)
36 
37 # --- CONTACTS
38 # define contactLF and contactRF
39 robot.contactLF = MetaTaskKine6d(
40  "contactLF", robot.dynamic, "LF", robot.OperationalPointsMap["left-ankle"]
41 )
42 robot.contactLF.feature.frame("desired")
43 robot.contactLF.gain.setConstant(100)
44 robot.contactLF.keep()
45 locals()["contactLF"] = robot.contactLF
46 
47 robot.contactRF = MetaTaskKine6d(
48  "contactRF", robot.dynamic, "RF", robot.OperationalPointsMap["right-ankle"]
49 )
50 robot.contactRF.feature.frame("desired")
51 robot.contactRF.gain.setConstant(100)
52 robot.contactRF.keep()
53 locals()["contactRF"] = robot.contactRF
54 
55 robot.sot = SOT("sot")
56 robot.sot.setSize(robot.dynamic.getDimension())
57 plug(robot.sot.control, robot.device.control)
58 
59 robot.sot.push(robot.contactRF.task.name)
60 robot.sot.push(robot.contactLF.task.name)
61 robot.device.control.recompute(0)
62 
63 # --- ROS PUBLISHER
64 robot.publisher = create_rospublish(robot, "robot_publisher")
66  robot.publisher,
67  robot.device_filters.torque_filter,
68  "x_filtered",
69  robot=robot,
70  data_type="vector",
71 )
72 create_topic(robot.publisher, robot.device, "ptorque", robot=robot, data_type="vector")
create_entities_utils
sot_talos_balance.create_entities_utils.create_joint_admittance_controller
def create_joint_admittance_controller(joint, Kp, dt, robot, filter=False)
Definition: create_entities_utils.py:217
sot_talos_balance.create_entities_utils.create_topic
def create_topic(rospub, entity, signalName, robot=None, data_type="vector")
Definition: create_entities_utils.py:454
sot_talos_balance.create_entities_utils.create_rospublish
def create_rospublish(robot, name)
Definition: create_entities_utils.py:446
sot_talos_balance.create_entities_utils.create_device_filters
def create_device_filters(robot, dt)
Definition: create_entities_utils.py:279