feat(gemini2): add OrbbecSDK_ROS2/

This commit is contained in:
X-lanni
2025-07-04 15:30:11 +08:00
parent 5cf886315d
commit 1e82e0115a
185 changed files with 864328 additions and 0 deletions
@@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.5)
project(orbbec_description)
find_package(ament_cmake REQUIRED)
# Install files
install(DIRECTORY
launch
meshes
urdf
rviz
DESTINATION share/${PROJECT_NAME})
ament_package()
@@ -0,0 +1,33 @@
# Copyright 2023 Intel Corporation. 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 Intel Corporation. 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('orbbec_description'), 'urdf'))]
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 orbbec_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('orbbec_description'), 'rviz', 'urdf.rviz')
xacro_path = os.path.join(get_package_share_directory('orbbec_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])
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,18 @@
<?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>orbbec_description</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="jian.dong@pobox.com">toosimple</maintainer>
<license>Apache-2.0</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>
@@ -0,0 +1,216 @@
Panels:
- Class: rviz_common/Displays
Help Height: 78
Name: Displays
Property Tree Widget:
Expanded:
- /Global Options1
- /Status1
- /Grid1
- /RobotModel1
- /RobotModel1/Description Topic1
Splitter Ratio: 0.5
Tree Height: 1079
- Class: rviz_common/Selection
Name: Selection
- Class: rviz_common/Tool Properties
Expanded:
- /2D Goal Pose1
- /Publish Point1
Name: Tool Properties
Splitter Ratio: 0.5886790156364441
- Class: rviz_common/Views
Expanded:
- /Current View1
Name: Views
Splitter Ratio: 0.5
- Class: rviz_common/Time
Experimental: false
Name: Time
SyncMode: 0
SyncSource: ""
Visualization Manager:
Class: ""
Displays:
- Alpha: 0.5
Cell Size: 1
Class: rviz_default_plugins/Grid
Color: 160; 160; 164
Enabled: true
Line Style:
Line Width: 0.029999999329447746
Value: Lines
Name: Grid
Normal Cell Count: 0
Offset:
X: 0
Y: 0
Z: 0
Plane: XY
Plane Cell Count: 10
Reference Frame: <Fixed Frame>
Value: true
- Alpha: 1
Class: rviz_default_plugins/RobotModel
Collision Enabled: false
Description File: ""
Description Source: Topic
Description Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /robot_description
Enabled: true
Links:
All Links Enabled: true
Expand Joint Details: false
Expand Link Details: false
Expand Tree: false
Link Tree Style: Links in Alphabetic Order
base_link:
Alpha: 1
Show Axes: false
Show Trail: false
camera_bottom_screw_frame:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
camera_color_frame:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
camera_color_optical_frame:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
camera_depth_frame:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
camera_depth_optical_frame:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
camera_infra2_frame:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
camera_infra2_optical_frame:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
camera_infra_1_frame:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
camera_infra_1_optical_frame:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
camera_link:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
Mass Properties:
Inertia: false
Mass: false
Name: RobotModel
TF Prefix: ""
Update Interval: 0
Value: true
Visual Enabled: true
Enabled: true
Global Options:
Background Color: 48; 48; 48
Fixed Frame: base_link
Frame Rate: 30
Name: root
Tools:
- Class: rviz_default_plugins/Interact
Hide Inactive Objects: true
- Class: rviz_default_plugins/MoveCamera
- Class: rviz_default_plugins/Select
- Class: rviz_default_plugins/FocusCamera
- Class: rviz_default_plugins/Measure
Line color: 128; 128; 0
- Class: rviz_default_plugins/SetInitialPose
Covariance x: 0.25
Covariance y: 0.25
Covariance yaw: 0.06853891909122467
Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /initialpose
- Class: rviz_default_plugins/SetGoal
Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /goal_pose
- Class: rviz_default_plugins/PublishPoint
Single click: true
Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /clicked_point
Transformation:
Current:
Class: rviz_default_plugins/TF
Value: true
Views:
Current:
Class: rviz_default_plugins/Orbit
Distance: 0.20926910638809204
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.08039925247430801
Target Frame: <Fixed Frame>
Value: Orbit (rviz)
Yaw: 0.08857899904251099
Saved: ~
Window Geometry:
Displays:
collapsed: false
Height: 1376
Hide Left Dock: false
Hide Right Dock: false
QMainWindow State: 000000ff00000000fd000000040000000000000207000004c2fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000004c2000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000004c2fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d000004c2000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000009b80000003efc0100000002fb0000000800540069006d00650100000000000009b8000002eb00fffffffb0000000800540069006d0065010000000000000450000000000000000000000696000004c200000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Selection:
collapsed: false
Time:
collapsed: false
Tool Properties:
collapsed: false
Views:
collapsed: false
Width: 2488
X: 72
Y: 27
@@ -0,0 +1,325 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by
Stephen Brawner (brawner@gmail.com)
Commit Version: 1.6.0-4-g7f85cfe Build Version: 1.6.7995.38578
For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot xmlns:xacro="http://ros.org/wiki/xacro" name="gemini_335_336">
<xacro:property name="mesh_path" value="package://orbbec_description/meshes/gemini335_336/" />
<link name="camera_link">
<inertial>
<origin xyz="0.00277269933215555 -1.06084680351007E-05 0.012801025085723" rpy="0 0 0" />
<mass value="0.0186143499064346" />
<inertia ixx="1.38922229644605E-05" ixy="-4.74617876641156E-09"
ixz="1.99175628166615E-08"
iyy="1.70686808598814E-06" iyz="-7.18717290327325E-09" izz="1.31766831843134E-05" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_link.STL" />
</geometry>
<material name="">
<color rgba="1 1 1 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_link.STL" />
</geometry>
</collision>
</link>
<link name="camera_bottom_screw_frame">
<inertial>
<origin xyz="0.00255168206289301 -0.00123934714960528 0.0118889875786098" rpy="0 0 0" />
<mass value="0.00564476880678651" />
<inertia ixx="3.07690693820862E-06" ixy="-1.85045956307764E-08"
ixz="-9.2792327175816E-09"
iyy="2.27632852811487E-07" iyz="1.65233162864392E-08" izz="2.93985735090777E-06" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_bottom_screw_frame.STL" />
</geometry>
<material name="">
<color rgba="0.792156862745098 0.819607843137255 0.933333333333333 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_bottom_screw_frame.STL" />
</geometry>
</collision>
</link>
<joint name="camera_bottom_screw_frame_joint" type="fixed">
<origin xyz="0 0 0" rpy="0 0 0" />
<parent link="camera_link" />
<child link="camera_bottom_screw_frame" />
<axis xyz="0 0 0" />
</joint>
<link name="camera_infra_1_frame">
<inertial>
<origin xyz="-0.00158020887627678 -1.52683853303637E-08 -1.4860800305164E-07"
rpy="0 0 0" />
<mass value="0.000453168790516429" />
<inertia ixx="4.34108781911687E-09" ixy="-3.69655517007001E-13"
ixz="-1.45486421873185E-13"
iyy="4.84012226840139E-09" iyz="1.92888940614786E-14" izz="4.84044260907388E-09" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_infra_1_frame.STL" />
</geometry>
<material name="">
<color rgba="0.501960784313725 0.250980392156863 0.250980392156863 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_infra_1_frame.STL" />
</geometry>
</collision>
</link>
<joint name="camera_infra_1_joint" type="fixed">
<origin xyz="0.01587 -0.025 0.0125" rpy="0 0 0" />
<parent link="camera_bottom_screw_frame" />
<child link="camera_infra_1_frame" />
<axis xyz="0 0 0" />
</joint>
<link name="camera_infra_1_optical_frame">
<inertial>
<origin xyz="1.52683853338331E-08 1.48608003051636E-07 -0.00158020887627678" rpy="0 0 0" />
<mass value="0.000453168790516429" />
<inertia ixx="4.84012226840139E-09" ixy="1.92888940614797E-14"
ixz="3.69655517006993E-13"
iyy="4.84044260907388E-09" iyz="1.45486421873192E-13" izz="4.34108781911687E-09" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_infra_1_optical_frame.STL" />
</geometry>
<material name="">
<color rgba="0.501960784313725 0.250980392156863 0.250980392156863 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_infra_1_optical_frame.STL" />
</geometry>
</collision>
</link>
<joint name="camera_infra_1_optical_joint" type="fixed">
<origin xyz="0.01587 -0.025 0.0125" rpy="-1.5707963267949 0 -1.5707963267949" />
<parent link="camera_bottom_screw_frame" />
<child link="camera_infra_1_optical_frame" />
<axis xyz="0 0 0" />
</joint>
<link name="camera_infra2_frame">
<inertial>
<origin xyz="-0.00158020887627678 -1.52683853303637E-08 -1.48608003050581E-07"
rpy="0 0 0" />
<mass value="0.000453168790516429" />
<inertia ixx="4.34108781911687E-09" ixy="-3.69655517007898E-13"
ixz="-1.45486421873762E-13"
iyy="4.84012226840139E-09" iyz="1.92888940594506E-14" izz="4.84044260907389E-09" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_infra2_frame.STL" />
</geometry>
<material name="">
<color rgba="0.501960784313725 0.250980392156863 0.250980392156863 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_infra2_frame.STL" />
</geometry>
</collision>
</link>
<joint name="camera_infra2_joint" type="fixed">
<origin xyz="0.01587 0.025 0.0125" rpy="0 0 0" />
<parent link="camera_bottom_screw_frame" />
<child link="camera_infra2_frame" />
<axis xyz="0 0 0" />
</joint>
<link name="camera_infra2_optical_frame">
<inertial>
<origin xyz="1.52683853268942E-08 1.4860800305058E-07 -0.00158020887627678" rpy="0 0 0" />
<mass value="0.000453168790516429" />
<inertia ixx="4.84012226840139E-09" ixy="1.92888940594538E-14"
ixz="3.69655517007897E-13"
iyy="4.84044260907389E-09" iyz="1.45486421873764E-13" izz="4.34108781911687E-09" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_infra2_optical_frame.STL" />
</geometry>
<material name="">
<color rgba="0.501960784313725 0.250980392156863 0.250980392156863 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_infra2_optical_frame.STL" />
</geometry>
</collision>
</link>
<joint name="camera_infra2_optical_joint" type="fixed">
<origin xyz="0.01587 0.025 0.0125" rpy="-1.5707963267949 0 -1.5707963267949" />
<parent link="camera_bottom_screw_frame" />
<child link="camera_infra2_optical_frame" />
<axis xyz="0 0 0" />
</joint>
<link name="camera_color_frame">
<inertial>
<origin xyz="-0.00177079701156752 -2.20101367029782E-07 2.09893364599916E-07"
rpy="0 0 0" />
<mass value="0.000139779365329478" />
<inertia ixx="6.69130695410276E-10" ixy="-1.53742421247628E-13"
ixz="-2.28137695085953E-14"
iyy="6.11277085561398E-10" iyz="4.18921196289284E-14" izz="6.11078036871936E-10" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_color_frame.STL" />
</geometry>
<material name="">
<color rgba="0.501960784313725 0.250980392156863 0.250980392156863 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_color_frame.STL" />
</geometry>
</collision>
</link>
<joint name="camera_color_joint" type="fixed">
<origin xyz="0.017533 0.010995 0.012505" rpy="0 0 0" />
<parent link="camera_bottom_screw_frame" />
<child link="camera_color_frame" />
<axis xyz="0 0 0" />
</joint>
<link name="camera_color_optical_frame">
<inertial>
<origin xyz="2.20101367029782E-07 -2.09893364599916E-07 -0.00177079701156752"
rpy="0 0 0" />
<mass value="0.000139779365329478" />
<inertia ixx="6.11277085561398E-10" ixy="4.18921196289284E-14"
ixz="1.53742421247628E-13"
iyy="6.11078036871936E-10" iyz="2.28137695085953E-14" izz="6.69130695410276E-10" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_color_optical_frame.STL" />
</geometry>
<material name="">
<color rgba="0.501960784313725 0.250980392156863 0.250980392156863 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_color_optical_frame.STL" />
</geometry>
</collision>
</link>
<joint name="camera_color_optical_joint" type="fixed">
<origin xyz="0.017533 0.010995 0.012505" rpy="-1.5707963267949 0 -1.5707963267949" />
<parent link="camera_bottom_screw_frame" />
<child link="camera_color_optical_frame" />
<axis xyz="0 0 0" />
</joint>
<link name="camera_depth_frame">
<inertial>
<origin xyz="-0.00158020887627678 -1.52683853338331E-08 -1.48608003051662E-07"
rpy="0 0 0" />
<mass value="0.000453168790516429" />
<inertia ixx="4.34108781911687E-09" ixy="-3.69655517006982E-13"
ixz="-1.45486421873185E-13"
iyy="4.84012226840139E-09" iyz="1.92888940614707E-14" izz="4.84044260907388E-09" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_depth_frame.STL" />
</geometry>
<material name="">
<color rgba="0.501960784313725 0.250980392156863 0.250980392156863 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_depth_frame.STL" />
</geometry>
</collision>
</link>
<joint name="camera_depth_joint" type="fixed">
<origin xyz="0.01587 -0.025 0.0125" rpy="0 0 0" />
<parent link="camera_bottom_screw_frame" />
<child link="camera_depth_frame" />
<axis xyz="0 0 0" />
</joint>
<link name="camera_depth_optical_frame">
<inertial>
<origin xyz="1.52683853338331E-08 1.4860800305165E-07 -0.00158020887627678" rpy="0 0 0" />
<mass value="0.000453168790516429" />
<inertia ixx="4.84012226840139E-09" ixy="1.9288894061467E-14" ixz="3.69655517006976E-13"
iyy="4.84044260907388E-09" iyz="1.454864218732E-13" izz="4.34108781911687E-09" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_depth_optical_frame.STL" />
</geometry>
<material name="">
<color rgba="0.501960784313725 0.250980392156863 0.250980392156863 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="${mesh_path}camera_depth_optical_frame.STL" />
</geometry>
</collision>
</link>
<joint name="camera_depth_optical_joint" type="fixed">
<origin xyz="0.01587 -0.025 0.0125" rpy="-1.5707963267949 0 -1.5707963267949" />
<parent link="camera_bottom_screw_frame" />
<child link="camera_depth_optical_frame" />
<axis xyz="0 0 0" />
</joint>
</robot>
@@ -0,0 +1,126 @@
<?xml version="1.0"?>
<robot name="femto_bolt" xmlns:xacro="http://wiki.ros.org/xacro">
<!--
This is the URDF model for the Orbbec Femto Bolt camera
-->
<!-- Include files -->
<!-- Properties -->
<xacro:property name="M_PI" value="3.1415926535897931" />
<!-- Dimensions from the provided specifications -->
<xacro:property name="cam_width" value="0.1153"/>
<xacro:property name="cam_height" value="0.06495"/>
<xacro:property name="cam_depth" value="0.04026"/>
<xacro:property name="mesh_path" value="package://orbbec_description/meshes/femto_bolt/" />
<!-- The following values are approximate but the camera node
publishes TF values with actual calibrated camera extrinsic values -->
<xacro:property name="base_link_to_link_x" value="0.03645"/>
<xacro:property name="base_link_to_link_y" value="0.00198"/>
<xacro:property name="base_link_to_link_z" value="0.021"/>
<xacro:property name="depth_to_ir_offset" value="0.0"/>
<xacro:property name="camera_link_to_depth_rotation_roll" value="-0.0063718"/>
<xacro:property name="camera_link_to_depth_rotation_pitch" value="0.1061316"/>
<xacro:property name="camera_link_to_depth_rotation_yaw" value="0.000231"/>
<xacro:property name="depth_to_color_offset_x" value="-0.0021445322036743163"/>
<xacro:property name="depth_to_color_offset_y" value="-0.03267627716064453"/>
<xacro:property name="depth_to_color_offset_z" value="-0.0010942233800888062"/>
<xacro:property name="depth_to_color_rotation_roll" value="0.006371800289866152"/>
<xacro:property name="depth_to_color_rotation_pitch" value="-0.10613163835054795"/>
<xacro:property name="depth_to_color_rotation_yaw" value="-0.00023102465978322808"/>
<xacro:macro name="femto_bolt" params="prefix parent *origin use_nominal_extrinsics:=true">
<!-- camera with origin at bottom screw mount -->
<joint name="${prefix}_base_joint" type="fixed">
<xacro:insert_block name="origin" />
<parent link="${parent}"/>
<child link="${prefix}_base_link" />
</joint>
<link name="${prefix}_base_link" >
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="${mesh_path}femto_bolt.stl" />
</geometry>
<material name="">
<color rgba="0.792156862745098 0.819607843137255 0.933333333333333 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="${mesh_path}femto_bolt.stl" />
</geometry>
</collision>
<inertial>
<!-- The following are not reliable values, and should not be used for modeling -->
<mass value="0.2"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
<inertia ixx="0.0001" ixy="0.0" ixz="0.0" iyy="0.0001" iyz="0.0" izz="0.0001"/>
</inertial>
</link>
<!-- Camera Link -->
<joint name="${prefix}_link_joint" type="fixed">
<origin xyz="${base_link_to_link_x} ${base_link_to_link_y} ${base_link_to_link_z}" rpy="0 0 0"/>
<parent link="${prefix}_base_link"/>
<child link="${prefix}_link"/>
</joint>
<link name="${prefix}_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}">
<!-- Depth Camera Frame -->
<joint name="${prefix}_depth_joint" type="fixed">
<origin xyz="0 0 0" rpy="${camera_link_to_depth_rotation_roll} ${camera_link_to_depth_rotation_pitch} ${camera_link_to_depth_rotation_yaw}"/>
<parent link="${prefix}_link"/>
<child link="${prefix}_depth_frame" />
</joint>
<link name="${prefix}_depth_frame"/>
<joint name="${prefix}_depth_optical_joint" type="fixed">
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
<parent link="${prefix}_depth_frame" />
<child link="${prefix}_depth_optical_frame" />
</joint>
<link name="${prefix}_depth_optical_frame"/>
<!-- IR Camera Frame -->
<joint name="${prefix}_ir_joint" type="fixed">
<origin xyz="0 ${depth_to_ir_offset} 0" rpy="0 0 0" />
<parent link="${prefix}_depth_frame" />
<child link="${prefix}_ir_frame" />
</joint>
<link name="${prefix}_ir_frame"/>
<joint name="${prefix}_ir_optical_joint" type="fixed">
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
<parent link="${prefix}_ir_frame"/>
<child link="${prefix}_ir_optical_frame"/>
</joint>
<link name="${prefix}_ir_optical_frame"/>
<!-- Color Camera Frame -->
<joint name="${prefix}_color_joint" type="fixed">
<origin xyz="${depth_to_color_offset_x} ${depth_to_color_offset_y} ${depth_to_color_offset_z}"
rpy="${depth_to_color_rotation_roll} ${depth_to_color_rotation_pitch} ${depth_to_color_rotation_yaw}" />
<parent link="${prefix}_depth_frame"/>
<child link="${prefix}_color_frame"/>
</joint>
<link name="${prefix}_color_frame"/>
<joint name="${prefix}_color_optical_joint" type="fixed">
<origin xyz="0 0 0" rpy="${-M_PI/2} 0 ${-M_PI/2}" />
<parent link="${prefix}_color_frame"/>
<child link="${prefix}_color_optical_frame"/>
</joint>
<link name="${prefix}_color_optical_frame"/>
</xacro:if>
</xacro:macro>
</robot>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com)
Commit Version: 1.6.0-4-g7f85cfe Build Version: 1.6.7995.38578
For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot name="gemini_335" xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:include filename="_gemini_335_336.urdf.xacro"/>
<!-- Define a virtual root link -->
<link name="base_link"/>
<!-- Connect the virtual root to the actual base link -->
<joint name="base_link_to_camera_link" type="fixed">
<parent link="base_link"/>
<child link="camera_link"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
</joint>
</robot>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com)
Commit Version: 1.6.0-4-g7f85cfe Build Version: 1.6.7995.38578
For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot name="gemini_336" xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:include filename="_gemini_335_336.urdf.xacro"/>
<!-- Define a virtual root link -->
<link name="base_link"/>
<!-- Connect the virtual root to the actual base link -->
<joint name="base_link_to_camera_link" type="fixed">
<parent link="base_link"/>
<child link="camera_link"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
</joint>
</robot>