initial commit
This commit is contained in:
commit
722f4e5b27
32 changed files with 577991 additions and 0 deletions
15
CMakeLists.txt
Normal file
15
CMakeLists.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(aubo_ros2_description)
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
add_compile_options(-Wall -Wextra -Wpedantic)
|
||||
endif()
|
||||
|
||||
find_package(ament_cmake REQUIRED)
|
||||
|
||||
install(
|
||||
DIRECTORY config launch meshes rviz urdf world
|
||||
DESTINATION share/${PROJECT_NAME}/
|
||||
)
|
||||
|
||||
ament_package()
|
25
config/gz_bridge.yaml
Normal file
25
config/gz_bridge.yaml
Normal file
|
@ -0,0 +1,25 @@
|
|||
- topic_name: "/clock"
|
||||
ros_type_name: "rosgraph_msgs/msg/Clock"
|
||||
gz_type_name: "gz.msgs.Clock"
|
||||
direction: GZ_TO_ROS
|
||||
|
||||
# - topic_name: "/rgbd_camera/image/image"
|
||||
# ros_type_name: "sensor_msgs/msg/Image"
|
||||
# gz_type_name: "gz.msgs.Image"
|
||||
# direction: GZ_TO_ROS
|
||||
#
|
||||
# - topic_name: "/rgbd_camera/image/depth_image"
|
||||
# ros_type_name: "sensor_msgs/msg/Image"
|
||||
# gz_type_name: "gz.msgs.Image"
|
||||
# direction: GZ_TO_ROS
|
||||
#
|
||||
# - topic_name: "/rgbd_camera/image/camera_info"
|
||||
# ros_type_name: "sensor_msgs/msg/CameraInfo"
|
||||
# gz_type_name: "gz.msgs.CameraInfo"
|
||||
# direction: GZ_TO_ROS
|
||||
|
||||
# TODO: add static TF publishing of the camera frame
|
||||
# - topic_name: "/rgbd_camera/image/points"
|
||||
# ros_type_name: "sensor_msgs/msg/PointCloud2"
|
||||
# gz_type_name: "gz.msgs.PointCloudPacked"
|
||||
# direction: GZ_TO_ROS
|
16
config/initial_positions.yaml
Normal file
16
config/initial_positions.yaml
Normal file
|
@ -0,0 +1,16 @@
|
|||
joint_state_publisher:
|
||||
ros__parameters:
|
||||
joints:
|
||||
- shoulder_joint
|
||||
- upperArm_joint
|
||||
- foreArm_joint
|
||||
- wrist1_joint
|
||||
- wrist2_joint
|
||||
- wrist3_joint
|
||||
joint_positions:
|
||||
- 0.0
|
||||
- 0.0
|
||||
- 1.57
|
||||
- 0.0
|
||||
- 0.0
|
||||
- 0.0
|
87
launch/control.launch.py
Normal file
87
launch/control.launch.py
Normal file
|
@ -0,0 +1,87 @@
|
|||
from launch_ros.actions import Node
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument, OpaqueFunction
|
||||
|
||||
# from launch.conditions import IfCondition, UnlessCondition
|
||||
from launch.substitutions import LaunchConfiguration
|
||||
|
||||
|
||||
def create_spawner(controller_name, namespace, condition=None, inactive=False):
|
||||
args = [controller_name, "-c", f"{namespace}/controller_manager"]
|
||||
if inactive:
|
||||
args.append("--inactive")
|
||||
return Node(
|
||||
package="controller_manager",
|
||||
executable="spawner",
|
||||
namespace=namespace,
|
||||
arguments=args,
|
||||
condition=condition,
|
||||
)
|
||||
|
||||
|
||||
def launch_setup(context, *args, **kwargs):
|
||||
namespace = LaunchConfiguration("namespace").perform(context)
|
||||
control_strategy = LaunchConfiguration("control_strategy").perform(context)
|
||||
control_space = LaunchConfiguration("control_space").perform(context)
|
||||
has_gripper = LaunchConfiguration("has_gripper").perform(context)
|
||||
interactive_control = LaunchConfiguration("interactive_control").perform(context)
|
||||
|
||||
controllers_config = {
|
||||
"joint_state_broadcaster": True,
|
||||
"gripper_controller": has_gripper == "true",
|
||||
"joint_trajectory_controller": control_strategy == "position"
|
||||
and control_space == "joint",
|
||||
"cartesian_motion_controller": control_strategy == "position"
|
||||
and control_space == "task",
|
||||
"cartesian_force_controller": control_strategy == "effort"
|
||||
and control_space == "task",
|
||||
"joint_effort_controller": control_strategy == "effort"
|
||||
and control_space == "joint",
|
||||
"force_torque_sensor_broadcaster": control_strategy == "effort"
|
||||
and control_space == "task",
|
||||
"motion_control_handle": interactive_control == "true"
|
||||
and control_space == "task"
|
||||
and control_strategy == "position",
|
||||
}
|
||||
|
||||
nodes_to_start = []
|
||||
for controller_name, should_start in controllers_config.items():
|
||||
if should_start:
|
||||
nodes_to_start.append(create_spawner(controller_name, namespace))
|
||||
|
||||
return nodes_to_start
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
declared_arguments = [
|
||||
DeclareLaunchArgument(
|
||||
"namespace", default_value="", description="A robot's namespace"
|
||||
),
|
||||
DeclareLaunchArgument(
|
||||
"control_space",
|
||||
default_value="task",
|
||||
choices=["task", "joint"],
|
||||
description="Control type: 'task' for Cartesian, 'joint' for joint space control.",
|
||||
),
|
||||
DeclareLaunchArgument(
|
||||
"control_strategy",
|
||||
default_value="position",
|
||||
choices=["position", "velocity", "effort"],
|
||||
description="Control strategy: 'position', 'velocity', or 'effort'.",
|
||||
),
|
||||
DeclareLaunchArgument(
|
||||
"has_gripper",
|
||||
default_value="true",
|
||||
description="Whether to activate the gripper_controller.",
|
||||
),
|
||||
|
||||
DeclareLaunchArgument(
|
||||
"interactive_control",
|
||||
default_value="true",
|
||||
description="Whether to activate the gripper_controller.",
|
||||
),
|
||||
]
|
||||
|
||||
return LaunchDescription(
|
||||
declared_arguments + [OpaqueFunction(function=launch_setup)]
|
||||
)
|
104
launch/view_auboi5.launch.py
Normal file
104
launch/view_auboi5.launch.py
Normal file
|
@ -0,0 +1,104 @@
|
|||
|
||||
import os
|
||||
import yaml
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument
|
||||
from launch.conditions import IfCondition, UnlessCondition
|
||||
from launch.substitutions import (
|
||||
Command,
|
||||
FindExecutable,
|
||||
LaunchConfiguration,
|
||||
PathJoinSubstitution,
|
||||
)
|
||||
from launch_ros.actions import Node
|
||||
from launch_ros.substitutions import FindPackageShare
|
||||
|
||||
def load_yaml(package_name, file_path):
|
||||
package_path = get_package_share_directory(package_name)
|
||||
absolute_file_path = os.path.join(package_path, file_path)
|
||||
|
||||
try:
|
||||
with open(absolute_file_path, "r") as file:
|
||||
return yaml.safe_load(file)
|
||||
except EnvironmentError: # parent of IOError, OSError *and* WindowsError where available
|
||||
return None
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
pkg_share = FindPackageShare("aubo_ros2_description")
|
||||
default_rviz_config_path = PathJoinSubstitution(
|
||||
[pkg_share, "rviz", "view_rizon.rviz"]
|
||||
)
|
||||
robot_description_content = Command(
|
||||
[
|
||||
PathJoinSubstitution([FindExecutable(name="xacro")]),
|
||||
" ",
|
||||
PathJoinSubstitution(
|
||||
[FindPackageShare("aubo_ros2_description"), "urdf", "aubo_i5.urdf.xacro"]
|
||||
),
|
||||
" ",
|
||||
"name:=",
|
||||
"aubo_i5",
|
||||
]
|
||||
)
|
||||
|
||||
# Robot state publisher
|
||||
robot_state_publisher_node = Node(
|
||||
package="robot_state_publisher",
|
||||
executable="robot_state_publisher",
|
||||
name="robot_state_publisher",
|
||||
output="screen",
|
||||
parameters=[{"robot_description": robot_description_content}],
|
||||
)
|
||||
|
||||
# package_path = get_package_share_directory("aubo_ros2_description")
|
||||
# joint_state_publisher_node = Node(
|
||||
# package="joint_state_publisher",
|
||||
# executable="joint_state_publisher",
|
||||
# name="joint_state_publisher",
|
||||
# parameters=[package_path + "/config/initial_positions.yaml"],
|
||||
# # condition=UnlessCondition(LaunchConfiguration("gui")),
|
||||
# )
|
||||
|
||||
# joint_state_publisher_gui_node = Node(
|
||||
# package="joint_state_publisher_gui",
|
||||
# executable="joint_state_publisher_gui",
|
||||
# name="joint_state_publisher_gui",
|
||||
# condition=IfCondition(LaunchConfiguration("gui")),
|
||||
# )
|
||||
|
||||
# RViz
|
||||
rviz_node = Node(
|
||||
package="rviz2",
|
||||
executable="rviz2",
|
||||
name="rviz2",
|
||||
output="screen",
|
||||
arguments=["-d", LaunchConfiguration("rvizconfig")],
|
||||
)
|
||||
|
||||
return LaunchDescription(
|
||||
[
|
||||
DeclareLaunchArgument(
|
||||
name="aubo_type",
|
||||
default_value="aubo_i5",
|
||||
description="Type of the aubo robot.",
|
||||
choices=["aubo_i3", "aubo_i5", "aubo_i10"],
|
||||
),
|
||||
DeclareLaunchArgument(
|
||||
name="gui",
|
||||
default_value="False",
|
||||
description="Flag to enable joint_state_publisher_gui",
|
||||
),
|
||||
DeclareLaunchArgument(
|
||||
name="rvizconfig",
|
||||
default_value=default_rviz_config_path,
|
||||
description="Absolute path to rviz config file",
|
||||
),
|
||||
robot_state_publisher_node,
|
||||
# joint_state_publisher_node,
|
||||
# joint_state_publisher_gui_node,
|
||||
rviz_node,
|
||||
]
|
||||
)
|
BIN
meshes/aubo_i5/collision/base_link.STL
Executable file
BIN
meshes/aubo_i5/collision/base_link.STL
Executable file
Binary file not shown.
BIN
meshes/aubo_i5/collision/foreArm_Link.STL
Executable file
BIN
meshes/aubo_i5/collision/foreArm_Link.STL
Executable file
Binary file not shown.
BIN
meshes/aubo_i5/collision/pedestal.STL
Normal file
BIN
meshes/aubo_i5/collision/pedestal.STL
Normal file
Binary file not shown.
BIN
meshes/aubo_i5/collision/shoulder_Link.STL
Executable file
BIN
meshes/aubo_i5/collision/shoulder_Link.STL
Executable file
Binary file not shown.
BIN
meshes/aubo_i5/collision/upperArm_Link.STL
Executable file
BIN
meshes/aubo_i5/collision/upperArm_Link.STL
Executable file
Binary file not shown.
BIN
meshes/aubo_i5/collision/wrist1_Link.STL
Executable file
BIN
meshes/aubo_i5/collision/wrist1_Link.STL
Executable file
Binary file not shown.
BIN
meshes/aubo_i5/collision/wrist2_Link.STL
Executable file
BIN
meshes/aubo_i5/collision/wrist2_Link.STL
Executable file
Binary file not shown.
BIN
meshes/aubo_i5/collision/wrist3_Link.STL
Executable file
BIN
meshes/aubo_i5/collision/wrist3_Link.STL
Executable file
Binary file not shown.
2741
meshes/aubo_i5/visual/base_link.DAE
Executable file
2741
meshes/aubo_i5/visual/base_link.DAE
Executable file
File diff suppressed because one or more lines are too long
104421
meshes/aubo_i5/visual/foreArm_Link.DAE
Executable file
104421
meshes/aubo_i5/visual/foreArm_Link.DAE
Executable file
File diff suppressed because one or more lines are too long
65053
meshes/aubo_i5/visual/shoulder_Link.DAE
Executable file
65053
meshes/aubo_i5/visual/shoulder_Link.DAE
Executable file
File diff suppressed because one or more lines are too long
169660
meshes/aubo_i5/visual/upperArm_Link.DAE
Executable file
169660
meshes/aubo_i5/visual/upperArm_Link.DAE
Executable file
File diff suppressed because one or more lines are too long
85832
meshes/aubo_i5/visual/wrist1_Link.DAE
Executable file
85832
meshes/aubo_i5/visual/wrist1_Link.DAE
Executable file
File diff suppressed because one or more lines are too long
80753
meshes/aubo_i5/visual/wrist2_Link.DAE
Executable file
80753
meshes/aubo_i5/visual/wrist2_Link.DAE
Executable file
File diff suppressed because one or more lines are too long
68028
meshes/aubo_i5/visual/wrist3_Link.DAE
Normal file
68028
meshes/aubo_i5/visual/wrist3_Link.DAE
Normal file
File diff suppressed because one or more lines are too long
19
package.xml
Normal file
19
package.xml
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?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>aubo_ros2_description</name>
|
||||
<version>1.0.0</version>
|
||||
<description>the aubo description</description>
|
||||
<maintainer email="834031119@qq.com">Shaosong</maintainer>
|
||||
<license>Apache License 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>
|
||||
<gazebo_ros gazebo_model_path="${prefix}/../"/>
|
||||
</export>
|
||||
</package>
|
195
rviz/view_auboi5.rviz
Normal file
195
rviz/view_auboi5.rviz
Normal file
|
@ -0,0 +1,195 @@
|
|||
Panels:
|
||||
- Class: rviz_common/Displays
|
||||
Help Height: 78
|
||||
Name: Displays
|
||||
Property Tree Widget:
|
||||
Expanded:
|
||||
- /Global Options1
|
||||
- /Status1
|
||||
- /RobotModel1/Description Topic1
|
||||
Splitter Ratio: 0.5
|
||||
Tree Height: 634
|
||||
- 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
|
||||
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
|
||||
Value: true
|
||||
flange:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
link1:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
Value: true
|
||||
link2:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
Value: true
|
||||
link3:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
Value: true
|
||||
link4:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
Value: true
|
||||
link5:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
Value: true
|
||||
link6:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
Value: true
|
||||
link7:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: false
|
||||
Value: true
|
||||
world:
|
||||
Alpha: 1
|
||||
Show Axes: false
|
||||
Show Trail: 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
|
||||
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: 2.4956274032592773
|
||||
Enable Stereo Rendering:
|
||||
Stereo Eye Separation: 0.05999999865889549
|
||||
Stereo Focal Distance: 1
|
||||
Swap Stereo Eyes: false
|
||||
Value: false
|
||||
Focal Point:
|
||||
X: -0.10040300339460373
|
||||
Y: 0.27989906072616577
|
||||
Z: 0.3314317762851715
|
||||
Focal Shape Fixed Size: true
|
||||
Focal Shape Size: 0.05000000074505806
|
||||
Invert Z Axis: false
|
||||
Name: Current View
|
||||
Near Clip Distance: 0.009999999776482582
|
||||
Pitch: 0.7053980827331543
|
||||
Target Frame: <Fixed Frame>
|
||||
Value: Orbit (rviz)
|
||||
Yaw: 5.313577651977539
|
||||
Saved: ~
|
||||
Window Geometry:
|
||||
Displays:
|
||||
collapsed: false
|
||||
Height: 863
|
||||
Hide Left Dock: false
|
||||
Hide Right Dock: false
|
||||
QMainWindow State: 000000ff00000000fd00000004000000000000015600000305fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d00000305000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000305fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d00000305000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d00650100000000000004500000000000000000000003cf0000030500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
|
||||
Selection:
|
||||
collapsed: false
|
||||
Tool Properties:
|
||||
collapsed: false
|
||||
Views:
|
||||
collapsed: false
|
||||
Width: 1600
|
||||
X: 1920
|
||||
Y: 0
|
74
urdf/aubo.gazebo.xacro
Executable file
74
urdf/aubo.gazebo.xacro
Executable file
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0"?>
|
||||
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
|
||||
<xacro:include filename="$(find aubo_ros2_description)/urdf/materials.xacro" />
|
||||
|
||||
<xacro:macro name="aubo_arm_gazebo" params="prefix">
|
||||
|
||||
<!--base_Link-->
|
||||
<gazebo reference = "${prefix}base_Link">
|
||||
<material>Gazebo/Black</material>
|
||||
</gazebo>
|
||||
|
||||
<!--shoulder_Link-->
|
||||
<gazebo reference = "${prefix}shoulder_Link">
|
||||
<material>Gazebo/Orange</material>
|
||||
</gazebo>
|
||||
|
||||
<!--s_Link-->
|
||||
<gazebo reference = "${prefix}s_Link">
|
||||
<material>Gazebo/Black</material>
|
||||
</gazebo>
|
||||
|
||||
<!--upperArm_Link-->
|
||||
<gazebo reference = "${prefix}upperArm_Link">
|
||||
<material>Gazebo/Orange</material>
|
||||
</gazebo>
|
||||
|
||||
<!--f1_Link-->
|
||||
<gazebo reference = "${prefix}f1_Link">
|
||||
<material>Gazebo/Black</material>
|
||||
</gazebo>
|
||||
|
||||
<!--foreArm_Link-->
|
||||
<gazebo reference = "${prefix}foreArm_Link">
|
||||
<material>Gazebo/Orange</material>
|
||||
</gazebo>
|
||||
|
||||
<!--u_Link-->
|
||||
<gazebo reference = "${prefix}u_Link">
|
||||
<material>Gazebo/Black</material>
|
||||
</gazebo>
|
||||
|
||||
<!--wrist1_Link-->
|
||||
<gazebo reference = "${prefix}wrist1_Link">
|
||||
<material>Gazebo/Orange</material>
|
||||
</gazebo>
|
||||
|
||||
<!--w1_Link-->
|
||||
<gazebo reference = "${prefix}w1_Link">
|
||||
<material>Gazebo/Black</material>
|
||||
</gazebo>
|
||||
|
||||
<!--wrist2_Link-->
|
||||
<gazebo reference = "${prefix}wrist2_Link">
|
||||
<material>Gazebo/Orange</material>
|
||||
</gazebo>
|
||||
|
||||
<!--w2_Link-->
|
||||
<gazebo reference = "${prefix}w2_Link">
|
||||
<material>Gazebo/Black</material>
|
||||
</gazebo>
|
||||
|
||||
<!--wrist3_Link-->
|
||||
<gazebo reference = "${prefix}wrist3_Link">
|
||||
<material>Gazebo/Black</material>
|
||||
</gazebo>
|
||||
|
||||
<!--pedestal_Link-->
|
||||
<gazebo reference = "${prefix}pedestal_Link">
|
||||
<material>Gazebo/Green</material>
|
||||
</gazebo>
|
||||
|
||||
</xacro:macro>
|
||||
</robot>
|
68
urdf/aubo.transmission.xacro
Executable file
68
urdf/aubo.transmission.xacro
Executable file
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0"?>
|
||||
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
|
||||
<xacro:macro name="aubo_arm_transmission" params="prefix">
|
||||
|
||||
<transmission name="${prefix}shoulder_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}shoulder_joint">
|
||||
<hardwareInterface>PositionJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}shoulder_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
<transmission name="${prefix}foreArm_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}foreArm_joint">
|
||||
<hardwareInterface>PositionJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}foreArm_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
<transmission name="${prefix}upperArm_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}upperArm_joint">
|
||||
<hardwareInterface>PositionJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}upperArm_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
<transmission name="${prefix}wrist1_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}wrist1_joint">
|
||||
<hardwareInterface>PositionJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}wrist1_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
<transmission name="${prefix}wrist2_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}wrist2_joint">
|
||||
<hardwareInterface>PositionJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}wrist2_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
<transmission name="${prefix}wrist3_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}wrist3_joint">
|
||||
<hardwareInterface>PositionJointInterface</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}wrist3_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
</xacro:macro>
|
||||
|
||||
</robot>
|
220
urdf/aubo_i5.urdf
Executable file
220
urdf/aubo_i5.urdf
Executable file
|
@ -0,0 +1,220 @@
|
|||
<?xml version="1.0"?>
|
||||
<robot name="aubo_i5">
|
||||
|
||||
<link name="base_link">
|
||||
<inertial>
|
||||
<origin xyz="-1.4795E-13 0.0015384 0.020951" rpy="0 0 0" />
|
||||
<mass value="0.83419" />
|
||||
<inertia ixx="0.0014414" ixy="7.8809E-15" ixz="8.5328E-16" iyy="0.0013542" iyz="-1.4364E-05" izz="0.0024659" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/base_link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/base_link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<link name="shoulder_Link">
|
||||
<inertial>
|
||||
<origin xyz="3.2508868974735E-07 0.00534955349296065 -0.00883689325611056" rpy="0 0 0" />
|
||||
<mass value="1.57658348693929" />
|
||||
<inertia ixx="0.0040640448663128" ixy="0" ixz="0" iyy="0.00392863238466817" iyz="-0.000160151642851425" izz="0.0030869857349184" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/shoulder_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/shoulder_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="shoulder_joint" type="revolute">
|
||||
<origin xyz="0 0 0.122" rpy="0 0 3.1416" />
|
||||
<parent link="base_link" />
|
||||
<child link="shoulder_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-3.04" upper="3.04" effort="0" velocity="0" />
|
||||
</joint>
|
||||
|
||||
<link name="upperArm_Link">
|
||||
<inertial>
|
||||
<origin xyz="0.203996646979614 2.01304585036544E-10 0.0127641545395984" rpy="0 0 0" />
|
||||
<mass value="4.04175782265494" />
|
||||
<inertia ixx="0.00965399211106204" ixy="0" ixz="0" iyy="0.144993869035655" iyz="0" izz="0.142607184038966" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/upperArm_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/upperArm_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="upperArm_joint" type="revolute">
|
||||
<origin xyz="0 0.1215 0" rpy="-1.5708 -1.5708 0" />
|
||||
<parent link="shoulder_Link" />
|
||||
<child link="upperArm_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-3.04" upper="3.04" effort="0" velocity="0" />
|
||||
</joint>
|
||||
|
||||
<link name="foreArm_Link">
|
||||
<inertial>
|
||||
<origin xyz="0.188922115560337 6.78882434739072E-07 0.0981026740461557" rpy="0 0 0" />
|
||||
<mass value="2.27145669098343" />
|
||||
<inertia ixx="0.00214322284946289" ixy="0" ixz="-0.00073120631553383" iyy="0.0443926090878205" iyz="0" izz="0.0441273797128365" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/foreArm_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/foreArm_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="foreArm_joint" type="revolute">
|
||||
<origin xyz="0.408 0 0" rpy="-3.1416 -5.1632E-18 -5.459E-16" />
|
||||
<parent link="upperArm_Link" />
|
||||
<child link="foreArm_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-3.04" upper="3.04" effort="0" velocity="0" />
|
||||
</joint>
|
||||
|
||||
<link name="wrist1_Link">
|
||||
<inertial>
|
||||
<origin xyz="7.54205137428592E-07 0.0062481254331257 -0.00392367464072373" rpy="0 0 0" />
|
||||
<mass value="0.500477539188764" />
|
||||
<inertia ixx="0.00071194605962081" ixy="0" ixz="0" iyy="0.00040588242872958" iyz="-2.30808694377512E-05" izz="0.000685574004861334" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/wrist1_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/wrist1_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="wrist1_joint" type="revolute">
|
||||
<origin xyz="0.376 0 0" rpy="3.1416 -1.8323E-15 1.5708" />
|
||||
<parent link="foreArm_Link" />
|
||||
<child link="wrist1_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-3.04" upper="3.04" effort="0" velocity="0" />
|
||||
</joint>
|
||||
|
||||
<link name="wrist2_Link">
|
||||
<inertial>
|
||||
<origin xyz="-7.54207620578635E-07 -0.00624812542617262 -0.00392367464115684" rpy="0 0 0" />
|
||||
<mass value="0.500477539245988" />
|
||||
<inertia ixx="0.00071194605981829" ixy="0" ixz="0" iyy="0.000405882428755442" iyz="2.30808694515886E-05" izz="0.000685574005112107" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/wrist2_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/wrist2_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="wrist2_joint" type="revolute">
|
||||
<origin xyz="0 0.1025 0" rpy="-1.5708 -1.8709E-15 -1.6653E-16" />
|
||||
<parent link="wrist1_Link" />
|
||||
<child link="wrist2_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-3.04" upper="3.04" effort="0" velocity="0" />
|
||||
</joint>
|
||||
|
||||
<link name="wrist3_Link">
|
||||
<inertial>
|
||||
<origin xyz="3.92048778449938E-10 0.000175788057281467 -0.0213294490706684" rpy="0 0 0" />
|
||||
<mass value="0.158309554874285" />
|
||||
<inertia ixx="7.31376196034769E-05" ixy="0" ixz="0" iyy="7.19528188876563E-05" iyz="0" izz="0.000108772439051422" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/wrist3_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/wrist3_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="wrist3_joint" type="revolute">
|
||||
<origin xyz="0 -0.094 0" rpy="1.5708 0 1.7907E-15" />
|
||||
<parent link="wrist2_Link" />
|
||||
<child link="wrist3_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-3.04" upper="3.04" effort="0" velocity="0" />
|
||||
</joint>
|
||||
|
||||
<link name="world" />
|
||||
|
||||
<joint name="world_joint" type="fixed">
|
||||
<parent link="world" />
|
||||
<child link = "base_link" />
|
||||
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
|
||||
</joint>
|
||||
</robot>
|
250
urdf/aubo_i5.urdf.xacro
Normal file
250
urdf/aubo_i5.urdf.xacro
Normal file
|
@ -0,0 +1,250 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- =================================================================================== -->
|
||||
<!-- | This document was autogenerated by xacro from aubo_i5L.urdf | -->
|
||||
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
|
||||
<!-- =================================================================================== -->
|
||||
|
||||
<robot name="aubo_i5" xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
<xacro:include filename="$(find aubo_ros2_description)/urdf/aubo.transmission.xacro" />
|
||||
<xacro:include filename="$(find aubo_ros2_description)/urdf/materials.xacro" />
|
||||
<xacro:include filename="$(find aubo_ros2_description)/urdf/ros2_control.xacro" />
|
||||
|
||||
<xacro:property name="hardware" value="gazebo" />
|
||||
|
||||
<link name="base_link">
|
||||
<inertial>
|
||||
<origin xyz="-1.4795E-13 0.0015384 0.020951" rpy="0 0 0" />
|
||||
<mass value="0.83419" />
|
||||
<inertia ixx="0.0014414" ixy="7.8809E-15" ixz="8.5328E-16" iyy="0.0013542" iyz="-1.4364E-05"
|
||||
izz="0.0024659" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/base_link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/base_link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<link name="shoulder_Link">
|
||||
<inertial>
|
||||
<origin xyz="3.2508868974735E-07 0.00534955349296065 -0.00883689325611056" rpy="0 0 0" />
|
||||
<mass value="1.57658348693929" />
|
||||
<inertia ixx="0.0040640448663128" ixy="0" ixz="0" iyy="0.00392863238466817"
|
||||
iyz="-0.000160151642851425" izz="0.0030869857349184" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/shoulder_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/shoulder_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="shoulder_joint" type="revolute">
|
||||
<origin xyz="0 0 0.122" rpy="0 0 3.1416" />
|
||||
<parent link="base_link" />
|
||||
<child link="shoulder_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="150" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="upperArm_Link">
|
||||
<inertial>
|
||||
<origin xyz="0.203996646979614 2.01304585036544E-10 0.0127641545395984" rpy="0 0 0" />
|
||||
<mass value="4.04175782265494" />
|
||||
<inertia ixx="0.00965399211106204" ixy="0" ixz="0" iyy="0.144993869035655" iyz="0"
|
||||
izz="0.142607184038966" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/upperArm_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/upperArm_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="upperArm_joint" type="revolute">
|
||||
<origin xyz="0 0.1215 0" rpy="-1.5708 -1.5708 0" />
|
||||
<parent link="shoulder_Link" />
|
||||
<child link="upperArm_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="150" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="foreArm_Link">
|
||||
<inertial>
|
||||
<origin xyz="0.188922115560337 6.78882434739072E-07 0.0981026740461557" rpy="0 0 0" />
|
||||
<mass value="2.27145669098343" />
|
||||
<inertia ixx="0.00214322284946289" ixy="0" ixz="-0.00073120631553383" iyy="0.0443926090878205"
|
||||
iyz="0" izz="0.0441273797128365" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/foreArm_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/foreArm_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="foreArm_joint" type="revolute">
|
||||
<origin xyz="0.408 0 0" rpy="-3.1416 -5.1632E-18 -5.459E-16" />
|
||||
<parent link="upperArm_Link" />
|
||||
<child link="foreArm_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="150" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="wrist1_Link">
|
||||
<inertial>
|
||||
<origin xyz="7.54205137428592E-07 0.0062481254331257 -0.00392367464072373" rpy="0 0 0" />
|
||||
<mass value="0.500477539188764" />
|
||||
<inertia ixx="0.00071194605962081" ixy="0" ixz="0" iyy="0.00040588242872958"
|
||||
iyz="-2.30808694377512E-05" izz="0.000685574004861334" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/wrist1_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/wrist1_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="wrist1_joint" type="revolute">
|
||||
<origin xyz="0.376 0 0" rpy="3.1416 -1.8323E-15 1.5708" />
|
||||
<parent link="foreArm_Link" />
|
||||
<child link="wrist1_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="28" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="wrist2_Link">
|
||||
<inertial>
|
||||
<origin xyz="-7.54207620578635E-07 -0.00624812542617262 -0.00392367464115684" rpy="0 0 0" />
|
||||
<mass value="0.500477539245988" />
|
||||
<inertia ixx="0.00071194605981829" ixy="0" ixz="0" iyy="0.000405882428755442"
|
||||
iyz="2.30808694515886E-05" izz="0.000685574005112107" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/wrist2_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/wrist2_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="wrist2_joint" type="revolute">
|
||||
<origin xyz="0 0.1025 0" rpy="-1.5708 -1.8709E-15 -1.6653E-16" />
|
||||
<parent link="wrist1_Link" />
|
||||
<child link="wrist2_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="28" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="wrist3_Link">
|
||||
<inertial>
|
||||
<origin xyz="3.92048778449938E-10 0.000175788057281467 -0.0213294490706684" rpy="0 0 0" />
|
||||
<mass value="0.158309554874285" />
|
||||
<inertia ixx="7.31376196034769E-05" ixy="0" ixz="0" iyy="7.19528188876563E-05" iyz="0"
|
||||
izz="0.000108772439051422" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/wrist3_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/wrist3_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="wrist3_joint" type="revolute">
|
||||
<origin xyz="0 -0.094 0" rpy="1.5708 0 1.7907E-15" />
|
||||
<parent link="wrist2_Link" />
|
||||
<child link="wrist3_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="28" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="world" />
|
||||
|
||||
<joint name="world_joint" type="fixed">
|
||||
<parent link="world" />
|
||||
<child link="base_link" />
|
||||
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
|
||||
</joint>
|
||||
|
||||
<xacro:aubo_ros2_control hardware="${hardware}" />
|
||||
<xacro:if value="${hardware=='gazebo'}">
|
||||
<gazebo>
|
||||
<plugin filename="gz_ros2_control-system" name="gz_ros2_control::GazeboSimROS2ControlPlugin">
|
||||
<parameters>$(arg simulation_controllers)</parameters>
|
||||
<!-- <ros> -->
|
||||
<!-- <namespace>${namespace}</namespace> -->
|
||||
<!-- </ros> -->
|
||||
</plugin>
|
||||
</gazebo>
|
||||
</xacro:if>
|
||||
|
||||
</robot>
|
255
urdf/aubo_i5_dh_ag95.urdf.xacro
Normal file
255
urdf/aubo_i5_dh_ag95.urdf.xacro
Normal file
|
@ -0,0 +1,255 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- =================================================================================== -->
|
||||
<!-- | This document was autogenerated by xacro from aubo_i5L.urdf | -->
|
||||
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
|
||||
<!-- =================================================================================== -->
|
||||
|
||||
<robot name="aubo_i5" xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
<xacro:include filename="$(find aubo_ros2_description)/urdf/aubo.transmission.xacro" />
|
||||
<xacro:include filename="$(find aubo_ros2_description)/urdf/materials.xacro" />
|
||||
<xacro:include filename="$(find aubo_ros2_description)/urdf/ros2_control.xacro" />
|
||||
<xacro:include filename="$(find dh_ag95_description)/urdf/dh_ag95_macro.urdf.xacro" />
|
||||
|
||||
<xacro:property name="hardware" value="gazebo" />
|
||||
|
||||
<link name="base_link">
|
||||
<inertial>
|
||||
<origin xyz="-1.4795E-13 0.0015384 0.020951" rpy="0 0 0" />
|
||||
<mass value="0.83419" />
|
||||
<inertia ixx="0.0014414" ixy="7.8809E-15" ixz="8.5328E-16" iyy="0.0013542" iyz="-1.4364E-05"
|
||||
izz="0.0024659" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/base_link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/base_link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<link name="shoulder_Link">
|
||||
<inertial>
|
||||
<origin xyz="3.2508868974735E-07 0.00534955349296065 -0.00883689325611056" rpy="0 0 0" />
|
||||
<mass value="1.57658348693929" />
|
||||
<inertia ixx="0.0040640448663128" ixy="0" ixz="0" iyy="0.00392863238466817"
|
||||
iyz="-0.000160151642851425" izz="0.0030869857349184" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/shoulder_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/shoulder_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="shoulder_joint" type="revolute">
|
||||
<origin xyz="0 0 0.122" rpy="0 0 3.1416" />
|
||||
<parent link="base_link" />
|
||||
<child link="shoulder_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="150" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="upperArm_Link">
|
||||
<inertial>
|
||||
<origin xyz="0.203996646979614 2.01304585036544E-10 0.0127641545395984" rpy="0 0 0" />
|
||||
<mass value="4.04175782265494" />
|
||||
<inertia ixx="0.00965399211106204" ixy="0" ixz="0" iyy="0.144993869035655" iyz="0"
|
||||
izz="0.142607184038966" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/upperArm_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/upperArm_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="upperArm_joint" type="revolute">
|
||||
<origin xyz="0 0.1215 0" rpy="-1.5708 -1.5708 0" />
|
||||
<parent link="shoulder_Link" />
|
||||
<child link="upperArm_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="150" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="foreArm_Link">
|
||||
<inertial>
|
||||
<origin xyz="0.188922115560337 6.78882434739072E-07 0.0981026740461557" rpy="0 0 0" />
|
||||
<mass value="2.27145669098343" />
|
||||
<inertia ixx="0.00214322284946289" ixy="0" ixz="-0.00073120631553383" iyy="0.0443926090878205"
|
||||
iyz="0" izz="0.0441273797128365" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/foreArm_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/foreArm_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="foreArm_joint" type="revolute">
|
||||
<origin xyz="0.408 0 0" rpy="-3.1416 -5.1632E-18 -5.459E-16" />
|
||||
<parent link="upperArm_Link" />
|
||||
<child link="foreArm_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="150" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="wrist1_Link">
|
||||
<inertial>
|
||||
<origin xyz="7.54205137428592E-07 0.0062481254331257 -0.00392367464072373" rpy="0 0 0" />
|
||||
<mass value="0.500477539188764" />
|
||||
<inertia ixx="0.00071194605962081" ixy="0" ixz="0" iyy="0.00040588242872958"
|
||||
iyz="-2.30808694377512E-05" izz="0.000685574004861334" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/wrist1_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/wrist1_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="wrist1_joint" type="revolute">
|
||||
<origin xyz="0.376 0 0" rpy="3.1416 -1.8323E-15 1.5708" />
|
||||
<parent link="foreArm_Link" />
|
||||
<child link="wrist1_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="28" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="wrist2_Link">
|
||||
<inertial>
|
||||
<origin xyz="-7.54207620578635E-07 -0.00624812542617262 -0.00392367464115684" rpy="0 0 0" />
|
||||
<mass value="0.500477539245988" />
|
||||
<inertia ixx="0.00071194605981829" ixy="0" ixz="0" iyy="0.000405882428755442"
|
||||
iyz="2.30808694515886E-05" izz="0.000685574005112107" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/wrist2_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/wrist2_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="wrist2_joint" type="revolute">
|
||||
<origin xyz="0 0.1025 0" rpy="-1.5708 -1.8709E-15 -1.6653E-16" />
|
||||
<parent link="wrist1_Link" />
|
||||
<child link="wrist2_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="28" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="wrist3_Link">
|
||||
<inertial>
|
||||
<origin xyz="3.92048778449938E-10 0.000175788057281467 -0.0213294490706684" rpy="0 0 0" />
|
||||
<mass value="0.158309554874285" />
|
||||
<inertia ixx="7.31376196034769E-05" ixy="0" ixz="0" iyy="7.19528188876563E-05" iyz="0"
|
||||
izz="0.000108772439051422" />
|
||||
</inertial>
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/visual/wrist3_Link.DAE" />
|
||||
</geometry>
|
||||
<material name="">
|
||||
<color rgba="1 1 1 1" />
|
||||
</material>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
<geometry>
|
||||
<mesh filename="package://aubo_ros2_description/meshes/aubo_i5/collision/wrist3_Link.STL" />
|
||||
</geometry>
|
||||
</collision>
|
||||
</link>
|
||||
|
||||
<joint name="wrist3_joint" type="revolute">
|
||||
<origin xyz="0 -0.094 0" rpy="1.5708 0 1.7907E-15" />
|
||||
<parent link="wrist2_Link" />
|
||||
<child link="wrist3_Link" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="-6.28" upper="6.28" effort="28" velocity="3.1416" />
|
||||
</joint>
|
||||
|
||||
<link name="world" />
|
||||
|
||||
<joint name="world_joint" type="fixed">
|
||||
<parent link="world" />
|
||||
<child link="base_link" />
|
||||
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
|
||||
</joint>
|
||||
|
||||
<xacro:dh_ag95_gripper prefix="" parent="wrist3_Link">
|
||||
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
|
||||
</xacro:dh_ag95_gripper>
|
||||
|
||||
<xacro:aubo_ros2_control hardware="${hardware}" />
|
||||
<xacro:if value="${hardware=='gazebo'}">
|
||||
<gazebo>
|
||||
<plugin filename="gz_ros2_control-system" name="gz_ros2_control::GazeboSimROS2ControlPlugin">
|
||||
<parameters>$(arg simulation_controllers)</parameters>
|
||||
<!-- <ros> -->
|
||||
<!-- <namespace>${namespace}</namespace> -->
|
||||
<!-- </ros> -->
|
||||
</plugin>
|
||||
</gazebo>
|
||||
</xacro:if>
|
||||
|
||||
</robot>
|
11
urdf/common.gazebo.xacro
Executable file
11
urdf/common.gazebo.xacro
Executable file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
|
||||
<gazebo>
|
||||
<plugin name="ros_control" filename="libgazebo_ros_control.so">
|
||||
<!--robotNamespace>/aubo_robot</robotNamespace-->
|
||||
<!--robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType-->
|
||||
</plugin>
|
||||
</gazebo>
|
||||
|
||||
</robot>
|
26
urdf/materials.xacro
Normal file
26
urdf/materials.xacro
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0"?>
|
||||
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
<material name="black">
|
||||
<color rgba="0.25098 0.25098 0.25098 1"/>
|
||||
</material>
|
||||
|
||||
<material name="orange">
|
||||
<color rgba="${255/255} ${108/255} ${10/255} 1.0"/>
|
||||
</material>
|
||||
|
||||
<material name="white">
|
||||
<color rgba="0.68627 0.69804 0.67451 1"/>
|
||||
</material>
|
||||
|
||||
<material name="grey">
|
||||
<color rgba="0.2 0.2 0.2 1.0"/>
|
||||
</material>
|
||||
|
||||
<material name="blue">
|
||||
<color rgba="0.0 0.0 0.8 1.0"/>
|
||||
</material>
|
||||
|
||||
<material name="green">
|
||||
<color rgba="0.0 0.8 0.0 1.0"/>
|
||||
</material>
|
||||
</robot>
|
70
urdf/ros2_control.xacro
Normal file
70
urdf/ros2_control.xacro
Normal file
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
<xacro:macro name="aubo_ros2_control" params="hardware">
|
||||
<ros2_control name="aubo_hardware_interface" type="system">
|
||||
<hardware>
|
||||
<xacro:if value="${hardware=='gazebo'}">
|
||||
<plugin>gz_ros2_control/GazeboSimSystem</plugin>
|
||||
</xacro:if>
|
||||
<xacro:if value="${hardware=='mock'}">
|
||||
<plugin>mock_components/GenericSystem</plugin>
|
||||
</xacro:if>
|
||||
<xacro:if value="${hardware=='real'}">
|
||||
<plugin>aubo_ros2_control/AuboSystem</plugin>
|
||||
</xacro:if>
|
||||
</hardware>
|
||||
|
||||
<joint name="shoulder_joint">
|
||||
<command_interface name="position" />
|
||||
<command_interface name="velocity" />
|
||||
|
||||
<state_interface name="position" />
|
||||
<state_interface name="velocity" />
|
||||
</joint>
|
||||
|
||||
|
||||
<joint name="upperArm_joint">
|
||||
<command_interface name="position" />
|
||||
<command_interface name="velocity" />
|
||||
|
||||
<state_interface name="position" />
|
||||
<state_interface name="velocity" />
|
||||
</joint>
|
||||
|
||||
|
||||
<joint name="foreArm_joint">
|
||||
<command_interface name="position" />
|
||||
<command_interface name="velocity" />
|
||||
|
||||
<state_interface name="position" />
|
||||
<state_interface name="velocity" />
|
||||
</joint>
|
||||
|
||||
<joint name="wrist1_joint">
|
||||
<command_interface name="position" />
|
||||
<command_interface name="velocity" />
|
||||
|
||||
<state_interface name="position" />
|
||||
<state_interface name="velocity" />
|
||||
</joint>
|
||||
|
||||
<joint name="wrist2_joint">
|
||||
<command_interface name="position" />
|
||||
<command_interface name="velocity" />
|
||||
|
||||
<state_interface name="position" />
|
||||
<state_interface name="velocity" />
|
||||
</joint>
|
||||
|
||||
<joint name="wrist3_joint">
|
||||
<command_interface name="position" />
|
||||
<command_interface name="velocity" />
|
||||
|
||||
<state_interface name="position" />
|
||||
<state_interface name="velocity" />
|
||||
</joint>
|
||||
|
||||
</ros2_control>
|
||||
|
||||
</xacro:macro>
|
||||
</robot>
|
1
urdf/xacro_args.yaml
Normal file
1
urdf/xacro_args.yaml
Normal file
|
@ -0,0 +1 @@
|
|||
simulation_controllers: !variable controllers_file
|
67
world/world.sdf
Normal file
67
world/world.sdf
Normal file
|
@ -0,0 +1,67 @@
|
|||
<?xml version="1.0" ?>
|
||||
<sdf version="1.6">
|
||||
<world name="aubo-world">
|
||||
<physics name="1ms" type="dart">
|
||||
<max_step_size>0.001</max_step_size>
|
||||
<real_time_factor>0</real_time_factor>
|
||||
</physics>
|
||||
<plugin
|
||||
filename="gz-sim-physics-system"
|
||||
name="gz::sim::systems::Physics">
|
||||
</plugin>
|
||||
<plugin
|
||||
filename="gz-sim-user-commands-system"
|
||||
name="gz::sim::systems::UserCommands">
|
||||
</plugin>
|
||||
<plugin
|
||||
filename="gz-sim-scene-broadcaster-system"
|
||||
name="gz::sim::systems::SceneBroadcaster">
|
||||
</plugin>
|
||||
<plugin
|
||||
filename="gz-sim-contact-system"
|
||||
name="gz::sim::systems::Contact">
|
||||
</plugin>
|
||||
|
||||
<light type="directional" name="sun">
|
||||
<cast_shadows>true</cast_shadows>
|
||||
<pose>0 0 10 0 0 0</pose>
|
||||
<diffuse>0.8 0.8 0.8 1</diffuse>
|
||||
<specular>0.2 0.2 0.2 1</specular>
|
||||
<attenuation>
|
||||
<range>1000</range>
|
||||
<constant>0.9</constant>
|
||||
<linear>0.01</linear>
|
||||
<quadratic>0.001</quadratic>
|
||||
</attenuation>
|
||||
<direction>-0.5 0.1 -0.9</direction>
|
||||
</light>
|
||||
|
||||
<model name="ground_plane">
|
||||
<static>true</static>
|
||||
<link name="link">
|
||||
<collision name="collision">
|
||||
<geometry>
|
||||
<plane>
|
||||
<normal>0 0 1</normal>
|
||||
<size>100 100</size>
|
||||
</plane>
|
||||
</geometry>
|
||||
</collision>
|
||||
<visual name="visual">
|
||||
<geometry>
|
||||
<plane>
|
||||
<normal>0 0 1</normal>
|
||||
<size>100 100</size>
|
||||
</plane>
|
||||
</geometry>
|
||||
<material>
|
||||
<ambient>0.8 0.8 0.8 1</ambient>
|
||||
<diffuse>0.8 0.8 0.8 1</diffuse>
|
||||
<specular>0.8 0.8 0.8 1</specular>
|
||||
</material>
|
||||
</visual>
|
||||
</link>
|
||||
</model>
|
||||
|
||||
</world>
|
||||
</sdf>
|
Loading…
Add table
Add a link
Reference in a new issue