Created
September 17, 2021 13:00
-
-
Save lorepieri8/9eaebf8f6355752dfdd26227bcdae072 to your computer and use it in GitHub Desktop.
teleop launch file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import yaml | |
from launch import LaunchDescription | |
from launch_ros.actions import Node | |
from ament_index_python.packages import get_package_share_directory | |
from launch_ros.actions import ComposableNodeContainer | |
from launch_ros.descriptions import ComposableNode | |
from launch.actions import ExecuteProcess | |
import xacro | |
def load_file(package_name, file_path): | |
package_path = get_package_share_directory(package_name) | |
absolute_file_path = os.path.join(package_path, file_path) | |
try: | |
with open(absolute_file_path, "r") as file: | |
return file.read() | |
except EnvironmentError: # parent of IOError, OSError *and* WindowsError where available | |
return None | |
def load_yaml(package_name, file_path): | |
package_path = get_package_share_directory(package_name) | |
absolute_file_path = os.path.join(package_path, file_path) | |
try: | |
with open(absolute_file_path, "r") as file: | |
return yaml.safe_load(file) | |
except EnvironmentError: # parent of IOError, OSError *and* WindowsError where available | |
return None | |
def generate_launch_description(): | |
# Get parameters for the Servo node | |
servo_yaml = load_yaml("moveit_servo", "config/xarm_simulated_config.yaml") | |
servo_params = {"moveit_servo": servo_yaml} | |
# Get URDF and SRDF | |
robot_description_config = xacro.process_file( | |
os.path.join( | |
get_package_share_directory("xarm_description"), | |
"urdf", | |
#"urdf/xarm6", | |
#"xarm62.urdf.xacro", | |
#"xarm6_robot_macro.xacro", | |
"xarm_device.urdf.xacro", | |
#"xarm_device_macro.xacro", | |
) | |
) | |
robot_description = {"robot_description": robot_description_config.toxml()} | |
robot_description_semantic_config = load_file( | |
"xarm_moveit_config", "srdf/xarm.srdf.xacro" #"srdf/xarm.srdf" #srdf/xarm.srdf.xacro" | |
) | |
robot_description_semantic = { | |
"robot_description_semantic": robot_description_semantic_config | |
} | |
# RViz | |
rviz_config_file = ( | |
get_package_share_directory("moveit2_tutorials") | |
+ "/config/demo_rviz_config_xarm.rviz" | |
) | |
rviz_node = Node( | |
package="rviz2", | |
executable="rviz2", | |
name="rviz2", | |
output="log", | |
arguments=["-d", rviz_config_file], | |
parameters=[robot_description, robot_description_semantic], | |
) | |
# ros2_control using FakeSystem as hardware | |
ros2_controllers_path = os.path.join( | |
get_package_share_directory("xarm_controller"), | |
#get_package_share_directory("xarm_moveit_config"), | |
"config", | |
#"config/xarm6" | |
"xarm6_controllers.yaml", | |
#"controllers.yaml", | |
#get_package_share_directory("moveit_resources_panda_moveit_config"), | |
#"config", | |
#"panda_ros_controllers.yaml", | |
) | |
ros2_control_node = Node( | |
package="controller_manager", | |
executable="ros2_control_node", | |
parameters=[robot_description, ros2_controllers_path], | |
output={ | |
"stdout": "screen", | |
"stderr": "screen", | |
}, | |
) | |
# Load controllers | |
load_controllers = [] | |
#for controller in ["panda_arm_controller", "joint_state_controller"]: | |
for controller in ["xarm6_traj_controller", "joint_state_controller"]: | |
load_controllers += [ | |
ExecuteProcess( | |
cmd=["ros2 run controller_manager spawner.py {}".format(controller)], | |
shell=True, | |
output="screen", | |
) | |
] | |
# Launch as much as possible in components | |
container = ComposableNodeContainer( | |
name="moveit_servo_demo_container", | |
namespace="/", | |
package="rclcpp_components", | |
executable="component_container", | |
composable_node_descriptions=[ | |
ComposableNode( | |
package="robot_state_publisher", | |
plugin="robot_state_publisher::RobotStatePublisher", | |
name="robot_state_publisher", | |
parameters=[robot_description], | |
), | |
ComposableNode( | |
package="tf2_ros", | |
plugin="tf2_ros::StaticTransformBroadcasterNode", | |
name="static_tf2_broadcaster", | |
parameters=[{"child_frame_id": "/link_base", "frame_id": "/world"}], | |
), | |
ComposableNode( | |
package="moveit_servo", | |
plugin="moveit_servo::ServoServer", | |
name="servo_server", | |
parameters=[ | |
servo_params, | |
robot_description, | |
robot_description_semantic, | |
], | |
extra_arguments=[{"use_intra_process_comms": True}], | |
), | |
ComposableNode( | |
package="moveit_servo", | |
plugin="moveit_servo::JoyToServoPub", | |
name="controller_to_servo_node", | |
extra_arguments=[{"use_intra_process_comms": True}], | |
), | |
ComposableNode( | |
package="joy", | |
plugin="joy::Joy", | |
name="joy_node", | |
extra_arguments=[{"use_intra_process_comms": True}], | |
), | |
], | |
output="screen", | |
) | |
return LaunchDescription( | |
[rviz_node, ros2_control_node, container] + load_controllers | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment