3434import os
3535
3636from 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
3839from clearpath_config .platform .battery import BatteryConfig
3940from clearpath_generator_common .common import LaunchFile , Package
4041from clearpath_generator_common .launch .generator import LaunchGenerator
@@ -342,8 +343,8 @@ def generate_platform(self) -> None:
342343
343344 def generate_manipulators (self ) -> None :
344345 manipulator_service_launch_writer = LaunchWriter (self .manipulators_service_launch_file )
345- # Universal Robots Tool Communication
346346 for arm in self .clearpath_config .manipulators .get_all_arms ():
347+ # Universal Robots Tool Communication
347348 if arm .MANIPULATOR_MODEL == UniversalRobots .MANIPULATOR_MODEL :
348349 node = LaunchFile .Node (
349350 name = f'{ arm .name } _ur_tool_comm' ,
@@ -361,6 +362,34 @@ def generate_manipulators(self) -> None:
361362 self .manipulators_launch_file .args .append (
362363 ('control_delay' , '1.0' )
363364 )
365+ # Franka Hand Communication
366+ if arm .MANIPULATOR_MODEL == Franka .MANIPULATOR_MODEL :
367+ if arm .gripper :
368+ if arm .gripper .MANIPULATOR_MODEL == FrankaGripper .MANIPULATOR_MODEL :
369+ node = LaunchFile .Node (
370+ name = f'{ arm .gripper .name } _node' ,
371+ package = 'franka_gripper' ,
372+ executable = 'franka_gripper_node' ,
373+ namespace = f'{ self .namespace } /manipulators' ,
374+ parameters = [{
375+ 'robot_ip' : arm .ip ,
376+ 'joint_names' : [
377+ f'{ arm .gripper .name } _finger_joint1' ,
378+ f'{ arm .gripper .name } _finger_joint2'
379+ ],
380+ 'state_publish_rate' : 15 , # [Hz]
381+ 'feedback_publish_rate' : 30 , # [Hz]
382+ 'default_speed' : 0.1 , # [m/s]
383+ 'default_grasp_epsilon' : {
384+ 'inner' : 0.005 , # [m]
385+ 'outer' : 0.005 # [m]
386+ }
387+ }],
388+ remappings = [
389+ ('~/joint_states' , f'/{ self .namespace } /platform/joint_states' )
390+ ]
391+ )
392+ manipulator_service_launch_writer .add_node (node )
364393 if self .clearpath_config .manipulators .get_all_manipulators ():
365394 manipulator_service_launch_writer .add (self .manipulators_launch_file )
366395 manipulator_service_launch_writer .generate_file ()
0 commit comments