50 lines
1.9 KiB
Python
50 lines
1.9 KiB
Python
from launch import LaunchDescription
|
|
from launch.actions import DeclareLaunchArgument
|
|
from launch.conditions import IfCondition, UnlessCondition
|
|
from launch.substitutions import Command, LaunchConfiguration
|
|
from launch_ros.actions import Node
|
|
from launch_ros.substitutions import FindPackageShare
|
|
import os
|
|
|
|
def generate_launch_description():
|
|
pkg_share = FindPackageShare("").find('toid_bot_description')
|
|
default_model_path = os.path.join(pkg_share, 'src', 'toid_bot_description.urdf')
|
|
default_rviz_config_path = os.path.join(pkg_share, 'rviz', 'default.rviz')
|
|
|
|
robot_state_publisher_node = Node(
|
|
package='robot_state_publisher',
|
|
executable='robot_state_publisher',
|
|
parameters=[{'robot_description': Command(['xacro ', LaunchConfiguration('model')])}]
|
|
)
|
|
|
|
joint_state_publisher_node = Node(
|
|
package='joint_state_publisher',
|
|
executable='joint_state_publisher',
|
|
name='joint_state_publisher',
|
|
parameters=[{'robot_description': Command(['xacro ', default_model_path])}],
|
|
condition=UnlessCondition(LaunchConfiguration('gui'))
|
|
)
|
|
|
|
joint_state_publisher_gui_node = Node(
|
|
package='joint_state_publisher_gui',
|
|
executable='joint_state_publisher_gui',
|
|
name='joint_state_publisher_gui',
|
|
condition=IfCondition(LaunchConfiguration('gui'))
|
|
)
|
|
|
|
rviz_node = Node(
|
|
package='rviz2',
|
|
executable='rviz2',
|
|
name='rviz2',
|
|
output='screen',
|
|
arguments=['-d', default_rviz_config_path]
|
|
)
|
|
|
|
return LaunchDescription([
|
|
DeclareLaunchArgument(name='gui', default_value='True', description='Flag to enable joint_state_publisher'),
|
|
DeclareLaunchArgument(name='model', default_value=default_model_path, description='Path to model'),
|
|
robot_state_publisher_node,
|
|
joint_state_publisher_node,
|
|
joint_state_publisher_gui_node,
|
|
rviz_node
|
|
]) |