Skip to content

Commit 370bcc0

Browse files
Update (#302)
2 parents e2a9c3a + 80c7bb8 commit 370bcc0

File tree

2 files changed

+32
-48
lines changed

2 files changed

+32
-48
lines changed

lib/action-server.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ class ActionServer extends EventEmitter2 {
2626
// Add feedback callback
2727
goal.on('feedback', feedback => {
2828
this.emit('feedback', feedback);
29-
}).bind(this);
29+
});
3030

3131
// Add status callback
3232
goal.on('status', status => {
3333
this.emit('status', status);
34-
}).bind(this);
34+
});
3535

3636
// Send goal
3737
goal.send();

lib/body.js

Lines changed: 30 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -30,43 +30,27 @@ class Body {
3030
parameter.get(parameter_ => {
3131
// Joint names
3232
this.jointNames = {};
33-
// Arm joint names. N.B.: the suffices 'left' and 'right'
34-
// must be added
35-
this.jointNames.arm = [];
36-
this.jointNames.leftArm = [];
37-
this.jointNames.rightArm = [];
38-
for (const jointName in parameter_.arm.joint_names.values()) { // eslint-disable-line guard-for-in
39-
this.jointNames.arm.push(`${jointName}`);
40-
this.jointNames.leftArm.push(`${jointName}_left`);
41-
this.jointNames.rightArm.push(`${jointName}_right`);
42-
}
43-
44-
// Torso joint name
45-
this.jointNames.torso = parameter_.torso.joint_names;
46-
47-
// Default joint configuration. N.B., the configurations for the left
48-
// and right arm are equal
4933
this.defaultConfigurations = {};
50-
this.defaultConfigurations.torso = parameter_.torso.default_configurations;
51-
this.defaultConfigurations.arm = parameter_.arm.default_configurations;
52-
this.defaultConfigurations.leftArm = parameter_.arm.default_configurations;
53-
this.defaultConfigurations.rightArm = parameter_.arm.default_configurations;
54-
});
55-
56-
// Define the gripper action
57-
this.leftGripperAction = new ActionClient({
58-
ros,
59-
serverName: 'left_arm/gripper/action',
60-
actionName: 'tue_manipulation_msgs/GripperCommandAction',
61-
timeout: 0,
62-
});
63-
64-
// Define the gripper action
65-
this.rightGripperAction = new ActionClient({
66-
ros,
67-
serverName: 'right_arm/gripper/action',
68-
actionName: 'tue_manipulation_msgs/GripperCommandAction',
69-
timeout: 0,
34+
this.grippers = {};
35+
36+
for (const [partName, part] of Object.entries(parameter_)) {
37+
if (Object.prototype.hasOwnProperty.call(part, 'joint_names')) {
38+
this.jointNames[partName] = part.joint_names;
39+
}
40+
41+
if (Object.prototype.hasOwnProperty.call(part, 'default_configurations')) {
42+
this.defaultConfigurations[partName] = part.default_configurations;
43+
}
44+
45+
if (Object.prototype.hasOwnProperty.call(part, 'ac_gripper')) {
46+
this.grippers[partName] = new ActionClient({
47+
ros,
48+
serverName: part.ac_gripper,
49+
actionName: 'tue_manipulation_msgs/GripperCommandAction',
50+
timeout: 0,
51+
});
52+
}
53+
}
7054
});
7155
} // End of constructor
7256

@@ -86,36 +70,36 @@ class Body {
8670
trajectory: {
8771
/* eslint camelcase:0 */
8872
joint_names: this.jointNames[cmd.body_part],
89-
points: [{positions: this.defaultConfigurations[cmd.body_part][cmd.configuration]}],
73+
points: [{
74+
positions: this.defaultConfigurations[cmd.body_part][cmd.configuration],
75+
time_from_start: {secs: 2},
76+
}],
9077
},
9178
goal_time_tolerance: {
9279
secs: 5,
9380
},
9481
},
9582
});
83+
console.debug(goal);
9684

9785
// Send the goal with a default timeout of 10.0 seconds
9886
goal.send(10);
9987
} // End of sendGoal
10088

10189
/**
10290
* Sends a gripper goal
103-
* @param {object} cmd: object containing 'side' ('left' or 'right') and 'direction' ('open' or 'close')
91+
* @param {object} cmd: object containing 'side' and 'direction' ('open' or 'close')
10492
*/
10593
sendGripperGoal(cmd) {
10694
console.log('Robot body: gripper goal:', cmd);
10795

108-
let actionClient;
109-
// Get the side
110-
if (cmd.side === 'left') {
111-
actionClient = this.leftGripperAction;
112-
} else if (cmd.side === 'right') {
113-
actionClient = this.rightGripperAction;
114-
} else {
115-
console.error('Gripper command side must be either left or right. Right now, it is', cmd.side);
96+
if (!Object.prototype.hasOwnProperty.call(this.grippers, cmd.side)) {
97+
console.error(`Gripper command side must be one of [${Object.keys(this.grippers)}]. Right now, it is '${cmd.side}'`);
11698
return;
11799
}
118100

101+
const actionClient = this.grippers[cmd.side];
102+
119103
// Get the direction: open or close. This is mapped to the enum defined in the action description
120104
// int8 OPEN=-1
121105
// int8 CLOSE=1

0 commit comments

Comments
 (0)