34
34
import os
35
35
36
36
from clearpath_config .common .types .platform import Platform
37
- from clearpath_config .manipulators .types .arms import UniversalRobots
37
+ from clearpath_config .manipulators .types .arms import Franka , UniversalRobots
38
+ from clearpath_config .manipulators .types .grippers import FrankaGripper
38
39
from clearpath_config .platform .battery import BatteryConfig
39
40
from clearpath_generator_common .common import LaunchFile , Package
40
41
from clearpath_generator_common .launch .generator import LaunchGenerator
@@ -517,8 +518,8 @@ def generate_platform(self) -> None:
517
518
518
519
def generate_manipulators (self ) -> None :
519
520
manipulator_service_launch_writer = LaunchWriter (self .manipulators_service_launch_file )
520
- # Universal Robots Tool Communication
521
521
for arm in self .clearpath_config .manipulators .get_all_arms ():
522
+ # Universal Robots Tool Communication
522
523
if arm .MANIPULATOR_MODEL == UniversalRobots .MANIPULATOR_MODEL :
523
524
node = LaunchFile .Node (
524
525
name = f'{ arm .name } _ur_tool_comm' ,
@@ -536,6 +537,34 @@ def generate_manipulators(self) -> None:
536
537
self .manipulators_launch_file .args .append (
537
538
('control_delay' , '1.0' )
538
539
)
540
+ # Franka Hand Communication
541
+ if arm .MANIPULATOR_MODEL == Franka .MANIPULATOR_MODEL :
542
+ if arm .gripper :
543
+ if arm .gripper .MANIPULATOR_MODEL == FrankaGripper .MANIPULATOR_MODEL :
544
+ node = LaunchFile .Node (
545
+ name = f'{ arm .gripper .name } _controller' ,
546
+ package = 'franka_gripper' ,
547
+ executable = 'franka_gripper_node' ,
548
+ namespace = f'{ self .namespace } /manipulators' ,
549
+ parameters = [{
550
+ 'robot_ip' : arm .ip ,
551
+ 'joint_names' : [
552
+ f'{ arm .gripper .name } _{ arm .gripper .arm_id } _finger_joint1' ,
553
+ f'{ arm .gripper .name } _{ arm .gripper .arm_id } _finger_joint2'
554
+ ],
555
+ 'state_publish_rate' : 15 , # [Hz]
556
+ 'feedback_publish_rate' : 30 , # [Hz]
557
+ 'default_speed' : 0.1 , # [m/s]
558
+ 'default_grasp_epsilon' : {
559
+ 'inner' : 0.005 , # [m]
560
+ 'outer' : 0.005 # [m]
561
+ }
562
+ }],
563
+ remappings = [
564
+ ('~/joint_states' , f'/{ self .namespace } /platform/joint_states' )
565
+ ]
566
+ )
567
+ manipulator_service_launch_writer .add_node (node )
539
568
if self .clearpath_config .manipulators .get_all_manipulators ():
540
569
manipulator_service_launch_writer .add (self .manipulators_launch_file )
541
570
manipulator_service_launch_writer .generate_file ()
0 commit comments