Modify the py file in the launch to fix the abnormal behavior of multiple device hot-swapping in Foxy ROS2 version.

This commit is contained in:
lixiaobin
2023-11-07 09:31:51 +08:00
parent ca3ad3fbbb
commit bf633463db
23 changed files with 1009 additions and 633 deletions
+48 -30
View File
@@ -5,6 +5,8 @@ from launch_ros.actions import PushRosNamespace
from launch.actions import GroupAction
from launch_ros.actions import ComposableNodeContainer
from launch_ros.descriptions import ComposableNode
from launch_ros.actions import Node
import os
def generate_launch_description():
@@ -76,34 +78,50 @@ def generate_launch_description():
# Node configuration
parameters = [{arg.name: LaunchConfiguration(arg.name)} for arg in args]
# get ROS_DISTRO
ros_distro = os.environ["ROS_DISTRO"]
if ros_distro == "foxy":
return LaunchDescription(
args
+ [
Node(
package="orbbec_camera",
executable="orbbec_camera_node",
name="ob_camera_node",
namespace=LaunchConfiguration("camera_name"),
parameters=parameters,
output="screen",
)
]
)
# Define the ComposableNode
compose_node = ComposableNode(
package='orbbec_camera',
plugin='orbbec_camera::OBCameraNodeDriver',
name=LaunchConfiguration('camera_name'),
namespace='',
parameters=parameters,
)
# Define the ComposableNodeContainer
container = ComposableNodeContainer(
name='camera_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
compose_node,
],
output='screen',
)
# Launch description
ld = LaunchDescription(
args +
[
GroupAction([
PushRosNamespace(LaunchConfiguration('camera_name')),
container
])
]
)
return ld
else:
# Define the ComposableNode
compose_node = ComposableNode(
package="orbbec_camera",
plugin="orbbec_camera::OBCameraNodeDriver",
name=LaunchConfiguration("camera_name"),
namespace="",
parameters=parameters,
)
# Define the ComposableNodeContainer
container = ComposableNodeContainer(
name="camera_container",
namespace="",
package="rclcpp_components",
executable="component_container",
composable_node_descriptions=[
compose_node,
],
output="screen",
)
# Launch description
ld = LaunchDescription(
args
+ [
GroupAction(
[PushRosNamespace(LaunchConfiguration("camera_name")), container]
)
]
)
return ld