Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,24 @@
# limitations under the License.

from launch import LaunchDescription
from launch.substitutions import PathJoinSubstitution
from launch.substitutions import PathSubstitution
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare


def generate_launch_description():

position_goals = PathJoinSubstitution(
[
FindPackageShare("ros2_control_demo_example_1"),
"config",
"rrbot_forward_position_publisher.yaml",
]
)

return LaunchDescription(
[
Node(
package="ros2_controllers_test_nodes",
executable="publisher_forward_position_controller",
name="publisher_forward_position_controller",
parameters=[position_goals],
parameters=[
PathSubstitution(FindPackageShare("ros2_control_demo_example_1"))
/ "config"
/ "rrbot_forward_position_publisher.yaml"
],
output="both",
)
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,24 @@
# limitations under the License.

from launch import LaunchDescription
from launch.substitutions import PathJoinSubstitution
from launch.substitutions import PathSubstitution
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare


def generate_launch_description():

position_goals = PathJoinSubstitution(
[
FindPackageShare("ros2_control_demo_example_1"),
"config",
"rrbot_joint_trajectory_publisher.yaml",
]
)

return LaunchDescription(
[
Node(
package="ros2_controllers_test_nodes",
executable="publisher_joint_trajectory_controller",
name="publisher_joint_trajectory_controller",
parameters=[position_goals],
parameters=[
PathSubstitution(FindPackageShare("ros2_control_demo_example_1"))
/ "config"
/ "rrbot_joint_trajectory_publisher.yaml"
],
output="both",
)
]
Expand Down
154 changes: 70 additions & 84 deletions example_1/description/launch/view_robot.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,97 +15,83 @@
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.conditions import IfCondition
from launch.substitutions import Command, FindExecutable, LaunchConfiguration, PathJoinSubstitution
from launch.substitutions import Command, LaunchConfiguration, PathSubstitution

from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare


def generate_launch_description():
# Declare arguments
declared_arguments = []
declared_arguments.append(
DeclareLaunchArgument(
"description_package",
default_value="ros2_control_demo_description",
description="Description package with robot URDF/xacro files. Usually the argument \
is not set, it enables use of a custom description.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"description_file",
default_value="rrbot.urdf.xacro",
description="URDF/XACRO description file with the robot.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"gui",
default_value="true",
description="Start Rviz2 and Joint State Publisher gui automatically \
with this launch file.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"prefix",
default_value='""',
description="Prefix of the joint names, useful for \
multi-robot setup. If changed than also joint names in the controllers' configuration \
have to be updated.",
)
)

# Initialize Arguments
description_package = LaunchConfiguration("description_package")
description_file = LaunchConfiguration("description_file")
gui = LaunchConfiguration("gui")
prefix = LaunchConfiguration("prefix")

# Get URDF via xacro
robot_description_content = Command(
return LaunchDescription(
[
PathJoinSubstitution([FindExecutable(name="xacro")]),
" ",
PathJoinSubstitution(
[FindPackageShare("ros2_control_demo_example_1"), "urdf", description_file]
DeclareLaunchArgument(
"description_package",
default_value="ros2_control_demo_description",
description=(
"Description package with robot URDF/xacro files. Usually the argument "
"is not set, it enables use of a custom description."
),
),
DeclareLaunchArgument(
"description_file",
default_value="rrbot.urdf.xacro",
description="URDF/XACRO description file with the robot.",
),
DeclareLaunchArgument(
"gui",
default_value="true",
description=(
"Start Rviz2 and Joint State Publisher gui automatically "
"with this launch file."
),
),
DeclareLaunchArgument(
"prefix",
default_value='""',
description=(
"Prefix of the joint names, useful for "
"multi-robot setup. If changed than also joint names in the controllers' configuration "
"have to be updated."
),
),
Node(
package="joint_state_publisher_gui",
executable="joint_state_publisher_gui",
condition=IfCondition(LaunchConfiguration("gui")),
),
Node(
package="robot_state_publisher",
executable="robot_state_publisher",
output="both",
parameters=[
{
"robot_description": Command(
[
"xacro",
" ",
PathSubstitution(FindPackageShare("ros2_control_demo_example_1"))
/ "urdf"
/ LaunchConfiguration("description_file"),
" ",
"prefix:=",
LaunchConfiguration("prefix"),
]
)
}
],
),
Node(
package="rviz2",
executable="rviz2",
name="rviz2",
output="log",
arguments=[
"-d",
PathSubstitution(FindPackageShare(LaunchConfiguration("description_package")))
/ "rrbot/rviz"
/ "rrbot.rviz",
],
condition=IfCondition(LaunchConfiguration("gui")),
),
" ",
"prefix:=",
prefix,
]
)
robot_description = {"robot_description": robot_description_content}

rviz_config_file = PathJoinSubstitution(
[FindPackageShare(description_package), "rrbot/rviz", "rrbot.rviz"]
)

joint_state_publisher_node = Node(
package="joint_state_publisher_gui",
executable="joint_state_publisher_gui",
condition=IfCondition(gui),
)
robot_state_publisher_node = Node(
package="robot_state_publisher",
executable="robot_state_publisher",
output="both",
parameters=[robot_description],
)
rviz_node = Node(
package="rviz2",
executable="rviz2",
name="rviz2",
output="log",
arguments=["-d", rviz_config_file],
condition=IfCondition(gui),
)

nodes = [
joint_state_publisher_node,
robot_state_publisher_node,
rviz_node,
]

return LaunchDescription(declared_arguments + nodes)
Loading