robot description and camera autostart added
This commit is contained in:
parent
1a91a7fca8
commit
1538e43a4e
|
@ -6,6 +6,7 @@ SHELL ["/bin/bash", "-c"]
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
ros-humble-rmw-cyclonedds-cpp ros-humble-rosidl-generator-dds-idl \
|
ros-humble-rmw-cyclonedds-cpp ros-humble-rosidl-generator-dds-idl \
|
||||||
libyaml-cpp-dev \
|
libyaml-cpp-dev \
|
||||||
|
ros-humble-xacro \
|
||||||
# ros-humble-isaac-ros-visual-slam \
|
# ros-humble-isaac-ros-visual-slam \
|
||||||
# ros-humble-isaac-ros-occupancy-grid-localizer\
|
# ros-humble-isaac-ros-occupancy-grid-localizer\
|
||||||
libboost-all-dev\
|
libboost-all-dev\
|
||||||
|
|
|
@ -34,4 +34,24 @@ def generate_launch_description():
|
||||||
executable='hesai_ros_driver_node',
|
executable='hesai_ros_driver_node',
|
||||||
name='go2_hesai_ros_driver_node'
|
name='go2_hesai_ros_driver_node'
|
||||||
),
|
),
|
||||||
|
Node(
|
||||||
|
name='go2_cam',
|
||||||
|
namespace='go2/cam',
|
||||||
|
package='realsense2_camera',
|
||||||
|
executable='realsense2_camera_node',
|
||||||
|
parameters=[{
|
||||||
|
'enable_infra1': True,
|
||||||
|
'enable_infra2': True,
|
||||||
|
'enable_color': False,
|
||||||
|
'enable_depth': False,
|
||||||
|
'depth_module.emitter_enabled': 0,
|
||||||
|
'depth_module.profile': '640x480x60',
|
||||||
|
'enable_gyro': True,
|
||||||
|
'enable_accel': True,
|
||||||
|
'gyro_fps': 400,
|
||||||
|
'accel_fps': 200,
|
||||||
|
'unite_imu_method': 2,
|
||||||
|
# 'tf_publish_rate': 0.0
|
||||||
|
}]
|
||||||
|
)
|
||||||
])
|
])
|
|
@ -3,8 +3,18 @@ from launch.actions import IncludeLaunchDescription
|
||||||
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||||
from launch.substitutions import ThisLaunchFileDir
|
from launch.substitutions import ThisLaunchFileDir
|
||||||
from launch_ros.actions import Node
|
from launch_ros.actions import Node
|
||||||
|
from launch.substitutions import Command, FindExecutable, LaunchConfiguration
|
||||||
|
from ament_index_python.packages import get_package_share_directory
|
||||||
|
import os
|
||||||
|
|
||||||
def generate_launch_description():
|
def generate_launch_description():
|
||||||
|
go2_xacro_file = os.path.join(
|
||||||
|
get_package_share_directory("go2_description"), "xacro", "robot_virtual_arm.xacro"
|
||||||
|
)
|
||||||
|
robot_description = Command(
|
||||||
|
[FindExecutable(name="xacro"), " ", go2_xacro_file, " DEBUG:=", 'false']
|
||||||
|
)
|
||||||
|
|
||||||
return LaunchDescription([
|
return LaunchDescription([
|
||||||
# launch the pointcloud to laser scan converter
|
# launch the pointcloud to laser scan converter
|
||||||
Node(
|
Node(
|
||||||
|
@ -12,4 +22,31 @@ def generate_launch_description():
|
||||||
executable='bridge',
|
executable='bridge',
|
||||||
name='go2py_bridge'
|
name='go2py_bridge'
|
||||||
),
|
),
|
||||||
|
Node(
|
||||||
|
package="robot_state_publisher",
|
||||||
|
executable="robot_state_publisher",
|
||||||
|
name="robot_state_publisher",
|
||||||
|
output="screen",
|
||||||
|
parameters=[{"robot_description": robot_description}],
|
||||||
|
remappings=[
|
||||||
|
("/joint_states", "/go2/joint_states"),
|
||||||
|
("/robot_description", "/go2/robot_description"),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Node(
|
||||||
|
package="tf2_ros",
|
||||||
|
executable="static_transform_publisher",
|
||||||
|
arguments=[
|
||||||
|
"0.15",
|
||||||
|
"0",
|
||||||
|
"0.15",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"0.707107",
|
||||||
|
"0.707107",
|
||||||
|
"/trunk",
|
||||||
|
"/go2/hesai_lidar",
|
||||||
|
],
|
||||||
|
name="static_tf_pub_trunk_to_lidar",
|
||||||
|
),
|
||||||
])
|
])
|
|
@ -0,0 +1,11 @@
|
||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
project(go2_description)
|
||||||
|
find_package(ament_cmake REQUIRED)
|
||||||
|
|
||||||
|
# Install launch files.
|
||||||
|
install(DIRECTORY
|
||||||
|
launch dae config meshes urdf xacro
|
||||||
|
DESTINATION share/${PROJECT_NAME}/
|
||||||
|
)
|
||||||
|
|
||||||
|
ament_package()
|
|
@ -0,0 +1,54 @@
|
||||||
|
## go2_urdf
|
||||||
|
This repository contains the urdf model of go2.
|
||||||
|
|
||||||
|
|
||||||
|
## Build the library
|
||||||
|
Create a new catkin workspace:
|
||||||
|
```
|
||||||
|
# Create the directories
|
||||||
|
# Do not forget to change <...> parts
|
||||||
|
mkdir -p <directory_to_ws>/<catkin_ws_name>/src
|
||||||
|
cd <directory_to_ws>/<catkin_ws_name>/
|
||||||
|
|
||||||
|
# Initialize the catkin workspace
|
||||||
|
catkin init
|
||||||
|
```
|
||||||
|
|
||||||
|
Clone this library:
|
||||||
|
```
|
||||||
|
# Navigate to the directory of src
|
||||||
|
# Do not forget to change <...> parts
|
||||||
|
cd <directory_to_ws>/<catkin_ws_name>/src
|
||||||
|
git clone git@github.com:unitreerobotics/go2_urdf.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Build:
|
||||||
|
```
|
||||||
|
# Build it
|
||||||
|
catkin build
|
||||||
|
|
||||||
|
# Source it
|
||||||
|
source <directory_to_ws>/<catkin_ws_name>/devel/setup.bash
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Run the library
|
||||||
|
```
|
||||||
|
# Show urdf model of go2 in Rviz
|
||||||
|
roslaunch go2_description go2_rviz.launch
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## When used for isaac gym or other similiar engine
|
||||||
|
|
||||||
|
Collision parameters in urdf can be amended to better train the robot:
|
||||||
|
|
||||||
|
Open "go2_description.urdf" in "./go2_description/urdf",
|
||||||
|
and amend the ` box size="0.213 0.0245 0.034" ` in links of "FL_thigh", "FR_thigh", "RL_thigh", "RR_thigh".
|
||||||
|
|
||||||
|
For example, change previous values to ` box size="0.11 0.0245 0.034" ` means the length of the thigh is shortened from 0.213 to 0.11, which can avoid unnecessary collision between the thigh link and the calf link.
|
||||||
|
|
||||||
|
The collision model before and after the above amendment are shown as "Normal_collision_model.png" and "Amended_collision_model.png" respectively.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
controller_joint_names: ['', 'FL_hip_joint', 'Fl_thigh_joint', 'FL_calf_joint', 'FR_hip_joint', 'FR_thigh_joint', 'FR_calf_joint', 'RL_hip_joint', 'RL_thigh_joint', 'RL_calf_joint', 'RR_hip_joint', 'RR_thigh_joint', 'RR_calf_joint', ]
|
|
@ -0,0 +1,70 @@
|
||||||
|
go2_gazebo:
|
||||||
|
# Publish all joint states -----------------------------------
|
||||||
|
joint_state_controller:
|
||||||
|
type: joint_state_controller/JointStateController
|
||||||
|
publish_rate: 1000
|
||||||
|
|
||||||
|
# FL Controllers ---------------------------------------
|
||||||
|
FL_hip_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: FL_hip_joint
|
||||||
|
pid: {p: 100.0, i: 0.0, d: 5.0}
|
||||||
|
|
||||||
|
FL_thigh_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: FL_thigh_joint
|
||||||
|
pid: {p: 300.0, i: 0.0, d: 8.0}
|
||||||
|
|
||||||
|
FL_calf_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: FL_calf_joint
|
||||||
|
pid: {p: 300.0, i: 0.0, d: 8.0}
|
||||||
|
|
||||||
|
# FR Controllers ---------------------------------------
|
||||||
|
FR_hip_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: FR_hip_joint
|
||||||
|
pid: {p: 100.0, i: 0.0, d: 5.0}
|
||||||
|
|
||||||
|
FR_thigh_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: FR_thigh_joint
|
||||||
|
pid: {p: 300.0, i: 0.0, d: 8.0}
|
||||||
|
|
||||||
|
FR_calf_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: FR_calf_joint
|
||||||
|
pid: {p: 300.0, i: 0.0, d: 8.0}
|
||||||
|
|
||||||
|
# RL Controllers ---------------------------------------
|
||||||
|
RL_hip_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: RL_hip_joint
|
||||||
|
pid: {p: 100.0, i: 0.0, d: 5.0}
|
||||||
|
|
||||||
|
RL_thigh_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: RL_thigh_joint
|
||||||
|
pid: {p: 300.0, i: 0.0, d: 8.0}
|
||||||
|
|
||||||
|
RL_calf_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: RL_calf_joint
|
||||||
|
pid: {p: 300.0, i: 0.0, d: 8.0}
|
||||||
|
|
||||||
|
# RR Controllers ---------------------------------------
|
||||||
|
RR_hip_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: RR_hip_joint
|
||||||
|
pid: {p: 100.0, i: 0.0, d: 5.0}
|
||||||
|
|
||||||
|
RR_thigh_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: RR_thigh_joint
|
||||||
|
pid: {p: 300.0, i: 0.0, d: 8.0}
|
||||||
|
|
||||||
|
RR_calf_controller:
|
||||||
|
type: unitree_legged_control/UnitreeJointController
|
||||||
|
joint: RR_calf_joint
|
||||||
|
pid: {p: 300.0, i: 0.0, d: 8.0}
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,67 @@
|
||||||
|
import os
|
||||||
|
|
||||||
|
from ament_index_python.packages import get_package_share_directory
|
||||||
|
from launch import LaunchDescription
|
||||||
|
from launch.actions import DeclareLaunchArgument
|
||||||
|
from launch.substitutions import Command, FindExecutable, LaunchConfiguration
|
||||||
|
from launch_ros.actions import Node
|
||||||
|
|
||||||
|
|
||||||
|
def generate_launch_description():
|
||||||
|
user_debug_parameter_name = "user_debug"
|
||||||
|
user_debug = LaunchConfiguration(user_debug_parameter_name)
|
||||||
|
# prefix = LaunchConfiguration("prefix", default="go2/")
|
||||||
|
|
||||||
|
go2_xacro_file = os.path.join(
|
||||||
|
get_package_share_directory("go2_description"), "xacro", "robot.xacro"
|
||||||
|
)
|
||||||
|
robot_description = Command(
|
||||||
|
[FindExecutable(name="xacro"), " ", go2_xacro_file, " DEBUG:=", user_debug]
|
||||||
|
)
|
||||||
|
|
||||||
|
rviz_file = os.path.join(
|
||||||
|
get_package_share_directory("go2_description"), "launch", "visualize_go2.rviz"
|
||||||
|
)
|
||||||
|
|
||||||
|
return LaunchDescription(
|
||||||
|
[
|
||||||
|
DeclareLaunchArgument(
|
||||||
|
user_debug_parameter_name,
|
||||||
|
default_value="false",
|
||||||
|
description="debug or not",
|
||||||
|
),
|
||||||
|
Node(
|
||||||
|
package="robot_state_publisher",
|
||||||
|
executable="robot_state_publisher",
|
||||||
|
name="robot_state_publisher",
|
||||||
|
output="screen",
|
||||||
|
parameters=[{"robot_description": robot_description}],
|
||||||
|
remappings=[
|
||||||
|
("/joint_states", "/go2/joint_states"),
|
||||||
|
("/robot_description", "/go2/robot_description"),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Node(
|
||||||
|
package="rviz2",
|
||||||
|
executable="rviz2",
|
||||||
|
name="rviz2",
|
||||||
|
arguments=["--display-config", rviz_file],
|
||||||
|
),
|
||||||
|
Node(
|
||||||
|
package="tf2_ros",
|
||||||
|
executable="static_transform_publisher",
|
||||||
|
arguments=[
|
||||||
|
"0.15",
|
||||||
|
"0",
|
||||||
|
"0.15",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"0.707107",
|
||||||
|
"0.707107",
|
||||||
|
"/trunk",
|
||||||
|
"/go2/hesai_lidar",
|
||||||
|
],
|
||||||
|
name="static_tf_pub_trunk_to_lidar",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
)
|
|
@ -0,0 +1,355 @@
|
||||||
|
Panels:
|
||||||
|
- Class: rviz_common/Displays
|
||||||
|
Help Height: 78
|
||||||
|
Name: Displays
|
||||||
|
Property Tree Widget:
|
||||||
|
Expanded:
|
||||||
|
- /Global Options1
|
||||||
|
- /TF1/Frames1
|
||||||
|
Splitter Ratio: 0.5
|
||||||
|
Tree Height: 787
|
||||||
|
- 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: 0.5
|
||||||
|
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: /go2/robot_description
|
||||||
|
Enabled: true
|
||||||
|
Links:
|
||||||
|
All Links Enabled: true
|
||||||
|
Expand Joint Details: false
|
||||||
|
Expand Link Details: false
|
||||||
|
Expand Tree: false
|
||||||
|
FL_calf:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FL_calf_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FL_foot:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FL_hip:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FL_hip_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FL_thigh:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FL_thigh_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FR_calf:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FR_calf_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FR_foot:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FR_hip:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FR_hip_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FR_thigh:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
FR_thigh_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
Link Tree Style: Links in Alphabetic Order
|
||||||
|
RL_calf:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RL_calf_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RL_foot:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RL_hip:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RL_hip_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RL_thigh:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RL_thigh_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RR_calf:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RR_calf_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RR_foot:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RR_hip:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RR_hip_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RR_thigh:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
RR_thigh_rotor:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
base_link:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
imu_link:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
trunk:
|
||||||
|
Alpha: 1
|
||||||
|
Show Axes: false
|
||||||
|
Show Trail: false
|
||||||
|
Value: true
|
||||||
|
Name: RobotModel
|
||||||
|
TF Prefix: ""
|
||||||
|
Update Interval: 0
|
||||||
|
Value: true
|
||||||
|
Visual Enabled: true
|
||||||
|
- Class: rviz_default_plugins/Axes
|
||||||
|
Enabled: false
|
||||||
|
Length: 1
|
||||||
|
Name: Axes
|
||||||
|
Radius: 0.10000000149011612
|
||||||
|
Reference Frame: <Fixed Frame>
|
||||||
|
Value: false
|
||||||
|
- Class: rviz_default_plugins/TF
|
||||||
|
Enabled: false
|
||||||
|
Frame Timeout: 15
|
||||||
|
Frames:
|
||||||
|
All Enabled: false
|
||||||
|
Marker Scale: 1
|
||||||
|
Name: TF
|
||||||
|
Show Arrows: true
|
||||||
|
Show Axes: true
|
||||||
|
Show Names: true
|
||||||
|
Tree:
|
||||||
|
{}
|
||||||
|
Update Interval: 0
|
||||||
|
Value: false
|
||||||
|
- Alpha: 1
|
||||||
|
Autocompute Intensity Bounds: true
|
||||||
|
Autocompute Value Bounds:
|
||||||
|
Max Value: 10
|
||||||
|
Min Value: -10
|
||||||
|
Value: true
|
||||||
|
Axis: Z
|
||||||
|
Channel Name: intensity
|
||||||
|
Class: rviz_default_plugins/PointCloud2
|
||||||
|
Color: 255; 255; 255
|
||||||
|
Color Transformer: Intensity
|
||||||
|
Decay Time: 0
|
||||||
|
Enabled: true
|
||||||
|
Invert Rainbow: false
|
||||||
|
Max Color: 255; 255; 255
|
||||||
|
Max Intensity: 81
|
||||||
|
Min Color: 0; 0; 0
|
||||||
|
Min Intensity: 1
|
||||||
|
Name: PointCloud2
|
||||||
|
Position Transformer: XYZ
|
||||||
|
Selectable: true
|
||||||
|
Size (Pixels): 3
|
||||||
|
Size (m): 0.009999999776482582
|
||||||
|
Style: Flat Squares
|
||||||
|
Topic:
|
||||||
|
Depth: 5
|
||||||
|
Durability Policy: Volatile
|
||||||
|
History Policy: Keep Last
|
||||||
|
Reliability Policy: Reliable
|
||||||
|
Value: /go2/lidar_points
|
||||||
|
Use Fixed Frame: true
|
||||||
|
Use rainbow: true
|
||||||
|
Value: true
|
||||||
|
Enabled: true
|
||||||
|
Global Options:
|
||||||
|
Background Color: 238; 238; 238
|
||||||
|
Fixed Frame: base
|
||||||
|
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: /move_base_simple/goal
|
||||||
|
- Class: rviz_default_plugins/PublishPoint
|
||||||
|
Single click: true
|
||||||
|
Topic:
|
||||||
|
Depth: 5
|
||||||
|
Durability Policy: Volatile
|
||||||
|
History Policy: Keep Last
|
||||||
|
Reliability Policy: Reliable
|
||||||
|
Value: /clicked_point
|
||||||
|
Transformation:
|
||||||
|
Current:
|
||||||
|
Class: rviz_default_plugins/TF
|
||||||
|
Value: true
|
||||||
|
Views:
|
||||||
|
Current:
|
||||||
|
Class: rviz_default_plugins/Orbit
|
||||||
|
Distance: 5.272065162658691
|
||||||
|
Enable Stereo Rendering:
|
||||||
|
Stereo Eye Separation: 0.05999999865889549
|
||||||
|
Stereo Focal Distance: 1
|
||||||
|
Swap Stereo Eyes: false
|
||||||
|
Value: false
|
||||||
|
Focal Point:
|
||||||
|
X: 0.18471483886241913
|
||||||
|
Y: -0.16858524084091187
|
||||||
|
Z: -0.1451287716627121
|
||||||
|
Focal Shape Fixed Size: false
|
||||||
|
Focal Shape Size: 0.05000000074505806
|
||||||
|
Invert Z Axis: false
|
||||||
|
Name: Current View
|
||||||
|
Near Clip Distance: 0.009999999776482582
|
||||||
|
Pitch: 0.3297958970069885
|
||||||
|
Target Frame: <Fixed Frame>
|
||||||
|
Value: Orbit (rviz_default_plugins)
|
||||||
|
Yaw: 4.5785908699035645
|
||||||
|
Saved: ~
|
||||||
|
Window Geometry:
|
||||||
|
Displays:
|
||||||
|
collapsed: false
|
||||||
|
Height: 1016
|
||||||
|
Hide Left Dock: false
|
||||||
|
Hide Right Dock: true
|
||||||
|
QMainWindow State: 000000ff00000000fd0000000400000000000001b90000039efc0200000009fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000039e000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000c00430061006d00650072006101000001be000001900000000000000000000000010000010f000002e2fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730000000028000002e2000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000006400000003efc0100000002fb0000000800540069006d00650000000000000006400000000000000000fb0000000800540069006d00650100000000000004500000000000000000000005790000039e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
|
||||||
|
Selection:
|
||||||
|
collapsed: false
|
||||||
|
Tool Properties:
|
||||||
|
collapsed: false
|
||||||
|
Views:
|
||||||
|
collapsed: false
|
||||||
|
Width: 1848
|
||||||
|
X: 72
|
||||||
|
Y: 27
|
|
@ -0,0 +1,69 @@
|
||||||
|
import os
|
||||||
|
|
||||||
|
from ament_index_python.packages import get_package_share_directory
|
||||||
|
from launch import LaunchDescription
|
||||||
|
from launch.actions import DeclareLaunchArgument
|
||||||
|
from launch.substitutions import Command, FindExecutable, LaunchConfiguration
|
||||||
|
from launch_ros.actions import Node
|
||||||
|
|
||||||
|
|
||||||
|
def generate_launch_description():
|
||||||
|
user_debug_parameter_name = "user_debug"
|
||||||
|
user_debug = LaunchConfiguration(user_debug_parameter_name)
|
||||||
|
# prefix = LaunchConfiguration("prefix", default="go2/")
|
||||||
|
|
||||||
|
go2_xacro_file = os.path.join(
|
||||||
|
get_package_share_directory("go2_description"),
|
||||||
|
"xacro",
|
||||||
|
"robot_virtual_arm.xacro",
|
||||||
|
)
|
||||||
|
robot_description = Command(
|
||||||
|
[FindExecutable(name="xacro"), " ", go2_xacro_file, " DEBUG:=", user_debug]
|
||||||
|
)
|
||||||
|
|
||||||
|
rviz_file = os.path.join(
|
||||||
|
get_package_share_directory("go2_description"), "launch", "visualize_go2.rviz"
|
||||||
|
)
|
||||||
|
|
||||||
|
return LaunchDescription(
|
||||||
|
[
|
||||||
|
DeclareLaunchArgument(
|
||||||
|
user_debug_parameter_name,
|
||||||
|
default_value="false",
|
||||||
|
description="debug or not",
|
||||||
|
),
|
||||||
|
Node(
|
||||||
|
package="robot_state_publisher",
|
||||||
|
executable="robot_state_publisher",
|
||||||
|
name="robot_state_publisher",
|
||||||
|
output="screen",
|
||||||
|
parameters=[{"robot_description": robot_description}],
|
||||||
|
remappings=[
|
||||||
|
("/joint_states", "/go2/joint_states"),
|
||||||
|
("/robot_description", "/go2/robot_description"),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Node(
|
||||||
|
package="rviz2",
|
||||||
|
executable="rviz2",
|
||||||
|
name="rviz2",
|
||||||
|
arguments=["--display-config", rviz_file],
|
||||||
|
),
|
||||||
|
Node(
|
||||||
|
package="tf2_ros",
|
||||||
|
executable="static_transform_publisher",
|
||||||
|
arguments=[
|
||||||
|
"0.15",
|
||||||
|
"0",
|
||||||
|
"0.15",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"0.707107",
|
||||||
|
"0.707107",
|
||||||
|
"/trunk",
|
||||||
|
"/go2/hesai_lidar",
|
||||||
|
],
|
||||||
|
name="static_tf_pub_trunk_to_lidar",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
)
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,24 @@
|
||||||
|
<?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>go2_description</name>
|
||||||
|
<version>0.0.1</version>
|
||||||
|
<description>go2_description contains URDF files and meshes of the Unitree Go2 robot</description>
|
||||||
|
<maintainer email="bd1555@nyu.edu">Bolun Dai</maintainer>
|
||||||
|
<license>Apache 2.0</license>
|
||||||
|
<author>Bolun Dai</author>
|
||||||
|
|
||||||
|
<buildtool_depend>ament_cmake</buildtool_depend>
|
||||||
|
|
||||||
|
<test_depend>ament_lint_auto</test_depend>
|
||||||
|
<test_depend>ament_lint_common</test_depend>
|
||||||
|
<test_depend>ament_cmake_pytest</test_depend>
|
||||||
|
|
||||||
|
<exec_depend>xacro</exec_depend>
|
||||||
|
<exec_depend>rviz2</exec_depend>
|
||||||
|
<exec_depend>joint_state_publisher_gui</exec_depend>
|
||||||
|
|
||||||
|
<export>
|
||||||
|
<build_type>ament_cmake</build_type>
|
||||||
|
</export>
|
||||||
|
</package>
|
Binary file not shown.
After Width: | Height: | Size: 213 KiB |
Binary file not shown.
After Width: | Height: | Size: 200 KiB |
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,121 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||||
|
|
||||||
|
<!-- Constants for robot dimensions -->
|
||||||
|
<xacro:property name="PI" value="3.1415926535897931"/>
|
||||||
|
<xacro:property name="stick_mass" value="0.00001"/>
|
||||||
|
|
||||||
|
<!-- simplified collision value -->
|
||||||
|
<xacro:property name="trunk_width" value="0.0935"/>
|
||||||
|
<xacro:property name="trunk_length" value="0.3762"/>
|
||||||
|
<xacro:property name="trunk_height" value="0.114"/>
|
||||||
|
<xacro:property name="hip_radius" value="0.046"/>
|
||||||
|
<xacro:property name="hip_length" value="0.04"/>
|
||||||
|
<xacro:property name="thigh_shoulder_radius" value="0.041"/>
|
||||||
|
<xacro:property name="thigh_shoulder_length" value="0.032"/>
|
||||||
|
<xacro:property name="thigh_width" value="0.0245"/>
|
||||||
|
<xacro:property name="thigh_height" value="0.034"/>
|
||||||
|
<xacro:property name="calf_width" value="0.016"/>
|
||||||
|
<xacro:property name="calf_height" value="0.016"/>
|
||||||
|
<xacro:property name="foot_radius" value="0.02"/>
|
||||||
|
<xacro:property name="stick_radius" value="0.01"/>
|
||||||
|
<xacro:property name="stick_length" value="0.2"/>
|
||||||
|
|
||||||
|
<!-- kinematic value -->
|
||||||
|
<xacro:property name="thigh_offset" value="0.0955"/>
|
||||||
|
<xacro:property name="thigh_length" value="0.213"/>
|
||||||
|
<xacro:property name="calf_length" value="0.213"/>
|
||||||
|
|
||||||
|
<!-- leg offset from trunk center value -->
|
||||||
|
<xacro:property name="leg_offset_x" value="0.1934"/>
|
||||||
|
<xacro:property name="leg_offset_y" value="0.0465"/>
|
||||||
|
<!-- <xacro:property name="trunk_offset_z" value="0.01675"/> -->
|
||||||
|
<xacro:property name="hip_offset" value="0.0955"/>
|
||||||
|
|
||||||
|
<!-- offset of link locations (left front) -->
|
||||||
|
<xacro:property name="hip_offset_x" value="0.1934"/>
|
||||||
|
<xacro:property name="hip_offset_y" value="0.0465"/>
|
||||||
|
<xacro:property name="hip_offset_z" value="0.0"/>
|
||||||
|
|
||||||
|
|
||||||
|
<xacro:property name="thigh_offset_x" value="0"/>
|
||||||
|
<xacro:property name="thigh_offset_y" value="0.0955"/>
|
||||||
|
<xacro:property name="thigh_offset_z" value="0.0"/>
|
||||||
|
|
||||||
|
|
||||||
|
<xacro:property name="calf_offset_x" value="0.0"/>
|
||||||
|
<xacro:property name="calf_offset_y" value="0.0"/>
|
||||||
|
<xacro:property name="calf_offset_z" value="-0.213"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- joint limits -->
|
||||||
|
<xacro:property name="damping" value="0.01"/>
|
||||||
|
<xacro:property name="friction" value="0.2"/>
|
||||||
|
<xacro:property name="hip_position_max" value="1.0472"/>
|
||||||
|
<xacro:property name="hip_position_min" value="-1.0472"/>
|
||||||
|
<xacro:property name="hip_velocity_max" value="30.1"/>
|
||||||
|
<xacro:property name="hip_torque_max" value="23.7"/>
|
||||||
|
<xacro:property name="thigh_position_max" value="3.4907"/>
|
||||||
|
<xacro:property name="thigh_position_min" value="-1.5708"/>
|
||||||
|
<xacro:property name="thigh_velocity_max" value="30.1"/>
|
||||||
|
<xacro:property name="thigh_torque_max" value="23.7"/>
|
||||||
|
<xacro:property name="calf_position_max" value="-0.83776"/>
|
||||||
|
<xacro:property name="calf_position_min" value="-2.7227"/>
|
||||||
|
<xacro:property name="calf_velocity_max" value="20.06"/>
|
||||||
|
<xacro:property name="calf_torque_max" value="35.55"/>
|
||||||
|
|
||||||
|
<!-- dynamics inertial value -->
|
||||||
|
<!-- trunk -->
|
||||||
|
<xacro:property name="trunk_mass" value="6.921"/>
|
||||||
|
<xacro:property name="trunk_com_x" value="0.021112"/>
|
||||||
|
<xacro:property name="trunk_com_y" value="0.00"/>
|
||||||
|
<xacro:property name="trunk_com_z" value="-0.005366"/>
|
||||||
|
<xacro:property name="trunk_ixx" value="0.02448"/>
|
||||||
|
<xacro:property name="trunk_ixy" value="0.00012166"/>
|
||||||
|
<xacro:property name="trunk_ixz" value="0.0014849"/>
|
||||||
|
<xacro:property name="trunk_iyy" value="0.098077"/>
|
||||||
|
<xacro:property name="trunk_iyz" value="-3.12E-05"/>
|
||||||
|
<xacro:property name="trunk_izz" value="0.107"/>
|
||||||
|
|
||||||
|
<!-- hip (left front) -->
|
||||||
|
<xacro:property name="hip_mass" value="0.678"/>
|
||||||
|
<xacro:property name="hip_com_x" value="-0.0054"/>
|
||||||
|
<xacro:property name="hip_com_y" value="0.00194"/>
|
||||||
|
<xacro:property name="hip_com_z" value="-0.000105"/>
|
||||||
|
<xacro:property name="hip_ixx" value="0.00048"/>
|
||||||
|
<xacro:property name="hip_ixy" value="-3.01E-06"/>
|
||||||
|
<xacro:property name="hip_ixz" value="1.11E-06"/>
|
||||||
|
<xacro:property name="hip_iyy" value="0.000884"/>
|
||||||
|
<xacro:property name="hip_iyz" value="-1.42E-06"/>
|
||||||
|
<xacro:property name="hip_izz" value="0.000596"/>
|
||||||
|
|
||||||
|
<!-- thigh -->
|
||||||
|
<xacro:property name="thigh_mass" value="1.152"/>
|
||||||
|
<xacro:property name="thigh_com_x" value="-0.00374"/>
|
||||||
|
<xacro:property name="thigh_com_y" value="-0.0223"/>
|
||||||
|
<xacro:property name="thigh_com_z" value="-0.0327"/>
|
||||||
|
<xacro:property name="thigh_ixx" value="0.00584"/>
|
||||||
|
<xacro:property name="thigh_ixy" value="8.72E-05"/>
|
||||||
|
<xacro:property name="thigh_ixz" value="-0.000289"/>
|
||||||
|
<xacro:property name="thigh_iyy" value="0.0058"/>
|
||||||
|
<xacro:property name="thigh_iyz" value="0.000808"/>
|
||||||
|
<xacro:property name="thigh_izz" value="0.00103"/>
|
||||||
|
|
||||||
|
<!-- calf -->
|
||||||
|
<xacro:property name="calf_mass" value="0.154"/>
|
||||||
|
<xacro:property name="calf_com_x" value="0.00548"/>
|
||||||
|
<xacro:property name="calf_com_y" value="-0.000975"/>
|
||||||
|
<xacro:property name="calf_com_z" value="-0.115"/>
|
||||||
|
<xacro:property name="calf_ixx" value="0.00108"/>
|
||||||
|
<xacro:property name="calf_ixy" value="3.4E-07"/>
|
||||||
|
<xacro:property name="calf_ixz" value="1.72E-05"/>
|
||||||
|
<xacro:property name="calf_iyy" value="0.0011"/>
|
||||||
|
<xacro:property name="calf_iyz" value="8.28E-06"/>
|
||||||
|
<xacro:property name="calf_izz" value="3.29E-05"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- foot -->
|
||||||
|
<xacro:property name="foot_mass" value="0.06"/>
|
||||||
|
|
||||||
|
</robot>
|
|
@ -0,0 +1,257 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<robot>
|
||||||
|
<!-- ros_control plugin -->
|
||||||
|
<gazebo>
|
||||||
|
<plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
|
||||||
|
<robotNamespace>/go2_gazebo</robotNamespace>
|
||||||
|
<robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
|
||||||
|
</plugin>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<!-- Show the trajectory of trunk center. -->
|
||||||
|
<!--gazebo>
|
||||||
|
<plugin name="3dplot" filename="libLinkPlot3DPlugin.so">
|
||||||
|
<frequency>10</frequency>
|
||||||
|
<plot>
|
||||||
|
<link>base</link>
|
||||||
|
<pose>0 0 0 0 0 0</pose>
|
||||||
|
<material>Gazebo/Yellow</material>
|
||||||
|
</plot>
|
||||||
|
</plugin>
|
||||||
|
</gazebo-->
|
||||||
|
|
||||||
|
<!-- Show the trajectory of foot. You can add another trajectory about another foot. -->
|
||||||
|
<gazebo>
|
||||||
|
<plugin name="3dplot" filename="libLinkPlot3DPlugin.so">
|
||||||
|
<frequency>100</frequency>
|
||||||
|
<plot>
|
||||||
|
<link>FL_foot</link>
|
||||||
|
<pose>0 0 0 0 0 0</pose>
|
||||||
|
</plot>
|
||||||
|
</plugin>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<gazebo>
|
||||||
|
<plugin filename="libgazebo_ros_force.so" name="gazebo_ros_force">
|
||||||
|
<bodyName>trunk</bodyName>
|
||||||
|
<topicName>/apply_force/trunk</topicName>
|
||||||
|
</plugin>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<gazebo reference="imu_link">
|
||||||
|
<gravity>true</gravity>
|
||||||
|
<sensor name="imu_sensor" type="imu">
|
||||||
|
<always_on>true</always_on>
|
||||||
|
<update_rate>1000</update_rate>
|
||||||
|
<visualize>true</visualize>
|
||||||
|
<topic>__default_topic__</topic>
|
||||||
|
<plugin filename="libgazebo_ros_imu_sensor.so" name="imu_plugin">
|
||||||
|
<topicName>trunk_imu</topicName>
|
||||||
|
<bodyName>imu_link</bodyName>
|
||||||
|
<updateRateHZ>1000.0</updateRateHZ>
|
||||||
|
<gaussianNoise>0.0</gaussianNoise>
|
||||||
|
<xyzOffset>0 0 0</xyzOffset>
|
||||||
|
<rpyOffset>0 0 0</rpyOffset>
|
||||||
|
<frameName>imu_link</frameName>
|
||||||
|
</plugin>
|
||||||
|
<pose>0 0 0 0 0 0</pose>
|
||||||
|
</sensor>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Foot contacts. -->
|
||||||
|
<gazebo reference="FR_calf">
|
||||||
|
<sensor name="FR_foot_contact" type="contact">
|
||||||
|
<update_rate>100</update_rate>
|
||||||
|
<plugin name="contactPlugin" filename="libunitreeFootContactPlugin.so"/>
|
||||||
|
<contact>
|
||||||
|
<collision>FR_calf_fixed_joint_lump__FR_foot_collision_1</collision>
|
||||||
|
</contact>
|
||||||
|
</sensor>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="FL_calf">
|
||||||
|
<sensor name="FL_foot_contact" type="contact">
|
||||||
|
<update_rate>100</update_rate>
|
||||||
|
<plugin name="contactPlugin" filename="libunitreeFootContactPlugin.so"/>
|
||||||
|
<contact>
|
||||||
|
<collision>FL_calf_fixed_joint_lump__FL_foot_collision_1</collision>
|
||||||
|
</contact>
|
||||||
|
</sensor>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="RR_calf">
|
||||||
|
<sensor name="RR_foot_contact" type="contact">
|
||||||
|
<update_rate>100</update_rate>
|
||||||
|
<plugin name="contactPlugin" filename="libunitreeFootContactPlugin.so"/>
|
||||||
|
<contact>
|
||||||
|
<collision>RR_calf_fixed_joint_lump__RR_foot_collision_1</collision>
|
||||||
|
</contact>
|
||||||
|
</sensor>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="RL_calf">
|
||||||
|
<sensor name="RL_foot_contact" type="contact">
|
||||||
|
<update_rate>100</update_rate>
|
||||||
|
<plugin name="contactPlugin" filename="libunitreeFootContactPlugin.so"/>
|
||||||
|
<contact>
|
||||||
|
<collision>RL_calf_fixed_joint_lump__RL_foot_collision_1</collision>
|
||||||
|
</contact>
|
||||||
|
</sensor>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<!-- Visualization of Foot contacts. -->
|
||||||
|
<gazebo reference="FR_foot">
|
||||||
|
<visual>
|
||||||
|
<plugin name="drawForcePlugin" filename="libunitreeDrawForcePlugin.so">
|
||||||
|
<topicName>FR_foot_contact</topicName>
|
||||||
|
</plugin>
|
||||||
|
</visual>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="FL_foot">
|
||||||
|
<visual>
|
||||||
|
<plugin name="drawForcePlugin" filename="libunitreeDrawForcePlugin.so">
|
||||||
|
<topicName>FL_foot_contact</topicName>
|
||||||
|
</plugin>
|
||||||
|
</visual>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="RR_foot">
|
||||||
|
<visual>
|
||||||
|
<plugin name="drawForcePlugin" filename="libunitreeDrawForcePlugin.so">
|
||||||
|
<topicName>RR_foot_contact</topicName>
|
||||||
|
</plugin>
|
||||||
|
</visual>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="RL_foot">
|
||||||
|
<visual>
|
||||||
|
<plugin name="drawForcePlugin" filename="libunitreeDrawForcePlugin.so">
|
||||||
|
<topicName>RL_foot_contact</topicName>
|
||||||
|
</plugin>
|
||||||
|
</visual>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<gazebo reference="base">
|
||||||
|
<turnGravityOff>false</turnGravityOff>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<gazebo reference="trunk">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
<kp value="1000000.0"/>
|
||||||
|
<kd value="1.0"/>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<gazebo reference="stick_link">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<gazebo reference="imu_link">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<!-- FL leg -->
|
||||||
|
<gazebo reference="FL_hip">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="FL_thigh">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
<kp value="1000000.0"/>
|
||||||
|
<kd value="1.0"/>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="FL_calf">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="FL_foot">
|
||||||
|
<mu1>0.6</mu1>
|
||||||
|
<mu2>0.6</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
<kp value="1000000.0"/>
|
||||||
|
<kd value="1.0"/>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<!-- FR leg -->
|
||||||
|
<gazebo reference="FR_hip">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="FR_thigh">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
<kp value="1000000.0"/>
|
||||||
|
<kd value="1.0"/>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="FR_calf">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="FR_foot">
|
||||||
|
<mu1>0.6</mu1>
|
||||||
|
<mu2>0.6</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
<kp value="1000000.0"/>
|
||||||
|
<kd value="1.0"/>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<!-- RL leg -->
|
||||||
|
<gazebo reference="RL_hip">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="RL_thigh">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
<kp value="1000000.0"/>
|
||||||
|
<kd value="1.0"/>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="RL_calf">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="RL_foot">
|
||||||
|
<mu1>0.6</mu1>
|
||||||
|
<mu2>0.6</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
<kp value="1000000.0"/>
|
||||||
|
<kd value="1.0"/>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
<!-- RR leg -->
|
||||||
|
<gazebo reference="RR_hip">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="RR_thigh">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
<kp value="1000000.0"/>
|
||||||
|
<kd value="1.0"/>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="RR_calf">
|
||||||
|
<mu1>0.2</mu1>
|
||||||
|
<mu2>0.2</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
</gazebo>
|
||||||
|
<gazebo reference="RR_foot">
|
||||||
|
<mu1>0.6</mu1>
|
||||||
|
<mu2>0.6</mu2>
|
||||||
|
<self_collide>1</self_collide>
|
||||||
|
<kp value="1000000.0"/>
|
||||||
|
<kd value="1.0"/>
|
||||||
|
</gazebo>
|
||||||
|
|
||||||
|
</robot>
|
|
@ -0,0 +1,176 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||||
|
|
||||||
|
<xacro:include filename="$(find go2_description)/xacro/transmission.xacro"/>
|
||||||
|
|
||||||
|
<xacro:macro name="leg" params="name mirror mirror_dae front_hind front_hind_dae">
|
||||||
|
|
||||||
|
<joint name="${name}_hip_joint" type="revolute">
|
||||||
|
<xacro:if value="${(mirror_dae == False) and (front_hind_dae == True)}">
|
||||||
|
<origin rpy="0 0 0" xyz="${leg_offset_x} ${-leg_offset_y} 0"/>
|
||||||
|
</xacro:if>
|
||||||
|
<xacro:if value="${(mirror_dae == True) and (front_hind_dae == True)}">
|
||||||
|
<origin rpy="0 0 0" xyz="${leg_offset_x} ${leg_offset_y} 0"/>
|
||||||
|
</xacro:if>
|
||||||
|
<xacro:if value="${(mirror_dae == False) and (front_hind_dae == False)}">
|
||||||
|
<origin rpy="0 0 0" xyz="${-leg_offset_x} ${-leg_offset_y} 0"/>
|
||||||
|
</xacro:if>
|
||||||
|
<xacro:if value="${(mirror_dae == True) and (front_hind_dae == False)}">
|
||||||
|
<origin rpy="0 0 0" xyz="${-leg_offset_x} ${leg_offset_y} 0"/>
|
||||||
|
</xacro:if>
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="${name}_hip"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
<dynamics damping="${damping}" friction="${friction}"/>
|
||||||
|
<xacro:if value="${(mirror_dae == True)}">
|
||||||
|
<limit effort="${hip_torque_max}" velocity="${hip_velocity_max}" lower="${hip_position_min}" upper="${hip_position_max}"/>
|
||||||
|
</xacro:if>
|
||||||
|
<xacro:if value="${(mirror_dae == False)}">
|
||||||
|
<limit effort="${hip_torque_max}" velocity="${hip_velocity_max}" lower="${-hip_position_max}" upper="${-hip_position_min}"/>
|
||||||
|
</xacro:if>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
|
||||||
|
<link name="${name}_hip">
|
||||||
|
<visual>
|
||||||
|
<xacro:if value="${(mirror_dae == True) and (front_hind_dae == True)}">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</xacro:if>
|
||||||
|
<xacro:if value="${(mirror_dae == False) and (front_hind_dae == True)}">
|
||||||
|
<origin rpy="${PI} 0 0" xyz="0 0 0"/>
|
||||||
|
</xacro:if>
|
||||||
|
<xacro:if value="${(mirror_dae == True) and (front_hind_dae == False)}">
|
||||||
|
<origin rpy="0 ${PI} 0" xyz="0 0 0"/>
|
||||||
|
</xacro:if>
|
||||||
|
<xacro:if value="${(mirror_dae == False) and (front_hind_dae == False)}">
|
||||||
|
<origin rpy="${PI} ${PI} 0" xyz="0 0 0"/>
|
||||||
|
</xacro:if>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://go2_description/meshes/hip.dae" scale="1 1 1"/>
|
||||||
|
</geometry>
|
||||||
|
<!-- <material name="orange"/> -->
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="${PI/2.0} 0 0" xyz="0 ${hip_offset*mirror} 0"/>
|
||||||
|
<geometry>
|
||||||
|
<cylinder length="${hip_length}" radius="${hip_radius}"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="${hip_com_x*front_hind} ${hip_com_y*mirror} ${hip_com_z}"/>
|
||||||
|
<mass value="${hip_mass}"/>
|
||||||
|
<inertia
|
||||||
|
ixx="${hip_ixx}" ixy="${hip_ixy*mirror*front_hind}" ixz="${hip_ixz*front_hind}"
|
||||||
|
iyy="${hip_iyy}" iyz="${hip_iyz*mirror}"
|
||||||
|
izz="${hip_izz}"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="${name}_thigh_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 ${thigh_offset*mirror} 0"/>
|
||||||
|
<parent link="${name}_hip"/>
|
||||||
|
<child link="${name}_thigh"/>
|
||||||
|
<axis xyz="0 1 0"/>
|
||||||
|
<dynamics damping="${damping}" friction="${friction}"/>
|
||||||
|
<limit effort="${thigh_torque_max}" velocity="${thigh_velocity_max}" lower="${thigh_position_min}" upper="${thigh_position_max}"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
|
||||||
|
<link name="${name}_thigh">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<xacro:if value="${mirror_dae == True}">
|
||||||
|
<mesh filename="package://go2_description/meshes/thigh.dae" scale="1 1 1"/>
|
||||||
|
</xacro:if>
|
||||||
|
<xacro:if value="${mirror_dae == False}">
|
||||||
|
<mesh filename="package://go2_description/meshes/thigh_mirror.dae" scale="1 1 1"/>
|
||||||
|
</xacro:if>
|
||||||
|
</geometry>
|
||||||
|
<!-- <material name="orange"/> -->
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 ${PI/2.0} 0" xyz="0 0 ${-thigh_length/2.0}"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="${thigh_length} ${thigh_width} ${thigh_height}"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="${thigh_com_x} ${thigh_com_y*mirror} ${thigh_com_z}"/>
|
||||||
|
<mass value="${thigh_mass}"/>
|
||||||
|
<inertia
|
||||||
|
ixx="${thigh_ixx}" ixy="${thigh_ixy*mirror}" ixz="${thigh_ixz}"
|
||||||
|
iyy="${thigh_iyy}" iyz="${thigh_iyz*mirror}"
|
||||||
|
izz="${thigh_izz}"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
|
||||||
|
<joint name="${name}_calf_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 ${-thigh_length}"/>
|
||||||
|
<parent link="${name}_thigh"/>
|
||||||
|
<child link="${name}_calf"/>
|
||||||
|
<axis xyz="0 1 0"/>
|
||||||
|
<dynamics damping="${damping}" friction="${friction}"/>
|
||||||
|
<limit effort="${calf_torque_max}" velocity="${calf_velocity_max}" lower="${calf_position_min}" upper="${calf_position_max}"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
|
||||||
|
<link name="${name}_calf">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://go2_description/meshes/calf.dae" scale="1 1 1"/>
|
||||||
|
</geometry>
|
||||||
|
<!-- <material name="orange"/> -->
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 ${PI/2.0} 0" xyz="0 0 ${-calf_length/2.0}"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="${calf_length} ${calf_width} ${calf_height}"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="${calf_com_x} ${calf_com_y} ${calf_com_z}"/>
|
||||||
|
<mass value="${calf_mass}"/>
|
||||||
|
<inertia
|
||||||
|
ixx="${calf_ixx}" ixy="${calf_ixy}" ixz="${calf_ixz}"
|
||||||
|
iyy="${calf_iyy}" iyz="${calf_iyz}"
|
||||||
|
izz="${calf_izz}"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
|
||||||
|
<joint name="${name}_foot_fixed" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 ${-(calf_length)}"/>
|
||||||
|
<parent link="${name}_calf"/>
|
||||||
|
<child link="${name}_foot"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name="${name}_foot">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<sphere radius="${foot_radius-0.01}"/>
|
||||||
|
</geometry>
|
||||||
|
<!-- <material name="orange"/> -->
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<sphere radius="${foot_radius}"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="${foot_mass}"/>
|
||||||
|
<inertia
|
||||||
|
ixx="${(2*foot_mass)/5.0*(foot_radius*foot_radius)}" ixy="0.0" ixz="0.0"
|
||||||
|
iyy="${(2*foot_mass)/5.0*(foot_radius*foot_radius)}" iyz="0.0"
|
||||||
|
izz="${(2*foot_mass)/5.0*(foot_radius*foot_radius)}"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<xacro:leg_transmission name="${name}"/>
|
||||||
|
</xacro:macro>
|
||||||
|
</robot>
|
|
@ -0,0 +1,40 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<robot>
|
||||||
|
|
||||||
|
<material name="black">
|
||||||
|
<color rgba="0.0 0.0 0.0 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>
|
||||||
|
|
||||||
|
<material name="grey">
|
||||||
|
<color rgba="0.2 0.2 0.2 0.0"/>
|
||||||
|
</material>
|
||||||
|
|
||||||
|
<material name="silver">
|
||||||
|
<color rgba="${233/255} ${233/255} ${216/255} 1.0"/>
|
||||||
|
</material>
|
||||||
|
|
||||||
|
<material name="orange">
|
||||||
|
<color rgba="${255/255} ${108/255} ${10/255} 1.0"/>
|
||||||
|
</material>
|
||||||
|
|
||||||
|
<material name="brown">
|
||||||
|
<color rgba="${222/255} ${207/255} ${195/255} 1.0"/>
|
||||||
|
</material>
|
||||||
|
|
||||||
|
<material name="red">
|
||||||
|
<color rgba="0.8 0.0 0.0 1.0"/>
|
||||||
|
</material>
|
||||||
|
|
||||||
|
<material name="white">
|
||||||
|
<color rgba="1.0 1.0 1.0 1.0"/>
|
||||||
|
</material>
|
||||||
|
|
||||||
|
</robot>
|
|
@ -0,0 +1,469 @@
|
||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!-- =================================================================================== -->
|
||||||
|
<!-- | This document was autogenerated by xacro from robot.xacro | -->
|
||||||
|
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
|
||||||
|
<!-- =================================================================================== -->
|
||||||
|
<robot name="go2">
|
||||||
|
<material name="black">
|
||||||
|
<color rgba="0.0 0.0 0.0 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>
|
||||||
|
<material name="grey">
|
||||||
|
<color rgba="0.2 0.2 0.2 0.0"/>
|
||||||
|
</material>
|
||||||
|
<material name="silver">
|
||||||
|
<color rgba="0.9137254901960784 0.9137254901960784 0.8470588235294118 1.0"/>
|
||||||
|
</material>
|
||||||
|
<material name="orange">
|
||||||
|
<color rgba="1.0 0.4235294117647059 0.0392156862745098 1.0"/>
|
||||||
|
</material>
|
||||||
|
<material name="brown">
|
||||||
|
<color rgba="0.8705882352941177 0.8117647058823529 0.7647058823529411 1.0"/>
|
||||||
|
</material>
|
||||||
|
<material name="red">
|
||||||
|
<color rgba="0.8 0.0 0.0 1.0"/>
|
||||||
|
</material>
|
||||||
|
<material name="white">
|
||||||
|
<color rgba="1.0 1.0 1.0 1.0"/>
|
||||||
|
</material>
|
||||||
|
|
||||||
|
<link name="base">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.001 0.001 0.001"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
</link>
|
||||||
|
<joint name="floating_base" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<parent link="base"/>
|
||||||
|
<child link="trunk"/>
|
||||||
|
</joint>
|
||||||
|
<link name="trunk">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.3762 0.0935 0.114"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.021112 0.0 -0.005366"/>
|
||||||
|
<mass value="6.921"/>
|
||||||
|
<inertia ixx="0.02448" ixy="0.00012166" ixz="0.0014849" iyy="0.098077" iyz="-3.12e-05" izz="0.107"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="imu_joint" type="fixed">
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="imu_link"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
<link name="imu_link">
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.001"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<inertia ixx="0.0001" ixy="0" ixz="0" iyy="0.0001" iyz="0" izz="0.0001"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.001 0.001 0.001"/>
|
||||||
|
</geometry>
|
||||||
|
<!-- <material name="red"/> -->
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".001 .001 .001"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<joint name="FR_hip_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0.1934 -0.0465 0"/>
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="FR_hip"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="23.7" lower="-1.0472" upper="1.0472" velocity="30.1"/>
|
||||||
|
</joint>
|
||||||
|
<link name="FR_hip">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="3.141592653589793 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="1.5707963267948966 0 0" xyz="0 -0.0955 0"/>
|
||||||
|
<geometry>
|
||||||
|
<cylinder length="0.04" radius="0.046"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.0054 -0.00194 -0.000105"/>
|
||||||
|
<mass value="0.678"/>
|
||||||
|
<inertia ixx="0.00048" ixy="3.01e-06" ixz="1.11e-06" iyy="0.000884" iyz="1.42e-06" izz="0.000596"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="FR_thigh_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 -0.0955 0"/>
|
||||||
|
<parent link="FR_hip"/>
|
||||||
|
<child link="FR_thigh"/>
|
||||||
|
<axis xyz="0 1 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="23.7" lower="-1.5708" upper="3.4907" velocity="30.1"/>
|
||||||
|
</joint>
|
||||||
|
<link name="FR_thigh">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.213 0.0245 0.034"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.00374 0.0223 -0.0327"/>
|
||||||
|
<mass value="1.152"/>
|
||||||
|
<inertia ixx="0.00584" ixy="-8.72e-05" ixz="-0.000289" iyy="0.0058" iyz="-0.000808" izz="0.00103"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="FR_calf_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 -0.213"/>
|
||||||
|
<parent link="FR_thigh"/>
|
||||||
|
<child link="FR_calf"/>
|
||||||
|
<axis xyz="0 1 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="35.55" lower="-2.7227" upper="-0.83776" velocity="20.06"/>
|
||||||
|
</joint>
|
||||||
|
<link name="FR_calf">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.213 0.016 0.016"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.00548 -0.000975 -0.115"/>
|
||||||
|
<mass value="0.154"/>
|
||||||
|
<inertia ixx="0.00108" ixy="3.4e-07" ixz="1.72e-05" iyy="0.0011" iyz="8.28e-06" izz="3.29e-05"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="FR_foot_fixed" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 -0.213"/>
|
||||||
|
<parent link="FR_calf"/>
|
||||||
|
<child link="FR_foot"/>
|
||||||
|
</joint>
|
||||||
|
<link name="FR_foot">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<sphere radius="0.01"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<sphere radius="0.02"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.06"/>
|
||||||
|
<inertia ixx="9.600000000000001e-06" ixy="0.0" ixz="0.0" iyy="9.600000000000001e-06" iyz="0.0" izz="9.600000000000001e-06"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="FL_hip_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0.1934 0.0465 0"/>
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="FL_hip"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="23.7" lower="-1.0472" upper="1.0472" velocity="30.1"/>
|
||||||
|
</joint>
|
||||||
|
<link name="FL_hip">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="1.5707963267948966 0 0" xyz="0 0.0955 0"/>
|
||||||
|
<geometry>
|
||||||
|
<cylinder length="0.04" radius="0.046"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.0054 0.00194 -0.000105"/>
|
||||||
|
<mass value="0.678"/>
|
||||||
|
<inertia ixx="0.00048" ixy="-3.01e-06" ixz="1.11e-06" iyy="0.000884" iyz="-1.42e-06" izz="0.000596"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="FL_thigh_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.0955 0"/>
|
||||||
|
<parent link="FL_hip"/>
|
||||||
|
<child link="FL_thigh"/>
|
||||||
|
<axis xyz="0 1 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="23.7" lower="-1.5708" upper="3.4907" velocity="30.1"/>
|
||||||
|
</joint>
|
||||||
|
<link name="FL_thigh">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.213 0.0245 0.034"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.00374 -0.0223 -0.0327"/>
|
||||||
|
<mass value="1.152"/>
|
||||||
|
<inertia ixx="0.00584" ixy="8.72e-05" ixz="-0.000289" iyy="0.0058" iyz="0.000808" izz="0.00103"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="FL_calf_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 -0.213"/>
|
||||||
|
<parent link="FL_thigh"/>
|
||||||
|
<child link="FL_calf"/>
|
||||||
|
<axis xyz="0 1 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="35.55" lower="-2.7227" upper="-0.83776" velocity="20.06"/>
|
||||||
|
</joint>
|
||||||
|
<link name="FL_calf">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.213 0.016 0.016"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.00548 -0.000975 -0.115"/>
|
||||||
|
<mass value="0.154"/>
|
||||||
|
<inertia ixx="0.00108" ixy="3.4e-07" ixz="1.72e-05" iyy="0.0011" iyz="8.28e-06" izz="3.29e-05"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="FL_foot_fixed" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 -0.213"/>
|
||||||
|
<parent link="FL_calf"/>
|
||||||
|
<child link="FL_foot"/>
|
||||||
|
</joint>
|
||||||
|
<link name="FL_foot">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<sphere radius="0.01"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<sphere radius="0.02"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.06"/>
|
||||||
|
<inertia ixx="9.600000000000001e-06" ixy="0.0" ixz="0.0" iyy="9.600000000000001e-06" iyz="0.0" izz="9.600000000000001e-06"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="RR_hip_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="-0.1934 -0.0465 0"/>
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="RR_hip"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="23.7" lower="-1.0472" upper="1.0472" velocity="30.1"/>
|
||||||
|
</joint>
|
||||||
|
<link name="RR_hip">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="3.141592653589793 3.141592653589793 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="1.5707963267948966 0 0" xyz="0 -0.0955 0"/>
|
||||||
|
<geometry>
|
||||||
|
<cylinder length="0.04" radius="0.046"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.0054 -0.00194 -0.000105"/>
|
||||||
|
<mass value="0.678"/>
|
||||||
|
<inertia ixx="0.00048" ixy="-3.01e-06" ixz="-1.11e-06" iyy="0.000884" iyz="1.42e-06" izz="0.000596"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="RR_thigh_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 -0.0955 0"/>
|
||||||
|
<parent link="RR_hip"/>
|
||||||
|
<child link="RR_thigh"/>
|
||||||
|
<axis xyz="0 1 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="23.7" lower="-1.5708" upper="3.4907" velocity="30.1"/>
|
||||||
|
</joint>
|
||||||
|
<link name="RR_thigh">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.213 0.0245 0.034"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.00374 0.0223 -0.0327"/>
|
||||||
|
<mass value="1.152"/>
|
||||||
|
<inertia ixx="0.00584" ixy="-8.72e-05" ixz="-0.000289" iyy="0.0058" iyz="-0.000808" izz="0.00103"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="RR_calf_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 -0.213"/>
|
||||||
|
<parent link="RR_thigh"/>
|
||||||
|
<child link="RR_calf"/>
|
||||||
|
<axis xyz="0 1 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="35.55" lower="-2.7227" upper="-0.83776" velocity="20.06"/>
|
||||||
|
</joint>
|
||||||
|
<link name="RR_calf">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.213 0.016 0.016"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.00548 -0.000975 -0.115"/>
|
||||||
|
<mass value="0.154"/>
|
||||||
|
<inertia ixx="0.00108" ixy="3.4e-07" ixz="1.72e-05" iyy="0.0011" iyz="8.28e-06" izz="3.29e-05"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="RR_foot_fixed" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 -0.213"/>
|
||||||
|
<parent link="RR_calf"/>
|
||||||
|
<child link="RR_foot"/>
|
||||||
|
</joint>
|
||||||
|
<link name="RR_foot">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<sphere radius="0.01"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<sphere radius="0.02"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.06"/>
|
||||||
|
<inertia ixx="9.600000000000001e-06" ixy="0.0" ixz="0.0" iyy="9.600000000000001e-06" iyz="0.0" izz="9.600000000000001e-06"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="RL_hip_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="-0.1934 0.0465 0"/>
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="RL_hip"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="23.7" lower="-1.0472" upper="1.0472" velocity="30.1"/>
|
||||||
|
</joint>
|
||||||
|
<link name="RL_hip">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 3.141592653589793 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="1.5707963267948966 0 0" xyz="0 0.0955 0"/>
|
||||||
|
<geometry>
|
||||||
|
<cylinder length="0.04" radius="0.046"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.0054 0.00194 -0.000105"/>
|
||||||
|
<mass value="0.678"/>
|
||||||
|
<inertia ixx="0.00048" ixy="3.01e-06" ixz="-1.11e-06" iyy="0.000884" iyz="-1.42e-06" izz="0.000596"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="RL_thigh_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.0955 0"/>
|
||||||
|
<parent link="RL_hip"/>
|
||||||
|
<child link="RL_thigh"/>
|
||||||
|
<axis xyz="0 1 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="23.7" lower="-1.5708" upper="3.4907" velocity="30.1"/>
|
||||||
|
</joint>
|
||||||
|
<link name="RL_thigh">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.213 0.0245 0.034"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.00374 -0.0223 -0.0327"/>
|
||||||
|
<mass value="1.152"/>
|
||||||
|
<inertia ixx="0.00584" ixy="8.72e-05" ixz="-0.000289" iyy="0.0058" iyz="0.000808" izz="0.00103"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="RL_calf_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 -0.213"/>
|
||||||
|
<parent link="RL_thigh"/>
|
||||||
|
<child link="RL_calf"/>
|
||||||
|
<axis xyz="0 1 0"/>
|
||||||
|
<dynamics damping="0.01" friction="0.2"/>
|
||||||
|
<limit effort="35.55" lower="-2.7227" upper="-0.83776" velocity="20.06"/>
|
||||||
|
</joint>
|
||||||
|
<link name="RL_calf">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.213 0.016 0.016"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.00548 -0.000975 -0.115"/>
|
||||||
|
<mass value="0.154"/>
|
||||||
|
<inertia ixx="0.00108" ixy="3.4e-07" ixz="1.72e-05" iyy="0.0011" iyz="8.28e-06" izz="3.29e-05"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="RL_foot_fixed" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 -0.213"/>
|
||||||
|
<parent link="RL_calf"/>
|
||||||
|
<child link="RL_foot"/>
|
||||||
|
</joint>
|
||||||
|
<link name="RL_foot">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<sphere radius="0.02"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.06"/>
|
||||||
|
<inertia ixx="9.600000000000001e-06" ixy="0.0" ixz="0.0" iyy="9.600000000000001e-06" iyz="0.0" izz="9.600000000000001e-06"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
</robot>
|
|
@ -0,0 +1,125 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<robot name="go2" xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||||
|
|
||||||
|
<xacro:arg name="DEBUG" default="false"/>
|
||||||
|
|
||||||
|
<xacro:include filename="$(find go2_description)/xacro/const.xacro"/>
|
||||||
|
<xacro:include filename="$(find go2_description)/xacro/materials.xacro"/>
|
||||||
|
<xacro:include filename="$(find go2_description)/xacro/leg.xacro"/>
|
||||||
|
<!-- <xacro:include filename="$(find go2_description)/xacro/stairs.xacro"/> -->
|
||||||
|
<xacro:include filename="$(find go2_description)/xacro/gazebo.xacro"/>
|
||||||
|
<!-- <xacro:include filename="$(find go2_gazebo)/launch/stairs.urdf.xacro"/> -->
|
||||||
|
|
||||||
|
<!-- <xacro:stairs stairs="15" xpos="0" ypos="0" zpos="0" /> -->
|
||||||
|
|
||||||
|
<!-- Rotor related joint and link is only for demonstrate location. -->
|
||||||
|
<!-- Actually, the rotor will rotate and the joint is not fixed. Reduction ratio should be considered. -->
|
||||||
|
|
||||||
|
<!-- Debug mode will hung up the robot, use "true" or "false" to switch it. -->
|
||||||
|
<xacro:if value="$(arg DEBUG)">
|
||||||
|
<link name="world"/>
|
||||||
|
<joint name="base_static_joint" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<parent link="world"/>
|
||||||
|
<child link="base"/>
|
||||||
|
</joint>
|
||||||
|
</xacro:if>
|
||||||
|
|
||||||
|
<link name="base">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.001 0.001 0.001"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="floating_base" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<parent link="base"/>
|
||||||
|
<child link="trunk"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name="trunk">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://go2_description/meshes/trunk.dae" scale="1 1 1"/>
|
||||||
|
</geometry>
|
||||||
|
<!-- <material name="orange"/> -->
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="${trunk_length} ${trunk_width} ${trunk_height}"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="${trunk_com_x} ${trunk_com_y} ${trunk_com_z}"/>
|
||||||
|
<mass value="${trunk_mass}"/>
|
||||||
|
<inertia
|
||||||
|
ixx="${trunk_ixx}" ixy="${trunk_ixy}" ixz="${trunk_ixz}"
|
||||||
|
iyy="${trunk_iyy}" iyz="${trunk_iyz}"
|
||||||
|
izz="${trunk_izz}"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="imu_joint" type="fixed">
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="imu_link"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name="imu_link">
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.001"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<inertia ixx="0.0001" ixy="0" ixz="0" iyy="0.0001" iyz="0" izz="0.0001"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.001 0.001 0.001"/>
|
||||||
|
</geometry>
|
||||||
|
<!-- <material name="red"/> -->
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".001 .001 .001"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!--
|
||||||
|
<joint name="load_joint" type="fixed">
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="load_link"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name="load_link">
|
||||||
|
<inertial>
|
||||||
|
<mass value="5"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0.2"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.5 0.3 0.2"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".001 .001 .001"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
-->
|
||||||
|
<xacro:leg name="FR" mirror="-1" mirror_dae= "False" front_hind="1" front_hind_dae="True" />
|
||||||
|
<xacro:leg name="FL" mirror="1" mirror_dae="True" front_hind="1" front_hind_dae="True" />
|
||||||
|
<xacro:leg name="RR" mirror="-1" mirror_dae="False" front_hind="-1" front_hind_dae="False" />
|
||||||
|
<xacro:leg name="RL" mirror="1" mirror_dae="True" front_hind="-1" front_hind_dae="False" />
|
||||||
|
</robot>
|
|
@ -0,0 +1,147 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<robot name="go2" xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||||
|
|
||||||
|
<xacro:arg name="DEBUG" default="false"/>
|
||||||
|
|
||||||
|
<xacro:include filename="$(find go2_description)/xacro/const.xacro"/>
|
||||||
|
<xacro:include filename="$(find go2_description)/xacro/materials.xacro"/>
|
||||||
|
<xacro:include filename="$(find go2_description)/xacro/leg.xacro"/>
|
||||||
|
<!-- <xacro:include filename="$(find go2_description)/xacro/stairs.xacro"/> -->
|
||||||
|
<xacro:include filename="$(find go2_description)/xacro/gazebo.xacro"/>
|
||||||
|
<!-- <xacro:include filename="$(find go2_gazebo)/launch/stairs.urdf.xacro"/> -->
|
||||||
|
|
||||||
|
<!-- <xacro:stairs stairs="15" xpos="0" ypos="0" zpos="0" /> -->
|
||||||
|
|
||||||
|
<!-- Rotor related joint and link is only for demonstrate location. -->
|
||||||
|
<!-- Actually, the rotor will rotate and the joint is not fixed. Reduction ratio should be considered. -->
|
||||||
|
|
||||||
|
<!-- Debug mode will hung up the robot, use "true" or "false" to switch it. -->
|
||||||
|
<xacro:if value="$(arg DEBUG)">
|
||||||
|
<link name="world"/>
|
||||||
|
<joint name="base_static_joint" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<parent link="world"/>
|
||||||
|
<child link="base"/>
|
||||||
|
</joint>
|
||||||
|
</xacro:if>
|
||||||
|
|
||||||
|
<link name="base">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.001 0.001 0.001"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="floating_base" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<parent link="base"/>
|
||||||
|
<child link="trunk"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name="trunk">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://go2_description/meshes/trunk.dae" scale="1 1 1"/>
|
||||||
|
</geometry>
|
||||||
|
<!-- <material name="orange"/> -->
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="${trunk_length} ${trunk_width} ${trunk_height}"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="${trunk_com_x} ${trunk_com_y} ${trunk_com_z}"/>
|
||||||
|
<mass value="${trunk_mass}"/>
|
||||||
|
<inertia
|
||||||
|
ixx="${trunk_ixx}" ixy="${trunk_ixy}" ixz="${trunk_ixz}"
|
||||||
|
iyy="${trunk_iyy}" iyz="${trunk_iyz}"
|
||||||
|
izz="${trunk_izz}"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="imu_joint" type="fixed">
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="imu_link"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name="imu_link">
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.001"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<inertia ixx="0.0001" ixy="0" ixz="0" iyy="0.0001" iyz="0" izz="0.0001"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.001 0.001 0.001"/>
|
||||||
|
</geometry>
|
||||||
|
<!-- <material name="red"/> -->
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".001 .001 .001"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<link name="virtual_arm">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="1.0 0.0 0.0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://go2_description/meshes/virtual_arm.dae"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="red">
|
||||||
|
<color rgba="1. 0. 0. 0.5"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="virtual_arm_joint" type="revolute">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="virtual_arm"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<dynamics damping="0" friction="0"/>
|
||||||
|
<limit effort="100.0" lower="-3.1416" upper="3.1416" velocity="20.0"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<joint name="load_joint" type="fixed">
|
||||||
|
<parent link="trunk"/>
|
||||||
|
<child link="load_link"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name="load_link">
|
||||||
|
<inertial>
|
||||||
|
<mass value="5"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0.2"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.5 0.3 0.2"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".001 .001 .001"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
-->
|
||||||
|
<xacro:leg name="FR" mirror="-1" mirror_dae= "False" front_hind="1" front_hind_dae="True" />
|
||||||
|
<xacro:leg name="FL" mirror="1" mirror_dae="True" front_hind="1" front_hind_dae="True" />
|
||||||
|
<xacro:leg name="RR" mirror="-1" mirror_dae="False" front_hind="-1" front_hind_dae="False" />
|
||||||
|
<xacro:leg name="RL" mirror="1" mirror_dae="True" front_hind="-1" front_hind_dae="False" />
|
||||||
|
</robot>
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||||
|
|
||||||
|
<xacro:macro name="leg_transmission" params="name">
|
||||||
|
|
||||||
|
<transmission name="${name}_hip_tran">
|
||||||
|
<type>transmission_interface/SimpleTransmission</type>
|
||||||
|
<joint name="${name}_hip_joint">
|
||||||
|
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||||
|
</joint>
|
||||||
|
<actuator name="${name}_hip_motor">
|
||||||
|
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||||
|
<mechanicalReduction>1</mechanicalReduction>
|
||||||
|
</actuator>
|
||||||
|
</transmission>
|
||||||
|
|
||||||
|
<transmission name="${name}_thigh_tran">
|
||||||
|
<type>transmission_interface/SimpleTransmission</type>
|
||||||
|
<joint name="${name}_thigh_joint">
|
||||||
|
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||||
|
</joint>
|
||||||
|
<actuator name="${name}_thigh_motor">
|
||||||
|
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||||
|
<mechanicalReduction>1</mechanicalReduction>
|
||||||
|
</actuator>
|
||||||
|
</transmission>
|
||||||
|
|
||||||
|
<transmission name="${name}_calf_tran">
|
||||||
|
<type>transmission_interface/SimpleTransmission</type>
|
||||||
|
<joint name="${name}_calf_joint">
|
||||||
|
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||||
|
</joint>
|
||||||
|
<actuator name="${name}_calf_motor">
|
||||||
|
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
|
||||||
|
<mechanicalReduction>1</mechanicalReduction>
|
||||||
|
</actuator>
|
||||||
|
</transmission>
|
||||||
|
|
||||||
|
</xacro:macro>
|
||||||
|
|
||||||
|
</robot>
|
|
@ -1,7 +1,7 @@
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=ROS2 device driver container
|
Description=ROS2 device driver container
|
||||||
Requires=docker.service
|
Requires=multi-user.target
|
||||||
After=docker.service
|
After=multi-user.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=ROS2 device driver container
|
Description=ROS2 device driver container
|
||||||
Requires=docker.service
|
Requires=multi-user.target
|
||||||
After=docker.service
|
After=multi-user.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
Loading…
Reference in New Issue