-
Notifications
You must be signed in to change notification settings - Fork 47
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
33 changed files
with
929 additions
and
425 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,162 @@ | ||
mvsim ROS node | ||
Use from ROS | ||
=================== | ||
|
||
This page describes the ROS 1 and ROS 2 node for MVSim, which | ||
is an executable named `mvsim_node` that is shipped with the | ||
ROS package named `mvsim`. | ||
MVSim comes with a ROS 1 and ROS 2 **node** (an executable named `mvsim_node`), | ||
which is shipped with the **ROS package** named `mvsim`. | ||
|
||
.. note:: | ||
You can also use the cli application ``mvsim`` if you want to test or run your world without launching a whole ROS system. | ||
See :ref:`mvsim cli`. | ||
|
||
|
||
Generic launch file | ||
------------------------- | ||
This launch file can be used to launch a simulated world integrated with ROS from the command line, | ||
or can be also included into your own launch file by setting its **ROS launch arguments**. | ||
|
||
Write me! | ||
| | ||
Basic usage from the command line | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
.. tab-set:: | ||
.. tab-item:: ROS 1 | ||
|
||
.. code-block:: bash | ||
roslaunch mvsim launch_world.launch \ | ||
world_file:=/path/to/your/my.world.xml \ | ||
headless:=True | ||
.. tab-item:: ROS 2 | ||
:selected: | ||
|
||
.. code-block:: bash | ||
ros2 launch mvsim launch_world.launch.py \ | ||
world_file:=/path/to/your/my.world.xml \ | ||
headless:=True | ||
| | ||
All launch parameters | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
All these parameters apply to both, ROS 1 and ROS 2 launch files above: | ||
|
||
.. code-block:: bash | ||
$ ros2 launch mvsim launch_world.launch.py --show-args | ||
Arguments (pass arguments as '<name>:=<value>'): | ||
'world_file': | ||
Path to the *.world.xml file to load | ||
'headless': | ||
no description given | ||
(default: 'False') | ||
'do_fake_localization': | ||
publish fake identity tf "map" -> "odom" | ||
(default: 'True') | ||
'publish_tf_odom2baselink': | ||
publish tf "odom" -> "base_link" | ||
(default: 'True') | ||
'force_publish_vehicle_namespace': | ||
Use vehicle name namespace even if there is only one vehicle | ||
(default: 'False') | ||
'use_rviz': | ||
Whether to launch RViz2 | ||
(default: 'True') | ||
'rviz_config_file': | ||
If use_rviz:="True", the configuration file for rviz | ||
(default: '') | ||
| | ||
How to include it into your own launch | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
You can use this code to bootstrap your own launch files: | ||
.. tab-set:: | ||
.. tab-item:: ROS 1 | ||
.. code-block:: xml | ||
<launch> | ||
<!-- Arguments --> | ||
<arg name="world_file" default="$(find my_package)/mvsim/demo.world.xml" /> | ||
<arg name="headless" default="False" /> | ||
<arg name="do_fake_localization" default="True" /> | ||
<arg name="publish_tf_odom2baselink" default="True" /> | ||
<arg name="force_publish_vehicle_namespace" default="False" /> | ||
<arg name="use_rviz" default="True" /> | ||
<arg name="rviz_config_file" default="$(find mvsim)/mvsim_tutorial/demo_depth_camera.rviz" /> | ||
<!-- Include the original launch file --> | ||
<include file="$(find mvsim)/launch/launch_world.launch"> | ||
<arg name="world_file" value="$(arg world_file)" /> | ||
<arg name="headless" value="$(arg headless)" /> | ||
<arg name="do_fake_localization" value="$(arg do_fake_localization)" /> | ||
<arg name="publish_tf_odom2baselink" value="$(arg publish_tf_odom2baselink)" /> | ||
<arg name="force_publish_vehicle_namespace" value="$(arg force_publish_vehicle_namespace)" /> | ||
<arg name="use_rviz" value="$(arg use_rviz)" /> | ||
<arg name="rviz_config_file" value="$(arg rviz_config_file)" /> | ||
</include> | ||
</launch> | ||
.. tab-item:: ROS 2 | ||
:selected: | ||
.. code-block:: python | ||
import os | ||
from launch import LaunchDescription | ||
from launch.actions import IncludeLaunchDescription | ||
from launch.substitutions import LaunchConfiguration | ||
from launch.launch_description_sources import PythonLaunchDescriptionSource | ||
from ament_index_python.packages import get_package_share_directory | ||
def generate_launch_description(): | ||
# *** REMEMBER: Change this to your actual world file *** | ||
world_file = os.path.join( | ||
get_package_share_directory('my_package'), 'mvsim', 'demo.world.xml') | ||
# and replace this RViz file with yours as needed: | ||
rviz_config_file = os.path.join( | ||
get_package_share_directory('mvsim'), 'mvsim_tutorial', 'demo_depth_camera_ros2.rviz') | ||
headless = 'False' | ||
do_fake_localization = 'True' | ||
publish_tf_odom2baselink = 'True' | ||
force_publish_vehicle_namespace = 'False' | ||
use_rviz = 'True' | ||
# Create LaunchDescription | ||
ld = LaunchDescription() | ||
# Add actions to LaunchDescription | ||
ld.add_action(IncludeLaunchDescription( | ||
PythonLaunchDescriptionSource( | ||
os.path.join(get_package_share_directory('mvsim'), 'launch', 'launch_world.launch.py') | ||
), | ||
launch_arguments={ | ||
'world_file': world_file, | ||
'headless': headless, | ||
'do_fake_localization': do_fake_localization, | ||
'publish_tf_odom2baselink': publish_tf_odom2baselink, | ||
'force_publish_vehicle_namespace': force_publish_vehicle_namespace, | ||
'use_rviz': use_rviz, | ||
'rviz_config_file': rviz_config_file | ||
}.items() | ||
)) | ||
return ld | ||
| |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<!-- Generic ROS1 launch file --> | ||
<!-- Read: https://mvsimulator.readthedocs.io/en/latest/mvsim_node.html --> | ||
|
||
<launch> | ||
<!-- Arguments --> | ||
<arg name="world_file" /> | ||
<arg name="headless" default="False" /> | ||
<arg name="do_fake_localization" default="True" /> | ||
<arg name="publish_tf_odom2baselink" default="True" /> | ||
<arg name="force_publish_vehicle_namespace" default="False" /> | ||
<arg name="use_rviz" default="True" /> | ||
<arg name="rviz_config_file" default="$(find mvsim)/mvsim_tutorial/demo_depth_camera.rviz" /> | ||
|
||
<!-- mvsim Node --> | ||
<node pkg="mvsim" type="mvsim_node" name="mvsim" output="screen"> | ||
<param name="world_file" value="$(arg world_file)"/> | ||
<param name="headless" value="$(arg headless)"/> | ||
<param name="do_fake_localization" value="$(arg do_fake_localization)"/> | ||
<param name="publish_tf_odom2baselink" value="$(arg publish_tf_odom2baselink)"/> | ||
<param name="force_publish_vehicle_namespace" value="$(arg force_publish_vehicle_namespace)"/> | ||
</node> | ||
|
||
<!-- RViz Node (conditional launch based on use_rviz argument) --> | ||
<group if="$(arg use_rviz)"> | ||
<node pkg="rviz" type="rviz" name="rviz" args="-d $(arg rviz_config_file)"/> | ||
</group> | ||
</launch> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
# Generic ROS2 launch file | ||
# Read: https://mvsimulator.readthedocs.io/en/latest/mvsim_node.html | ||
|
||
from launch import LaunchDescription | ||
from launch.substitutions import LaunchConfiguration | ||
from launch_ros.actions import Node | ||
from launch.actions import DeclareLaunchArgument | ||
from launch.conditions import IfCondition | ||
import os | ||
|
||
|
||
def generate_launch_description(): | ||
|
||
# args that can be set from the command line or a default will be used | ||
world_file_launch_arg = DeclareLaunchArgument( | ||
"world_file", description='Path to the *.world.xml file to load') | ||
|
||
headless_launch_arg = DeclareLaunchArgument( | ||
"headless", default_value='False') | ||
|
||
do_fake_localization_arg = DeclareLaunchArgument( | ||
"do_fake_localization", default_value='True', description='publish fake identity tf "map" -> "odom"') | ||
|
||
publish_tf_odom2baselink_arg = DeclareLaunchArgument( | ||
"publish_tf_odom2baselink", default_value='True', description='publish tf "odom" -> "base_link"') | ||
|
||
force_publish_vehicle_namespace_arg = DeclareLaunchArgument( | ||
"force_publish_vehicle_namespace", default_value='False', | ||
description='Use vehicle name namespace even if there is only one vehicle') | ||
|
||
use_rviz_arg = DeclareLaunchArgument( | ||
'use_rviz', default_value='True', | ||
description='Whether to launch RViz2' | ||
) | ||
|
||
rviz_config_file_arg = DeclareLaunchArgument( | ||
'rviz_config_file', default_value='', | ||
description='If use_rviz:="True", the configuration file for rviz' | ||
) | ||
|
||
mvsim_node = Node( | ||
package='mvsim', | ||
executable='mvsim_node', | ||
name='mvsim', | ||
output='screen', | ||
parameters=[ | ||
{ | ||
"world_file": LaunchConfiguration('world_file'), | ||
"headless": LaunchConfiguration('headless'), | ||
"do_fake_localization": LaunchConfiguration('do_fake_localization'), | ||
"publish_tf_odom2baselink": LaunchConfiguration('publish_tf_odom2baselink'), | ||
"force_publish_vehicle_namespace": LaunchConfiguration('force_publish_vehicle_namespace'), | ||
}] | ||
) | ||
|
||
rviz2_node = Node( | ||
condition=IfCondition(LaunchConfiguration('use_rviz')), | ||
package='rviz2', | ||
executable='rviz2', | ||
name='rviz2', | ||
arguments=[] if LaunchConfiguration('rviz_config_file') == '' else [ | ||
'-d', LaunchConfiguration('rviz_config_file')] | ||
) | ||
|
||
return LaunchDescription([ | ||
world_file_launch_arg, | ||
headless_launch_arg, | ||
do_fake_localization_arg, | ||
publish_tf_odom2baselink_arg, | ||
force_publish_vehicle_namespace_arg, | ||
use_rviz_arg, | ||
rviz_config_file_arg, | ||
mvsim_node, | ||
rviz2_node | ||
]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.