Bug fiix import patron.xacro and append packages realsense2
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Changelog for package realsense2_description
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
4.57.4 (2025-11-02)
|
||||
-------------------
|
||||
* Update realsense2_camera_description package.xml to 4.57.4
|
||||
* PR `#3441 <https://github.com/IntelRealSense/realsense-ros/issues/3441>`_ from remibettan/ros2-development: merging 4.57.3 to ros2-development
|
||||
* Merge tag '4.57.3' into ros2-development
|
||||
* Contributors: Remi Bettan
|
||||
|
||||
4.57.3 (2025-09-15)
|
||||
-------------------
|
||||
* PR `#3429 <https://github.com/realsenseai/realsense-ros/issues/3429>`_ from remibettan: intel removed, realsense added
|
||||
* PR `#3417 <https://github.com/realsenseai/realsense-ros/issues/3417>`_ from remibettan: Merging ros2 hkr to ros2 dev final
|
||||
* PR `#45 <https://github.com/realsenseai/realsense-ros/issues/45>`_ from remibettan: Merge ros2 dev to ros2 hkr
|
||||
* PR `#3404 <https://github.com/realsenseai/realsense-ros/issues/3404>`_ from adamwhats: Use package:// to discover meshes
|
||||
* PR `#3410 <https://github.com/realsenseai/realsense-ros/issues/3410>`_ from Nir-Az: Update copyrights
|
||||
* PR `#3401 <https://github.com/realsenseai/realsense-ros/issues/3401>`_ from ashrafk93: remove test dependencies
|
||||
* PR `#2813 <https://github.com/realsenseai/realsense-ros/issues/2813>`_ from SamerKhshiboun: Fix URDF and LPCL for SC
|
||||
* PR `#2807 <https://github.com/realsenseai/realsense-ros/issues/2807>`_ from SamerKhshiboun: Update _d585.urdf.xacro
|
||||
* PR `#2771 <https://github.com/realsenseai/realsense-ros/issues/2771>`_ from SamerKhshiboun: SC urdf
|
||||
* Contributors: Arun-Prasad-V, Ashraf Kattoura, Nir Azkiel, Remi Bettan, Samer Khshiboun, adamwhats
|
||||
|
||||
4.55.1 (2024-05-28)
|
||||
-------------------
|
||||
* PR `#2957 <https://github.com/realsenseai/realsense-ros/issues/2957>`_ from hellototoro: to_urdf fun retrun a str, not a BufferedRandom
|
||||
* PR `#2953 <https://github.com/realsenseai/realsense-ros/issues/2953>`_ from Arun-Prasad-V: Added urdf & mesh files for D405 model
|
||||
* PR `#2841 <https://github.com/realsenseai/realsense-ros/issues/2841>`_ from SamerKhshiboun: Remove Dashing, Eloquent, Foxy, L500 and SR300 support
|
||||
* PR `#2817 <https://github.com/realsenseai/realsense-ros/issues/2817>`_ from karina-ranadive: Replaced Deprecated function mktemp to TemporaryFile
|
||||
* Contributors: Arun-Prasad-V, karina-ranadive, SamerKhshiboun, hellototoro
|
||||
|
||||
4.54.1 (2023-06-27)
|
||||
-------------------
|
||||
* Update mesh path
|
||||
* clone PR1637 to ros2-development
|
||||
* Fix Apache License Header and Intel Copyrights
|
||||
* apply copyrights and license on project
|
||||
* Replace deprecated parameter node_name with name
|
||||
* Contributors: Arun Prasad, Nir Azkiel, SamerKhshiboun, augustelalande, marqrazz
|
||||
|
||||
4.51.1 (2022-09-13)
|
||||
-------------------
|
||||
* Add copyright and license to all ROS2-beta source files
|
||||
|
||||
* Contributors: SamerKhshiboun
|
||||
|
||||
4.0.4 (2022-03-20)
|
||||
------------------
|
||||
|
||||
4.0.3 (2022-03-16)
|
||||
------------------
|
||||
|
||||
4.0.2 (2022-02-24)
|
||||
------------------
|
||||
|
||||
4.0.1 (2022-02-01)
|
||||
------------------
|
||||
* Add D455 urdf files
|
||||
|
||||
* Contributors: nomumu, JamesChooWK, doronhi
|
||||
|
||||
3.1.3 (2020-12-28)
|
||||
------------------
|
||||
* fix realsense2_description's dependency to realsense2_camera_msgs
|
||||
remove boost dependency.
|
||||
rename node_namespace to namespace
|
||||
rename node_executable to executable
|
||||
* Contributors: benlev, Gilaadb, doronhi
|
||||
|
||||
3.1.2 (2020-12-10)
|
||||
------------------
|
||||
* Add urdf for L515.
|
||||
* remove librealsense2 and realsense2_camera dependencies
|
||||
* Add models for D415, D435, D435i.
|
||||
For visualization, can be presented using view_model.launch.py
|
||||
* fix view_d435_model.launch.py and view_d435i_model.launch.py
|
||||
run: ros2 launch realsense2_description view_d435i_model.launch.py
|
||||
* Contributors: Ryan Shim, doronhi
|
||||
|
||||
2.2.14 (2020-06-18)
|
||||
-------------------
|
||||
* fix urdf issues (arg use_nominal_extrinsics).
|
||||
* Add noetic support:
|
||||
- urdf files.
|
||||
- change state_publisher into robot_state_publisher
|
||||
* correct offset between camera_link and base_link
|
||||
* Contributors: Brice, Marco Camurri, doronhi
|
||||
|
||||
* upgrade version to 2.2.13
|
||||
@@ -0,0 +1,28 @@
|
||||
# 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.
|
||||
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(realsense2_description)
|
||||
|
||||
find_package(ament_cmake REQUIRED)
|
||||
|
||||
# Install files
|
||||
install(DIRECTORY
|
||||
launch
|
||||
meshes
|
||||
rviz
|
||||
urdf
|
||||
DESTINATION share/${PROJECT_NAME})
|
||||
|
||||
ament_package()
|
||||
@@ -0,0 +1,33 @@
|
||||
# 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.
|
||||
|
||||
import os
|
||||
import xacro
|
||||
import tempfile
|
||||
|
||||
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.
|
||||
"""
|
||||
with tempfile.NamedTemporaryFile(prefix="%s_" % os.path.basename(xacro_path), delete=False) as xacro_file:
|
||||
urdf_path = xacro_file.name
|
||||
|
||||
# open and process file
|
||||
doc = xacro.process_file(xacro_path, mappings=parameters)
|
||||
# open the output file
|
||||
with open(urdf_path, 'w') as urdf_file:
|
||||
urdf_file.write(doc.toprettyxml(indent=' '))
|
||||
|
||||
return urdf_path
|
||||
@@ -0,0 +1,55 @@
|
||||
# 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.
|
||||
|
||||
# /* Author: Doron Hirshberg */
|
||||
import os
|
||||
import launch
|
||||
from launch_ros.actions import Node
|
||||
import launch.events
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
import sys
|
||||
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
|
||||
from launch_utils import to_urdf
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
available_urdf_files = [f for f in os.listdir(os.path.join(get_package_share_directory('realsense2_description'), 'urdf')) if f.startswith('test_')]
|
||||
params = dict([aa for aa in [aa.split(':=') for aa in sys.argv] if len(aa) == 2])
|
||||
if ('model' not in params or params['model'] not in available_urdf_files):
|
||||
print('USAGE:')
|
||||
print('ros2 launch realsense2_description view_model.launch.py model:=<model>')
|
||||
print('Available argumants for <model> are as follows:')
|
||||
print('\n'.join(available_urdf_files))
|
||||
return launch.LaunchDescription()
|
||||
|
||||
rviz_config_dir = os.path.join(get_package_share_directory('realsense2_description'), 'rviz', 'urdf.rviz')
|
||||
xacro_path = os.path.join(get_package_share_directory('realsense2_description'), 'urdf', params['model'])
|
||||
urdf = to_urdf(xacro_path, {'use_nominal_extrinsics': 'true', 'add_plug': 'true'})
|
||||
rviz_node = Node(
|
||||
package='rviz2',
|
||||
executable='rviz2',
|
||||
name='rviz2',
|
||||
output='screen',
|
||||
arguments=['-d', rviz_config_dir],
|
||||
parameters=[{'use_sim_time': False}]
|
||||
)
|
||||
model_node = Node(
|
||||
name='model_node',
|
||||
package='robot_state_publisher',
|
||||
executable='robot_state_publisher',
|
||||
namespace='',
|
||||
output='screen',
|
||||
arguments=[urdf]
|
||||
)
|
||||
return launch.LaunchDescription([rviz_node, model_node])
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0"?>
|
||||
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||
<package format="3">
|
||||
<name>realsense2_description</name>
|
||||
<version>4.57.7</version>
|
||||
<description>RealSense description package for RealSense 3D D400 cameras</description>
|
||||
<maintainer email="rsswsdk@realsensecloud.onmicrosoft.com">LibRealSense ROS Team</maintainer>
|
||||
<maintainer email="nir.azkiel@realsenseai.com">Nir Azkiel</maintainer>
|
||||
<license>Apache License 2.0</license>
|
||||
|
||||
<url type="website">http://www.ros.org/wiki/RealSense</url>
|
||||
<url type="bugtracker">https://github.com/intel-ros/realsense/issues</url>
|
||||
|
||||
<author email="rsswsdk@realsensecloud.onmicrosoft.com">LibRealSense ROS Team</author>
|
||||
|
||||
<buildtool_depend>ament_cmake</buildtool_depend>
|
||||
|
||||
<depend>rclcpp</depend>
|
||||
<depend>rclcpp_components</depend>
|
||||
<depend>realsense2_camera_msgs</depend>
|
||||
|
||||
<exec_depend>launch_ros</exec_depend>
|
||||
<exec_depend>xacro</exec_depend>
|
||||
|
||||
<export>
|
||||
<build_type>ament_cmake</build_type>
|
||||
</export>
|
||||
</package>
|
||||
@@ -0,0 +1,154 @@
|
||||
Panels:
|
||||
- Class: rviz_common/Displays
|
||||
Help Height: 78
|
||||
Name: Displays
|
||||
Property Tree Widget:
|
||||
Expanded:
|
||||
- /Global Options1
|
||||
- /Status1
|
||||
- /RobotModel1
|
||||
- /RobotModel1/Description Topic1
|
||||
- /TF1
|
||||
- /TF1/Frames1
|
||||
Splitter Ratio: 0.6360294222831726
|
||||
Tree Height: 496
|
||||
- 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
|
||||
Name: RobotModel
|
||||
TF Prefix: ""
|
||||
Update Interval: 0
|
||||
Value: true
|
||||
Visual Enabled: true
|
||||
- Class: rviz_default_plugins/TF
|
||||
Enabled: true
|
||||
Frame Timeout: 15
|
||||
Marker Scale: 0.100000001
|
||||
Name: TF
|
||||
Show Arrows: true
|
||||
Show Axes: true
|
||||
Show Names: false
|
||||
Update Interval: 0
|
||||
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
|
||||
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: 0.241934671998024
|
||||
Enable Stereo Rendering:
|
||||
Stereo Eye Separation: 0.05999999865889549
|
||||
Stereo Focal Distance: 1
|
||||
Swap Stereo Eyes: false
|
||||
Value: false
|
||||
Focal Point:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
Focal Shape Fixed Size: true
|
||||
Focal Shape Size: 0.05000000074505806
|
||||
Invert Z Axis: false
|
||||
Name: Current View
|
||||
Near Clip Distance: 0.009999999776482582
|
||||
Pitch: 0.44539815187454224
|
||||
Target Frame: <Fixed Frame>
|
||||
Value: Orbit (rviz)
|
||||
Yaw: 0.0853981301188469
|
||||
Saved: ~
|
||||
Window Geometry:
|
||||
Displays:
|
||||
collapsed: false
|
||||
Height: 841
|
||||
Hide Left Dock: false
|
||||
Hide Right Dock: false
|
||||
QMainWindow State: 000000ff00000000fd000000040000000000000156000002effc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000002ef000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000002effc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d000002ef000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d0065010000000000000450000000000000000000000424000002ef00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
|
||||
Selection:
|
||||
collapsed: false
|
||||
Tool Properties:
|
||||
collapsed: false
|
||||
Views:
|
||||
collapsed: false
|
||||
Width: 1685
|
||||
X: 67
|
||||
Y: 60
|
||||
@@ -0,0 +1,165 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the RealSense 405 camera, in its
|
||||
aluminum peripherial evaluation case.
|
||||
-->
|
||||
|
||||
<robot name="sensor_d405" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<!-- Includes -->
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_materials.urdf.xacro" />
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_usb_plug.urdf.xacro" />
|
||||
|
||||
<xacro:macro name="sensor_d405" params="parent *origin name:=camera use_nominal_extrinsics:=false">
|
||||
<xacro:arg name="add_plug" default="false" />
|
||||
<xacro:property name="M_PI" value="3.1415926535897931" />
|
||||
|
||||
<!-- The following values are approximate, and the camera node
|
||||
publishing TF values with actual calibrated camera extrinsic values -->
|
||||
<xacro:property name="d405_cam_depth_to_infra1_offset" value="0.0"/>
|
||||
<xacro:property name="d405_cam_depth_to_infra2_offset" value="-0.018"/>
|
||||
<xacro:property name="d405_cam_depth_to_color_offset" value="0.0"/>
|
||||
|
||||
<!-- The following values model the aluminum peripherial case for the
|
||||
d405 camera, with the camera joint represented by the actual
|
||||
peripherial camera tripod mount -->
|
||||
<xacro:property name="d405_cam_width" value="0.042"/>
|
||||
<xacro:property name="d405_cam_height" value="0.042"/>
|
||||
<xacro:property name="d405_cam_depth" value="0.023"/>
|
||||
<xacro:property name="d405_cam_mount_from_center_offset" value="0.01465"/>
|
||||
<!-- glass cover is 0.1 mm inwards from front aluminium plate -->
|
||||
<xacro:property name="d405_glass_to_front" value="0.1e-3"/>
|
||||
<!-- see datasheet Revision 017, Table. 4-16 page 97 -->
|
||||
<xacro:property name="d405_zero_depth_to_glass" value="3.7e-3"/>
|
||||
<!-- convenience precomputation to avoid clutter-->
|
||||
<xacro:property name="d405_mesh_x_offset" value="${d405_cam_mount_from_center_offset-d405_glass_to_front-d405_zero_depth_to_glass}"/>
|
||||
|
||||
<!-- The following offset is relative to the physical d405 camera peripherial
|
||||
camera tripod mount -->
|
||||
<xacro:property name="d405_cam_depth_px" value="${d405_cam_mount_from_center_offset}"/>
|
||||
<xacro:property name="d405_cam_depth_py" value="0.009"/>
|
||||
<xacro:property name="d405_cam_depth_pz" value="${d405_cam_height/2}"/>
|
||||
|
||||
<!-- camera body, with origin at bottom screw mount -->
|
||||
<joint name="${name}_joint" type="fixed">
|
||||
<xacro:insert_block name="origin" />
|
||||
<parent link="${parent}"/>
|
||||
<child link="${name}_bottom_screw_frame" />
|
||||
</joint>
|
||||
<link name="${name}_bottom_screw_frame"/>
|
||||
|
||||
<joint name="${name}_link_joint" type="fixed">
|
||||
<origin xyz="${d405_mesh_x_offset} ${d405_cam_depth_py} ${d405_cam_depth_pz}" rpy="0 0 0"/>
|
||||
<parent link="${name}_bottom_screw_frame"/>
|
||||
<child link="${name}_link" />
|
||||
</joint>
|
||||
|
||||
<link name="${name}_link">
|
||||
<visual>
|
||||
<!-- the mesh origin is at front plate in between the two infrared camera axes -->
|
||||
<origin xyz="${d405_zero_depth_to_glass + d405_glass_to_front} ${-d405_cam_depth_py} 0" rpy="${M_PI/2} 0 ${M_PI/2}"/>
|
||||
<geometry>
|
||||
<mesh filename="package://realsense2_description/meshes/d405.stl" scale="0.001 0.001 0.001" />
|
||||
</geometry>
|
||||
<material name="aluminum"/>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="${d405_zero_depth_to_glass-d405_cam_depth/2} ${-d405_cam_depth_py} 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${d405_cam_depth} ${d405_cam_width} ${d405_cam_height}"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<!-- The following are not reliable values, and should not be used for modeling -->
|
||||
<mass value="0.072" />
|
||||
<origin xyz="0 0 0" />
|
||||
<inertia ixx="0.003881243" ixy="0.0" ixz="0.0" iyy="0.000498940" iyz="0.0" izz="0.003879257" />
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
<!-- Use the nominal extrinsics between camera frames if the calibrated extrinsics aren't being published. e.g. running the device in simulation -->
|
||||
<xacro:if value="${use_nominal_extrinsics}">
|
||||
<!-- camera depth joints and links -->
|
||||
<joint name="${name}_depth_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<parent link="${name}_link"/>
|
||||
<child link="${name}_depth_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_frame"/>
|
||||
|
||||
<joint name="${name}_depth_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_depth_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_optical_frame"/>
|
||||
|
||||
<!-- camera left IR joints and links -->
|
||||
<joint name="${name}_infra1_joint" type="fixed">
|
||||
<origin xyz="0 ${d405_cam_depth_to_infra1_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra1_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_frame"/>
|
||||
|
||||
<joint name="${name}_infra1_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra1_frame" />
|
||||
<child link="${name}_infra1_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_optical_frame"/>
|
||||
|
||||
<!-- camera right IR joints and links -->
|
||||
<joint name="${name}_infra2_joint" type="fixed">
|
||||
<origin xyz="0 ${d405_cam_depth_to_infra2_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra2_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_frame"/>
|
||||
|
||||
<joint name="${name}_infra2_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra2_frame" />
|
||||
<child link="${name}_infra2_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_optical_frame"/>
|
||||
|
||||
<!-- camera color joints and links -->
|
||||
<joint name="${name}_color_joint" type="fixed">
|
||||
<origin xyz="0 ${d405_cam_depth_to_color_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_color_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_frame"/>
|
||||
|
||||
<joint name="${name}_color_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_color_frame" />
|
||||
<child link="${name}_color_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_optical_frame"/>
|
||||
</xacro:if>
|
||||
|
||||
<xacro:if value="$(arg add_plug)">
|
||||
<xacro:usb_plug parent="${name}_link" name="${name}_usb_plug">
|
||||
<origin xyz="${-0.00153-d405_mesh_x_offset} ${d405_cam_width/2-d405_cam_depth_py} 0" rpy="${M_PI} 0 0"/>
|
||||
</xacro:usb_plug>
|
||||
</xacro:if>
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
@@ -0,0 +1,165 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the RealSense 415 camera, in its
|
||||
aluminum peripherial evaluation case.
|
||||
-->
|
||||
|
||||
<robot name="sensor_d415" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<!-- Includes -->
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_materials.urdf.xacro" />
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_usb_plug.urdf.xacro" />
|
||||
|
||||
<xacro:macro name="sensor_d415" params="parent *origin name:=camera use_nominal_extrinsics:=false add_plug:=false use_mesh:=true">
|
||||
<xacro:property name="M_PI" value="3.1415926535897931" />
|
||||
|
||||
<!-- The following values are approximate, and the camera node
|
||||
publishing TF values with actual calibrated camera extrinsic values -->
|
||||
<xacro:property name="d415_cam_depth_to_infra1_offset" value="0.0"/>
|
||||
<xacro:property name="d415_cam_depth_to_infra2_offset" value="-0.055"/>
|
||||
<xacro:property name="d415_cam_depth_to_color_offset" value="0.015"/>
|
||||
|
||||
<!-- The following values model the aluminum peripherial case for the
|
||||
d415 camera, with the camera joint represented by the actual
|
||||
peripherial camera tripod mount -->
|
||||
<xacro:property name="d415_cam_width" value="0.099"/>
|
||||
<xacro:property name="d415_cam_height" value="0.023"/>
|
||||
<xacro:property name="d415_cam_depth" value="0.02005"/>
|
||||
<xacro:property name="d415_cam_mount_from_center_offset" value="0.00987"/>
|
||||
|
||||
<!-- The following offset is relative the the physical d415 camera peripherial
|
||||
camera tripod mount -->
|
||||
<xacro:property name="d415_cam_depth_px" value="${d415_cam_mount_from_center_offset}"/>
|
||||
<xacro:property name="d415_cam_depth_py" value="0.020"/>
|
||||
<xacro:property name="d415_cam_depth_pz" value="${d415_cam_height/2}"/>
|
||||
|
||||
<!-- camera body, with origin at bottom screw mount -->
|
||||
<joint name="${name}_joint" type="fixed">
|
||||
<xacro:insert_block name="origin" />
|
||||
<parent link="${parent}"/>
|
||||
<child link="${name}_bottom_screw_frame" />
|
||||
</joint>
|
||||
|
||||
<link name="${name}_bottom_screw_frame"/>
|
||||
|
||||
<joint name="${name}_link_joint" type="fixed">
|
||||
<origin xyz="0 ${d415_cam_depth_py} ${d415_cam_depth_pz}" rpy="0 0 0"/>
|
||||
<parent link="${name}_bottom_screw_frame"/>
|
||||
<child link="${name}_link" />
|
||||
</joint>
|
||||
|
||||
<link name="${name}_link">
|
||||
<visual>
|
||||
<xacro:if value="${use_mesh}">
|
||||
<origin xyz="${d415_cam_mount_from_center_offset} ${-d415_cam_depth_py} 0" rpy="${M_PI/2} 0 ${M_PI/2}"/>
|
||||
<geometry>
|
||||
<mesh filename="package://realsense2_description/meshes/d415.stl" />
|
||||
</geometry>
|
||||
<material name="aluminum"/>
|
||||
</xacro:if>
|
||||
<xacro:unless value="${use_mesh}">
|
||||
<origin xyz="0 ${-d415_cam_depth_py} 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${d415_cam_depth} ${d415_cam_width} ${d415_cam_height}"/>
|
||||
</geometry>
|
||||
</xacro:unless>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 ${-d415_cam_depth_py} 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${d415_cam_depth} ${d415_cam_width} ${d415_cam_height}"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.072" />
|
||||
<!-- The following are not reliable values, and should not be used for modeling -->
|
||||
<origin xyz="0 0 0" />
|
||||
<inertia ixx="0.003881243" ixy="0.0" ixz="0.0" iyy="0.000498940" iyz="0.0" izz="0.003879257" />
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
<!-- Use the nominal extrinsics between camera frames if the calibrated extrinsics aren't being published. e.g. running the device in simulation -->
|
||||
<xacro:if value="${use_nominal_extrinsics}">
|
||||
<!-- camera depth joints and links -->
|
||||
<joint name="${name}_depth_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<parent link="${name}_link"/>
|
||||
<child link="${name}_depth_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_frame"/>
|
||||
|
||||
<joint name="${name}_depth_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_depth_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_optical_frame"/>
|
||||
|
||||
<!-- camera left IR joints and links -->
|
||||
<joint name="${name}_infra1_joint" type="fixed">
|
||||
<origin xyz="0 ${d415_cam_depth_to_infra1_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra1_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_frame"/>
|
||||
|
||||
<joint name="${name}_infra1_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra1_frame" />
|
||||
<child link="${name}_infra1_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_optical_frame"/>
|
||||
|
||||
<!-- camera right IR joints and links -->
|
||||
<joint name="${name}_infra2_joint" type="fixed">
|
||||
<origin xyz="0 ${d415_cam_depth_to_infra2_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra2_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_frame"/>
|
||||
|
||||
<joint name="${name}_infra2_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra2_frame" />
|
||||
<child link="${name}_infra2_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_optical_frame"/>
|
||||
|
||||
<!-- camera color joints and links -->
|
||||
<joint name="${name}_color_joint" type="fixed">
|
||||
<origin xyz="0 ${d415_cam_depth_to_color_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_color_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_frame"/>
|
||||
|
||||
<joint name="${name}_color_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_color_frame" />
|
||||
<child link="${name}_color_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_optical_frame"/>
|
||||
</xacro:if>
|
||||
|
||||
<xacro:if value="${add_plug}">
|
||||
<xacro:usb_plug parent="${name}_link" name="${name}_usb_plug">
|
||||
<origin xyz="${d415_cam_mount_from_center_offset - 0.01587} ${-d415_cam_depth_py - 0.0358} 0" rpy="0 0 0"/>
|
||||
</xacro:usb_plug>
|
||||
</xacro:if>
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
@@ -0,0 +1,172 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the RealSense 430 camera, in its
|
||||
aluminum peripherial evaluation case.
|
||||
-->
|
||||
|
||||
<robot name="sensor_d435" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<!-- Includes -->
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_materials.urdf.xacro" />
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_usb_plug.urdf.xacro" />
|
||||
|
||||
<xacro:macro name="sensor_d435" params="parent *origin name:=camera use_nominal_extrinsics:=false add_plug:=false use_mesh:=true">
|
||||
<xacro:property name="M_PI" value="3.1415926535897931" />
|
||||
|
||||
<!-- The following values are approximate, and the camera node
|
||||
publishing TF values with actual calibrated camera extrinsic values -->
|
||||
<xacro:property name="d435_cam_depth_to_infra1_offset" value="0.0"/>
|
||||
<xacro:property name="d435_cam_depth_to_infra2_offset" value="-0.050"/>
|
||||
<xacro:property name="d435_cam_depth_to_color_offset" value="0.015"/>
|
||||
|
||||
<!-- The following values model the aluminum peripherial case for the
|
||||
D435 camera, with the camera joint represented by the actual
|
||||
peripherial camera tripod mount -->
|
||||
<xacro:property name="d435_cam_width" value="0.090"/>
|
||||
<xacro:property name="d435_cam_height" value="0.025"/>
|
||||
<xacro:property name="d435_cam_depth" value="0.02505"/>
|
||||
<xacro:property name="d435_cam_mount_from_center_offset" value="0.0149"/>
|
||||
<!-- glass cover is 0.1 mm inwards from front aluminium plate -->
|
||||
<xacro:property name="d435_glass_to_front" value="0.1e-3"/>
|
||||
<!-- see datasheet Revision 007, Fig. 4-4 page 65 -->
|
||||
<xacro:property name="d435_zero_depth_to_glass" value="4.2e-3"/>
|
||||
<!-- convenience precomputation to avoid clutter-->
|
||||
<xacro:property name="d435_mesh_x_offset" value="${d435_cam_mount_from_center_offset-d435_glass_to_front-d435_zero_depth_to_glass}"/>
|
||||
|
||||
<!-- The following offset is relative the the physical D435 camera peripherial
|
||||
camera tripod mount -->
|
||||
<xacro:property name="d435_cam_depth_px" value="${d435_cam_mount_from_center_offset}"/>
|
||||
<xacro:property name="d435_cam_depth_py" value="0.0175"/>
|
||||
<xacro:property name="d435_cam_depth_pz" value="${d435_cam_height/2}"/>
|
||||
|
||||
<!-- camera body, with origin at bottom screw mount -->
|
||||
<joint name="${name}_joint" type="fixed">
|
||||
<xacro:insert_block name="origin" />
|
||||
<parent link="${parent}"/>
|
||||
<child link="${name}_bottom_screw_frame" />
|
||||
</joint>
|
||||
<link name="${name}_bottom_screw_frame"/>
|
||||
|
||||
<joint name="${name}_link_joint" type="fixed">
|
||||
<origin xyz="${d435_mesh_x_offset} ${d435_cam_depth_py} ${d435_cam_depth_pz}" rpy="0 0 0"/>
|
||||
<parent link="${name}_bottom_screw_frame"/>
|
||||
<child link="${name}_link" />
|
||||
</joint>
|
||||
|
||||
<link name="${name}_link">
|
||||
<visual>
|
||||
<xacro:if value="${use_mesh}">
|
||||
<!-- the mesh origin is at front plate in between the two infrared camera axes -->
|
||||
<origin xyz="${d435_zero_depth_to_glass + d435_glass_to_front} ${-d435_cam_depth_py} 0" rpy="${M_PI/2} 0 ${M_PI/2}"/>
|
||||
<geometry>
|
||||
<mesh filename="package://realsense2_description/meshes/d435.dae" />
|
||||
</geometry>
|
||||
</xacro:if>
|
||||
<xacro:unless value="${use_mesh}">
|
||||
<origin xyz="0 ${-d435_cam_depth_py} 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${d435_cam_depth} ${d435_cam_width} ${d435_cam_height}"/>
|
||||
</geometry>
|
||||
<material name="aluminum"/>
|
||||
</xacro:unless>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 ${-d435_cam_depth_py} 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${d435_cam_depth} ${d435_cam_width} ${d435_cam_height}"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<!-- The following are not reliable values, and should not be used for modeling -->
|
||||
<mass value="0.072" />
|
||||
<origin xyz="0 0 0" />
|
||||
<inertia ixx="0.003881243" ixy="0.0" ixz="0.0" iyy="0.000498940" iyz="0.0" izz="0.003879257" />
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
<!-- Use the nominal extrinsics between camera frames if the calibrated extrinsics aren't being published. e.g. running the device in simulation -->
|
||||
<xacro:if value="${use_nominal_extrinsics}">
|
||||
<!-- camera depth joints and links -->
|
||||
<joint name="${name}_depth_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<parent link="${name}_link"/>
|
||||
<child link="${name}_depth_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_frame"/>
|
||||
|
||||
<joint name="${name}_depth_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_depth_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_optical_frame"/>
|
||||
|
||||
<!-- camera left IR joints and links -->
|
||||
<joint name="${name}_infra1_joint" type="fixed">
|
||||
<origin xyz="0 ${d435_cam_depth_to_infra1_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra1_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_frame"/>
|
||||
|
||||
<joint name="${name}_infra1_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra1_frame" />
|
||||
<child link="${name}_infra1_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_optical_frame"/>
|
||||
|
||||
<!-- camera right IR joints and links -->
|
||||
<joint name="${name}_infra2_joint" type="fixed">
|
||||
<origin xyz="0 ${d435_cam_depth_to_infra2_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra2_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_frame"/>
|
||||
|
||||
<joint name="${name}_infra2_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra2_frame" />
|
||||
<child link="${name}_infra2_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_optical_frame"/>
|
||||
|
||||
<!-- camera color joints and links -->
|
||||
<joint name="${name}_color_joint" type="fixed">
|
||||
<origin xyz="0 ${d435_cam_depth_to_color_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_color_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_frame"/>
|
||||
|
||||
<joint name="${name}_color_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_color_frame" />
|
||||
<child link="${name}_color_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_optical_frame"/>
|
||||
</xacro:if>
|
||||
|
||||
<xacro:if value="${add_plug}">
|
||||
<xacro:usb_plug parent="${name}_link" name="${name}_usb_plug">
|
||||
<origin xyz="${d435_cam_mount_from_center_offset - 0.02095} ${-d435_cam_depth_py - 0.0353} 0" rpy="0 0 0"/>
|
||||
</xacro:usb_plug>
|
||||
</xacro:if>
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the RealSense 435i camera, in it's
|
||||
aluminum peripherial evaluation case.
|
||||
-->
|
||||
|
||||
<robot name="sensor_d435i" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_d435.urdf.xacro"/>
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_d435i_imu_modules.urdf.xacro"/>
|
||||
|
||||
<xacro:macro name="sensor_d435i" params="parent *origin name:=camera use_nominal_extrinsics:=false">
|
||||
<xacro:sensor_d435 parent="${parent}" name="${name}" use_nominal_extrinsics="${use_nominal_extrinsics}">
|
||||
<xacro:insert_block name="origin" />
|
||||
</xacro:sensor_d435>
|
||||
<xacro:d435i_imu_modules name="${name}" use_nominal_extrinsics="${use_nominal_extrinsics}"/>
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the inertial modules of the
|
||||
RealSense 435i camera.
|
||||
-->
|
||||
<robot name="d435i_imu_modules" xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
<xacro:macro name="d435i_imu_modules" params="name use_nominal_extrinsics">
|
||||
<xacro:property name="M_PI" value="${pi}" />
|
||||
|
||||
<xacro:if value="${use_nominal_extrinsics}">
|
||||
<link name="${name}_accel_frame" />
|
||||
<link name="${name}_accel_optical_frame" />
|
||||
<link name="${name}_gyro_frame" />
|
||||
<link name="${name}_gyro_optical_frame" />
|
||||
|
||||
<joint name="${name}_accel_joint" type="fixed">
|
||||
<origin xyz = "-0.01174 -0.00552 0.0051" rpy = "0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_accel_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_accel_optical_joint" type="fixed">
|
||||
<origin xyz = "0 0 0" rpy = "${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_accel_frame" />
|
||||
<child link="${name}_accel_optical_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_gyro_joint" type="fixed">
|
||||
<origin xyz = "-0.01174 -0.00552 0.0051" rpy = "0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_gyro_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_gyro_optical_joint" type="fixed">
|
||||
<origin xyz = "0 0 0" rpy = "${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_gyro_frame" />
|
||||
<child link="${name}_gyro_optical_frame" />
|
||||
</joint>
|
||||
</xacro:if>
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
|
||||
@@ -0,0 +1,205 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
# Copyright 2026 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the Intel RealSense D436 camera, in its
|
||||
aluminum peripheral evaluation case.
|
||||
-->
|
||||
|
||||
<robot name="sensor_d436" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<!-- Includes -->
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_materials.urdf.xacro" />
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_usb_plug.urdf.xacro" />
|
||||
|
||||
<xacro:macro name="sensor_d436" params="parent *origin name:=camera use_nominal_extrinsics:=false add_plug:=false use_mesh:=true">
|
||||
<xacro:property name="M_PI" value="3.1415926535897931" />
|
||||
|
||||
<!-- The following values are approximate, and the camera node
|
||||
publishing TF values with actual calibrated camera extrinsic values -->
|
||||
<xacro:property name="d436_cam_depth_to_infra1_offset" value="0.0"/>
|
||||
<xacro:property name="d436_cam_depth_to_infra2_offset" value="-0.050"/>
|
||||
<xacro:property name="d436_cam_depth_to_color_offset_y" value="0.015"/>
|
||||
<xacro:property name="d436_cam_depth_to_color_offset_x" value="-0.00555"/>
|
||||
|
||||
<!-- The following values model the aluminum peripheral case for the
|
||||
d436 camera, with the camera joint represented by the actual
|
||||
peripheral camera tripod mount -->
|
||||
<xacro:property name="d436_cam_width" value="0.090"/>
|
||||
<xacro:property name="d436_cam_height" value="0.025"/>
|
||||
<xacro:property name="d436_cam_depth" value="0.02505"/>
|
||||
<xacro:property name="d436_cam_mount_from_center_offset" value="0.0149"/>
|
||||
<!-- glass cover is 0.1 mm inwards from front aluminium plate -->
|
||||
<xacro:property name="d436_glass_to_front" value="0.1e-3"/>
|
||||
<xacro:property name="d436_zero_depth_to_glass" value="4.2e-3"/>
|
||||
<!-- convenience precomputation to avoid clutter-->
|
||||
<xacro:property name="d436_mesh_x_offset" value="${d436_cam_mount_from_center_offset-d436_glass_to_front-d436_zero_depth_to_glass}"/>
|
||||
|
||||
<!-- The following offset is relative to the physical d436 camera peripheral
|
||||
camera tripod mount -->
|
||||
<xacro:property name="d436_cam_depth_px" value="${d436_cam_mount_from_center_offset}"/>
|
||||
<xacro:property name="d436_cam_depth_py" value="0.0175"/>
|
||||
<xacro:property name="d436_cam_depth_pz" value="${d436_cam_height/2}"/>
|
||||
|
||||
<!-- camera body, with origin at bottom screw mount -->
|
||||
<joint name="${name}_joint" type="fixed">
|
||||
<xacro:insert_block name="origin" />
|
||||
<parent link="${parent}"/>
|
||||
<child link="${name}_bottom_screw_frame" />
|
||||
</joint>
|
||||
<link name="${name}_bottom_screw_frame"/>
|
||||
|
||||
<joint name="${name}_link_joint" type="fixed">
|
||||
<origin xyz="${d436_mesh_x_offset} ${d436_cam_depth_py} ${d436_cam_depth_pz}" rpy="0 0 0"/>
|
||||
<parent link="${name}_bottom_screw_frame"/>
|
||||
<child link="${name}_link" />
|
||||
</joint>
|
||||
|
||||
<link name="${name}_link">
|
||||
<visual>
|
||||
<xacro:if value="${use_mesh}">
|
||||
<!-- the mesh origin is at front plate in between the two infrared camera axes -->
|
||||
<origin xyz="${d436_zero_depth_to_glass + d436_glass_to_front} ${-d436_cam_depth_py} 0" rpy="${M_PI/2} 0 ${M_PI/2}"/>
|
||||
<geometry>
|
||||
<mesh filename="package://realsense2_description/meshes/d435.dae" />
|
||||
</geometry>
|
||||
</xacro:if>
|
||||
<xacro:unless value="${use_mesh}">
|
||||
<origin xyz="0 ${-d436_cam_depth_py} 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${d436_cam_depth} ${d436_cam_width} ${d436_cam_height}"/>
|
||||
</geometry>
|
||||
<material name="aluminum"/>
|
||||
</xacro:unless>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 ${-d436_cam_depth_py} 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${d436_cam_depth} ${d436_cam_width} ${d436_cam_height}"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<!-- The following are not reliable values, and should not be used for modeling -->
|
||||
<mass value="0.072" />
|
||||
<origin xyz="0 0 0" />
|
||||
<inertia ixx="0.003881243" ixy="0.0" ixz="0.0" iyy="0.000498940" iyz="0.0" izz="0.003879257" />
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
<!-- Use the nominal extrinsics between camera frames if the calibrated extrinsics aren't being published. e.g. running the device in simulation -->
|
||||
<xacro:if value="${use_nominal_extrinsics}">
|
||||
<!-- camera depth joints and links -->
|
||||
<joint name="${name}_depth_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<parent link="${name}_link"/>
|
||||
<child link="${name}_depth_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_frame"/>
|
||||
|
||||
<joint name="${name}_depth_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_depth_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_optical_frame"/>
|
||||
|
||||
<!-- camera left IR joints and links -->
|
||||
<joint name="${name}_infra1_joint" type="fixed">
|
||||
<origin xyz="0 ${d436_cam_depth_to_infra1_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra1_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_frame"/>
|
||||
|
||||
<joint name="${name}_infra1_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra1_frame" />
|
||||
<child link="${name}_infra1_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_optical_frame"/>
|
||||
|
||||
<!-- camera right IR joints and links -->
|
||||
<joint name="${name}_infra2_joint" type="fixed">
|
||||
<origin xyz="0 ${d436_cam_depth_to_infra2_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra2_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_frame"/>
|
||||
|
||||
<joint name="${name}_infra2_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra2_frame" />
|
||||
<child link="${name}_infra2_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_optical_frame"/>
|
||||
|
||||
<!-- camera color joints and links -->
|
||||
<joint name="${name}_color_joint" type="fixed">
|
||||
<origin xyz="${d436_cam_depth_to_color_offset_x} ${d436_cam_depth_to_color_offset_y} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_color_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_frame"/>
|
||||
|
||||
<joint name="${name}_color_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_color_frame" />
|
||||
<child link="${name}_color_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_optical_frame"/>
|
||||
|
||||
<!-- IMU accel joints and links -->
|
||||
<link name="${name}_accel_frame" />
|
||||
<link name="${name}_accel_optical_frame" />
|
||||
|
||||
<joint name="${name}_accel_joint" type="fixed">
|
||||
<origin xyz = "-0.01174 -0.00552 0.0051" rpy = "0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_accel_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_accel_optical_joint" type="fixed">
|
||||
<origin xyz = "0 0 0" rpy = "${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_accel_frame" />
|
||||
<child link="${name}_accel_optical_frame" />
|
||||
</joint>
|
||||
|
||||
<!-- IMU gyro joints and links -->
|
||||
<link name="${name}_gyro_frame" />
|
||||
<link name="${name}_gyro_optical_frame" />
|
||||
|
||||
<joint name="${name}_gyro_joint" type="fixed">
|
||||
<origin xyz = "-0.01174 -0.00552 0.0051" rpy = "0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_gyro_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_gyro_optical_joint" type="fixed">
|
||||
<origin xyz = "0 0 0" rpy = "${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_gyro_frame" />
|
||||
<child link="${name}_gyro_optical_frame" />
|
||||
</joint>
|
||||
|
||||
</xacro:if>
|
||||
|
||||
<xacro:if value="${add_plug}">
|
||||
<xacro:usb_plug parent="${name}_link" name="${name}_usb_plug">
|
||||
<origin xyz="${d436_cam_mount_from_center_offset - 0.02095} ${-d436_cam_depth_py - 0.0353} 0" rpy="0 0 0"/>
|
||||
</xacro:usb_plug>
|
||||
</xacro:if>
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
@@ -0,0 +1,210 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the RealSense 430 camera, in its
|
||||
aluminum peripherial evaluation case.
|
||||
-->
|
||||
|
||||
<robot name="sensor_d455" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<!-- Includes -->
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_materials.urdf.xacro" />
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_usb_plug.urdf.xacro" />
|
||||
|
||||
<xacro:macro name="sensor_d455" params="parent *origin name:=camera use_nominal_extrinsics:=false">
|
||||
<xacro:arg name="add_plug" default="false" />
|
||||
<xacro:property name="M_PI" value="3.1415926535897931" />
|
||||
|
||||
<!-- The following values are approximate, and the camera node
|
||||
publishing TF values with actual calibrated camera extrinsic values -->
|
||||
<xacro:property name="d455_cam_depth_to_infra1_offset" value="0.0"/>
|
||||
<xacro:property name="d455_cam_depth_to_infra2_offset" value="-0.095"/>
|
||||
<xacro:property name="d455_cam_depth_to_color_offset" value="-0.059"/>
|
||||
|
||||
|
||||
<!-- The following values model the aluminum peripherial case for the
|
||||
d455 camera, with the camera joint represented by the actual
|
||||
peripherial camera tripod mount -->
|
||||
<xacro:property name="d455_cam_width" value="0.124"/>
|
||||
<xacro:property name="d455_cam_height" value="0.029"/>
|
||||
<xacro:property name="d455_cam_depth" value="0.026"/>
|
||||
<xacro:property name="d455_cam_mount_from_center_offset" value="0.0158"/>
|
||||
<!-- glass cover is 0.1 mm inwards from front aluminium plate -->
|
||||
<xacro:property name="d455_glass_to_front" value="0.1e-3"/>
|
||||
<!-- see datasheet Revision 009, Fig. 4-4 page 68 -->
|
||||
<xacro:property name="d455_zero_depth_to_glass" value="4.55e-3"/>
|
||||
<!-- convenience precomputation to avoid clutter-->
|
||||
<xacro:property name="d455_mesh_x_offset" value="${d455_cam_mount_from_center_offset-d455_glass_to_front-d455_zero_depth_to_glass}"/>
|
||||
|
||||
<!-- The following offset is relative to the physical d455 camera peripherial
|
||||
camera tripod mount -->
|
||||
<xacro:property name="d455_cam_depth_px" value="${d455_cam_mount_from_center_offset}"/>
|
||||
<xacro:property name="d455_cam_depth_py" value="0.0475"/>
|
||||
<xacro:property name="d455_cam_depth_pz" value="${d455_cam_height/2}"/>
|
||||
|
||||
<!-- camera body, with origin at bottom screw mount -->
|
||||
<joint name="${name}_joint" type="fixed">
|
||||
<xacro:insert_block name="origin" />
|
||||
<parent link="${parent}"/>
|
||||
<child link="${name}_bottom_screw_frame" />
|
||||
</joint>
|
||||
<link name="${name}_bottom_screw_frame"/>
|
||||
|
||||
<joint name="${name}_link_joint" type="fixed">
|
||||
<origin xyz="${d455_mesh_x_offset} ${d455_cam_depth_py} ${d455_cam_depth_pz}" rpy="0 0 0"/>
|
||||
<parent link="${name}_bottom_screw_frame"/>
|
||||
<child link="${name}_link" />
|
||||
</joint>
|
||||
|
||||
<link name="${name}_link">
|
||||
<visual>
|
||||
<!-- the mesh origin is at front plate in between the two infrared camera axes -->
|
||||
<!-- <origin xyz="${d455_zero_depth_to_glass-d455_cam_depth/2} ${-d455_cam_depth_py} 0" rpy="0 0 0"/> -->
|
||||
<origin xyz="${d455_zero_depth_to_glass + d455_glass_to_front} ${-d455_cam_depth_py} 0" rpy="${M_PI/2} 0 ${M_PI/2}"/>
|
||||
<geometry>
|
||||
<!-- <box size="${d455_cam_depth} ${d455_cam_width} ${d455_cam_height}"/> -->
|
||||
<mesh filename="package://realsense2_description/meshes/d455.stl" scale="0.001 0.001 0.001" />
|
||||
</geometry>
|
||||
<material name="aluminum"/>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="${d455_zero_depth_to_glass-d455_cam_depth/2} ${-d455_cam_depth_py} 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${d455_cam_depth} ${d455_cam_width} ${d455_cam_height}"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<!-- The following are not reliable values, and should not be used for modeling -->
|
||||
<mass value="0.072" />
|
||||
<origin xyz="0 0 0" />
|
||||
<inertia ixx="0.003881243" ixy="0.0" ixz="0.0" iyy="0.000498940" iyz="0.0" izz="0.003879257" />
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
<!-- Use the nominal extrinsics between camera frames if the calibrated extrinsics aren't being published. e.g. running the device in simulation -->
|
||||
<xacro:if value="${use_nominal_extrinsics}">
|
||||
<!-- camera depth joints and links -->
|
||||
<joint name="${name}_depth_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<parent link="${name}_link"/>
|
||||
<child link="${name}_depth_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_frame"/>
|
||||
|
||||
<joint name="${name}_depth_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_depth_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_optical_frame"/>
|
||||
|
||||
<!-- camera left IR joints and links -->
|
||||
<joint name="${name}_infra1_joint" type="fixed">
|
||||
<origin xyz="0 ${d455_cam_depth_to_infra1_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra1_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_frame"/>
|
||||
|
||||
<joint name="${name}_infra1_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra1_frame" />
|
||||
<child link="${name}_infra1_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_optical_frame"/>
|
||||
|
||||
<!-- camera right IR joints and links -->
|
||||
<joint name="${name}_infra2_joint" type="fixed">
|
||||
<origin xyz="0 ${d455_cam_depth_to_infra2_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra2_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_frame"/>
|
||||
|
||||
<joint name="${name}_infra2_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra2_frame" />
|
||||
<child link="${name}_infra2_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_optical_frame"/>
|
||||
|
||||
<!-- camera color joints and links -->
|
||||
<joint name="${name}_color_joint" type="fixed">
|
||||
<origin xyz="0 ${d455_cam_depth_to_color_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_color_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_frame"/>
|
||||
|
||||
<joint name="${name}_color_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_color_frame" />
|
||||
<child link="${name}_color_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_optical_frame"/>
|
||||
|
||||
<!-- IMU -->
|
||||
<!-- see datasheet Revision 009, page 114 -->
|
||||
<xacro:property name="d455_imu_px" value="-0.01602"/>
|
||||
<xacro:property name="d455_imu_py" value="-0.03022"/>
|
||||
<xacro:property name="d455_imu_pz" value="+0.0074"/>
|
||||
|
||||
<link name="${name}_accel_frame" />
|
||||
<link name="${name}_accel_optical_frame" />
|
||||
<link name="${name}_gyro_frame" />
|
||||
<link name="${name}_gyro_optical_frame" />
|
||||
<link name="${name}_imu_optical_frame" />
|
||||
|
||||
<joint name="${name}_accel_joint" type="fixed">
|
||||
<origin xyz = "${d455_imu_px} ${d455_imu_py} ${d455_imu_pz}" rpy = "0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_accel_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_accel_optical_joint" type="fixed">
|
||||
<origin xyz = "0 0 0" rpy = "${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_accel_frame" />
|
||||
<child link="${name}_accel_optical_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_gyro_joint" type="fixed">
|
||||
<origin xyz = "${d455_imu_px} ${d455_imu_py} ${d455_imu_pz}" rpy = "0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_gyro_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_gyro_optical_joint" type="fixed">
|
||||
<origin xyz = "0 0 0" rpy = "${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_gyro_frame" />
|
||||
<child link="${name}_gyro_optical_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_imu_optical_joint" type="fixed">
|
||||
<origin xyz = "0 0 0" rpy = "0 0 0" />
|
||||
<parent link="${name}_gyro_optical_frame" />
|
||||
<child link="${name}_imu_optical_frame" />
|
||||
</joint>
|
||||
</xacro:if>
|
||||
|
||||
<xacro:if value="$(arg add_plug)">
|
||||
<xacro:usb_plug parent="${name}_link" name="${name}_usb_plug">
|
||||
<origin xyz="${-0.00406-d455_cam_depth_px} ${-0.03701-d455_cam_depth_py} ${-d455_cam_depth_pz}" rpy="${M_PI/2} 0 0"/>
|
||||
</xacro:usb_plug>
|
||||
</xacro:if>
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
@@ -0,0 +1,243 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the RealSense D585 camera, in its
|
||||
aluminum peripherial evaluation case.
|
||||
-->
|
||||
|
||||
<robot name="sensor_d585" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<!-- Includes -->
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_materials.urdf.xacro" />
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_usb_plug.urdf.xacro" />
|
||||
|
||||
<xacro:macro name="sensor_d585" params="parent *origin name:=camera use_nominal_extrinsics:=false sp_x:=0 sp_y:=0 sp_z:=0 sp_roll:=0 sp_pitch:=0 sp_yaw:=0">
|
||||
<xacro:arg name="add_plug" default="false" />
|
||||
<xacro:property name="M_PI" value="3.1415926535897931" />
|
||||
|
||||
<!-- The following values are approximate, and the camera node
|
||||
publishing TF values with actual calibrated camera extrinsic values -->
|
||||
<xacro:property name="d585_cam_depth_to_infra1_offset" value="0.0"/>
|
||||
<xacro:property name="d585_cam_depth_to_labeled_point_cloud_offset" value="0.0"/>
|
||||
<xacro:property name="d585_cam_depth_to_occupancy_offset" value="0.0"/>
|
||||
<xacro:property name="d585_cam_depth_to_infra2_offset" value="-0.095"/>
|
||||
<xacro:property name="d585_cam_depth_to_color_offset" value="-0.0475"/>
|
||||
|
||||
|
||||
<!-- The following values model the aluminum peripherial case for the
|
||||
d585 camera, with the camera joint represented by the actual
|
||||
peripherial camera tripod mount -->
|
||||
<xacro:property name="d585_cam_width" value="0.182"/>
|
||||
<xacro:property name="d585_cam_height" value="0.043"/>
|
||||
<xacro:property name="d585_cam_depth" value="0.0931"/>
|
||||
|
||||
<xacro:property name="d585_cam_mount_from_center_offset" value="0.042"/> <!-- TODO: Not final numbers, still require refinements -->
|
||||
<xacro:property name="d585_glass_to_front" value="0.1e-3"/> <!-- TODO: Not final numbers, still require refinements -->
|
||||
<xacro:property name="d585_zero_depth_to_glass" value="0.0056"/> <!-- TODO: Not final numbers, still require refinements -->
|
||||
<xacro:property name="d585_mesh_x_offset" value="${d585_cam_mount_from_center_offset-d585_glass_to_front-d585_zero_depth_to_glass}"/>
|
||||
|
||||
<!-- The following offset is relative to the physical d585 camera peripherial
|
||||
camera tripod mount -->
|
||||
<xacro:property name="d585_cam_depth_px" value="${d585_cam_mount_from_center_offset}"/>
|
||||
<xacro:property name="d585_cam_depth_py" value="0.0475"/>
|
||||
<xacro:property name="d585_cam_depth_pz" value="${d585_cam_height/2}"/>
|
||||
|
||||
<!-- camera body, with origin at bottom screw mount -->
|
||||
<joint name="${name}_joint" type="fixed">
|
||||
<xacro:insert_block name="origin" />
|
||||
<parent link="${parent}"/>
|
||||
<child link="${name}_bottom_screw_frame" />
|
||||
</joint>
|
||||
<link name="${name}_bottom_screw_frame"/>
|
||||
|
||||
<joint name="${name}_link_joint" type="fixed">
|
||||
<origin xyz="${d585_mesh_x_offset} ${d585_cam_depth_py} ${d585_cam_depth_pz}" rpy="0 0 0"/>
|
||||
<parent link="${name}_bottom_screw_frame"/>
|
||||
<child link="${name}_link" />
|
||||
</joint>
|
||||
|
||||
<link name="${name}_link">
|
||||
<visual>
|
||||
<!-- the mesh origin is at front plate in between the two infrared camera axes -->
|
||||
<!-- <origin xyz="${d585_zero_depth_to_glass-d585_cam_depth/2} ${-d585_cam_depth_py} 0" rpy="0 0 0"/> -->
|
||||
<origin xyz="${d585_zero_depth_to_glass + d585_glass_to_front} ${-d585_cam_depth_py} 0" rpy="${M_PI/2} 0 ${M_PI/2}"/>
|
||||
<geometry>
|
||||
<!-- <box size="${d585_cam_depth} ${d585_cam_width} ${d585_cam_height}"/> -->
|
||||
<mesh filename="package://realsense2_description/meshes/d585.stl" scale="0.001 0.001 0.001" />
|
||||
</geometry>
|
||||
<material name="aluminum"/>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="${d585_zero_depth_to_glass-d585_cam_depth/2} ${-d585_cam_depth_py} 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${d585_cam_depth} ${d585_cam_width} ${d585_cam_height}"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<!-- The following are not reliable values, and should not be used for modeling -->
|
||||
<mass value="0.072" />
|
||||
<origin xyz="0 0 0" />
|
||||
<inertia ixx="0.003881243" ixy="0.0" ixz="0.0" iyy="0.000498940" iyz="0.0" izz="0.003879257" />
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
<!-- Use the nominal extrinsics between camera frames if the calibrated extrinsics aren't being published. e.g. running the device in simulation -->
|
||||
<xacro:if value="${use_nominal_extrinsics}">
|
||||
<!-- camera depth joints and links -->
|
||||
<joint name="${name}_depth_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<parent link="${name}_link"/>
|
||||
<child link="${name}_depth_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_frame"/>
|
||||
|
||||
<joint name="${name}_depth_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_depth_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_optical_frame"/>
|
||||
|
||||
<!-- camera left IR joints and links -->
|
||||
<joint name="${name}_infra1_joint" type="fixed">
|
||||
<origin xyz="0 ${d585_cam_depth_to_infra1_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra1_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_frame"/>
|
||||
|
||||
<joint name="${name}_infra1_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra1_frame" />
|
||||
<child link="${name}_infra1_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_optical_frame"/>
|
||||
|
||||
<!-- camera right IR joints and links -->
|
||||
<joint name="${name}_infra2_joint" type="fixed">
|
||||
<origin xyz="0 ${d585_cam_depth_to_infra2_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_infra2_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_frame"/>
|
||||
|
||||
<joint name="${name}_infra2_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra2_frame" />
|
||||
<child link="${name}_infra2_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_optical_frame"/>
|
||||
|
||||
<!-- camera color joints and links -->
|
||||
<joint name="${name}_color_joint" type="fixed">
|
||||
<origin xyz="0 ${d585_cam_depth_to_color_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_color_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_frame"/>
|
||||
|
||||
<joint name="${name}_color_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_color_frame" />
|
||||
<child link="${name}_color_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_color_optical_frame"/>
|
||||
|
||||
<!-- camera labeled point cloud joints and links -->
|
||||
<joint name="${name}_labeled_point_cloud_joint" type="fixed">
|
||||
<origin xyz="${sp_x} ${sp_y} ${sp_z}" rpy="${sp_roll} ${sp_pitch} ${sp_yaw}" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_labeled_point_cloud_frame" />
|
||||
</joint>
|
||||
<link name="${name}_labeled_point_cloud_frame" />
|
||||
|
||||
<joint name="${name}_labeled_point_cloud_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_labeled_point_cloud_frame" />
|
||||
<child link="${name}_labeled_point_cloud_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_labeled_point_cloud_optical_frame" />
|
||||
|
||||
<!-- camera occupancy joints and links -->
|
||||
<joint name="${name}_occupancy_joint" type="fixed">
|
||||
<origin xyz="${sp_x} ${sp_y} ${sp_z}" rpy="${sp_roll} ${sp_pitch} ${sp_yaw}" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_occupancy_frame" />
|
||||
</joint>
|
||||
<link name="${name}_occupancy_frame" />
|
||||
|
||||
<joint name="${name}_occupancy_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_occupancy_frame" />
|
||||
<child link="${name}_occupancy_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_occupancy_optical_frame" />
|
||||
|
||||
|
||||
<!-- IMU -->
|
||||
<xacro:property name="d585_imu_px" value="0.0114"/> <!-- TODO: Not final numbers, still require refinements -->
|
||||
<xacro:property name="d585_imu_py" value="-0.0195"/> <!-- TODO: Not final numbers, still require refinements -->
|
||||
<xacro:property name="d585_imu_pz" value="0"/> <!-- TODO: Not final numbers, still require refinements -->
|
||||
|
||||
<link name="${name}_accel_frame" />
|
||||
<link name="${name}_accel_optical_frame" />
|
||||
<link name="${name}_gyro_frame" />
|
||||
<link name="${name}_gyro_optical_frame" />
|
||||
<link name="${name}_imu_optical_frame" />
|
||||
|
||||
<joint name="${name}_accel_joint" type="fixed">
|
||||
<origin xyz = "${d585_imu_px} ${d585_imu_py} ${d585_imu_pz}" rpy = "0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_accel_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_accel_optical_joint" type="fixed">
|
||||
<origin xyz = "0 0 0" rpy = "${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_accel_frame" />
|
||||
<child link="${name}_accel_optical_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_gyro_joint" type="fixed">
|
||||
<origin xyz = "${d585_imu_px} ${d585_imu_py} ${d585_imu_pz}" rpy = "0 0 0" />
|
||||
<parent link="${name}_link" />
|
||||
<child link="${name}_gyro_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_gyro_optical_joint" type="fixed">
|
||||
<origin xyz = "0 0 0" rpy = "${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_gyro_frame" />
|
||||
<child link="${name}_gyro_optical_frame" />
|
||||
</joint>
|
||||
|
||||
<joint name="${name}_imu_optical_joint" type="fixed">
|
||||
<origin xyz = "0 0 0" rpy = "0 0 0" />
|
||||
<parent link="${name}_gyro_optical_frame" />
|
||||
<child link="${name}_imu_optical_frame" />
|
||||
</joint>
|
||||
</xacro:if>
|
||||
|
||||
<!-- Enable this if needed, remember to update xyz
|
||||
<xacro:if value="$(arg add_plug)">
|
||||
<xacro:usb_plug parent="${name}_link" name="${name}_usb_plug">
|
||||
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0"/>
|
||||
</xacro:usb_plug>
|
||||
</xacro:if>
|
||||
-->
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
Collection of materials to be used in other macros.
|
||||
This avoids the redefinition of materials in case multple cameras are imported.
|
||||
-->
|
||||
|
||||
<robot xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:property name="realsense_materials_defined" default="false" />
|
||||
<xacro:unless value="${realsense_materials_defined}">
|
||||
<xacro:property name="realsense_materials_defined" value="true" />
|
||||
<material name="aluminum">
|
||||
<color rgba="0.5 0.5 0.5 1"/>
|
||||
</material>
|
||||
<material name="plastic">
|
||||
<color rgba="0.1 0.1 0.1 1"/>
|
||||
</material>
|
||||
</xacro:unless>
|
||||
</robot>
|
||||
@@ -0,0 +1,128 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the RealSense 410 camera, in it's
|
||||
aluminum peripherial evaluation case.
|
||||
-->
|
||||
|
||||
<robot name="sensor_r410" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<!-- Includes -->
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_materials.urdf.xacro" />
|
||||
|
||||
<xacro:macro name="sensor_r410" params="parent *origin name:=camera use_nominal_extrinsics:=false">
|
||||
<xacro:property name="M_PI" value="3.1415926535897931" />
|
||||
|
||||
<!-- The following values are approximate, and the camera node
|
||||
publishing TF values with actual calibrated camera extrinsic values -->
|
||||
<xacro:property name="r410_cam_depth_to_infra1_offset" value="-0.0275"/>
|
||||
<xacro:property name="r410_cam_depth_to_infra2_offset" value="0.0275"/>
|
||||
|
||||
<!-- The following values model the aluminum peripherial case for the
|
||||
R410 camera, with the camera joint represented by the actual
|
||||
peripherial camera tripod mount -->
|
||||
<xacro:property name="r410_cam_width" value="0.099"/>
|
||||
<xacro:property name="r410_cam_height" value="0.035"/>
|
||||
<xacro:property name="r410_cam_depth" value="0.0185"/>
|
||||
<xacro:property name="r410_cam_mount_from_center_offset" value=".0375"/>
|
||||
|
||||
<!-- The following offset is relative the the physical R410 camera peripherial
|
||||
camera tripod mount -->
|
||||
<xacro:property name="r410_cam_depth_px" value="0.00"/>
|
||||
<xacro:property name="r410_cam_depth_py" value="-0.0425"/>
|
||||
<xacro:property name="r410_cam_depth_pz" value="0.026"/>
|
||||
|
||||
<!-- camera body, with origin at bottom screw mount -->
|
||||
<joint name="${name}_joint" type="fixed">
|
||||
<xacro:insert_block name="origin" />
|
||||
<parent link="${parent}"/>
|
||||
<child link="${name}_link" />
|
||||
</joint>
|
||||
|
||||
<link name="${name}_link">
|
||||
<visual>
|
||||
<origin xyz="0 ${-r410_cam_mount_from_center_offset} ${r410_cam_height/2}" rpy="${M_PI/2} 0 ${M_PI/2}"/>
|
||||
<geometry>
|
||||
<box size="${r410_cam_width} ${r410_cam_height} ${r410_cam_depth}"/>
|
||||
<!--<mesh filename="package://realsense2_description/meshes/r410/r410.dae" />-->
|
||||
</geometry>
|
||||
<material name="aluminum"/>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0.0 0.0 ${r410_cam_height/2}" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${r410_cam_depth} ${r410_cam_width} ${r410_cam_height}"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<!-- The following are not reliable values, and should not be used for modeling -->
|
||||
<mass value="0.564" />
|
||||
<origin xyz="0 0 0" />
|
||||
<inertia ixx="0.003881243" ixy="0.0" ixz="0.0" iyy="0.000498940" iyz="0.0" izz="0.003879257" />
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
<!-- Use the nominal extrinsics between camera frames if the calibrated extrinsics aren't being published. e.g. running the device in simulation -->
|
||||
<xacro:if value="${use_nominal_extrinsics}">
|
||||
<!-- camera depth joints and links -->
|
||||
<joint name="${name}_depth_joint" type="fixed">
|
||||
<origin xyz="${r410_cam_depth_px} ${r410_cam_depth_py} ${r410_cam_depth_pz}" rpy="0 0 0"/>
|
||||
<parent link="${name}_link"/>
|
||||
<child link="${name}_depth_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_frame"/>
|
||||
|
||||
<joint name="${name}_depth_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_depth_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_optical_frame"/>
|
||||
|
||||
<!-- camera left IR joints and links -->
|
||||
<joint name="${name}_infra1_joint" type="fixed">
|
||||
<origin xyz="0 ${r410_cam_depth_to_infra1_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_infra1_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_frame"/>
|
||||
|
||||
<joint name="${name}_infra1_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra1_frame" />
|
||||
<child link="${name}_infra1_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_optical_frame"/>
|
||||
|
||||
<!-- camera right IR joints and links -->
|
||||
<joint name="${name}_infra2_joint" type="fixed">
|
||||
<origin xyz="0 ${r410_cam_depth_to_infra2_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_infra2_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_frame"/>
|
||||
|
||||
<joint name="${name}_infra2_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra2_frame" />
|
||||
<child link="${name}_infra2_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_optical_frame"/>
|
||||
</xacro:if>
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
@@ -0,0 +1,129 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the RealSense 430 camera, in it's
|
||||
aluminum peripherial evaluation case.
|
||||
-->
|
||||
|
||||
<robot name="sensor_r430" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<!-- Includes -->
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_materials.urdf.xacro" />
|
||||
|
||||
<xacro:macro name="sensor_r430" params="parent *origin name:=camera use_nominal_extrinsics:=false">
|
||||
<xacro:property name="M_PI" value="3.1415926535897931" />
|
||||
|
||||
<!-- The following values are approximate, and the camera node
|
||||
publishing TF values with actual calibrated camera extrinsic values -->
|
||||
<xacro:property name="r430_cam_depth_to_infra1_offset" value="-0.025"/>
|
||||
<xacro:property name="r430_cam_depth_to_infra2_offset" value="0.025"/>
|
||||
|
||||
<!-- The following values model the aluminum peripherial case for the
|
||||
R430 camera, with the camera joint represented by the actual
|
||||
peripherial camera tripod mount -->
|
||||
<xacro:property name="r430_cam_width" value="0.105"/>
|
||||
<xacro:property name="r430_cam_height" value="0.039"/>
|
||||
<xacro:property name="r430_cam_depth" value="0.019"/>
|
||||
<xacro:property name="r430_cam_mount_from_center_offset" value=".0275"/>
|
||||
|
||||
<!-- The following offset is relative the the physical R430 camera peripherial
|
||||
camera tripod mount -->
|
||||
<xacro:property name="r430_cam_depth_px" value="0.00"/>
|
||||
<xacro:property name="r430_cam_depth_py" value="-0.035"/>
|
||||
<xacro:property name="r430_cam_depth_pz" value="0.028"/>
|
||||
|
||||
<!-- camera body, with origin at bottom screw mount -->
|
||||
<joint name="${name}_joint" type="fixed">
|
||||
<xacro:insert_block name="origin" />
|
||||
<parent link="${parent}"/>
|
||||
<child link="${name}_link" />
|
||||
</joint>
|
||||
|
||||
<link name="${name}_link">
|
||||
<visual>
|
||||
<origin xyz="0 ${-r430_cam_mount_from_center_offset} ${r430_cam_height/2}" rpy="${M_PI/2} 0 ${M_PI/2}"/>
|
||||
<geometry>
|
||||
<box size="${r430_cam_width} ${r430_cam_height} ${r430_cam_depth}"/>
|
||||
<!--<mesh filename="package://realsense2_description/meshes/r430/r430.dae" />-->
|
||||
</geometry>
|
||||
<material name="aluminum"/>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0.0 0.0 ${r430_cam_height/2}" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<box size="${r430_cam_depth} ${r430_cam_width} ${r430_cam_height}"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<!-- The following are not reliable values, and should not be used for modeling -->
|
||||
<mass value="0.564" />
|
||||
<origin xyz="0 0 0" />
|
||||
<inertia ixx="0.003881243" ixy="0.0" ixz="0.0" iyy="0.000498940" iyz="0.0" izz="0.003879257" />
|
||||
</inertial>
|
||||
</link>
|
||||
|
||||
<!-- Use the nominal extrinsics between camera frames if the calibrated extrinsics aren't being published. e.g. running the device in simulation -->
|
||||
<xacro:if value="${use_nominal_extrinsics}">
|
||||
<!-- camera depth joints and links -->
|
||||
<joint name="${name}_depth_joint" type="fixed">
|
||||
<origin xyz="${r430_cam_depth_px} ${r430_cam_depth_py} ${r430_cam_depth_pz}" rpy="0 0 0"/>
|
||||
<parent link="${name}_link"/>
|
||||
<child link="${name}_depth_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_frame"/>
|
||||
|
||||
<joint name="${name}_depth_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_depth_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_depth_optical_frame"/>
|
||||
|
||||
<!-- camera left IR joints and links -->
|
||||
<joint name="${name}_infra1_joint" type="fixed">
|
||||
<origin xyz="0 ${r430_cam_depth_to_infra1_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_infra1_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_frame"/>
|
||||
|
||||
<joint name="${name}_infra1_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra1_frame" />
|
||||
<child link="${name}_infra1_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra1_optical_frame"/>
|
||||
|
||||
<!-- camera right IR joints and links -->
|
||||
<joint name="${name}_infra2_joint" type="fixed">
|
||||
<origin xyz="0 ${r430_cam_depth_to_infra2_offset} 0" rpy="0 0 0" />
|
||||
<parent link="${name}_depth_frame" />
|
||||
<child link="${name}_infra2_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_frame"/>
|
||||
|
||||
<joint name="${name}_infra2_optical_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
|
||||
<parent link="${name}_infra2_frame" />
|
||||
<child link="${name}_infra2_optical_frame" />
|
||||
</joint>
|
||||
<link name="${name}_infra2_optical_frame"/>
|
||||
|
||||
</xacro:if>
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
# 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the URDF model for the RealSense 415 camera, in it's
|
||||
aluminum peripherial evaluation case.
|
||||
-->
|
||||
|
||||
<robot name="usb_plug" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:macro name="usb_plug" params="parent *origin name:=usb_plug">
|
||||
<xacro:property name="M_PI" value="3.1415926535897931" />
|
||||
|
||||
<joint name="${name}_joint" type="fixed">
|
||||
<xacro:insert_block name="origin" />
|
||||
<parent link="${parent}" />
|
||||
<child link="${name}_link" />
|
||||
</joint>
|
||||
|
||||
<link name="${name}_link">
|
||||
<visual>
|
||||
<!-- 0.044850 0.008000 0.018500 -->
|
||||
<origin xyz="0. -0.022425 0." rpy="0 0 ${M_PI/2}"/>
|
||||
<geometry>
|
||||
<!--box size="0.044850 0.008 0.0185" /-->
|
||||
<mesh filename="package://realsense2_description/meshes/plug.stl" />
|
||||
</geometry>
|
||||
<material name="plastic"/>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0. -0.022425 0." rpy="0 0 ${M_PI/2}"/>
|
||||
<geometry>
|
||||
<!--box size="0.044850 0.008 0.0185" /-->
|
||||
<mesh filename="package://realsense2_description/meshes/plug_collision.stl" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot name="realsense2_camera" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:arg name="use_nominal_extrinsics" default="false"/>
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_d405.urdf.xacro" />
|
||||
|
||||
<link name="base_link" />
|
||||
<xacro:sensor_d405 parent="base_link" use_nominal_extrinsics="$(arg use_nominal_extrinsics)">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
</xacro:sensor_d405>
|
||||
</robot>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot name="realsense2_camera" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:arg name="use_nominal_extrinsics" default="false" />
|
||||
<xacro:arg name="add_plug" default="false" />
|
||||
<xacro:arg name="use_mesh" default="true" />
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_d415.urdf.xacro" />
|
||||
|
||||
<link name="base_link" />
|
||||
<xacro:sensor_d415 parent="base_link" use_nominal_extrinsics="$(arg use_nominal_extrinsics)" add_plug="$(arg add_plug)" use_mesh="$(arg use_mesh)">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
</xacro:sensor_d415>
|
||||
</robot>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot name="realsense2_camera" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:arg name="use_nominal_extrinsics" default="false"/>
|
||||
<xacro:arg name="add_plug" default="false" />
|
||||
<xacro:arg name="use_mesh" default="true" />
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_d435.urdf.xacro" />
|
||||
|
||||
<link name="base_link" />
|
||||
<xacro:sensor_d435 parent="base_link" use_nominal_extrinsics="$(arg use_nominal_extrinsics)" add_plug="$(arg add_plug)" use_mesh="$(arg use_mesh)">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
</xacro:sensor_d435>
|
||||
</robot>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot name="realsense2_camera" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:arg name="use_nominal_extrinsics" default="false"/>
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_d435.urdf.xacro" />
|
||||
|
||||
<link name="base_link" />
|
||||
<xacro:sensor_d435 parent="base_link" name="camera1" use_nominal_extrinsics="$(arg use_nominal_extrinsics)">
|
||||
<origin xyz="0.1 0 0" rpy="0 0 0"/>
|
||||
</xacro:sensor_d435>
|
||||
|
||||
<xacro:sensor_d435 parent="base_link" name="camera2" use_nominal_extrinsics="$(arg use_nominal_extrinsics)">
|
||||
<origin xyz="-0.1 0 0" rpy="0 0 3.1456"/>
|
||||
</xacro:sensor_d435>
|
||||
</robot>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" ?>
|
||||
<robot name="realsense2_camera" xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
<xacro:arg name="use_nominal_extrinsics" default="false" />
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_d435i.urdf.xacro"/>
|
||||
|
||||
<link name="base_link" />
|
||||
<xacro:sensor_d435i parent="base_link" use_nominal_extrinsics="$(arg use_nominal_extrinsics)">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
</xacro:sensor_d435i>
|
||||
</robot>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot name="realsense2_camera" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:arg name="use_nominal_extrinsics" default="false"/>
|
||||
<xacro:arg name="add_plug" default="false" />
|
||||
<xacro:arg name="use_mesh" default="true" />
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_d436.urdf.xacro" />
|
||||
|
||||
<link name="base_link" />
|
||||
<xacro:sensor_d436 parent="base_link" use_nominal_extrinsics="$(arg use_nominal_extrinsics)" add_plug="$(arg add_plug)" use_mesh="$(arg use_mesh)">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
</xacro:sensor_d436>
|
||||
</robot>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot name="realsense2_camera" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:arg name="use_nominal_extrinsics" default="false"/>
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_d455.urdf.xacro" />
|
||||
|
||||
<link name="base_link" />
|
||||
<xacro:sensor_d455 parent="base_link" use_nominal_extrinsics="$(arg use_nominal_extrinsics)">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
</xacro:sensor_d455>
|
||||
</robot>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot name="realsense2_camera" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:arg name="use_nominal_extrinsics" default="false"/>
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_d585.urdf.xacro" />
|
||||
<xacro:arg name="sp_x" default="0.0"/>
|
||||
<xacro:arg name="sp_y" default="0.0"/>
|
||||
<xacro:arg name="sp_z" default="0.0"/>
|
||||
<xacro:arg name="sp_roll" default="0.0"/>
|
||||
<xacro:arg name="sp_pitch" default="0.0"/>
|
||||
<xacro:arg name="sp_yaw" default="0.0"/>
|
||||
|
||||
<link name="base_link" />
|
||||
<xacro:sensor_d585 parent="base_link" use_nominal_extrinsics="$(arg use_nominal_extrinsics)" sp_x="$(arg sp_x)" sp_y="$(arg sp_y)" sp_z="$(arg sp_z)" sp_roll="$(arg sp_roll)" sp_pitch="$(arg sp_pitch)" sp_yaw="$(arg sp_yaw)">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
</xacro:sensor_d585>
|
||||
</robot>
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot name="realsense2_camera" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:arg name="use_nominal_extrinsics" default="false"/>
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_r410.urdf.xacro" />
|
||||
|
||||
<link name="base_link" />
|
||||
<xacro:sensor_r410 parent="base_link" use_nominal_extrinsics="$(arg use_nominal_extrinsics)">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
</xacro:sensor_r410>
|
||||
</robot>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot name="realsense2_camera" xmlns:xacro="http://ros.org/wiki/xacro">
|
||||
<xacro:arg name="use_nominal_extrinsics" default="false"/>
|
||||
<xacro:include filename="$(find realsense2_description)/urdf/_r430.urdf.xacro" />
|
||||
|
||||
<link name="base_link" />
|
||||
<xacro:sensor_r430 parent="base_link" use_nominal_extrinsics="$(arg use_nominal_extrinsics)">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
</xacro:sensor_r430>
|
||||
</robot>
|
||||
Reference in New Issue
Block a user