@@ -32,17 +32,9 @@ def generate_launch_description():
32
32
description = "Start RViz2 automatically with this launch file." ,
33
33
)
34
34
)
35
- declared_arguments .append (
36
- DeclareLaunchArgument (
37
- "sim" ,
38
- default_value = "true" ,
39
- description = "Whether to start controllers for simulation or real hardware." ,
40
- )
41
- )
42
35
43
36
# Initialize Arguments
44
37
gui = LaunchConfiguration ("gui" )
45
- sim = LaunchConfiguration ("sim" )
46
38
47
39
# Get URDF via xacro
48
40
robot_description_content = Command (
@@ -52,8 +44,6 @@ def generate_launch_description():
52
44
PathJoinSubstitution (
53
45
[FindPackageShare ("ros2_control_demo_example_11" ), "urdf" , "carlikebot.urdf.xacro" ]
54
46
),
55
- " sim:=" ,
56
- sim ,
57
47
]
58
48
)
59
49
robot_description = {"robot_description" : robot_description_content }
@@ -66,7 +56,7 @@ def generate_launch_description():
66
56
]
67
57
)
68
58
rviz_config_file = PathJoinSubstitution (
69
- [FindPackageShare ("ros2_control_demo_example_11 " ), "rviz" , "carlikebot.rviz" ]
59
+ [FindPackageShare ("ros2_control_demo_description " ), "carlikebot/ rviz" , "carlikebot.rviz" ]
70
60
)
71
61
72
62
control_node = Node (
@@ -80,20 +70,9 @@ def generate_launch_description():
80
70
executable = "robot_state_publisher" ,
81
71
output = "both" ,
82
72
parameters = [robot_description ],
83
- # remappings=[
84
- # ("/ackermann_steering_controller/reference_unstamped", "/cmd_vel"),
85
- # ],
86
- condition = IfCondition (sim ),
87
- )
88
- robot_state_pub_bicycle_node = Node (
89
- package = "robot_state_publisher" ,
90
- executable = "robot_state_publisher" ,
91
- output = "both" ,
92
- parameters = [robot_description ],
93
- # remappings=[
94
- # ("/bicycle_steering_controller/reference_unstamped", "/cmd_vel"),
95
- # ],
96
- condition = UnlessCondition (sim ),
73
+ remappings = [
74
+ ("/ackermann_steering_controller/reference_unstamped" , "/cmd_vel" ),
75
+ ],
97
76
)
98
77
rviz_node = Node (
99
78
package = "rviz2" ,
@@ -114,13 +93,6 @@ def generate_launch_description():
114
93
package = "controller_manager" ,
115
94
executable = "spawner" ,
116
95
arguments = ["ackermann_steering_controller" , "--controller-manager" , "/controller_manager" ],
117
- condition = IfCondition (sim ),
118
- )
119
- robot_bicycle_controller_spawner = Node (
120
- package = "controller_manager" ,
121
- executable = "spawner" ,
122
- arguments = ["bicycle_steering_controller" , "--controller-manager" , "/controller_manager" ],
123
- condition = UnlessCondition (sim ),
124
96
)
125
97
126
98
# Delay rviz start after `joint_state_broadcaster`
@@ -135,17 +107,25 @@ def generate_launch_description():
135
107
delay_robot_controller_spawner_after_joint_state_broadcaster_spawner = RegisterEventHandler (
136
108
event_handler = OnProcessExit (
137
109
target_action = joint_state_broadcaster_spawner ,
138
- on_exit = [robot_ackermann_controller_spawner , robot_bicycle_controller_spawner ],
110
+ on_exit = [robot_ackermann_controller_spawner ],
139
111
)
140
112
)
113
+
114
+ # the steering controller libraries by default publish odometry on a seperate topic than /tf
115
+ relay_topic_to_tf_node = Node (
116
+ package = 'topic_tools' ,
117
+ executable = 'relay' ,
118
+ arguments = ['/ackermann_steering_controller/tf_odometry' , '/tf' ],
119
+ output = 'screen' ,
120
+ )
141
121
142
122
nodes = [
143
123
control_node ,
144
124
robot_state_pub_ackermann_node ,
145
- robot_state_pub_bicycle_node ,
146
125
joint_state_broadcaster_spawner ,
147
126
delay_rviz_after_joint_state_broadcaster_spawner ,
148
127
delay_robot_controller_spawner_after_joint_state_broadcaster_spawner ,
128
+ relay_topic_to_tf_node ,
149
129
]
150
130
151
131
return LaunchDescription (declared_arguments + nodes )
0 commit comments