Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated robot urdf files to replace rexrov #1

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions launch/upload_rexrov.launch → launch/upload_sub.launch
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
<arg name="yaw" default="0.0"/>

<arg name="mode" default="default"/>
<arg name="namespace" default="rexrov"/>
<arg name="namespace" default="sub"/>
<arg name="use_ned_frame" default="false"/>
<!-- <arg name="use_sim_time" default="true"/> -->

<include file="$(find-pkg-share uuv_descriptions)/launch/upload_rexrov_$(var mode).launch.py">
<include file="$(find-pkg-share sub_descriptions)/launch/upload_$(var namespace)_$(var mode).launch">
<arg name="debug" value="$(var debug)"/>
<arg name="x" value="$(var x)"/>
<arg name="y" value="$(var y)"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@
<arg name="yaw" default="0.0"/>

<arg name="mode" default="default"/>
<arg name="namespace" default="rexrov"/>
<arg name="namespace" default="sub"/>
<arg name="use_ned_frame" default="false"/>
<arg name="generated_urdf" default="$(find-pkg-share uuv_descriptions)/robots/generated/$(var namespace)/robot_description"/>
<arg name="cmd" default= "$(exec-in-pkg xacro xacro) '$(find-pkg-share uuv_descriptions)/robots/rexrov_$(var mode).xacro'
> $(find-pkg-share uuv_descriptions)/robots/generated/$(var namespace)/robot_description
<arg name="generated_urdf" default="$(find-pkg-share sub_descriptions)/robots/generated/$(var namespace)/robot_description"/>
<arg name="cmd" default= "$(exec-in-pkg xacro xacro) '$(find-pkg-share sub_descriptions)/robots/$(var namespace)_$(var mode).xacro'
> $(find-pkg-share sub_descriptions)/robots/generated/$(var namespace)/robot_description
--inorder
debug:=$(var debug)
namespace:=$(var namespace)
inertial_reference_frame:=world_ned"/>
<arg name="cmdUnless" default="xacro '$(find-pkg-share uuv_descriptions)/robots/rexrov_$(var mode).xacro'
> $(find-pkg-share uuv_descriptions)/robots/generated/$(var namespace)/robot_description
<arg name="cmdUnless" default="$(exec-in-pkg xacro xacro) '$(find-pkg-share sub_descriptions)/robots/$(var namespace)_$(var mode).xacro'
> $(find-pkg-share sub_descriptions)/robots/generated/$(var namespace)/robot_description
debug:=$(var debug)
namespace:=$(var namespace)
inertial_reference_frame:=world"/>
Expand Down Expand Up @@ -49,9 +49,6 @@
</group>

<!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot -->
<!-- <node node-name="urdf_spawner" pkg="uuv_descriptions" exec="spawn_model" respawn="false" output="screen"
args="-urdf -x $(var x) -y $(var y) -z $(var z) -R $(var roll) -P $(var pitch) -Y $(var yaw) -model $(var namespace) -file /home/jp/ros2_ws/install/uuv_descriptions/share/uuv_descriptions/robots/generated/rexrov/robot_description"/> -->

<node node-name="urdf_spawner" pkg="gazebo_ros" exec="spawn_entity.py" respawn="false" output="screen"
args="-gazebo_namespace /gazebo -x $(var x) -y $(var y) -z $(var z) -R $(var roll) -P $(var pitch) -Y $(var yaw) -entity $(var namespace) -file $(var generated_urdf)"/>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@
<arg name="yaw" default="0.0"/>

<arg name="mode" default="default"/>
<arg name="namespace" default="rexrov"/>
<arg name="namespace" default="sub"/>
<arg name="pose_noise" default="0.02"/>
<arg name="world_frame" default="world"/> <!-- This should actually be "/world". See https://github.com/ros-simulation/gazebo_ros_pkgs/pull/324 -->

<arg name="generated_urdf" default="$(find-pkg-share uuv_descriptions)/robots/generated/$(var namespace)/robot_description"/>
<arg name="generated_urdf" default="$(find-pkg-share sub_descriptions)/robots/generated/$(var namespace)/robot_description"/>

<arg name="cmd" default="xacro '$(find-pkg-share uuv_descriptions)/robots/rexrov_default_noisy_pose.xacro.xacro'
> $(find-pkg-share uuv_descriptions)/robots/generated/$(var namespace)/robot_description
<arg name="cmd" default="xacro '$(find-pkg-share sub_descriptions)/robots/$(var namespace)_default_noisy_pose.xacro.xacro'
> $(find-pkg-share sub_descriptions)/robots/generated/$(var namespace)/robot_description
debug:=$(var debug)
namespace:=$(var namespace)
noise_amp:=$(var pose_noise)
Expand Down
73 changes: 73 additions & 0 deletions launch/upload_sub_imu.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<launch>
<arg name="debug" default="0"/>

<arg name="x" default="0"/>
<arg name="y" default="0"/>
<arg name="z" default="-10"/>
<arg name="roll" default="0.0"/>
<arg name="pitch" default="0.0"/>
<arg name="yaw" default="0.0"/>

<arg name="namespace" default="sub"/>
<arg name="use_ned_frame" default="false"/>
<arg name="generated_dir" default="$(find-pkg-share sub_descriptions)/robots/generated/$(var namespace)"/>
<arg name="generated_urdf" default="$(var generated_dir)/robot_description.urdf" />

<arg name="cmd" default= "mkdir -p $(var generated_dir) &amp;&amp; $(exec-in-pkg xacro xacro) '$(find-pkg-share sub_descriptions)/robots/$(var namespace)_imu.xacro'
> $(var generated_urdf)
--inorder
debug:=$(var debug)
namespace:=$(var namespace)
inertial_reference_frame:=world_ned"/>
<arg name="cmdUnless" default="mkdir -p $(var generated_dir) &amp;&amp; $(exec-in-pkg xacro xacro) $(find-pkg-share sub_descriptions)/robots/$(var namespace)_imu.xacro
> $(var generated_urdf)
debug:=$(var debug)
namespace:=$(var namespace)
inertial_reference_frame:=world"/>

<arg name="use_sim_time" default="true"/>


<group>
<push-ros-namespace namespace="$(var namespace)"/>
<group if="$(var use_ned_frame)">
<executable
cmd="$(var cmd)"
name="robot_description"
output="screen"
shell="true">
</executable>
</group>

<group unless="$(var use_ned_frame)">
<executable
cmd="$(var cmdUnless)"
cwd="$(find-pkg-prefix xacro)"
name="robot_description"
output="screen"
shell="true">
</executable>
</group>

<!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot -->
<node node-name="urdf_spawner" pkg="gazebo_ros" exec="spawn_entity.py" respawn="false" output="screen"
args="-gazebo_namespace /gazebo -x $(var x) -y $(var y) -z $(var z) -R $(var roll) -P $(var pitch) -Y $(var yaw) -entity $(var namespace) -file $(var generated_urdf)"/>

<!-- A joint state publisher plugin already is started with the model, no need to use the default joint state publisher -->

<!-- Publish robot model for ROS -->
<node node-name="robot_state_publisher" pkg="robot_state_publisher" exec="robot_state_publisher" respawn="true" output="screen"
args="$(var generated_urdf)">
<param name="use_sim_time" value="$(var use_sim_time)"/>
<param name="robot_description" value="/$(var namespace)/robot_description" />
<!-- <param name="publish_frequency" value="5" /> -->
</node>
</group>

<include file="$(find-pkg-share uuv_assistants)/launch/message_to_tf.launch">
<arg name="namespace" value="$(var namespace)"/>
<arg name="world_frame" value="world"/>
<arg name="child_frame_id" value="/$(var namespace)/base_link"/>
</include>

</launch>
63 changes: 63 additions & 0 deletions launch/upload_sub_imu.launch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
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 LaunchConfiguration
from launch_ros.actions import Node
import xacro


def generate_launch_description():
# Get the model to load
if 'SUB_MODEl' in os.environ:
model = os.environ['SUB_MODEL']
else:
model = 'sub_imu'
print('Using model: ' + model)

# Get the launch directory
br_description_dir = get_package_share_directory('sub_descriptions')

# Create the launch configuration variables
use_sim_time = LaunchConfiguration('use_sim_time', default='false')

declare_sim_time_cmd = DeclareLaunchArgument(
'use_sim_time',
default_value='false',
description='Use simulation (Gazebo) clock if true')

namespace = DeclareLaunchArgument('namespace', default_value='sub', description='node namespace of sub')
x_arg = DeclareLaunchArgument('x', default_value=0., description='x coordinate of sub')
y_arg = DeclareLaunchArgument('y', default_value=0., description='y coordinate of sub')
z_arg = DeclareLaunchArgument('z', default_value=0., description='z coordinate of sub')

xacro_file = os.path.join(br_description_dir, 'robots', model + '.xacro')
doc = xacro.process_file(xacro_file)
robot_desc = doc.toprettyxml(indent=' ')
URDF_FILE = '/tmp/sub.urdf'
with open(URDF_FILE, 'w') as f:
f.write(robot_desc)
params = {'use_sim_time': use_sim_time}

upload_gazebo_node = Node(
package='gazebo_ros',
node_executable='spawn_entity.py',
node_name='urdf_spawner',
output='screen',
arguments=[f"-gazebo_namespace /gazebo -x {LaunchConfiguration('x')} -y {LaunchConfiguration('x')} -z {LaunchConfiguration('x')} -entity {LaunchConfiguration('namespace')} -file {URDF_FILE}"]
)

run_state_publisher_node = Node(
package='robot_state_publisher',
node_executable='robot_state_publisher',
node_name='robot_state_publisher',
output='screen',
parameters=[params],
arguments=[URDF_FILE]
)

# Create the launch description and populate
ld = LaunchDescription([upload_gazebo_node, run_state_publisher_node, declare_sim_time_cmd, namespace, x_arg, y_arg, z_arg])

return ld
1 change: 1 addition & 0 deletions package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
<test_depend>xacro</test_depend>

<export>
<gazebo_ros gazebo_media_path="${prefix}" gazebo_model_path="${prefix}/robots" />
<build_type>ament_cmake</build_type>
</export>
</package>
16 changes: 8 additions & 8 deletions robots/rexrov_default.xacro → robots/sub_default.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@
limitations under the License.
-->

<robot name="rexrov" xmlns:xacro="http://www.ros.org/wiki/xacro" >
<robot name="sub" xmlns:xacro="http://www.ros.org/wiki/xacro" >
<xacro:arg name="debug" default="0"/>
<xacro:arg name="namespace" default="rexrov"/>
<xacro:arg name="namespace" default="sub"/>
<xacro:arg name="inertial_reference_frame" default="world"/>
<!-- Include the ROV macro file -->
<xacro:include filename="$(find uuv_descriptions)/urdf/rexrov_base.xacro"/>
<xacro:include filename="$(find uuv_descriptions)/urdf/rexrov.gazebo.xacro"/>
<xacro:include filename="$(find sub_descriptions)/urdf/sub_base.xacro"/>
<xacro:include filename="$(find sub_descriptions)/urdf/sub.gazebo.xacro"/>

<!-- Create the rexrov -->
<xacro:rexrov_base
<!-- Create the sub -->
<xacro:sub_base
namespace="$(arg namespace)"
inertial_reference_frame="$(arg inertial_reference_frame)">
<!-- The underwater object plugin is given as an input block parameter to
Expand All @@ -41,10 +41,10 @@
<flow_velocity_topic>hydrodynamics/current_velocity</flow_velocity_topic>
<debug>$(arg debug)</debug>
<!-- Adding the hydrodynamic and hydrostatic parameters for the vehicle-->
<xacro:rexrov_hydro_model namespace="$(arg namespace)"/>
<xacro:sub_hydro_model namespace="$(arg namespace)"/>
</plugin>
</gazebo>
</xacro:rexrov_base>
</xacro:sub_base>

<!-- Joint state publisher plugin -->
<xacro:default_joint_state_publisher namespace="$(arg namespace)" update_rate="50"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,18 @@
limitations under the License.
-->

<robot name="rexrov" xmlns:xacro="http://www.ros.org/wiki/xacro" >
<robot name="sub" xmlns:xacro="http://www.ros.org/wiki/xacro" >
<xacro:arg name="debug" default="0"/>
<xacro:arg name="namespace" default="rexrov"/>
<xacro:arg name="namespace" default="sub"/>
<xacro:arg name="noise_amp" default="0.02"/>
<xacro:arg name="noise_sigma" default="0.002"/>
<xacro:arg name="inertial_reference_frame" default="world"/>
<!-- Include the ROV macro file -->
<xacro:include filename="$(find uuv_descriptions)/urdf/rexrov_base.xacro"/>
<xacro:include filename="$(find uuv_descriptions)/urdf/rexrov.gazebo.xacro"/>
<xacro:include filename="$(find uuv_descriptions)/urdf/sub_base.xacro"/>
<xacro:include filename="$(find uuv_descriptions)/urdf/sub.gazebo.xacro"/>

<!-- Create the rexrov -->
<xacro:rexrov_base
<!-- Create the sub -->
<xacro:sub_base
namespace="$(arg namespace)"
inertial_reference_frame="$(arg inertial_reference_frame)">
<!-- The underwater object plugin is given as an input block parameter to
Expand All @@ -43,10 +43,10 @@
<flow_velocity_topic>hydrodynamics/current_velocity</flow_velocity_topic>
<debug>$(arg debug)</debug>
<!-- Adding the hydrodynamic and hydrostatic parameters for the vehicle-->
<xacro:rexrov_hydro_model namespace="$(arg namespace)"/>
<xacro:sub_hydro_model namespace="$(arg namespace)"/>
</plugin>
</gazebo>
</xacro:rexrov_base>
</xacro:sub_base>

<!-- Joint state publisher plugin -->
<xacro:default_joint_state_publisher namespace="$(arg namespace)" update_rate="50"/>
Expand Down
60 changes: 60 additions & 0 deletions robots/sub_imu.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?xml version="1.0"?>
<!-- Copyright (c) 2020 The Plankton Authors.
All rights reserved.

This source code is derived from UUV Simulator
(https://github.com/uuvsimulator/uuv_simulator)
Copyright (c) 2016-2019 The UUV Simulator Authors
licensed under the Apache license, Version 2.0
cf. 3rd-party-licenses.txt file in the root directory of this source tree.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<robot name="sub" xmlns:xacro="http://www.ros.org/wiki/xacro" >
<xacro:arg name="debug" default="0"/>
<xacro:arg name="namespace" default="sub"/>
<xacro:arg name="inertial_reference_frame" default="world"/>
<!-- Include the ROV macro file -->
<xacro:include filename="$(find sub_descriptions)/urdf/sub_base.xacro"/>
<xacro:include filename="$(find sub_descriptions)/urdf/sub.gazebo.xacro"/>

<!-- Create the sub -->
<xacro:sub_base
namespace="$(arg namespace)"
inertial_reference_frame="$(arg inertial_reference_frame)">
<!-- The underwater object plugin is given as an input block parameter to
allow the addition of external models of manipulator units -->
<gazebo>
<plugin name="$(arg namespace)_uuv_plugin" filename="libuuv_underwater_object_ros_plugin.so">
<fluid_density>1028.0</fluid_density>
<flow_velocity_topic>hydrodynamics/current_velocity</flow_velocity_topic>
<debug>$(arg debug)</debug>
<!-- Adding the hydrodynamic and hydrostatic parameters for the vehicle-->
<xacro:sub_hydro_model namespace="$(arg namespace)"/>
</plugin>
<plugin name="imu_plugin" filename="libgazebo_ros_imu.so">
<alwaysOn>true</alwaysOn>
<bodyName>base_footprint</bodyName>
<topicName>imu</topicName>
<serviceName>imu_service</serviceName>
<gaussianNoise>0.1</gaussianNoise>
<updateRate>20.0</updateRate>
</plugin>
</gazebo>
</xacro:sub_base>

<!-- Joint state publisher plugin -->
<xacro:default_joint_state_publisher namespace="$(arg namespace)" update_rate="50"/>

</robot>
2 changes: 1 addition & 1 deletion urdf/rexrov.gazebo.xacro → urdf/sub.gazebo.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
<!-- Volume, see p.31 in Berg2012 -->
<xacro:property name="volume" value="1.83826"/>

<xacro:macro name="rexrov_hydro_model" params="namespace">
<xacro:macro name="sub_hydro_model" params="namespace">
<link name="${namespace}/base_link">
<neutrally_buoyant>0</neutrally_buoyant>
<volume>${volume}</volume>
Expand Down
2 changes: 1 addition & 1 deletion urdf/rexrov_actuators.xacro → urdf/sub_actuators.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
-->
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">

<xacro:property name="prop_mesh_file" value="file://$(find uuv_descriptions)/meshes/prop.dae"/>
<xacro:property name="prop_mesh_file" value="file://$(find sub_descriptions)/meshes/prop.dae"/>

<!-- Thruster joint and link snippet -->
<xacro:macro name="thruster_macro"
Expand Down
Loading