view_robot_launch.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import os
  2. from launch import LaunchDescription
  3. from launch.substitutions import LaunchConfiguration
  4. from launch_ros.actions import Node
  5. from launch_ros.substitutions import FindPackageShare
  6. from launch.actions import DeclareLaunchArgument
  7. from launch.substitutions import Command
  8. from launch_ros.parameter_descriptions import ParameterValue
  9. def generate_launch_description():
  10. package_name = 'ymbot_d_description'
  11. urdf_name = "ymbot_d.urdf"
  12. ld = LaunchDescription()
  13. pkg_share = FindPackageShare(package=package_name).find(package_name)
  14. urdf_model_path = os.path.join(pkg_share, f'urdf/{urdf_name}')
  15. default_rviz_config_path = os.path.join(pkg_share ,'rviz/urdf.rviz')
  16. robot_description = ParameterValue(Command(['xacro ', urdf_model_path]),
  17. value_type=str)
  18. rviz_arg = DeclareLaunchArgument(name='rvizconfig', default_value=str(default_rviz_config_path),
  19. description='Absolute path to rviz config file')
  20. robot_state_publisher_node = Node(
  21. package='robot_state_publisher',
  22. executable='robot_state_publisher',
  23. parameters=[{'robot_description': robot_description}]
  24. )
  25. joint_state_publisher_node = Node(
  26. package='joint_state_publisher_gui',
  27. executable='joint_state_publisher_gui',
  28. name='joint_state_publisher_gui',
  29. arguments=[urdf_model_path]
  30. )
  31. rviz2_node = Node(
  32. package='rviz2',
  33. executable='rviz2',
  34. name='rviz2',
  35. output='screen',
  36. arguments=['-d', LaunchConfiguration('rvizconfig')],
  37. )
  38. ld.add_action(rviz_arg)
  39. ld.add_action(joint_state_publisher_node)
  40. ld.add_action(robot_state_publisher_node)
  41. ld.add_action(rviz2_node)
  42. return ld