@@ -30,6 +30,11 @@ def generate_launch_description():
3030 )
3131 # TODO(anyone): enable this when added into ROS2-foxy
3232 # choices=['ur3', 'ur3e', 'ur5', 'ur5e', 'ur10', 'ur10e', 'ur16e']))
33+ declared_arguments .append (
34+ DeclareLaunchArgument (
35+ "robot_ip" , description = "IP address by which the robot can be reached."
36+ )
37+ )
3338 declared_arguments .append (
3439 DeclareLaunchArgument (
3540 "safety_limits" ,
@@ -119,6 +124,7 @@ def generate_launch_description():
119124
120125 # Initialize Arguments
121126 ur_type = LaunchConfiguration ("ur_type" )
127+ robot_ip = LaunchConfiguration ("robot_ip" )
122128 safety_limits = LaunchConfiguration ("safety_limits" )
123129 safety_pos_margin = LaunchConfiguration ("safety_pos_margin" )
124130 safety_k_position = LaunchConfiguration ("safety_k_position" )
@@ -161,6 +167,9 @@ def generate_launch_description():
161167 " " ,
162168 PathJoinSubstitution ([FindPackageShare (description_package ), "urdf" , description_file ]),
163169 " " ,
170+ "robot_ip:=" ,
171+ robot_ip ,
172+ " " ,
164173 "joint_limit_params:=" ,
165174 joint_limit_params ,
166175 " " ,
@@ -197,17 +206,32 @@ def generate_launch_description():
197206 "prefix:=" ,
198207 prefix ,
199208 " " ,
209+ "use_fake_hardware:=" ,
210+ use_fake_hardware ,
211+ " " ,
212+ "fake_sensor_commands:=" ,
213+ fake_sensor_commands ,
214+ " " ,
200215 ]
201216 )
202217 robot_description = {"robot_description" : robot_description_content }
203218
219+ robot_controllers = PathJoinSubstitution (
220+ [FindPackageShare (runtime_config_package ), "config" , controllers_file ]
221+ )
222+
204223 rviz_config_file = PathJoinSubstitution (
205224 [FindPackageShare (description_package ), "rviz" , "view_robot.rviz" ]
206225 )
207226
208- joint_state_publisher_node = Node (
209- package = "joint_state_publisher_gui" ,
210- executable = "joint_state_publisher_gui" ,
227+ control_node = Node (
228+ package = "controller_manager" ,
229+ executable = "ros2_control_node" ,
230+ parameters = [robot_description , robot_controllers ],
231+ output = {
232+ "stdout" : "screen" ,
233+ "stderr" : "screen" ,
234+ },
211235 )
212236
213237 robot_state_publisher_node = Node (
@@ -219,17 +243,60 @@ def generate_launch_description():
219243
220244 rviz_node = Node (
221245 package = "rviz2" ,
222- condition = IfCondition (LaunchConfiguration ( " launch_rviz" ) ),
246+ condition = IfCondition (launch_rviz ),
223247 executable = "rviz2" ,
224248 name = "rviz2" ,
225249 output = "log" ,
226250 arguments = ["-d" , rviz_config_file ],
227251 )
228252
253+ joint_state_broadcaster_spawner = Node (
254+ package = "controller_manager" ,
255+ executable = "spawner.py" ,
256+ arguments = ["joint_state_broadcaster" , "--controller-manager" , "/controller_manager" ],
257+ )
258+
259+ io_and_status_controller_spawner = Node (
260+ package = "controller_manager" ,
261+ executable = "spawner.py" ,
262+ arguments = ["io_and_status_controller" , "-c" , "/controller_manager" ],
263+ )
264+
265+ speed_scaling_state_broadcaster_spawner = Node (
266+ package = "controller_manager" ,
267+ executable = "spawner.py" ,
268+ arguments = [
269+ "speed_scaling_state_broadcaster" ,
270+ "--controller-manager" ,
271+ "/controller_manager" ,
272+ ],
273+ )
274+
275+ force_torque_sensor_broadcaster_spawner = Node (
276+ package = "controller_manager" ,
277+ executable = "spawner.py" ,
278+ arguments = [
279+ "force_torque_sensor_broadcaster" ,
280+ "--controller-manager" ,
281+ "/controller_manager" ,
282+ ],
283+ )
284+
285+ robot_controller_spawner = Node (
286+ package = "controller_manager" ,
287+ executable = "spawner.py" ,
288+ arguments = [robot_controller , "-c" , "/controller_manager" ],
289+ )
290+
229291 nodes_to_start = [
230- joint_state_publisher_node ,
292+ control_node ,
231293 robot_state_publisher_node ,
232294 rviz_node ,
295+ joint_state_broadcaster_spawner ,
296+ io_and_status_controller_spawner ,
297+ speed_scaling_state_broadcaster_spawner ,
298+ force_torque_sensor_broadcaster_spawner ,
299+ robot_controller_spawner ,
233300 ]
234301
235302 return LaunchDescription (declared_arguments + nodes_to_start )
0 commit comments