Bug fiix import patron.xacro and append packages realsense2
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# Align Depth to Color
|
||||
This example shows how to start the camera node and align depth stream to color stream.
|
||||
```
|
||||
ros2 launch realsense2_camera rs_align_depth_launch.py
|
||||
```
|
||||
|
||||
The aligned image will be published to the topic "/aligned_depth_to_color/image_raw"
|
||||
|
||||
Also, align depth to color can enabled by following cmd:
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch.py align_depth.enable:=true
|
||||
```
|
||||
@@ -0,0 +1,56 @@
|
||||
# Copyright 2023 RealSense, Inc. All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# DESCRIPTION #
|
||||
# ----------- #
|
||||
# Use this launch file to launch a device and align depth to color.
|
||||
# The Parameters available for definition in the command line for the camera are described in rs_launch.configurable_parameters
|
||||
# command line example:
|
||||
# ros2 launch realsense2_camera rs_align_depth_launch.py
|
||||
|
||||
"""Launch realsense2_camera node."""
|
||||
from launch import LaunchDescription
|
||||
import launch_ros.actions
|
||||
from launch.actions import OpaqueFunction
|
||||
from launch.substitutions import LaunchConfiguration, ThisLaunchFileDir
|
||||
import sys
|
||||
import pathlib
|
||||
sys.path.append(str(pathlib.Path(__file__).parent.absolute()))
|
||||
import os
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
sys.path.append(os.path.join(get_package_share_directory('realsense2_camera'), 'launch'))
|
||||
import rs_launch
|
||||
|
||||
local_parameters = [{'name': 'camera_name', 'default': 'camera', 'description': 'camera unique name'},
|
||||
{'name': 'camera_namespace', 'default': 'camera', 'description': 'camera namespace'},
|
||||
{'name': 'enable_color', 'default': 'true', 'description': 'enable color stream'},
|
||||
{'name': 'enable_depth', 'default': 'true', 'description': 'enable depth stream'},
|
||||
{'name': 'align_depth.enable', 'default': 'true', 'description': 'enable align depth filter'},
|
||||
{'name': 'enable_sync', 'default': 'true', 'description': 'enable sync mode'},
|
||||
]
|
||||
|
||||
def set_configurable_parameters(local_params):
|
||||
return dict([(param['name'], LaunchConfiguration(param['name'])) for param in local_params])
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
params = rs_launch.configurable_parameters
|
||||
return LaunchDescription(
|
||||
rs_launch.declare_configurable_parameters(local_parameters) +
|
||||
rs_launch.declare_configurable_parameters(params) +
|
||||
[
|
||||
OpaqueFunction(function=rs_launch.launch_setup,
|
||||
kwargs = {'params' : set_configurable_parameters(params)}
|
||||
)
|
||||
])
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"application_config":
|
||||
{
|
||||
"sip":
|
||||
{
|
||||
"immediate_mode_safety_features_selection": 0,
|
||||
"temporal_safety_features_selection": 0,
|
||||
"mechanisms_thresholds": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"mechanisms_sampling_interval": [0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"tc_consecutives_failures_threshold": 3
|
||||
},
|
||||
"dev_rules_selection": 0,
|
||||
"depth_pipe_safety_checks_override": 0,
|
||||
"triggered_calib_safety_checks_override": 0,
|
||||
"smcu_bypass_directly_to_maintenance_mode": 0,
|
||||
"smcu_skip_spi_error": 0,
|
||||
"temp_thresholds":
|
||||
{
|
||||
"ir_right": [0, 0, 0, 0],
|
||||
"ir_left": [0, 0, 0, 0],
|
||||
"apm_left": [0, 0, 0, 0],
|
||||
"apm_right": [0, 0, 0, 0],
|
||||
"hkr_core": [0, 0, 0, 0],
|
||||
"smcu_right": [0, 0, 0, 0],
|
||||
"sht4x": [0, 0, 0, 0],
|
||||
"imu": [0, 0, 0, 0]
|
||||
},
|
||||
"sht4x_humidity_threshold": 23,
|
||||
"voltage_thresholds":
|
||||
{
|
||||
"vdd3v3": 0,
|
||||
"vdd1v8": 0,
|
||||
"vdd1v2": 0,
|
||||
"vdd1v1": 0,
|
||||
"vdd0v8": 0,
|
||||
"vdd0v6": 0,
|
||||
"vdd5vo_u": 0,
|
||||
"vdd5vo_l": 0,
|
||||
"vdd0v8_ddr": 0
|
||||
},
|
||||
"developer_mode":
|
||||
{
|
||||
"hkr": 0,
|
||||
"smcu": 0,
|
||||
"hkr_simulated_lock_state": 0,
|
||||
"sc": 0
|
||||
},
|
||||
"depth_pipeline_config": 0,
|
||||
"depth_roi": 0,
|
||||
"ir_for_sip": 0,
|
||||
"peripherals_sensors_disable_mask": 0,
|
||||
"digital_signature": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"calibration_config":
|
||||
{
|
||||
"roi_num_of_segments": 2,
|
||||
"roi_0":
|
||||
{
|
||||
"vertex_0": [ 0, 36 ],
|
||||
"vertex_1": [ 640, 144 ],
|
||||
"vertex_2": [ 640, 576 ],
|
||||
"vertex_3": [ 0, 684 ]
|
||||
},
|
||||
"roi_1":
|
||||
{
|
||||
"vertex_0": [ 640, 144 ],
|
||||
"vertex_1": [ 1280, 35 ],
|
||||
"vertex_2": [ 1280, 684 ],
|
||||
"vertex_3": [ 640, 576 ]
|
||||
},
|
||||
"roi_2":
|
||||
{
|
||||
"vertex_0": [ 0, 0 ],
|
||||
"vertex_1": [ 0, 0 ],
|
||||
"vertex_2": [ 0, 0 ],
|
||||
"vertex_3": [ 0, 0 ]
|
||||
},
|
||||
"roi_3":
|
||||
{
|
||||
"vertex_0": [ 0, 0 ],
|
||||
"vertex_1": [ 0, 0 ],
|
||||
"vertex_2": [ 0, 0 ],
|
||||
"vertex_3": [ 0, 0 ]
|
||||
},
|
||||
"camera_position":
|
||||
{
|
||||
"rotation":
|
||||
[
|
||||
[ 0.0, 0.0, 1.0],
|
||||
[-1.0, 0.0, 0.0],
|
||||
[ 0.0, -1.0, 0.0]
|
||||
],
|
||||
"translation": [0.0, 0.0, 0.27]
|
||||
},
|
||||
"crypto_signature": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
{
|
||||
"safety_interface_config":
|
||||
{
|
||||
"m12_safety_pins_configuration":
|
||||
{
|
||||
"power":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "p24VDC"
|
||||
},
|
||||
"ossd1_b":
|
||||
{
|
||||
"direction": "Out",
|
||||
"functionality": "pOSSD1_B"
|
||||
},
|
||||
"ossd1_a":
|
||||
{
|
||||
"direction": "Out",
|
||||
"functionality": "pOSSD1_A"
|
||||
},
|
||||
"preset3_a":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect3_A"
|
||||
},
|
||||
"preset3_b":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect3_B"
|
||||
},
|
||||
"preset4_a":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect4_A"
|
||||
},
|
||||
"preset1_b":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect1_B"
|
||||
},
|
||||
"preset1_a":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect1_A"
|
||||
},
|
||||
"gpio_0":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect5_A"
|
||||
},
|
||||
"gpio_1":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect5_B"
|
||||
},
|
||||
"gpio_3":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect6_B"
|
||||
},
|
||||
"gpio_2":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect6_A"
|
||||
},
|
||||
"preset2_b":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect2_B"
|
||||
},
|
||||
"gpio_4":
|
||||
{
|
||||
"direction": "Out",
|
||||
"functionality": "pDeviceReady"
|
||||
},
|
||||
"preset2_a":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect2_A"
|
||||
},
|
||||
"preset4_b":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pPresetSelect4_B"
|
||||
},
|
||||
"ground":
|
||||
{
|
||||
"direction": "In",
|
||||
"functionality": "pGND"
|
||||
}
|
||||
},
|
||||
"gpio_stabilization_interval" : 150,
|
||||
"camera_position":
|
||||
{
|
||||
"rotation":
|
||||
[
|
||||
[ 0.0, 0.0, 1.0],
|
||||
[-1.0, 0.0, 0.0],
|
||||
[ 0.0, -1.0, 0.0]
|
||||
],
|
||||
"translation": [0.0, 0.0, 0.27]
|
||||
},
|
||||
"occupancy_grid_params":
|
||||
{
|
||||
"grid_cell_seed" : 20,
|
||||
"close_range_quorum" : 12 ,
|
||||
"mid_range_quorum" : 6,
|
||||
"long_range_quorum" : 4
|
||||
},
|
||||
"smcu_arbitration_params":
|
||||
{
|
||||
"l_0_total_threshold": 100,
|
||||
"l_0_sustained_rate_threshold": 20,
|
||||
"l_1_total_threshold": 100,
|
||||
"l_1_sustained_rate_threshold": 20,
|
||||
"l_2_total_threshold": 10,
|
||||
"hkr_stl_timeout": 15,
|
||||
"mcu_stl_timeout": 10,
|
||||
"sustained_aicv_frame_drops": 95,
|
||||
"ossd_self_test_pulse_width": 23
|
||||
},
|
||||
"crypto_signature": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,165 @@
|
||||
{
|
||||
"safety_preset":
|
||||
{
|
||||
"platform_config":
|
||||
{
|
||||
"transformation_link":
|
||||
{
|
||||
"rotation":
|
||||
[
|
||||
[ 0.0, 0.0, 1.0],
|
||||
[-1.0, 0.0, 0.0],
|
||||
[ 0.0, -1.0, 0.0]
|
||||
],
|
||||
"translation": [0.0, 0.0, 0.27]
|
||||
},
|
||||
"robot_height": 1.0,
|
||||
"reserved": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
},
|
||||
"safety_zones":
|
||||
{
|
||||
"danger_zone":
|
||||
{
|
||||
"zone_polygon":
|
||||
{
|
||||
"p0": {"x": 0.5, "y": 0.1},
|
||||
"p1": {"x": 0.8, "y": 0.1},
|
||||
"p2": {"x": 0.8, "y": -0.1},
|
||||
"p3": {"x": 0.5, "y": -0.1}
|
||||
},
|
||||
"safety_trigger_confidence": 3,
|
||||
"reserved": [0, 0, 0, 0, 0, 0, 0]
|
||||
},
|
||||
"warning_zone":
|
||||
{
|
||||
"zone_polygon":
|
||||
{
|
||||
"p0": {"x": 0.8, "y": 0.1},
|
||||
"p1": {"x": 1.2, "y": 0.1},
|
||||
"p2": {"x": 1.2, "y": -0.1},
|
||||
"p3": {"x": 0.8, "y": -0.1}
|
||||
},
|
||||
"safety_trigger_confidence": 3,
|
||||
"reserved": [0, 0, 0, 0, 0, 0, 0]
|
||||
}
|
||||
},
|
||||
"masking_zones":
|
||||
{
|
||||
"0":
|
||||
{
|
||||
"attributes": 0,
|
||||
"minimal_range": 0.5,
|
||||
"region_of_interests":
|
||||
{
|
||||
"vertex_0": [0, 0],
|
||||
"vertex_1": [0, 320],
|
||||
"vertex_2": [200, 320],
|
||||
"vertex_3": [200, 0]
|
||||
}
|
||||
},
|
||||
"1":
|
||||
{
|
||||
"attributes": 0,
|
||||
"minimal_range": 0.5,
|
||||
"region_of_interests":
|
||||
{
|
||||
"vertex_0": [0, 0],
|
||||
"vertex_1": [0, 320],
|
||||
"vertex_2": [200, 320],
|
||||
"vertex_3": [200, 0]
|
||||
}
|
||||
},
|
||||
"2":
|
||||
{
|
||||
"attributes": 0,
|
||||
"minimal_range": 0.5,
|
||||
"region_of_interests":
|
||||
{
|
||||
"vertex_0": [0, 0],
|
||||
"vertex_1": [0, 320],
|
||||
"vertex_2": [200, 320],
|
||||
"vertex_3": [200, 0]
|
||||
}
|
||||
},
|
||||
"3":
|
||||
{
|
||||
"attributes": 0,
|
||||
"minimal_range": 0.5,
|
||||
"region_of_interests":
|
||||
{
|
||||
"vertex_0": [0, 0],
|
||||
"vertex_1": [0, 320],
|
||||
"vertex_2": [200, 320],
|
||||
"vertex_3": [200, 0]
|
||||
}
|
||||
},
|
||||
"4":
|
||||
{
|
||||
"attributes": 0,
|
||||
"minimal_range": 0.5,
|
||||
"region_of_interests":
|
||||
{
|
||||
"vertex_0": [0, 0],
|
||||
"vertex_1": [0, 320],
|
||||
"vertex_2": [200, 320],
|
||||
"vertex_3": [200, 0]
|
||||
}
|
||||
},
|
||||
"5":
|
||||
{
|
||||
"attributes": 0,
|
||||
"minimal_range": 0.5,
|
||||
"region_of_interests":
|
||||
{
|
||||
"vertex_0": [0, 0],
|
||||
"vertex_1": [0, 320],
|
||||
"vertex_2": [200, 320],
|
||||
"vertex_3": [200, 0]
|
||||
}
|
||||
},
|
||||
"6":
|
||||
{
|
||||
"attributes": 0,
|
||||
"minimal_range": 0.5,
|
||||
"region_of_interests":
|
||||
{
|
||||
"vertex_0": [0, 0],
|
||||
"vertex_1": [0, 320],
|
||||
"vertex_2": [200, 320],
|
||||
"vertex_3": [200, 0]
|
||||
}
|
||||
},
|
||||
"7":
|
||||
{
|
||||
"attributes": 1,
|
||||
"minimal_range": 0,
|
||||
"region_of_interests":
|
||||
{
|
||||
"vertex_0": [500, 3300],
|
||||
"vertex_1": [800, 3300],
|
||||
"vertex_2": [800, 3100],
|
||||
"vertex_3": [500, 3100]
|
||||
}
|
||||
}
|
||||
},
|
||||
"reserved": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"environment":
|
||||
{
|
||||
"safety_trigger_duration": 1.0,
|
||||
"zero_safety_monitoring": 0,
|
||||
"hara_history_continuation": 0,
|
||||
"reserved1": [0, 0],
|
||||
"angular_velocity": 0.0,
|
||||
"payload_weight": 0.0,
|
||||
"surface_inclination": 15.0,
|
||||
"surface_height": 0.05,
|
||||
"diagnostic_zone_fill_rate_threshold": 255,
|
||||
"floor_fill_threshold": 255,
|
||||
"depth_fill_threshold": 255,
|
||||
"diagnostic_zone_height_median_threshold": 255,
|
||||
"vision_hara_persistency": 1,
|
||||
"crypto_signature": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"reserved2": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
# Launching Dual RS ROS2 nodes
|
||||
The following example lanches two RS ROS2 nodes.
|
||||
```
|
||||
ros2 launch realsense2_camera rs_dual_camera_launch.py serial_no1:=<serial number of the first camera> serial_no2:=<serial number of the second camera>
|
||||
```
|
||||
|
||||
## Example:
|
||||
Let's say the serial numbers of two RS cameras are 207322251310 and 234422060144.
|
||||
```
|
||||
ros2 launch realsense2_camera rs_dual_camera_launch.py serial_no1:="'207322251310'" serial_no2:="'234422060144'"
|
||||
```
|
||||
or
|
||||
```
|
||||
ros2 launch realsense2_camera rs_dual_camera_launch.py serial_no1:=_207322251310 serial_no2:=_234422060144
|
||||
```
|
||||
|
||||
## How to know the serial number?
|
||||
Method 1: Using the rs-enumerate-devices tool
|
||||
```
|
||||
rs-enumerate-devices | grep "Serial Number"
|
||||
```
|
||||
|
||||
Method 2: Connect single camera and run
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch.py
|
||||
```
|
||||
and look for the serial number in the log printed to screen under "[INFO][...] Device Serial No:".
|
||||
|
||||
# Using Multiple RS camera by launching each in differnet terminals
|
||||
Make sure you set a different name and namespace for each camera.
|
||||
|
||||
Terminal 1:
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch.py serial_no:="'207322251310'" camera_name:='camera1' camera_namespace:='camera1'
|
||||
```
|
||||
Terminal 2:
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch.py serial_no:="'234422060144'" camera_name:='camera2' camera_namespace:='camera2'
|
||||
```
|
||||
|
||||
# Multiple cameras showing a semi-unified pointcloud
|
||||
The D430 series of RealSense cameras use stereo based algorithm to calculate depth. This mean, a couple of cameras can operate on the same scene. For the purpose of this demonstration, let's say 2 cameras can be coupled to look at the same scene from 2 different points of view. See image:
|
||||
|
||||

|
||||
|
||||
The schematic settings could be described as:
|
||||
X--------------------------------->cam_2
|
||||
|    (70 cm)
|
||||
|
|
||||
|
|
||||
| (60 cm)
|
||||
|
|
||||
|
|
||||
/
|
||||
cam_1
|
||||
|
||||
The cameras have no data regarding their relative position. Thats up to a third party program to set. To simplify things, the coordinate system of cam_1 can be considered as the refernce coordinate system for the whole scene.
|
||||
|
||||
The estimated translation of cam_2 from cam_1 is 70(cm) on X-axis and 60(cm) on Y-axis. Also, the estimated yaw angle of cam_2 relative to cam_1 as 90(degrees) clockwise. These are the initial parameters to be set for setting the transformation between the 2 cameras as follows:
|
||||
|
||||
```
|
||||
ros2 launch realsense2_camera rs_dual_camera_launch.py serial_no1:=_207322251310 serial_no2:=_234422060144 tf.translation.x:=0.7 tf.translation.y:=0.6 tf.translation.z:=0.0 tf.rotation.yaw:=-90.0 tf.rotation.pitch:=0.0 tf.rotation.roll:=0.0
|
||||
```
|
||||
|
||||
If the unified pointcloud result is not good, follow the below steps to fine-tune the calibaration.
|
||||
|
||||
## Visualizing the pointclouds and fine-tune the camera calibration
|
||||
Launch 2 cameras in separate terminals:
|
||||
|
||||
**Terminal 1:**
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch.py serial_no:="'207322251310'" camera_name:='camera1' camera_namespace:='camera1'
|
||||
```
|
||||
**Terminal 2:**
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch.py serial_no:="'234422060144'" camera_name:='camera2' camera_namespace:='camera2'
|
||||
```
|
||||
**Terminal 3:**
|
||||
```
|
||||
rviz2
|
||||
```
|
||||
Open rviz and set 'Fixed Frame' to camera1_link
|
||||
Add Pointcloud2-> By topic -> /camera1/camera1/depth/color/points
|
||||
Add Pointcloud2 -> By topic -> /camera2/camera2/depth/color/points
|
||||
|
||||
**Terminal 4:**
|
||||
Run the 'set_cams_transforms.py' tool. It can be used to fine-tune the calibaration.
|
||||
```
|
||||
python src/realsense-ros/realsense2_camera/scripts/set_cams_transforms.py camera1_link camera2_link 0.7 0.6 0 -90 0 0
|
||||
```
|
||||
|
||||
**Instructions printed by the tool:**
|
||||
```
|
||||
Using default file /home/user_name/ros2_ws/src/realsense-ros/realsense2_camera/scripts/_set_cams_info_file.txt
|
||||
|
||||
Use given initial values.
|
||||
|
||||
Press the following keys to change mode: x, y, z, (a)zimuth, (p)itch, (r)oll
|
||||
|
||||
For each mode, press 6 to increase by step and 4 to decrease
|
||||
|
||||
Press + to multiply step by 2 or - to divide
|
||||
|
||||
Press Q to quit
|
||||
```
|
||||
|
||||
Note that the tool prints the path of the current configuration file. It saves its last configuration automatically, all the time, to be used on the next run.
|
||||
|
||||
After a lot of fiddling around, unified pointcloud looked better with the following calibaration:
|
||||
```
|
||||
x = 0.75
|
||||
y = 0.575
|
||||
z = 0
|
||||
azimuth = -91.25
|
||||
pitch = 0.75
|
||||
roll = 0
|
||||
```
|
||||
|
||||
Now, use the above results in the launch file:
|
||||
```
|
||||
ros2 launch realsense2_camera rs_dual_camera_launch.py serial_no1:=_207322251310 serial_no2:=_234422060144 tf.translation.x:=0.75 tf.translation.y:=0.575 tf.translation.z:=0.0 tf.rotation.yaw:=-91.25 tf.rotation.pitch:=0.75 tf.rotation.roll:=0.0
|
||||
```
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
# Copyright 2023 RealSense, Inc. All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# DESCRIPTION #
|
||||
# ----------- #
|
||||
# Use this launch file to launch 2 devices.
|
||||
# The Parameters available for definition in the command line for each camera are described in rs_launch.configurable_parameters
|
||||
# For each device, the parameter name was changed to include an index.
|
||||
# For example: to set camera_name for device1 set parameter camera_name1.
|
||||
# command line example:
|
||||
# ros2 launch realsense2_camera rs_dual_camera_launch.py serial_no1:=<serial number of 1st camera> serial_no2:=<serial number of 2nd camera>
|
||||
|
||||
"""Launch realsense2_camera node."""
|
||||
import copy
|
||||
from launch import LaunchDescription, LaunchContext
|
||||
import launch_ros.actions
|
||||
from launch.actions import OpaqueFunction
|
||||
from launch.substitutions import LaunchConfiguration, ThisLaunchFileDir
|
||||
import sys
|
||||
import pathlib
|
||||
sys.path.append(str(pathlib.Path(__file__).parent.absolute()))
|
||||
import os
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
sys.path.append(os.path.join(get_package_share_directory('realsense2_camera'), 'launch'))
|
||||
import rs_launch
|
||||
|
||||
local_parameters = [{'name': 'camera_name1', 'default': 'camera1', 'description': 'camera unique name'},
|
||||
{'name': 'camera_name2', 'default': 'camera2', 'description': 'camera unique name'},
|
||||
{'name': 'camera_namespace1', 'default': 'camera1', 'description': 'camera1 namespace'},
|
||||
{'name': 'camera_namespace2', 'default': 'camera2', 'description': 'camera2 namespace'},
|
||||
{'name': 'enable_color1', 'default': 'true', 'description': 'enable color stream'},
|
||||
{'name': 'enable_color2', 'default': 'true', 'description': 'enable color stream'},
|
||||
{'name': 'enable_depth1', 'default': 'true', 'description': 'enable depth stream'},
|
||||
{'name': 'enable_depth2', 'default': 'true', 'description': 'enable depth stream'},
|
||||
{'name': 'pointcloud.enable1', 'default': 'true', 'description': 'enable pointcloud'},
|
||||
{'name': 'pointcloud.enable2', 'default': 'true', 'description': 'enable pointcloud'},
|
||||
{'name': 'spatial_filter.enable1', 'default': 'true', 'description': 'enable_spatial_filter'},
|
||||
{'name': 'spatial_filter.enable2', 'default': 'true', 'description': 'enable_spatial_filter'},
|
||||
{'name': 'temporal_filter.enable1', 'default': 'true', 'description': 'enable_temporal_filter'},
|
||||
{'name': 'temporal_filter.enable2', 'default': 'true', 'description': 'enable_temporal_filter'},
|
||||
{'name': 'tf.translation.x', 'default': '0.0', 'description': 'x'},
|
||||
{'name': 'tf.translation.y', 'default': '0.0', 'description': 'y'},
|
||||
{'name': 'tf.translation.z', 'default': '0.0', 'description': 'z'},
|
||||
{'name': 'tf.rotation.yaw', 'default': '0.0', 'description': 'yaw'},
|
||||
{'name': 'tf.rotation.pitch', 'default': '0.0', 'description': 'pitch'},
|
||||
{'name': 'tf.rotation.roll', 'default': '0.0', 'description': 'roll'},
|
||||
]
|
||||
|
||||
def set_configurable_parameters(local_params):
|
||||
return dict([(param['original_name'], LaunchConfiguration(param['name'])) for param in local_params])
|
||||
|
||||
def duplicate_params(general_params, posix):
|
||||
local_params = copy.deepcopy(general_params)
|
||||
for param in local_params:
|
||||
param['original_name'] = param['name']
|
||||
param['name'] += posix
|
||||
return local_params
|
||||
|
||||
def launch_static_transform_publisher_node(context : LaunchContext):
|
||||
# Static transformation from camera1 to camera2
|
||||
node = launch_ros.actions.Node(
|
||||
name = "my_static_transform_publisher",
|
||||
package = "tf2_ros",
|
||||
executable = "static_transform_publisher",
|
||||
arguments = [context.launch_configurations['tf.translation.x'],
|
||||
context.launch_configurations['tf.translation.y'],
|
||||
context.launch_configurations['tf.translation.z'],
|
||||
context.launch_configurations['tf.rotation.yaw'],
|
||||
context.launch_configurations['tf.rotation.pitch'],
|
||||
context.launch_configurations['tf.rotation.roll'],
|
||||
context.launch_configurations['camera_name1'] + "_link",
|
||||
context.launch_configurations['camera_name2'] + "_link"]
|
||||
)
|
||||
return [node]
|
||||
|
||||
def generate_launch_description():
|
||||
params1 = duplicate_params(rs_launch.configurable_parameters, '1')
|
||||
params2 = duplicate_params(rs_launch.configurable_parameters, '2')
|
||||
return LaunchDescription(
|
||||
rs_launch.declare_configurable_parameters(local_parameters) +
|
||||
rs_launch.declare_configurable_parameters(params1) +
|
||||
rs_launch.declare_configurable_parameters(params2) +
|
||||
[
|
||||
OpaqueFunction(function=rs_launch.launch_setup,
|
||||
kwargs = {'params' : set_configurable_parameters(params1),
|
||||
'param_name_suffix': '1'}),
|
||||
OpaqueFunction(function=rs_launch.launch_setup,
|
||||
kwargs = {'params' : set_configurable_parameters(params2),
|
||||
'param_name_suffix': '2'}),
|
||||
OpaqueFunction(function=launch_static_transform_publisher_node),
|
||||
launch_ros.actions.Node(
|
||||
package='rviz2',
|
||||
namespace='',
|
||||
executable='rviz2',
|
||||
name='rviz2',
|
||||
arguments=['-d', [ThisLaunchFileDir(), '/rviz/dual_camera_pointcloud.rviz']]
|
||||
)
|
||||
])
|
||||
@@ -0,0 +1,194 @@
|
||||
Panels:
|
||||
- Class: rviz_common/Displays
|
||||
Help Height: 0
|
||||
Name: Displays
|
||||
Property Tree Widget:
|
||||
Expanded:
|
||||
- /Global Options1
|
||||
- /Status1
|
||||
- /Grid1
|
||||
- /PointCloud21
|
||||
- /PointCloud22
|
||||
Splitter Ratio: 0.5
|
||||
Tree Height: 865
|
||||
- Class: rviz_common/Selection
|
||||
Name: Selection
|
||||
- Class: rviz_common/Tool Properties
|
||||
Expanded:
|
||||
- /Publish Point1
|
||||
Name: Tool Properties
|
||||
Splitter Ratio: 0.5886790156364441
|
||||
- Class: rviz_common/Views
|
||||
Expanded:
|
||||
- /Current View1
|
||||
Name: Views
|
||||
Splitter Ratio: 0.5
|
||||
Visualization Manager:
|
||||
Class: ""
|
||||
Displays:
|
||||
- Alpha: 0.5
|
||||
Cell Size: 1
|
||||
Class: rviz_default_plugins/Grid
|
||||
Color: 160; 160; 164
|
||||
Enabled: true
|
||||
Line Style:
|
||||
Line Width: 0.029999999329447746
|
||||
Value: Lines
|
||||
Name: Grid
|
||||
Normal Cell Count: 0
|
||||
Offset:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
Plane: XY
|
||||
Plane Cell Count: 10
|
||||
Reference Frame: <Fixed Frame>
|
||||
Value: true
|
||||
- Alpha: 1
|
||||
Autocompute Intensity Bounds: true
|
||||
Autocompute Value Bounds:
|
||||
Max Value: 10
|
||||
Min Value: -10
|
||||
Value: true
|
||||
Axis: Z
|
||||
Channel Name: intensity
|
||||
Class: rviz_default_plugins/PointCloud2
|
||||
Color: 255; 255; 255
|
||||
Color Transformer: RGB8
|
||||
Decay Time: 0
|
||||
Enabled: true
|
||||
Invert Rainbow: false
|
||||
Max Color: 255; 255; 255
|
||||
Max Intensity: 4096
|
||||
Min Color: 0; 0; 0
|
||||
Min Intensity: 0
|
||||
Name: PointCloud2
|
||||
Position Transformer: XYZ
|
||||
Selectable: true
|
||||
Size (Pixels): 3
|
||||
Size (m): 0.009999999776482582
|
||||
Style: Flat Squares
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
Filter size: 10
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /camera1/camera1/depth/color/points
|
||||
Use Fixed Frame: true
|
||||
Use rainbow: true
|
||||
Value: true
|
||||
- Alpha: 1
|
||||
Autocompute Intensity Bounds: true
|
||||
Autocompute Value Bounds:
|
||||
Max Value: 10
|
||||
Min Value: -10
|
||||
Value: true
|
||||
Axis: Z
|
||||
Channel Name: intensity
|
||||
Class: rviz_default_plugins/PointCloud2
|
||||
Color: 255; 255; 255
|
||||
Color Transformer: RGB8
|
||||
Decay Time: 0
|
||||
Enabled: true
|
||||
Invert Rainbow: false
|
||||
Max Color: 255; 255; 255
|
||||
Max Intensity: 4096
|
||||
Min Color: 0; 0; 0
|
||||
Min Intensity: 0
|
||||
Name: PointCloud2
|
||||
Position Transformer: XYZ
|
||||
Selectable: true
|
||||
Size (Pixels): 3
|
||||
Size (m): 0.009999999776482582
|
||||
Style: Flat Squares
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
Filter size: 10
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /camera2/camera2/depth/color/points
|
||||
Use Fixed Frame: true
|
||||
Use rainbow: true
|
||||
Value: true
|
||||
Enabled: true
|
||||
Global Options:
|
||||
Background Color: 48; 48; 48
|
||||
Fixed Frame: camera1_link
|
||||
Frame Rate: 30
|
||||
Name: root
|
||||
Tools:
|
||||
- Class: rviz_default_plugins/MoveCamera
|
||||
- Class: rviz_default_plugins/Select
|
||||
- Class: rviz_default_plugins/FocusCamera
|
||||
- Class: rviz_default_plugins/Measure
|
||||
Line color: 128; 128; 0
|
||||
- Class: rviz_default_plugins/SetInitialPose
|
||||
Covariance x: 0.25
|
||||
Covariance y: 0.25
|
||||
Covariance yaw: 0.06853891909122467
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /initialpose
|
||||
- Class: rviz_default_plugins/SetGoal
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /move_base_simple/goal
|
||||
- Class: rviz_default_plugins/PublishPoint
|
||||
Single click: true
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /clicked_point
|
||||
Transformation:
|
||||
Current:
|
||||
Class: rviz_default_plugins/TF
|
||||
Value: true
|
||||
Views:
|
||||
Current:
|
||||
Class: rviz_default_plugins/Orbit
|
||||
Distance: 8.93685531616211
|
||||
Enable Stereo Rendering:
|
||||
Stereo Eye Separation: 0.05999999865889549
|
||||
Stereo Focal Distance: 1
|
||||
Swap Stereo Eyes: false
|
||||
Value: false
|
||||
Focal Point:
|
||||
X: -0.18814913928508759
|
||||
Y: -0.17941315472126007
|
||||
Z: 0.14549313485622406
|
||||
Focal Shape Fixed Size: true
|
||||
Focal Shape Size: 0.05000000074505806
|
||||
Invert Z Axis: false
|
||||
Name: Current View
|
||||
Near Clip Distance: 0.009999999776482582
|
||||
Pitch: -1.5697963237762451
|
||||
Target Frame: <Fixed Frame>
|
||||
Value: Orbit (rviz_default_plugins)
|
||||
Yaw: 4.730405330657959
|
||||
Saved: ~
|
||||
Window Geometry:
|
||||
Displays:
|
||||
collapsed: false
|
||||
Height: 1016
|
||||
Hide Left Dock: false
|
||||
Hide Right Dock: true
|
||||
QMainWindow State: 000000ff00000000fd0000000400000000000001560000039efc0200000010fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000039e000000c900fffffffb0000000a0049006d006100670065000000015b0000009a0000000000000000fb0000000a0049006d0061006700650000000197000000d60000000000000000fb0000000a0049006d0061006700650000000203000000f20000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000a0049006d00610067006500000002a8000001330000000000000000fb0000000a0049006d00610067006501000001940000005d0000000000000000fb0000000a0049006d00610067006501000001f70000007a0000000000000000fb0000000a0049006d00610067006501000002770000009d0000000000000000fb0000000a0049006d006100670065010000031a000000ca0000000000000000000000010000010f000001effc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d000001ef000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b20000000000000000000000020000073d000000a9fc0100000002fb0000000a0049006d00610067006503000001c5000000bb000001f8000001b0fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d00650100000000000004500000000000000000000005da0000039e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
|
||||
Selection:
|
||||
collapsed: false
|
||||
Tool Properties:
|
||||
collapsed: false
|
||||
Views:
|
||||
collapsed: true
|
||||
Width: 1846
|
||||
X: 74
|
||||
Y: 27
|
||||
@@ -0,0 +1,22 @@
|
||||
# Launching RS ROS2 node from rosbag File
|
||||
The following example allows streaming a rosbag file, saved by RealSense Viewer, instead of streaming live with a camera. It can be used for testing and repetition of the same sequence.
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch_from_rosbag.py
|
||||
```
|
||||
By default, the 'rs_launch_from_rosbag.py' launch file uses the "/rosbag/D435i_Depth_and_IMU_Stands_still.bag" rosbag file.
|
||||
|
||||
User can also provide a different rosbag file through cmd line as follows:
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch_from_rosbag.py rosbag_filename:="/full/path/to/rosbag/file"
|
||||
```
|
||||
or
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch.py rosbag_filename:="/full/path/to/rosbag/file"
|
||||
```
|
||||
|
||||
Additionally, the 'rosbag_loop' cmd line argument enables the looped playback of the rosbag file:
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch_from_rosbag.py rosbag_filename:="/full/path/to/rosbag/file" rosbag_loop:="true"
|
||||
```
|
||||
|
||||
Check-out [sample-recordings](https://github.com/realsenseai/librealsense/blob/master/doc/sample-data.md) for a few recorded samples.
|
||||
@@ -0,0 +1,57 @@
|
||||
# Copyright 2023 RealSense, Inc. All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# DESCRIPTION #
|
||||
# ----------- #
|
||||
# Use this launch file to launch a device from rosbag file.
|
||||
# The Parameters available for definition in the command line for the camera are described in rs_launch.configurable_parameters
|
||||
# command line example:
|
||||
# ros2 launch realsense2_camera rs_launch_from_rosbag.py
|
||||
|
||||
"""Launch realsense2_camera node."""
|
||||
from launch import LaunchDescription
|
||||
import launch_ros.actions
|
||||
from launch.actions import OpaqueFunction
|
||||
from launch.substitutions import LaunchConfiguration, ThisLaunchFileDir
|
||||
import sys
|
||||
import pathlib
|
||||
sys.path.append(str(pathlib.Path(__file__).parent.absolute()))
|
||||
import os
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
sys.path.append(os.path.join(get_package_share_directory('realsense2_camera'), 'launch'))
|
||||
import rs_launch
|
||||
|
||||
local_parameters = [{'name': 'camera_name', 'default': 'camera', 'description': 'camera unique name'},
|
||||
{'name': 'camera_namespace', 'default': 'camera', 'description': 'camera namespace'},
|
||||
{'name': 'enable_depth', 'default': 'true', 'description': 'enable depth stream'},
|
||||
{'name': 'enable_gyro', 'default': 'true', 'description': "'enable gyro stream'"},
|
||||
{'name': 'enable_accel', 'default': 'true', 'description': "'enable accel stream'"},
|
||||
{'name': 'rosbag_filename', 'default': [ThisLaunchFileDir(), "/rosbag/D435i_Depth_and_IMU_Stands_still.bag"], 'description': 'A realsense bagfile to run from as a device'},
|
||||
{'name': 'rosbag_loop', 'default': 'false', 'description': 'enable realsense bagfile loop playback'},
|
||||
]
|
||||
|
||||
def set_configurable_parameters(local_params):
|
||||
return dict([(param['name'], LaunchConfiguration(param['name'])) for param in local_params])
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
params = rs_launch.configurable_parameters
|
||||
return LaunchDescription(
|
||||
rs_launch.declare_configurable_parameters(local_parameters) +
|
||||
rs_launch.declare_configurable_parameters(params) +
|
||||
[
|
||||
OpaqueFunction(function=rs_launch.launch_setup,
|
||||
kwargs = {'params' : set_configurable_parameters(params)}
|
||||
)
|
||||
])
|
||||
@@ -0,0 +1,33 @@
|
||||
# Get RS ROS2 node params from YAML file
|
||||
The following example gets the RS ROS2 node params from YAML file.
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch_get_params_from_yaml.py
|
||||
```
|
||||
|
||||
By default, 'rs_launch_get_params_from_yaml.py' launch file uses the "/config/config.yaml" YAML file.
|
||||
|
||||
User can provide a different YAML file through cmd line as follows:
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch_get_params_from_yaml.py config_file:="/full/path/to/config/file"
|
||||
```
|
||||
or
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch.py config_file:="/full/path/to/config/file"
|
||||
```
|
||||
|
||||
## Syntax for defining params in YAML file
|
||||
```
|
||||
param1: value
|
||||
param2: value
|
||||
```
|
||||
|
||||
Example:
|
||||
```
|
||||
enable_color: true
|
||||
rgb_camera.color_profile: 1280x720x15
|
||||
enable_depth: true
|
||||
align_depth.enable: true
|
||||
enable_sync: true
|
||||
publish_tf: true
|
||||
tf_publish_rate: 1.0
|
||||
```
|
||||
@@ -0,0 +1,7 @@
|
||||
enable_color: true
|
||||
rgb_camera.color_profile: 1280x720x15
|
||||
enable_depth: true
|
||||
align_depth.enable: true
|
||||
enable_sync: true
|
||||
publish_tf: true
|
||||
tf_publish_rate: 1.0
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
# Copyright 2023 RealSense, Inc. All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# DESCRIPTION #
|
||||
# ----------- #
|
||||
# Use this launch file to launch a device and get the params from a YAML file.
|
||||
# The Parameters available for definition in the command line for the camera are described in rs_launch.configurable_parameters
|
||||
# command line example:
|
||||
# ros2 launch realsense2_camera rs_launch_get_params_from_yaml.py
|
||||
|
||||
"""Launch realsense2_camera node."""
|
||||
from launch import LaunchDescription
|
||||
import launch_ros.actions
|
||||
from launch.actions import OpaqueFunction
|
||||
from launch.substitutions import LaunchConfiguration, ThisLaunchFileDir
|
||||
import sys
|
||||
import pathlib
|
||||
sys.path.append(str(pathlib.Path(__file__).parent.absolute()))
|
||||
import os
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
sys.path.append(os.path.join(get_package_share_directory('realsense2_camera'), 'launch'))
|
||||
import rs_launch
|
||||
|
||||
local_parameters = [{'name': 'camera_name', 'default': 'camera', 'description': 'camera unique name'},
|
||||
{'name': 'camera_namespace', 'default': 'camera', 'description': 'camera namespace'},
|
||||
{'name': 'config_file', 'default': [ThisLaunchFileDir(), "/config/config.yaml"], 'description': 'yaml config file'},
|
||||
]
|
||||
|
||||
def set_configurable_parameters(local_params):
|
||||
return dict([(param['name'], LaunchConfiguration(param['name'])) for param in local_params])
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
params = rs_launch.configurable_parameters
|
||||
return LaunchDescription(
|
||||
rs_launch.declare_configurable_parameters(local_parameters) +
|
||||
rs_launch.declare_configurable_parameters(params) +
|
||||
[
|
||||
OpaqueFunction(function=rs_launch.launch_setup,
|
||||
kwargs = {'params' : set_configurable_parameters(params)}
|
||||
)
|
||||
])
|
||||
@@ -0,0 +1,17 @@
|
||||
# PointCloud Visualization
|
||||
The following example starts the camera and simultaneously opens RViz GUI to visualize the published pointcloud.
|
||||
```
|
||||
ros2 launch realsense2_camera rs_pointcloud_launch.py
|
||||
```
|
||||
|
||||
Alternatively, start the camera terminal 1:
|
||||
```
|
||||
ros2 launch realsense2_camera rs_launch.py pointcloud.enable:=true
|
||||
```
|
||||
and in terminal 2 open rviz to visualize pointcloud.
|
||||
|
||||
# PointCloud with different coordinate systems
|
||||
This example opens rviz and shows the camera model with different coordinate systems and the pointcloud, so it presents the pointcloud and the camera together.
|
||||
```
|
||||
ros2 launch realsense2_camera rs_d455_pointcloud_launch.py
|
||||
```
|
||||
@@ -0,0 +1,92 @@
|
||||
# Copyright 2023 RealSense, Inc. All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# DESCRIPTION #
|
||||
# ----------- #
|
||||
# Use this launch file to launch a device and visualize pointcloud along with the camera model D405.
|
||||
# The Parameters available for definition in the command line for the camera are described in rs_launch.configurable_parameters
|
||||
# command line example:
|
||||
# ros2 launch realsense2_camera rs_d405_pointcloud_launch.py
|
||||
|
||||
"""Launch realsense2_camera node."""
|
||||
from launch import LaunchDescription
|
||||
import launch_ros.actions
|
||||
from launch.actions import OpaqueFunction
|
||||
from launch.substitutions import LaunchConfiguration, ThisLaunchFileDir
|
||||
import os
|
||||
import sys
|
||||
import pathlib
|
||||
import xacro
|
||||
import tempfile
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
sys.path.append(str(pathlib.Path(__file__).parent.absolute()))
|
||||
sys.path.append(os.path.join(get_package_share_directory('realsense2_camera'), 'launch'))
|
||||
import rs_launch
|
||||
|
||||
local_parameters = [{'name': 'camera_name', 'default': 'camera', 'description': 'camera unique name'},
|
||||
{'name': 'camera_namespace', 'default': 'camera', 'description': 'camera namespace'},
|
||||
{'name': 'device_type', 'default': "d405", 'description': 'choose device by type'},
|
||||
{'name': 'enable_color', 'default': 'true', 'description': 'enable color stream'},
|
||||
{'name': 'enable_depth', 'default': 'true', 'description': 'enable depth stream'},
|
||||
{'name': 'pointcloud.enable', 'default': 'true', 'description': 'enable pointcloud'},
|
||||
]
|
||||
|
||||
def to_urdf(xacro_path, parameters=None):
|
||||
"""Convert the given xacro file to URDF file.
|
||||
* xacro_path -- the path to the xacro file
|
||||
* parameters -- to be used when xacro file is parsed.
|
||||
"""
|
||||
urdf_path = tempfile.mktemp(prefix="%s_" % os.path.basename(xacro_path))
|
||||
|
||||
# open and process file
|
||||
doc = xacro.process_file(xacro_path, mappings=parameters)
|
||||
# open the output file
|
||||
out = xacro.open_output(urdf_path)
|
||||
out.write(doc.toprettyxml(indent=' '))
|
||||
|
||||
return urdf_path
|
||||
|
||||
def set_configurable_parameters(local_params):
|
||||
return dict([(param['name'], LaunchConfiguration(param['name'])) for param in local_params])
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
params = rs_launch.configurable_parameters
|
||||
xacro_path = os.path.join(get_package_share_directory('realsense2_description'), 'urdf', 'test_d405_camera.urdf.xacro')
|
||||
urdf = to_urdf(xacro_path, {'use_nominal_extrinsics': 'true', 'add_plug': 'true'})
|
||||
return LaunchDescription(
|
||||
rs_launch.declare_configurable_parameters(local_parameters) +
|
||||
rs_launch.declare_configurable_parameters(params) +
|
||||
[
|
||||
OpaqueFunction(function=rs_launch.launch_setup,
|
||||
kwargs = {'params' : set_configurable_parameters(params)}
|
||||
),
|
||||
launch_ros.actions.Node(
|
||||
package='rviz2',
|
||||
namespace='',
|
||||
executable='rviz2',
|
||||
name='rviz2',
|
||||
arguments=['-d', [ThisLaunchFileDir(), '/rviz/urdf_pointcloud.rviz']],
|
||||
output='screen',
|
||||
parameters=[{'use_sim_time': False}]
|
||||
),
|
||||
launch_ros.actions.Node(
|
||||
name='model_node',
|
||||
package='robot_state_publisher',
|
||||
executable='robot_state_publisher',
|
||||
namespace='',
|
||||
output='screen',
|
||||
arguments=[urdf]
|
||||
)
|
||||
])
|
||||
@@ -0,0 +1,92 @@
|
||||
# Copyright 2023 RealSense, Inc. All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# DESCRIPTION #
|
||||
# ----------- #
|
||||
# Use this launch file to launch a device and visualize pointcloud along with the camera model D455.
|
||||
# The Parameters available for definition in the command line for the camera are described in rs_launch.configurable_parameters
|
||||
# command line example:
|
||||
# ros2 launch realsense2_camera rs_d455_pointcloud_launch.py
|
||||
|
||||
"""Launch realsense2_camera node."""
|
||||
from launch import LaunchDescription
|
||||
import launch_ros.actions
|
||||
from launch.actions import OpaqueFunction
|
||||
from launch.substitutions import LaunchConfiguration, ThisLaunchFileDir
|
||||
import os
|
||||
import sys
|
||||
import pathlib
|
||||
import xacro
|
||||
import tempfile
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
sys.path.append(str(pathlib.Path(__file__).parent.absolute()))
|
||||
sys.path.append(os.path.join(get_package_share_directory('realsense2_camera'), 'launch'))
|
||||
import rs_launch
|
||||
|
||||
local_parameters = [{'name': 'camera_name', 'default': 'camera', 'description': 'camera unique name'},
|
||||
{'name': 'camera_namespace', 'default': 'camera', 'description': 'camera namespace'},
|
||||
{'name': 'device_type', 'default': "d455", 'description': 'choose device by type'},
|
||||
{'name': 'enable_color', 'default': 'true', 'description': 'enable color stream'},
|
||||
{'name': 'enable_depth', 'default': 'true', 'description': 'enable depth stream'},
|
||||
{'name': 'pointcloud.enable', 'default': 'true', 'description': 'enable pointcloud'},
|
||||
]
|
||||
|
||||
def to_urdf(xacro_path, parameters=None):
|
||||
"""Convert the given xacro file to URDF file.
|
||||
* xacro_path -- the path to the xacro file
|
||||
* parameters -- to be used when xacro file is parsed.
|
||||
"""
|
||||
urdf_path = tempfile.mktemp(prefix="%s_" % os.path.basename(xacro_path))
|
||||
|
||||
# open and process file
|
||||
doc = xacro.process_file(xacro_path, mappings=parameters)
|
||||
# open the output file
|
||||
out = xacro.open_output(urdf_path)
|
||||
out.write(doc.toprettyxml(indent=' '))
|
||||
|
||||
return urdf_path
|
||||
|
||||
def set_configurable_parameters(local_params):
|
||||
return dict([(param['name'], LaunchConfiguration(param['name'])) for param in local_params])
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
params = rs_launch.configurable_parameters
|
||||
xacro_path = os.path.join(get_package_share_directory('realsense2_description'), 'urdf', 'test_d455_camera.urdf.xacro')
|
||||
urdf = to_urdf(xacro_path, {'use_nominal_extrinsics': 'true', 'add_plug': 'true'})
|
||||
return LaunchDescription(
|
||||
rs_launch.declare_configurable_parameters(local_parameters) +
|
||||
rs_launch.declare_configurable_parameters(params) +
|
||||
[
|
||||
OpaqueFunction(function=rs_launch.launch_setup,
|
||||
kwargs = {'params' : set_configurable_parameters(params)}
|
||||
),
|
||||
launch_ros.actions.Node(
|
||||
package='rviz2',
|
||||
namespace='',
|
||||
executable='rviz2',
|
||||
name='rviz2',
|
||||
arguments=['-d', [ThisLaunchFileDir(), '/rviz/urdf_pointcloud.rviz']],
|
||||
output='screen',
|
||||
parameters=[{'use_sim_time': False}]
|
||||
),
|
||||
launch_ros.actions.Node(
|
||||
name='model_node',
|
||||
package='robot_state_publisher',
|
||||
executable='robot_state_publisher',
|
||||
namespace='',
|
||||
output='screen',
|
||||
arguments=[urdf]
|
||||
)
|
||||
])
|
||||
@@ -0,0 +1,58 @@
|
||||
# Copyright 2025 RealSense, Inc. All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# DESCRIPTION #
|
||||
# ----------- #
|
||||
# Use this launch file to launch a device and align depth to infrared 2.
|
||||
# The Parameters available for definition in the command line for the camera are described in rs_launch.configurable_parameters
|
||||
# command line example:
|
||||
# ros2 launch realsense2_camera rs_align_depth_to infra_launch.py
|
||||
|
||||
"""Launch realsense2_camera node."""
|
||||
from launch import LaunchDescription
|
||||
import launch_ros.actions
|
||||
from launch.actions import OpaqueFunction
|
||||
from launch.substitutions import LaunchConfiguration, ThisLaunchFileDir
|
||||
import sys
|
||||
import pathlib
|
||||
sys.path.append(str(pathlib.Path(__file__).parent.absolute()))
|
||||
import os
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
sys.path.append(os.path.join(get_package_share_directory('realsense2_camera'), 'launch'))
|
||||
import rs_launch
|
||||
|
||||
local_parameters = [{'name': 'camera_name', 'default': 'camera', 'description': 'camera unique name'},
|
||||
{'name': 'camera_namespace', 'default': 'camera', 'description': 'camera namespace'},
|
||||
{'name': 'enable_color', 'default': 'false', 'description': 'enable color stream'},
|
||||
{'name': 'enable_depth', 'default': 'true', 'description': 'enable depth stream'},
|
||||
{'name': 'enable_infra2', 'default': 'true', 'description': 'enable depth stream'},
|
||||
{'name': 'enable_sync', 'default': 'true', 'description': 'enable sync mode'},
|
||||
{'name': 'pointcloud.enable', 'default': 'true', 'description': 'enable pointcloud'},
|
||||
{'name': 'pointcloud.stream_filter', 'default': '3', 'description': 'pointcloud with infrared'},
|
||||
]
|
||||
|
||||
def set_configurable_parameters(local_params):
|
||||
return dict([(param['name'], LaunchConfiguration(param['name'])) for param in local_params])
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
params = rs_launch.configurable_parameters
|
||||
return LaunchDescription(
|
||||
rs_launch.declare_configurable_parameters(local_parameters) +
|
||||
rs_launch.declare_configurable_parameters(params) +
|
||||
[
|
||||
OpaqueFunction(function=rs_launch.launch_setup,
|
||||
kwargs = {'params' : set_configurable_parameters(params)}
|
||||
)
|
||||
])
|
||||
@@ -0,0 +1,62 @@
|
||||
# Copyright 2023 RealSense, Inc. All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# DESCRIPTION #
|
||||
# ----------- #
|
||||
# Use this launch file to launch a device and visualize pointcloud.
|
||||
# The Parameters available for definition in the command line for the camera are described in rs_launch.configurable_parameters
|
||||
# command line example:
|
||||
# ros2 launch realsense2_camera rs_pointcloud_launch.py
|
||||
|
||||
"""Launch realsense2_camera node."""
|
||||
from launch import LaunchDescription
|
||||
import launch_ros.actions
|
||||
from launch.actions import OpaqueFunction
|
||||
from launch.substitutions import LaunchConfiguration, ThisLaunchFileDir
|
||||
import sys
|
||||
import pathlib
|
||||
sys.path.append(str(pathlib.Path(__file__).parent.absolute()))
|
||||
import os
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
sys.path.append(os.path.join(get_package_share_directory('realsense2_camera'), 'launch'))
|
||||
import rs_launch
|
||||
|
||||
local_parameters = [{'name': 'camera_name', 'default': 'camera', 'description': 'camera unique name'},
|
||||
{'name': 'camera_namespace', 'default': 'camera', 'description': 'camera namespace'},
|
||||
{'name': 'enable_color', 'default': 'true', 'description': 'enable color stream'},
|
||||
{'name': 'enable_depth', 'default': 'true', 'description': 'enable depth stream'},
|
||||
{'name': 'pointcloud.enable', 'default': 'true', 'description': 'enable pointcloud'},
|
||||
]
|
||||
|
||||
def set_configurable_parameters(local_params):
|
||||
return dict([(param['name'], LaunchConfiguration(param['name'])) for param in local_params])
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
params = rs_launch.configurable_parameters
|
||||
return LaunchDescription(
|
||||
rs_launch.declare_configurable_parameters(local_parameters) +
|
||||
rs_launch.declare_configurable_parameters(params) +
|
||||
[
|
||||
OpaqueFunction(function=rs_launch.launch_setup,
|
||||
kwargs = {'params' : set_configurable_parameters(params)}
|
||||
),
|
||||
launch_ros.actions.Node(
|
||||
package='rviz2',
|
||||
namespace='',
|
||||
executable='rviz2',
|
||||
name='rviz2',
|
||||
arguments=['-d', [ThisLaunchFileDir(), '/rviz/pointcloud.rviz']]
|
||||
)
|
||||
])
|
||||
@@ -0,0 +1,189 @@
|
||||
Panels:
|
||||
- Class: rviz_common/Displays
|
||||
Help Height: 0
|
||||
Name: Displays
|
||||
Property Tree Widget:
|
||||
Expanded:
|
||||
- /Global Options1
|
||||
- /Status1
|
||||
- /Grid1
|
||||
- /PointCloud21
|
||||
Splitter Ratio: 0.5
|
||||
Tree Height: 382
|
||||
- Class: rviz_common/Selection
|
||||
Name: Selection
|
||||
- Class: rviz_common/Tool Properties
|
||||
Expanded:
|
||||
- /Publish Point1
|
||||
Name: Tool Properties
|
||||
Splitter Ratio: 0.5886790156364441
|
||||
- Class: rviz_common/Views
|
||||
Expanded:
|
||||
- /Current View1
|
||||
Name: Views
|
||||
Splitter Ratio: 0.5
|
||||
Visualization Manager:
|
||||
Class: ""
|
||||
Displays:
|
||||
- Alpha: 0.5
|
||||
Cell Size: 1
|
||||
Class: rviz_default_plugins/Grid
|
||||
Color: 160; 160; 164
|
||||
Enabled: true
|
||||
Line Style:
|
||||
Line Width: 0.029999999329447746
|
||||
Value: Lines
|
||||
Name: Grid
|
||||
Normal Cell Count: 0
|
||||
Offset:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
Plane: XY
|
||||
Plane Cell Count: 10
|
||||
Reference Frame: <Fixed Frame>
|
||||
Value: true
|
||||
- Alpha: 1
|
||||
Autocompute Intensity Bounds: true
|
||||
Autocompute Value Bounds:
|
||||
Max Value: 10
|
||||
Min Value: -10
|
||||
Value: true
|
||||
Axis: Z
|
||||
Channel Name: intensity
|
||||
Class: rviz_default_plugins/PointCloud2
|
||||
Color: 255; 255; 255
|
||||
Color Transformer: RGB8
|
||||
Decay Time: 0
|
||||
Enabled: true
|
||||
Invert Rainbow: false
|
||||
Max Color: 255; 255; 255
|
||||
Max Intensity: 4096
|
||||
Min Color: 0; 0; 0
|
||||
Min Intensity: 0
|
||||
Name: PointCloud2
|
||||
Position Transformer: XYZ
|
||||
Selectable: true
|
||||
Size (Pixels): 3
|
||||
Size (m): 0.009999999776482582
|
||||
Style: Flat Squares
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
Filter size: 10
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /camera/camera/depth/color/points
|
||||
Use Fixed Frame: true
|
||||
Use rainbow: true
|
||||
Value: true
|
||||
- Class: rviz_default_plugins/Image
|
||||
Enabled: true
|
||||
Max Value: 1
|
||||
Median window: 5
|
||||
Min Value: 0
|
||||
Name: Image
|
||||
Normalize Range: true
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /camera/camera/color/image_raw
|
||||
Value: true
|
||||
- Class: rviz_default_plugins/Image
|
||||
Enabled: true
|
||||
Max Value: 1
|
||||
Median window: 5
|
||||
Min Value: 0
|
||||
Name: Image
|
||||
Normalize Range: true
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /camera/camera/depth/image_rect_raw
|
||||
Value: true
|
||||
Enabled: true
|
||||
Global Options:
|
||||
Background Color: 48; 48; 48
|
||||
Fixed Frame: camera_depth_optical_frame
|
||||
Frame Rate: 30
|
||||
Name: root
|
||||
Tools:
|
||||
- Class: rviz_default_plugins/MoveCamera
|
||||
- Class: rviz_default_plugins/Select
|
||||
- Class: rviz_default_plugins/FocusCamera
|
||||
- Class: rviz_default_plugins/Measure
|
||||
Line color: 128; 128; 0
|
||||
- Class: rviz_default_plugins/SetInitialPose
|
||||
Covariance x: 0.25
|
||||
Covariance y: 0.25
|
||||
Covariance yaw: 0.06853891909122467
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /initialpose
|
||||
- Class: rviz_default_plugins/SetGoal
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /move_base_simple/goal
|
||||
- Class: rviz_default_plugins/PublishPoint
|
||||
Single click: true
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /clicked_point
|
||||
Transformation:
|
||||
Current:
|
||||
Class: rviz_default_plugins/TF
|
||||
Value: true
|
||||
Views:
|
||||
Current:
|
||||
Class: rviz_default_plugins/Orbit
|
||||
Distance: 1.0510121583938599
|
||||
Enable Stereo Rendering:
|
||||
Stereo Eye Separation: 0.05999999865889549
|
||||
Stereo Focal Distance: 1
|
||||
Swap Stereo Eyes: false
|
||||
Value: false
|
||||
Focal Point:
|
||||
X: -0.18814913928508759
|
||||
Y: -0.17941315472126007
|
||||
Z: 0.14549313485622406
|
||||
Focal Shape Fixed Size: true
|
||||
Focal Shape Size: 0.05000000074505806
|
||||
Invert Z Axis: false
|
||||
Name: Current View
|
||||
Near Clip Distance: 0.009999999776482582
|
||||
Pitch: -1.5697963237762451
|
||||
Target Frame: <Fixed Frame>
|
||||
Value: Orbit (rviz_default_plugins)
|
||||
Yaw: 4.730405330657959
|
||||
Saved: ~
|
||||
Window Geometry:
|
||||
Displays:
|
||||
collapsed: false
|
||||
Height: 1016
|
||||
Hide Left Dock: false
|
||||
Hide Right Dock: true
|
||||
Image:
|
||||
collapsed: false
|
||||
QMainWindow State: 000000ff00000000fd0000000400000000000001560000039efc0200000010fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001bb000000c900fffffffb0000000a0049006d006100670065010000010c0000001c0000000000000000fb0000000a0049006d006100670065010000012e0000001f0000000000000000fb0000000a0049006d00610067006501000001530000001c0000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000a0049006d0061006700650100000175000000190000000000000000fb0000000a0049006d00610067006501000001fe000000cd0000002800fffffffb0000000a0049006d00610067006501000002d10000010a0000002800fffffffb0000000a0049006d0061006700650000000233000000b70000000000000000fb0000000a0049006d00610067006501000002b2000001290000000000000000000000010000010f000001effc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d000001ef000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b20000000000000000000000020000073d000000a9fc0100000002fb0000000a0049006d00610067006503000001c5000000bb000001f8000001b0fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d00650100000000000004500000000000000000000005da0000039e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
|
||||
Selection:
|
||||
collapsed: false
|
||||
Tool Properties:
|
||||
collapsed: false
|
||||
Views:
|
||||
collapsed: true
|
||||
Width: 1846
|
||||
X: 74
|
||||
Y: 27
|
||||
@@ -0,0 +1,363 @@
|
||||
Panels:
|
||||
- Class: rviz_common/Displays
|
||||
Help Height: 78
|
||||
Name: Displays
|
||||
Property Tree Widget:
|
||||
Expanded:
|
||||
- /Global Options1
|
||||
- /Status1
|
||||
- /RobotModel1
|
||||
- /RobotModel1/Description Topic1
|
||||
- /TF1/Frames1
|
||||
- /PointCloud21
|
||||
- /Image1
|
||||
- /Image2
|
||||
Splitter Ratio: 0.36195287108421326
|
||||
Tree Height: 308
|
||||
- Class: rviz_common/Selection
|
||||
Name: Selection
|
||||
- Class: rviz_common/Tool Properties
|
||||
Expanded:
|
||||
- /2D Pose Estimate1
|
||||
- /Publish Point1
|
||||
Name: Tool Properties
|
||||
Splitter Ratio: 0.5886790156364441
|
||||
- Class: rviz_common/Views
|
||||
Expanded:
|
||||
- /Current View1
|
||||
Name: Views
|
||||
Splitter Ratio: 0.5
|
||||
Visualization Manager:
|
||||
Class: ""
|
||||
Displays:
|
||||
- Alpha: 0.5
|
||||
Cell Size: 1
|
||||
Class: rviz_default_plugins/Grid
|
||||
Color: 160; 160; 164
|
||||
Enabled: true
|
||||
Line Style:
|
||||
Line Width: 0.029999999329447746
|
||||
Value: Lines
|
||||
Name: Grid
|
||||
Normal Cell Count: 0
|
||||
Offset:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
Plane: XY
|
||||
Plane Cell Count: 10
|
||||
Reference Frame: <Fixed Frame>
|
||||
Value: true
|
||||
- Alpha: 1
|
||||
Class: rviz_default_plugins/RobotModel
|
||||
Collision Enabled: false
|
||||
Description File: ""
|
||||
Description Source: Topic
|
||||
Description Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /robot_description
|
||||
Enabled: true
|
||||
Links:
|
||||
All Links Enabled: true
|
||||
Expand Joint Details: false
|
||||
Expand Link Details: false
|
||||
Expand Tree: false
|
||||
Link Tree Style: Links in Alphabetic Order
|
||||
base_link:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_accel_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_accel_optical_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_bottom_screw_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_color_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_color_optical_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_depth_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_depth_optical_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_gyro_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_gyro_optical_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_imu_optical_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_infra1_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_infra1_optical_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_infra2_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_infra2_optical_frame:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
camera_link:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
Value: true
|
||||
camera_usb_plug_link:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
Value: true
|
||||
Mass Properties:
|
||||
Inertia: false
|
||||
Mass: false
|
||||
Name: RobotModel
|
||||
TF Prefix: ""
|
||||
Update Interval: 0
|
||||
Value: true
|
||||
Visual Enabled: true
|
||||
- Class: rviz_default_plugins/TF
|
||||
Enabled: true
|
||||
Frame Timeout: 15
|
||||
Frames:
|
||||
All Enabled: true
|
||||
base_link:
|
||||
Value: true
|
||||
camera_accel_frame:
|
||||
Value: true
|
||||
camera_accel_optical_frame:
|
||||
Value: true
|
||||
camera_bottom_screw_frame:
|
||||
Value: true
|
||||
camera_color_frame:
|
||||
Value: true
|
||||
camera_color_optical_frame:
|
||||
Value: true
|
||||
camera_depth_frame:
|
||||
Value: true
|
||||
camera_depth_optical_frame:
|
||||
Value: true
|
||||
camera_gyro_frame:
|
||||
Value: true
|
||||
camera_gyro_optical_frame:
|
||||
Value: true
|
||||
camera_imu_optical_frame:
|
||||
Value: true
|
||||
camera_infra1_frame:
|
||||
Value: true
|
||||
camera_infra1_optical_frame:
|
||||
Value: true
|
||||
camera_infra2_frame:
|
||||
Value: true
|
||||
camera_infra2_optical_frame:
|
||||
Value: true
|
||||
camera_link:
|
||||
Value: true
|
||||
camera_usb_plug_link:
|
||||
Value: true
|
||||
Marker Scale: 0.10000000149011612
|
||||
Name: TF
|
||||
Show Arrows: true
|
||||
Show Axes: true
|
||||
Show Names: false
|
||||
Tree:
|
||||
base_link:
|
||||
camera_bottom_screw_frame:
|
||||
camera_link:
|
||||
camera_accel_frame:
|
||||
camera_accel_optical_frame:
|
||||
{}
|
||||
camera_color_frame:
|
||||
camera_color_optical_frame:
|
||||
{}
|
||||
camera_depth_frame:
|
||||
camera_depth_optical_frame:
|
||||
{}
|
||||
camera_gyro_frame:
|
||||
camera_gyro_optical_frame:
|
||||
camera_imu_optical_frame:
|
||||
{}
|
||||
camera_infra1_frame:
|
||||
camera_infra1_optical_frame:
|
||||
{}
|
||||
camera_infra2_frame:
|
||||
camera_infra2_optical_frame:
|
||||
{}
|
||||
camera_usb_plug_link:
|
||||
{}
|
||||
Update Interval: 0
|
||||
Value: true
|
||||
- Alpha: 1
|
||||
Autocompute Intensity Bounds: true
|
||||
Autocompute Value Bounds:
|
||||
Max Value: 10
|
||||
Min Value: -10
|
||||
Value: true
|
||||
Axis: Z
|
||||
Channel Name: intensity
|
||||
Class: rviz_default_plugins/PointCloud2
|
||||
Color: 255; 255; 255
|
||||
Color Transformer: RGB8
|
||||
Decay Time: 0
|
||||
Enabled: true
|
||||
Invert Rainbow: false
|
||||
Max Color: 255; 255; 255
|
||||
Max Intensity: 4096
|
||||
Min Color: 0; 0; 0
|
||||
Min Intensity: 0
|
||||
Name: PointCloud2
|
||||
Position Transformer: XYZ
|
||||
Selectable: true
|
||||
Size (Pixels): 3
|
||||
Size (m): 0.009999999776482582
|
||||
Style: Flat Squares
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
Filter size: 10
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /camera/camera/depth/color/points
|
||||
Use Fixed Frame: true
|
||||
Use rainbow: true
|
||||
Value: true
|
||||
- Class: rviz_default_plugins/Image
|
||||
Enabled: true
|
||||
Max Value: 1
|
||||
Median window: 5
|
||||
Min Value: 0
|
||||
Name: Image
|
||||
Normalize Range: true
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /camera/camera/color/image_raw
|
||||
Value: true
|
||||
- Class: rviz_default_plugins/Image
|
||||
Enabled: true
|
||||
Max Value: 1
|
||||
Median window: 5
|
||||
Min Value: 0
|
||||
Name: Image
|
||||
Normalize Range: true
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /camera/camera/depth/image_rect_raw
|
||||
Value: true
|
||||
Enabled: true
|
||||
Global Options:
|
||||
Background Color: 48; 48; 48
|
||||
Fixed Frame: base_link
|
||||
Frame Rate: 30
|
||||
Name: root
|
||||
Tools:
|
||||
- Class: rviz_default_plugins/Interact
|
||||
Hide Inactive Objects: true
|
||||
- Class: rviz_default_plugins/MoveCamera
|
||||
- Class: rviz_default_plugins/Select
|
||||
- Class: rviz_default_plugins/FocusCamera
|
||||
- Class: rviz_default_plugins/Measure
|
||||
Line color: 128; 128; 0
|
||||
- Class: rviz_default_plugins/SetInitialPose
|
||||
Covariance x: 0.25
|
||||
Covariance y: 0.25
|
||||
Covariance yaw: 0.06853891909122467
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /initialpose
|
||||
- Class: rviz_default_plugins/SetGoal
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /goal_pose
|
||||
- Class: rviz_default_plugins/PublishPoint
|
||||
Single click: true
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /clicked_point
|
||||
Transformation:
|
||||
Current:
|
||||
Class: rviz_default_plugins/TF
|
||||
Value: true
|
||||
Views:
|
||||
Current:
|
||||
Class: rviz_default_plugins/Orbit
|
||||
Distance: 4.639365196228027
|
||||
Enable Stereo Rendering:
|
||||
Stereo Eye Separation: 0.05999999865889549
|
||||
Stereo Focal Distance: 1
|
||||
Swap Stereo Eyes: false
|
||||
Value: false
|
||||
Focal Point:
|
||||
X: 0.0008243769989348948
|
||||
Y: -0.00015415334200952202
|
||||
Z: 0.0003343875869177282
|
||||
Focal Shape Fixed Size: true
|
||||
Focal Shape Size: 0.05000000074505806
|
||||
Invert Z Axis: false
|
||||
Name: Current View
|
||||
Near Clip Distance: 0.009999999776482582
|
||||
Pitch: 1.2247962951660156
|
||||
Target Frame: <Fixed Frame>
|
||||
Value: Orbit (rviz)
|
||||
Yaw: 3.343583583831787
|
||||
Saved: ~
|
||||
Window Geometry:
|
||||
Displays:
|
||||
collapsed: false
|
||||
Height: 1016
|
||||
Hide Left Dock: false
|
||||
Hide Right Dock: false
|
||||
Image:
|
||||
collapsed: false
|
||||
QMainWindow State: 000000ff00000000fd0000000400000000000002540000039efc020000000cfb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001bf000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000a0049006d0061006700650100000132000000b00000000000000000fb0000000a0049006d00610067006501000001e8000000ed0000000000000000fb0000000a0049006d0061006700650100000202000000e90000002800fffffffb0000000a0049006d00610067006501000002f1000000ea0000002800ffffff000000010000010f0000039efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d0000039e000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d00650100000000000004500000000000000000000003c70000039e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
|
||||
Selection:
|
||||
collapsed: false
|
||||
Tool Properties:
|
||||
collapsed: false
|
||||
Views:
|
||||
collapsed: false
|
||||
Width: 1846
|
||||
X: 74
|
||||
Y: 27
|
||||
Reference in New Issue
Block a user