diff --git a/ros_gz_sim_demos/CMakeLists.txt b/ros_gz_sim_demos/CMakeLists.txt index 8e0f580a..9b69104b 100644 --- a/ros_gz_sim_demos/CMakeLists.txt +++ b/ros_gz_sim_demos/CMakeLists.txt @@ -9,6 +9,12 @@ if(BUILD_TESTING) ament_lint_auto_find_test_dependencies() endif() +install( + DIRECTORY + config/ + DESTINATION share/${PROJECT_NAME}/config +) + install( DIRECTORY launch/ diff --git a/ros_gz_sim_demos/README.md b/ros_gz_sim_demos/README.md index c404a4dc..0d808277 100644 --- a/ros_gz_sim_demos/README.md +++ b/ros_gz_sim_demos/README.md @@ -44,7 +44,7 @@ Using the regular bridge: To use a camera that only publishes information when triggered: - ros2 launch ros_gz_sim_demos triggered_camera.launch.py + ros2 launch ros_gz_sim_demos triggered_camera.launch.xml Trigger the camera: diff --git a/ros_gz_sim_demos/config/triggered_camera.yaml b/ros_gz_sim_demos/config/triggered_camera.yaml new file mode 100644 index 00000000..ec6cbb85 --- /dev/null +++ b/ros_gz_sim_demos/config/triggered_camera.yaml @@ -0,0 +1,18 @@ +# triggered_cammera configuration. +- topic_name: "/camera" + ros_type_name: "sensor_msgs/msg/Image" + gz_type_name: "gz.msgs.Image" + lazy: true + direction: GZ_TO_ROS + +- topic_name: "/camera_info" + ros_type_name: "sensor_msgs/msg/CameraInfo" + gz_type_name: "gz.msgs.CameraInfo" + lazy: true + direction: GZ_TO_ROS + +- topic_name: "/camera/trigger" + ros_type_name: "std_msgs/msg/Bool" + gz_type_name: "gz.msgs.Boolean" + lazy: true + direction: ROS_TO_GZ diff --git a/ros_gz_sim_demos/launch/triggered_camera.launch.py b/ros_gz_sim_demos/launch/triggered_camera.launch.py deleted file mode 100644 index c13144f1..00000000 --- a/ros_gz_sim_demos/launch/triggered_camera.launch.py +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright 2022 Open Source Robotics Foundation, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os - -from ament_index_python.packages import get_package_share_directory - -from launch import LaunchDescription -from launch.actions import DeclareLaunchArgument -from launch.actions import IncludeLaunchDescription -from launch.conditions import IfCondition -from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import LaunchConfiguration - -from launch_ros.actions import Node - - -def generate_launch_description(): - - pkg_ros_gz_sim_demos = get_package_share_directory('ros_gz_sim_demos') - pkg_ros_gz_sim = get_package_share_directory('ros_gz_sim') - - gz_sim = IncludeLaunchDescription( - PythonLaunchDescriptionSource( - os.path.join(pkg_ros_gz_sim, 'launch', 'gz_sim.launch.py')), - launch_arguments={'gz_args': '-r triggered_camera_sensor.sdf'}.items(), - ) - - # RViz - rviz = Node( - package='rviz2', - executable='rviz2', - arguments=['-d', os.path.join(pkg_ros_gz_sim_demos, 'rviz', 'camera.rviz')], - condition=IfCondition(LaunchConfiguration('rviz')) - ) - - # Bridge - bridge = Node( - package='ros_gz_bridge', - executable='parameter_bridge', - arguments=['/camera@sensor_msgs/msg/Image@gz.msgs.Image', - '/camera/trigger@std_msgs/msg/Bool@gz.msgs.Boolean', - '/camera_info@sensor_msgs/msg/CameraInfo@gz.msgs.CameraInfo'], - output='screen' - ) - - return LaunchDescription([ - DeclareLaunchArgument('rviz', default_value='true', - description='Open RViz.'), - gz_sim, - bridge, - rviz - ]) diff --git a/ros_gz_sim_demos/launch/triggered_camera.launch.xml b/ros_gz_sim_demos/launch/triggered_camera.launch.xml new file mode 100644 index 00000000..ca8d3e65 --- /dev/null +++ b/ros_gz_sim_demos/launch/triggered_camera.launch.xml @@ -0,0 +1,12 @@ + + + + + +