diff --git a/mvsim_tutorial/demo_road_circuit1.launch.py b/mvsim_tutorial/demo_road_circuit1.launch.py new file mode 100644 index 0000000..b1d36f3 --- /dev/null +++ b/mvsim_tutorial/demo_road_circuit1.launch.py @@ -0,0 +1,93 @@ +# ROS2 launch file + +from launch import LaunchDescription +from launch.substitutions import TextSubstitution +from launch.substitutions import LaunchConfiguration +from launch_ros.actions import Node +from launch.actions import DeclareLaunchArgument +from ament_index_python import get_package_share_directory +from launch.conditions import IfCondition +import os + + +def generate_launch_description(): + mvsimDir = get_package_share_directory("mvsim") + # print('mvsimDir: ' + mvsimDir) + + # args that can be set from the command line or a default will be used + world_file_launch_arg = DeclareLaunchArgument( + "world_file", default_value=TextSubstitution( + text=os.path.join(mvsimDir, 'mvsim_tutorial', 'demo_road_circuit1.world.xml'))) + + headless_launch_arg = DeclareLaunchArgument( + "headless", default_value='False') + + do_fake_localization_arg = DeclareLaunchArgument( + "do_fake_localization", default_value='True', description='publish tf odom -> base_link') + + mvsim_node = Node( + package='mvsim', + executable='mvsim_node', + name='mvsim', + output='screen', + parameters=[ + os.path.join(mvsimDir, 'mvsim_tutorial', + 'mvsim_ros2_params.yaml'), + { + "world_file": LaunchConfiguration('world_file'), + "headless": LaunchConfiguration('headless'), + "do_fake_localization": LaunchConfiguration('do_fake_localization'), + }] + ) + + # rviz + use_rviz = LaunchConfiguration('use_rviz') + + declare_use_rviz_cmd = DeclareLaunchArgument( + 'use_rviz', + default_value='True', + description='Whether to start RVIZ') + + rviz2_nodes = [ + Node( + condition=IfCondition(use_rviz), + package='rviz2', + executable='rviz2', + name='rviz2', + # namespace=f"veh{idx}", + arguments=[ + '-d', [os.path.join(mvsimDir, 'mvsim_tutorial', 'demo_road_circuit1_ros2.rviz')]], + output='screen', + remappings=[ + ("/map", f"/r{idx}/map"), + ("/tf", f"/r{idx}/tf"), + ("/tf_static", f"/r{idx}/tf_static"), + ("/goal_pose", f"/r{idx}/goal_pose"), + ("/clicked_point", f"/r{idx}/clicked_point"), + ("/vehs/cmd_vel", f"/r{idx}/cmd_vel"), + ("/vehs/lidar1_points", f"/r{idx}/lidar1_points"), + ("/vehs/camera1/image_raw", f"/r{idx}/camera1/image_raw"), + ("/vehs/chassis_markers", f"/r{idx}/chassis_markers"), + ("/vehs/scanner1", f"/r{idx}/scanner1"), + ], + ) + for idx in range(1, 2) + ] + + rviz2_node = Node( + package='rviz2', + executable='rviz2', + name='rviz2', + arguments=[ + '-d', [os.path.join(mvsimDir, 'mvsim_tutorial', 'demo_warehouse_ros2.rviz')]] + ) + + return LaunchDescription([ + world_file_launch_arg, + declare_use_rviz_cmd, + headless_launch_arg, + do_fake_localization_arg, + mvsim_node + ] + + rviz2_nodes + ) diff --git a/mvsim_tutorial/demo_road_circuit1_ros2.rviz b/mvsim_tutorial/demo_road_circuit1_ros2.rviz new file mode 100644 index 0000000..983349a --- /dev/null +++ b/mvsim_tutorial/demo_road_circuit1_ros2.rviz @@ -0,0 +1,265 @@ +Panels: + - Class: rviz_common/Displays + Help Height: 101 + Name: Displays + Property Tree Widget: + Expanded: + - /Global Options1 + - /Status1 + Splitter Ratio: 0.5 + Tree Height: 339 + - Class: rviz_common/Selection + Name: Selection + - Class: rviz_common/Tool Properties + Expanded: + - /2D Goal Pose1 + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.5886790156364441 + - Class: rviz_common/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: rviz_plugin_tutorials/Teleop + Name: Teleop + Topic: /vehs/cmd_vel +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: + Value: true + - Class: rviz_default_plugins/TF + Enabled: true + Frame Timeout: 15 + Frames: + All Enabled: true + base_footprint: + Value: true + base_link: + Value: true + camera1: + Value: true + lidar1_points: + Value: true + map: + Value: true + odom: + Value: true + Marker Scale: 1 + Name: TF + Show Arrows: true + Show Axes: true + Show Names: false + Tree: + map: + odom: + base_link: + base_footprint: + {} + camera1: + {} + lidar1_points: + {} + Update Interval: 0 + Value: true + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 21.35959243774414 + Min Value: -0.0035123229026794434 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz_default_plugins/PointCloud2 + Color: 255; 255; 255 + Color Transformer: AxisColor + Decay Time: 0 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 4096 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: PointCloud2 + Position Transformer: XYZ + Selectable: true + Size (Pixels): 3 + Size (m): 0.10000000149011612 + Style: Flat Squares + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /vehs/lidar1_points + Use Fixed Frame: true + Use rainbow: true + Value: true + - Class: rviz_default_plugins/Image + Enabled: true + Max Value: 1 + Median window: 5 + Min Value: 0 + Name: Image + Normalize Range: true + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /vehs/camera1/image_raw + Value: true + - Class: rviz_default_plugins/MarkerArray + Enabled: true + Name: MarkerArray + Namespaces: + mvsim.chassis_shape: true + mvsim.chassis_shape.wheel0: true + mvsim.chassis_shape.wheel1: true + mvsim.chassis_shape.wheel2: true + mvsim.chassis_shape.wheel3: true + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /vehs/chassis_markers + Value: true + - 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/LaserScan + Color: 255; 255; 255 + Color Transformer: Intensity + Decay Time: 0 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 4096 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: LaserScan + Position Transformer: XYZ + Selectable: true + Size (Pixels): 5 + Size (m): 0.05000000074505806 + Style: Points + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /scanner1 + Use Fixed Frame: true + Use rainbow: true + Value: true + Enabled: true + Global Options: + Background Color: 48; 48; 48 + Fixed Frame: map + Frame Rate: 30 + Name: root + Tools: + - Class: rviz_default_plugins/Interact + Hide Inactive Objects: true + - Class: rviz_default_plugins/MoveCamera + - Class: rviz_default_plugins/Select + - Class: rviz_default_plugins/FocusCamera + - Class: rviz_default_plugins/Measure + Line color: 128; 128; 0 + - Class: rviz_default_plugins/SetInitialPose + Covariance x: 0.25 + Covariance y: 0.25 + Covariance yaw: 0.06853891909122467 + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /initialpose + - Class: rviz_default_plugins/SetGoal + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /goal_pose + - Class: rviz_default_plugins/PublishPoint + Single click: true + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /clicked_point + Transformation: + Current: + Class: rviz_default_plugins/TF + Value: true + Views: + Current: + Class: rviz_default_plugins/Orbit + Distance: 38.70017623901367 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 4.5373148918151855 + Y: -0.9371897578239441 + Z: 2.458820343017578 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.009999999776482582 + Pitch: 0.4003980755805969 + Target Frame: + Value: Orbit (rviz) + Yaw: 2.8672516345977783 + Saved: ~ +Window Geometry: + Displays: + collapsed: false + Height: 1043 + Hide Left Dock: false + Hide Right Dock: false + Image: + collapsed: false + QMainWindow State: 000000ff00000000fd00000004000000000000016b000003b9fc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb0000000a0049006d006100670065010000003d000000fb0000002800fffffffb000000100044006900730070006c006100790073010000013e000001f5000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000c00540065006c0065006f00700100000339000000bd0000004700ffffff000000010000010f0000039efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d0000039e000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d006501000000000000045000000000000000000000060f000003b900000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Selection: + collapsed: false + Teleop: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: false + Width: 1920 + X: 1920 + Y: 0