diff --git a/launch/demo_vio.launch b/launch/demo_vio.launch
new file mode 100644
index 0000000000000000000000000000000000000000..52ca3d3f2c0ac8cb8470c96f93882bada7a30838
--- /dev/null
+++ b/launch/demo_vio.launch
@@ -0,0 +1,86 @@
+<!-- -->
+<launch>
+    <!--USER ARGS-->
+    <arg name="rviz" default="true" />
+    <arg name="speed" default="1" />
+    <arg name="sec" default="0" />
+    <arg name="sim_time" default="true" />
+
+    <arg name="profiling" default="false" />
+    <arg name="gdb" default="false" />
+    <arg name="launch_pref" default="" unless="$(eval profiling or gdb)"/>
+    <arg name="launch_pref" value="valgrind --tool=callgrind --callgrind-out-file='callgrind.wolf.%p'" if="$(arg profiling)" />
+    <arg name="launch_pref" value="gdb -ex run --args" if="$(arg gdb)" />
+
+    <!-- Convention used by all files -->
+    <!-- TODO should be able to only set the setup_name and then set the param and arg accordingly, did not manage though -->
+    <!-- EUROC -->
+    <!-- <arg name="setup_name" default="euroc" />
+    <arg name="namespace_cam" value="cam0" />
+    <param name="topic_image_raw_in" value="/cam0/image_raw" />
+    <param name="topic_image_info_out" value="/cam0/camera_info" />
+    <param name="camera_yaml_path" value="$(find wolf_demo_visual_odometry)/yaml/camera_euroc.yaml" />     -->
+    <!--  -->
+
+    <!-- D453I -->
+    <arg name="setup_name" default="d435i" />
+    <arg name="namespace_cam" value="camera/infra1" />
+    <param name="topic_image_raw_in" value="/camera/infra1/image_rect_raw" />
+    <param name="topic_image_info_out" value="/camera/infra1/camera_info" />
+    <param name="camera_yaml_path" value="$(find wolf_demo_visual_odometry)/yaml/camera_d435i.yaml" />    
+    <!--  -->
+
+    <arg name="param_file" default="demo_vio_$(arg setup_name).yaml" />
+
+
+
+    <!--ROSBAG PLAY-->
+    <!--if the bag argument is not set, no bag is read here-->
+    <arg name="bag" default=""/>
+    <group if="$(eval arg('bag') != '')">
+        <param name="use_sim_time" value="$(arg sim_time)" />
+        <node pkg="rosbag" 
+            type="play" 
+            name="player"
+            required="true"
+            args="-r $(arg speed) 
+                    -s $(arg sec)
+                    --clock
+                    $(find wolf_demo_visual_odometry)/bag/$(arg bag).bag"/>
+    </group>
+
+    <!--VISUALIZATION-->
+    <group if="$(arg rviz)">
+        <node name="rviz"
+             pkg="rviz"
+             type="rviz"
+             args="-d $(find wolf_demo_visual_odometry)/rviz/$(arg setup_name).rviz" />
+    </group>
+
+
+    <!--Publish a CameraInfo topic reading at a standard wolf camera yaml file-->
+    <!-- <include file="$(find wolf_demo_visual_odometry)/launch/publish_camera_info.launch" /> -->
+
+    <node type="publisher_camera_info.py"
+          name="publisher_camera_info"
+          pkg="wolf_ros_vision"
+          >
+    </node>
+
+
+    <!--Undistort the image using the published camera info and raw images-->
+    <node type="image_proc"
+          name="image_proc"
+          pkg="image_proc"
+          ns="$(arg namespace_cam)" />
+
+    <!--WOLF-->
+    <node type="wolf_ros_node"
+          name="wolf_ros_node"
+          pkg="wolf_ros_node"
+          output="screen"
+          required="true"
+          launch-prefix="$(arg launch_pref)">
+        <param name="~yaml_file_path" value="$(find wolf_demo_visual_odometry)/yaml/$(arg param_file)" />
+    </node>
+</launch>
diff --git a/launch/demo_visual_inertial_odometry.launch b/launch/demo_visual_inertial_odometry.launch
deleted file mode 100644
index f77432bfdcaf9fcf2247cb2991dc8210bb9117e5..0000000000000000000000000000000000000000
--- a/launch/demo_visual_inertial_odometry.launch
+++ /dev/null
@@ -1,43 +0,0 @@
-<!-- -->
-<launch>
-    <!--USER ARGS-->
-    <arg name="rviz" default="true" />
-    <arg name="speed" default="1" />
-    <arg name="sec" default="0" />
-    <arg name="sim_time" default="true" />
-
-    <arg name="profiling" default="false" />
-    <arg name="gdb" default="false" />
-    <arg name="launch_pref" default="" unless="$(eval profiling or gdb)"/>
-    <arg name="launch_pref" value="valgrind --tool=callgrind --callgrind-out-file='callgrind.wolf.%p'" if="$(arg profiling)" />
-    <arg name="launch_pref" value="gdb -ex run --args" if="$(arg gdb)" />
-
-    <!--VISUALIZATION-->
-    <group if="$(arg rviz)">
-        <node name="rviz"
-             pkg="rviz"
-             type="rviz"
-             args="-d $(find wolf_demo_visual_odometry)/rviz/online.rviz" />
-    </group>
-
-
-    <!--Publish a CameraInfo topic reading at a standard wolf camera yaml file-->
-    <include file="$(find wolf_demo_visual_odometry)/launch/publisher_camera_info.launch" />
-
-    <!--Undistort the image using the published camera info and raw images-->
-    <node type="image_proc"
-          name="image_proc"
-          pkg="image_proc"
-          ns="cam0" />
-    
-
-    <!--WOLF-->
-    <node type="wolf_ros_node"
-          name="wolf_ros_node"
-          pkg="wolf_ros_node"
-          output="screen"
-          required="true"
-          launch-prefix="$(arg launch_pref)">
-        <param name="~yaml_file_path" value="$(find wolf_demo_visual_odometry)/yaml/demo_visual_inertial_odometry_euroc.yaml" />
-    </node>
-</launch>
diff --git a/launch/demo_visual_odometry.launch b/launch/demo_visual_odometry.launch
deleted file mode 100644
index 3e02387e44e4512efcd2c845de6f90a29fbb238b..0000000000000000000000000000000000000000
--- a/launch/demo_visual_odometry.launch
+++ /dev/null
@@ -1,43 +0,0 @@
-<!-- -->
-<launch>
-    <!--USER ARGS-->
-    <arg name="rviz" default="true" />
-    <arg name="speed" default="1" />
-    <arg name="sec" default="0" />
-    <arg name="sim_time" default="true" />
-
-    <arg name="profiling" default="false" />
-    <arg name="gdb" default="false" />
-    <arg name="launch_pref" default="" unless="$(eval profiling or gdb)"/>
-    <arg name="launch_pref" value="valgrind --tool=callgrind --callgrind-out-file='callgrind.wolf.%p'" if="$(arg profiling)" />
-    <arg name="launch_pref" value="gdb -ex run --args" if="$(arg gdb)" />
-
-    <!--VISUALIZATION-->
-    <group if="$(arg rviz)">
-        <node name="rviz"
-             pkg="rviz"
-             type="rviz"
-             args="-d $(find wolf_demo_visual_odometry)/rviz/online.rviz" />
-    </group>
-
-
-    <!--Publish a CameraInfo topic reading at a standard wolf camera yaml file-->
-    <include file="$(find wolf_demo_visual_odometry)/launch/publisher_camera_info.launch" />
-
-    <!--Undistort the image using the published camera info and raw images-->
-    <node type="image_proc"
-          name="image_proc"
-          pkg="image_proc"
-          ns="cam0" />
-    
-
-    <!--WOLF-->
-    <node type="wolf_ros_node"
-          name="wolf_ros_node"
-          pkg="wolf_ros_node"
-          output="screen"
-          required="true"
-          launch-prefix="$(arg launch_pref)">
-        <param name="~yaml_file_path" value="$(find wolf_demo_visual_odometry)/yaml/demo_visual_odometry_euroc.yaml" />
-    </node>
-</launch>
diff --git a/launch/demo_vo.launch b/launch/demo_vo.launch
new file mode 100644
index 0000000000000000000000000000000000000000..017f57de62321002418e45db6de29ba435f2ba08
--- /dev/null
+++ b/launch/demo_vo.launch
@@ -0,0 +1,86 @@
+<!-- -->
+<launch>
+    <!--USER ARGS-->
+    <arg name="rviz" default="true" />
+    <arg name="speed" default="1" />
+    <arg name="sec" default="0" />
+    <arg name="sim_time" default="true" />
+
+    <arg name="profiling" default="false" />
+    <arg name="gdb" default="false" />
+    <arg name="launch_pref" default="" unless="$(eval profiling or gdb)"/>
+    <arg name="launch_pref" value="valgrind --tool=callgrind --callgrind-out-file='callgrind.wolf.%p'" if="$(arg profiling)" />
+    <arg name="launch_pref" value="gdb -ex run --args" if="$(arg gdb)" />
+
+    <!-- Convention used by all files -->
+    <!-- TODO should be able to only set the setup_name and then set the param and arg accordingly, did not manage though -->
+    <!-- EUROC -->
+    <!-- <arg name="setup_name" default="euroc" />
+    <arg name="namespace_cam" value="cam0" />
+    <param name="topic_image_raw_in" value="/cam0/image_raw" />
+    <param name="topic_image_info_out" value="/cam0/camera_info" />
+    <param name="camera_yaml_path" value="$(find wolf_demo_visual_odometry)/yaml/camera_euroc.yaml" />     -->
+    <!--  -->
+
+    <!-- D453I -->
+    <arg name="setup_name" default="d435i" />
+    <arg name="namespace_cam" value="camera/infra1" />
+    <param name="topic_image_raw_in" value="/camera/infra1/image_rect_raw" />
+    <param name="topic_image_info_out" value="/camera/infra1/camera_info" />
+    <param name="camera_yaml_path" value="$(find wolf_demo_visual_odometry)/yaml/camera_d435i.yaml" />    
+    <!--  -->
+
+    <arg name="param_file" default="demo_vo_$(arg setup_name).yaml" />
+
+
+
+    <!--ROSBAG PLAY-->
+    <!--if the bag argument is not set, no bag is read here-->
+    <arg name="bag" default=""/>
+    <group if="$(eval arg('bag') != '')">
+        <param name="use_sim_time" value="$(arg sim_time)" />
+        <node pkg="rosbag" 
+            type="play" 
+            name="player"
+            required="true"
+            args="-r $(arg speed) 
+                    -s $(arg sec)
+                    --clock
+                    $(find wolf_demo_visual_odometry)/bag/$(arg bag).bag"/>
+    </group>
+
+    <!--VISUALIZATION-->
+    <group if="$(arg rviz)">
+        <node name="rviz"
+             pkg="rviz"
+             type="rviz"
+             args="-d $(find wolf_demo_visual_odometry)/rviz/$(arg setup_name).rviz" />
+    </group>
+
+
+    <!--Publish a CameraInfo topic reading at a standard wolf camera yaml file-->
+    <!-- <include file="$(find wolf_demo_visual_odometry)/launch/publish_camera_info.launch" /> -->
+
+    <node type="publisher_camera_info.py"
+          name="publisher_camera_info"
+          pkg="wolf_ros_vision"
+          >
+    </node>
+
+
+    <!--Undistort the image using the published camera info and raw images-->
+    <node type="image_proc"
+          name="image_proc"
+          pkg="image_proc"
+          ns="$(arg namespace_cam)" />
+
+    <!--WOLF-->
+    <node type="wolf_ros_node"
+          name="wolf_ros_node"
+          pkg="wolf_ros_node"
+          output="screen"
+          required="true"
+          launch-prefix="$(arg launch_pref)">
+        <param name="~yaml_file_path" value="$(find wolf_demo_visual_odometry)/yaml/$(arg param_file)" />
+    </node>
+</launch>
diff --git a/launch/publisher_camera_info.launch b/launch/publish_camera_info.launch
similarity index 100%
rename from launch/publisher_camera_info.launch
rename to launch/publish_camera_info.launch
diff --git a/launch/rs435i.launch b/launch/rs435i.launch
new file mode 100644
index 0000000000000000000000000000000000000000..991f29c7d1e992e13e927b624d01b2338830a61d
--- /dev/null
+++ b/launch/rs435i.launch
@@ -0,0 +1,150 @@
+<launch>
+  <arg name="serial_no"           default=""/>
+  <arg name="usb_port_id"         default=""/>
+  <arg name="device_type"         default=""/>
+  <arg name="json_file_path"      default=""/>
+  <arg name="camera"              default="camera"/>
+  <arg name="tf_prefix"           default="$(arg camera)"/>
+  <arg name="external_manager"    default="false"/>
+  <arg name="manager"             default="realsense2_camera_manager"/>
+  <arg name="output"              default="screen"/>
+  <arg name="respawn"              default="false"/>
+
+  <arg name="fisheye_width"       default="-1"/>
+  <arg name="fisheye_height"      default="-1"/>
+  <arg name="enable_fisheye"      default="false"/>
+
+  <arg name="depth_width"         default="-1"/>
+  <arg name="depth_height"        default="-1"/>
+  <arg name="enable_depth"        default="false"/>
+
+  <arg name="confidence_width"    default="-1"/>
+  <arg name="confidence_height"   default="-1"/>
+  <arg name="enable_confidence"   default="true"/>
+  <arg name="confidence_fps"      default="-1"/>
+
+  <arg name="infra_width"         default="848"/>
+  <arg name="infra_height"        default="480"/>
+  <arg name="enable_infra"        default="true"/>
+  <arg name="enable_infra1"       default="true"/>
+  <arg name="enable_infra2"       default="false"/>
+  <arg name="infra_rgb"           default="false"/>
+
+  <arg name="color_width"         default="-1"/>
+  <arg name="color_height"        default="-1"/>
+  <arg name="enable_color"        default="false"/>
+
+  <arg name="fisheye_fps"         default="-1"/>
+  <arg name="depth_fps"           default="-1"/>
+  <arg name="infra_fps"           default="30"/>
+  <arg name="color_fps"           default="-1"/>
+  <arg name="gyro_fps"            default="-1"/>
+  <arg name="accel_fps"           default="-1"/>
+  <arg name="enable_gyro"         default="true"/>
+  <arg name="enable_accel"        default="true"/>
+
+  <arg name="enable_pointcloud"         default="false"/>
+  <arg name="pointcloud_texture_stream" default="RS2_STREAM_COLOR"/>
+  <arg name="pointcloud_texture_index"  default="0"/>
+  <arg name="allow_no_texture_points"   default="false"/>
+  <arg name="ordered_pc"                default="false"/>
+
+  <arg name="enable_sync"               default="false"/>
+  <arg name="align_depth"               default="false"/>
+
+  <arg name="publish_tf"                default="true"/>
+  <arg name="tf_publish_rate"           default="0"/>
+
+  <arg name="filters"                   default=""/>
+  <arg name="clip_distance"             default="-2"/>
+  <arg name="linear_accel_cov"          default="0.01"/>
+  <arg name="initial_reset"             default="true"/>
+  <arg name="reconnect_timeout"         default="6.0"/>
+  <arg name="wait_for_device_timeout"   default="-1.0"/>
+  <arg name="unite_imu_method"          default="linear_interpolation"/>
+  <arg name="topic_odom_in"             default="odom_in"/>
+  <arg name="calib_odom_file"           default=""/>
+  <arg name="publish_odom_tf"           default="true"/>
+
+  <arg name="stereo_module/exposure/1"  default="7500"/>
+  <arg name="stereo_module/gain/1"      default="16"/>
+  <arg name="stereo_module/exposure/2"  default="1"/>
+  <arg name="stereo_module/gain/2"      default="16"/>
+  
+  
+
+  <group ns="$(arg camera)">
+    <include file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
+      <arg name="tf_prefix"                value="$(arg tf_prefix)"/>
+      <arg name="external_manager"         value="$(arg external_manager)"/>
+      <arg name="manager"                  value="$(arg manager)"/>
+      <arg name="output"                   value="$(arg output)"/>
+      <arg name="respawn"                  value="$(arg respawn)"/>
+      <arg name="serial_no"                value="$(arg serial_no)"/>
+      <arg name="usb_port_id"              value="$(arg usb_port_id)"/>
+      <arg name="device_type"              value="$(arg device_type)"/>
+      <arg name="json_file_path"           value="$(arg json_file_path)"/>
+
+      <arg name="enable_pointcloud"        value="$(arg enable_pointcloud)"/>
+      <arg name="pointcloud_texture_stream" value="$(arg pointcloud_texture_stream)"/>
+      <arg name="pointcloud_texture_index"  value="$(arg pointcloud_texture_index)"/>
+      <arg name="enable_sync"              value="$(arg enable_sync)"/>
+      <arg name="align_depth"              value="$(arg align_depth)"/>
+
+      <arg name="fisheye_width"            value="$(arg fisheye_width)"/>
+      <arg name="fisheye_height"           value="$(arg fisheye_height)"/>
+      <arg name="enable_fisheye"           value="$(arg enable_fisheye)"/>
+
+      <arg name="depth_width"              value="$(arg depth_width)"/>
+      <arg name="depth_height"             value="$(arg depth_height)"/>
+      <arg name="enable_depth"             value="$(arg enable_depth)"/>
+
+      <arg name="confidence_width"         value="$(arg confidence_width)"/>
+      <arg name="confidence_height"        value="$(arg confidence_height)"/>
+      <arg name="enable_confidence"        value="$(arg enable_confidence)"/>
+      <arg name="confidence_fps"           value="$(arg confidence_fps)"/>
+
+      <arg name="color_width"              value="$(arg color_width)"/>
+      <arg name="color_height"             value="$(arg color_height)"/>
+      <arg name="enable_color"             value="$(arg enable_color)"/>
+
+      <arg name="infra_width"              value="$(arg infra_width)"/>
+      <arg name="infra_height"             value="$(arg infra_height)"/>
+      <arg name="enable_infra"             value="$(arg enable_infra)"/>
+      <arg name="enable_infra1"            value="$(arg enable_infra1)"/>
+      <arg name="enable_infra2"            value="$(arg enable_infra2)"/>
+      <arg name="infra_rgb"                value="$(arg infra_rgb)"/>
+
+      <arg name="fisheye_fps"              value="$(arg fisheye_fps)"/>
+      <arg name="depth_fps"                value="$(arg depth_fps)"/>
+      <arg name="infra_fps"                value="$(arg infra_fps)"/>
+      <arg name="color_fps"                value="$(arg color_fps)"/>
+      <arg name="gyro_fps"                 value="$(arg gyro_fps)"/>
+      <arg name="accel_fps"                value="$(arg accel_fps)"/>
+      <arg name="enable_gyro"              value="$(arg enable_gyro)"/>
+      <arg name="enable_accel"             value="$(arg enable_accel)"/>
+
+      <arg name="publish_tf"               value="$(arg publish_tf)"/>
+      <arg name="tf_publish_rate"          value="$(arg tf_publish_rate)"/>
+
+      <arg name="filters"                  value="$(arg filters)"/>
+      <arg name="clip_distance"            value="$(arg clip_distance)"/>
+      <arg name="linear_accel_cov"         value="$(arg linear_accel_cov)"/>
+      <arg name="initial_reset"            value="$(arg initial_reset)"/>
+      <arg name="reconnect_timeout"        value="$(arg reconnect_timeout)"/>
+      <arg name="wait_for_device_timeout"  value="$(arg wait_for_device_timeout)"/>
+      <arg name="unite_imu_method"         value="$(arg unite_imu_method)"/>
+      <arg name="topic_odom_in"            value="$(arg topic_odom_in)"/>
+      <arg name="calib_odom_file"          value="$(arg calib_odom_file)"/>
+      <arg name="publish_odom_tf"          value="$(arg publish_odom_tf)"/>
+      <arg name="stereo_module/exposure/1" value="$(arg stereo_module/exposure/1)"/>
+      <arg name="stereo_module/gain/1"     value="$(arg stereo_module/gain/1)"/>
+      <arg name="stereo_module/exposure/2" value="$(arg stereo_module/exposure/2)"/>
+      <arg name="stereo_module/gain/2"     value="$(arg stereo_module/gain/2)"/>
+
+      <arg name="allow_no_texture_points"  value="$(arg allow_no_texture_points)"/>
+      <arg name="ordered_pc"               value="$(arg ordered_pc)"/>
+      
+    </include>
+  </group>
+</launch>
diff --git a/rviz/online.rviz b/rviz/d435i.rviz
similarity index 99%
rename from rviz/online.rviz
rename to rviz/d435i.rviz
index 1512577da9f6bdd894857701211f96ae736589fc..0efb7f4c7eaff146be54c4214df8c3633e6d22da 100644
--- a/rviz/online.rviz
+++ b/rviz/d435i.rviz
@@ -136,7 +136,7 @@ Visualization Manager:
       Value: true
     - Class: rviz/Image
       Enabled: false
-      Image Topic: /cam0/image_raw
+      Image Topic: /camera/infra1/image_rect_raw
       Max Value: 1
       Median window: 5
       Min Value: 0
diff --git a/rviz/euroc.rviz b/rviz/euroc.rviz
new file mode 100644
index 0000000000000000000000000000000000000000..0efb7f4c7eaff146be54c4214df8c3633e6d22da
--- /dev/null
+++ b/rviz/euroc.rviz
@@ -0,0 +1,244 @@
+Panels:
+  - Class: rviz/Displays
+    Help Height: 0
+    Name: Displays
+    Property Tree Widget:
+      Expanded:
+        - /TF1/Frames1
+        - /Factors1
+        - /Factors1/Status1
+        - /Factors1/Namespaces1
+        - /Landmarks1/Namespaces1
+        - /Trajectory1/Namespaces1
+      Splitter Ratio: 0.5
+    Tree Height: 280
+  - Class: rviz/Selection
+    Name: Selection
+  - Class: rviz/Tool Properties
+    Expanded:
+      - /2D Pose Estimate1
+      - /2D Nav Goal1
+      - /Publish Point1
+    Name: Tool Properties
+    Splitter Ratio: 0.5886790156364441
+  - Class: rviz/Views
+    Expanded:
+      - /Current View1
+    Name: Views
+    Splitter Ratio: 0.5
+  - Class: rviz/Time
+    Experimental: false
+    Name: Time
+    SyncMode: 0
+    SyncSource: debug
+Preferences:
+  PromptSaveOnExit: true
+Toolbars:
+  toolButtonStyle: 2
+Visualization Manager:
+  Class: ""
+  Displays:
+    - Alpha: 0.5
+      Cell Size: 1
+      Class: rviz/Grid
+      Color: 160; 160; 164
+      Enabled: true
+      Line Style:
+        Line Width: 0.029999999329447746
+        Value: Lines
+      Name: Grid
+      Normal Cell Count: 0
+      Offset:
+        X: 0
+        Y: 0
+        Z: 0
+      Plane: XY
+      Plane Cell Count: 10
+      Reference Frame: <Fixed Frame>
+      Value: true
+    - Alpha: 1
+      Class: rviz/Axes
+      Enabled: true
+      Length: 0.10000000149011612
+      Name: Axes
+      Radius: 0.009999999776482582
+      Reference Frame: base_footprint
+      Show Trail: true
+      Value: true
+    - Class: rviz/TF
+      Enabled: true
+      Frame Timeout: 15
+      Frames:
+        All Enabled: false
+        base_footprint:
+          Value: true
+        map:
+          Value: true
+        odom:
+          Value: true
+      Marker Alpha: 1
+      Marker Scale: 0.5
+      Name: TF
+      Show Arrows: false
+      Show Axes: true
+      Show Names: false
+      Tree:
+        map:
+          odom:
+            base_footprint:
+              {}
+      Update Interval: 0
+      Value: true
+    - Class: rviz/MarkerArray
+      Enabled: true
+      Marker Topic: /wolf_apriltag_vio/marker_array
+      Name: MarkerArray
+      Namespaces:
+        {}
+      Queue Size: 1
+      Value: true
+    - Class: rviz/MarkerArray
+      Enabled: true
+      Marker Topic: /wolf_ros_node/graph_factors
+      Name: Factors
+      Namespaces:
+        factors_VISUALODOMETRY PROC: true
+        factors_text_VISUALODOMETRY PROC: false
+        factors_text_unnamed_processor: true
+        factors_unnamed_processor: true
+      Queue Size: 1
+      Value: true
+    - Class: rviz/MarkerArray
+      Enabled: true
+      Marker Topic: /wolf_ros_node/graph_landmarks
+      Name: Landmarks
+      Namespaces:
+        landmarks: true
+        landmarks_text: true
+      Queue Size: 1
+      Value: true
+    - Class: rviz/MarkerArray
+      Enabled: true
+      Marker Topic: /wolf_ros_node/graph_trajectory
+      Name: Trajectory
+      Namespaces:
+        frames: true
+        frames_text: true
+      Queue Size: 1
+      Value: true
+    - Class: rviz/Marker
+      Enabled: true
+      Marker Topic: visualization_marker
+      Name: Ground truth
+      Namespaces:
+        {}
+      Queue Size: 100
+      Value: true
+    - Class: rviz/Image
+      Enabled: false
+      Image Topic: /camera/infra1/image_rect_raw
+      Max Value: 1
+      Median window: 5
+      Min Value: 0
+      Name: image_raw
+      Normalize Range: true
+      Queue Size: 2
+      Transport Hint: raw
+      Unreliable: false
+      Value: false
+    - Class: rviz/Image
+      Enabled: true
+      Image Topic: /debug_image
+      Max Value: 1
+      Median window: 5
+      Min Value: 0
+      Name: debug
+      Normalize Range: true
+      Queue Size: 2
+      Transport Hint: raw
+      Unreliable: false
+      Value: true
+    - Class: rviz/Image
+      Enabled: true
+      Image Topic: /debug_image_preprocessor
+      Max Value: 1
+      Median window: 5
+      Min Value: 0
+      Name: Image
+      Normalize Range: true
+      Queue Size: 2
+      Transport Hint: raw
+      Unreliable: false
+      Value: true
+  Enabled: true
+  Global Options:
+    Background Color: 48; 48; 48
+    Default Light: true
+    Fixed Frame: map
+    Frame Rate: 30
+  Name: root
+  Tools:
+    - Class: rviz/Interact
+      Hide Inactive Objects: true
+    - Class: rviz/MoveCamera
+    - Class: rviz/Select
+    - Class: rviz/FocusCamera
+    - Class: rviz/Measure
+    - Class: rviz/SetInitialPose
+      Theta std deviation: 0.2617993950843811
+      Topic: /initialpose
+      X std deviation: 0.5
+      Y std deviation: 0.5
+    - Class: rviz/SetGoal
+      Topic: /move_base_simple/goal
+    - Class: rviz/PublishPoint
+      Single click: true
+      Topic: /clicked_point
+  Value: true
+  Views:
+    Current:
+      Class: rviz/Orbit
+      Distance: 3.074009656906128
+      Enable Stereo Rendering:
+        Stereo Eye Separation: 0.05999999865889549
+        Stereo Focal Distance: 1
+        Swap Stereo Eyes: false
+        Value: false
+      Field of View: 0.7853981852531433
+      Focal Point:
+        X: 0.6342065930366516
+        Y: 0.34021610021591187
+        Z: 0.2876497805118561
+      Focal Shape Fixed Size: true
+      Focal Shape Size: 0.05000000074505806
+      Invert Z Axis: false
+      Name: Current View
+      Near Clip Distance: 0.009999999776482582
+      Pitch: 0.05979748070240021
+      Target Frame: <Fixed Frame>
+      Yaw: 4.310366153717041
+    Saved: ~
+Window Geometry:
+  Displays:
+    collapsed: false
+  Height: 1016
+  Hide Left Dock: false
+  Hide Right Dock: false
+  Image:
+    collapsed: false
+  QMainWindow State: 000000ff00000000fd00000004000000000000021d00000340fc0200000012fb000000100044006900730070006c006100790073010000003d00000155000000c900fffffffb0000000a0064006500620075006701000001980000017c0000001600fffffffb0000000a0049006d006100670065010000031a000000630000001600fffffffb000000120069006d006100670065005f007200610077000000010c000000af0000001600fffffffb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000c00430061006d0065007200610000000220000000480000000000000000fb0000000c00430061006d00650072006100000001c8000000a00000000000000000fb000000140044006500740065006300740069006f006e0073010000027a000000f10000000000000000fb000000160049006e00700075007400200069006d0061006700650000000179000001000000000000000000fb000000260041007000720069006c00540061006700200044006500740065006300740069006f006e00730000000209000001740000000000000000fb0000000a0049006d006100670065010000025a000001230000000000000000fb0000000a0049006d006100670065010000022b000001520000000000000000000000010000016c00000607fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000004000000607000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000780000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000078000000058fc0100000002fb0000000800540069006d0065010000000000000780000002eb00fffffffb0000000800540069006d006501000000000000045000000000000000000000055d0000034000000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+  Selection:
+    collapsed: false
+  Time:
+    collapsed: false
+  Tool Properties:
+    collapsed: false
+  Views:
+    collapsed: false
+  Width: 1920
+  X: 0
+  Y: 27
+  debug:
+    collapsed: false
+  image_raw:
+    collapsed: false
diff --git a/yaml/camera_d435i.yaml b/yaml/camera_d435i.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d78584c5001a806079079d84d96610858b6276a0
--- /dev/null
+++ b/yaml/camera_d435i.yaml
@@ -0,0 +1,20 @@
+width: 848
+height: 480
+camera_name: d435i_infra_left
+camera_matrix:
+  rows: 3
+  cols: 3
+  data: [419.52520751953125, 0.0, 427.8790588378906, 0.0, 419.52520751953125, 241.32180786132812, 0.0, 0.0, 1.0]
+distortion_model: plumb_bob
+distortion_coefficients:
+  rows: 1
+  cols: 5
+  data: [0.0, 0.0, 0.0, 0.0, 0.0]  # tangential distortion not supported by wolf
+rectification_matrix:
+  rows: 3
+  cols: 3
+  data: [1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000]
+projection_matrix:
+  rows: 3
+  cols: 4
+  data: [419.52520751953125, 0.0, 427.8790588378906, 0.0, 0.0, 419.52520751953125, 241.32180786132812, 0.0, 0.0, 0.0, 1.0, 0.0]
diff --git a/yaml/camera_euroc_mav0.yaml b/yaml/camera_euroc.yaml
similarity index 95%
rename from yaml/camera_euroc_mav0.yaml
rename to yaml/camera_euroc.yaml
index c10126c67a17f6089dd3eaa92f1dc139079c06ac..3d6a265b90db4dd6c8fdcfc9366429f5370e5f5f 100644
--- a/yaml/camera_euroc_mav0.yaml
+++ b/yaml/camera_euroc.yaml
@@ -1,6 +1,6 @@
 width: 752
 height: 480
-camera_name: narrow_stereo
+camera_name: euroc_mav0
 camera_matrix:
   rows: 3
   cols: 3
diff --git a/yaml/demo_vio_d435i.yaml b/yaml/demo_vio_d435i.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..eca75992b0aa73af2e6c8ebdb53863b7d14fd3b4
--- /dev/null
+++ b/yaml/demo_vio_d435i.yaml
@@ -0,0 +1,121 @@
+config:
+
+  debug:
+    profiling: true
+    profiling_file: "~/wolf_demo_vio_profiling.txt"
+    print_problem: true
+    print_depth: 3            # only if print_problem
+    print_constr_by: true     # only if print_problem
+    print_metric: true        # only if print_problem
+    print_state_blocks: false  # only if print_problem
+    print_period: 5           # only if print_problem
+
+  problem:
+    node_rate: 20
+    follow: "tree_manager_sliding.yaml"
+    frame_structure: "POV"
+    dimension: 3
+    prior:
+      mode: "initial_guess"
+      $state:
+        P: [0,0,0]
+        O: [1,0,0,0]  # arbitrary
+        V: [0,0,0]
+      $sigma:
+       P: [0.00001, 0.00001, 0.00001]
+       O: [3, 3, 3]
+       V: [0.1, 0.1, 0.1]
+      time_tolerance: 0.01
+
+  solver:
+    follow: "solver.yaml"
+
+  sensors:
+    -
+      type: "SensorCamera"
+      name: "CAMERA"
+      plugin: "vision"
+      extrinsic:
+        pose: [-0.006, 0.005, 0.012,  0,0,0,1]  # D435i left infra
+        # pose: [0,0,0,  0,0,0,1]
+      using_raw: false
+      follow: "camera_d435i.yaml"
+    -
+      type: "SensorImu"
+      name: "IMU"
+      plugin: "imu"
+      extrinsic:
+        pose:  [0,0,0, 0,0,0,1]
+      follow: "imu_d435i.yaml"
+
+  processors:
+    -
+      type: "ProcessorVisualOdometry"
+      name: "VISUALODOMETRY PROC"
+      sensor_name: "CAMERA"
+      plugin: "vision"
+      follow: "processor_visual_odometry.yaml"
+    -
+      type: "ProcessorImu"
+      name: "IMU PROC"
+      sensor_name: "IMU"
+      plugin: "imu"
+      follow: "processor_imu.yaml"
+      state_getter: true
+      state_priority: 1
+
+  ROS subscriber:
+    -
+      package: "wolf_ros_vision"
+      type: "SubscriberCamera"
+      topic: "/camera/infra1/image_rect_raw"
+      sensor_name: "CAMERA"
+    -
+      package: "wolf_ros_imu"
+      type: "SubscriberImu"
+      topic: "/camera/imu"
+      sensor_name: "IMU"
+      cov_source: "sensor"
+      in_degrees: false
+
+  ROS publisher:
+    -
+      type: "PublisherGraph"
+      topic: "graph"
+      package: "wolf_ros_node"
+      period: 0.2
+      viz_scale: 0.3
+      text_scale: 0.1
+      landmark_text_z_offset: 0.3
+      landmark_length: 0.5
+      frame_width: 0.01
+      frame_length: 0.1
+      frame_vel_scale: 1.0
+      factors_width: 0.01
+      factor_lmk_color: [0, 1, 1, 0.005]
+
+    -
+      type: "PublisherTf"
+      topic: " "
+      package: "wolf_ros_node"
+      period: 0.2
+      map_frame_id: "map"
+      odom_frame_id: "odom"
+      base_frame_id: "base_footprint"
+      publish_odom_tf: true
+
+    -
+      type: "PublisherVisionDebug"
+      processor_name: "VISUALODOMETRY PROC"
+      topic: "/debug_image"
+      topic_preprocessor: "/debug_image_preprocessor"
+      package: "wolf_ros_vision"
+      period: 0.05
+      follow: "publisher_vision_debug.yaml"
+    - 
+      type: "PublisherImuBias"
+      sensor_name: "IMU"
+      processor_name: "IMU"
+      topic: "/imu_bias"
+      package: "wolf_ros_imu"
+      period: 0.05
diff --git a/yaml/demo_visual_inertial_odometry_euroc.yaml b/yaml/demo_vio_euroc.yaml
similarity index 90%
rename from yaml/demo_visual_inertial_odometry_euroc.yaml
rename to yaml/demo_vio_euroc.yaml
index 618832c51434eae53fafe9b3c1cec6ae5b366e48..db5f9e80618974c82d20414d08793a74f699af9f 100644
--- a/yaml/demo_visual_inertial_odometry_euroc.yaml
+++ b/yaml/demo_vio_euroc.yaml
@@ -16,19 +16,16 @@ config:
     frame_structure: "POV"
     dimension: 3
     prior:
-      mode: "factor"
+      mode: "initial_guess"
       $state:
         P: [0,0,0]
-        # P: [0,0,0.5]
-        O: [0,0,0,1]
-        # O: [0, 0.20791169, 0, 0.9781476]  # x,y,z,w
-#        O: [0, -0.78770522698, 0, -0.61605233169] # -105 deg along Y axes
+        O: [1,0,0,0]  # arbitrary
         V: [0,0,0]
       $sigma:
        P: [0.00001, 0.00001, 0.00001]
-       O: [0.01, 0.01, 0.01]
-       V: [1,1,1]
-      time_tolerance: 0.0025
+       O: [3, 3, 3]
+       V: [0.1, 0.1, 0.1]
+      time_tolerance: 0.01
 
   solver:
     follow: "solver.yaml"
@@ -43,14 +40,14 @@ config:
         pose: [0.0098,0.0647,-0.0216, 0.7071068, 0, 0.7071068, 0] # orientation wrt IMU in vi-sensor, https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
         # pose: [-0.0216,-0.0647,0.0098,  -0.0077072, 0.0104967, 0.7017528, 0.7123015] # according to mav0/cam0/sensor.yaml in dataset
       using_raw: false
-      follow: "camera_euroc_mav0.yaml"
+      follow: "camera_euroc.yaml"
     -
       type: "SensorImu"
       name: "IMU"
       plugin: "imu"
       extrinsic:
         pose:  [0,0,0, 0,0,0,1]
-      follow: "vi_sensor_imu.yaml"
+      follow: "imu_euroc.yaml"
 
   processors:
     -
diff --git a/yaml/demo_visual_odometry_euroc.yaml b/yaml/demo_vo_d435i.yaml
similarity index 73%
rename from yaml/demo_visual_odometry_euroc.yaml
rename to yaml/demo_vo_d435i.yaml
index c5e6927b7baad7667ede59323255987f425cd591..0348d09a559aa067a8afb2042d5ca510cfd21487 100644
--- a/yaml/demo_visual_odometry_euroc.yaml
+++ b/yaml/demo_vo_d435i.yaml
@@ -2,7 +2,7 @@ config:
 
   debug:
     profiling: true
-    profiling_file: "~/wolf_demo_visual_odometry_profiling.txt"
+    profiling_file: "~/wolf_demo_vio_profiling.txt"
     print_problem: true
     print_depth: 3            # only if print_problem
     print_constr_by: true     # only if print_problem
@@ -16,15 +16,13 @@ config:
     frame_structure: "PO"
     dimension: 3
     prior:
-      mode: "factor"
+      mode: "initial_guess"
       $state:
         P: [0,0,0]
-        # P: [0,0,0.5]
-        O: [0,0,0,1]
-        # O: [0, 0.20791169, 0, 0.9781476]  # x,y,z,w
+        O: [1,0,0,0]  # arbitrary
       $sigma:
-       P: [0.0001, 0.0001, 0.0001]
-       O: [0.01, 0.01, 0.01]
+       P: [0.00001, 0.00001, 0.00001]
+       O: [3, 3, 3]
       time_tolerance: 0.01
 
   solver:
@@ -36,11 +34,10 @@ config:
       name: "CAMERA"
       plugin: "vision"
       extrinsic:
-        # pose: [0,0,0, 0.5,-0.5,0.5,-0.5]
-        pose: [0.0098,0.0647,-0.0216, 0.7071068, 0, 0.7071068, 0] # orientation wrt IMU in vi-sensor, https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
-        # pose: [-0.0216,-0.0647,0.0098,  -0.0077072, 0.0104967, 0.7017528, 0.7123015] # according to mav0/cam0/sensor.yaml in dataset
+        pose: [-0.006, 0.005, 0.012,  0,0,0,1]  # D435i left infra
+        # pose: [0,0,0,  0,0,0,1]
       using_raw: false
-      follow: "camera_euroc_mav0.yaml"
+      follow: "camera_d435i.yaml"
 
   processors:
     -
@@ -54,7 +51,7 @@ config:
     -
       package: "wolf_ros_vision"
       type: "SubscriberCamera"
-      topic: "/cam0/image_rect"
+      topic: "/camera/infra1/image_rect_raw"
       sensor_name: "CAMERA"
 
   ROS publisher:
diff --git a/yaml/demo_vo_euroc.yaml b/yaml/demo_vo_euroc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..578a9661cccb1e4e6ef4eb9db23848fba05b650c
--- /dev/null
+++ b/yaml/demo_vo_euroc.yaml
@@ -0,0 +1,118 @@
+config:
+
+  debug:
+    profiling: true
+    profiling_file: "~/wolf_demo_visual_odometry_profiling.txt"
+    print_problem: false
+    print_depth: 4            # only if print_problem
+    print_constr_by: true     # only if print_problem
+    print_metric: false        # only if print_problem
+    print_state_blocks: false  # only if print_problem
+    print_period: 1           # only if print_problem
+
+  problem:
+    node_rate: 20
+    follow: "tree_manager_sliding.yaml"
+    frame_structure: "PO"
+    dimension: 3
+    prior:
+      mode: "factor"
+      $state:
+        P: [0,0,0]
+        # P: [0,0,0.5]
+        O: [0,0,0,1]
+        # O: [0, 0.20791169, 0, 0.9781476]  # x,y,z,w
+#        O: [0, -0.78770522698, 0, -0.61605233169] # -105 deg along Y axes
+      $sigma:
+       P: [0.00001, 0.00001, 0.00001]
+       O: [0.01, 0.01, 0.01]
+      time_tolerance: 0.0025
+
+  solver:
+    follow: "solver.yaml"
+
+  sensors:
+    -
+      type: "SensorCamera"
+      name: "CAMERA"
+      plugin: "vision"
+      extrinsic:
+#         pose: [0,0,0, 0.5,-0.5,0.5,-0.5]
+        # pose: [0.0098,0.0647,-0.0216, 0.7071068, 0, 0.7071068, 0] # orientation wrt IMU in vi-sensor, https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets  ???
+        pose: [-0.0216,-0.0647,0.0098,  -0.0077072, 0.0104967, 0.7017528, 0.7123015] # according to mav0/cam0/sensor.yaml in dataset
+      using_raw: false
+      follow: "camera_euroc.yaml"
+    -
+      type: "SensorImu"
+      name: "IMU"
+      plugin: "imu"
+      extrinsic:
+        pose:  [0,0,0, 0,0,0,1]
+      follow: "imu_euroc.yaml"
+
+  processors:
+    -
+      type: "ProcessorVisualOdometry"
+      name: "VISUALODOMETRY PROC"
+      sensor_name: "CAMERA"
+      plugin: "vision"
+      follow: "processor_visual_odometry.yaml"
+
+  ROS subscriber:
+    -
+      package: "wolf_ros_vision"
+      type: "SubscriberCamera"
+      topic: "/cam0/image_rect"
+      sensor_name: "CAMERA"
+    -
+      package: "wolf_ros_imu"
+      type: "SubscriberImu"
+      topic: "/imu0"
+      sensor_name: "IMU"
+      # imu_x_axis: 3 # See VI-sensor axes in https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#platform_and_sensors   ??? 
+      # imu_y_axis: -2
+      # imu_z_axis: 1
+      cov_source: "sensor"
+      in_degrees: false
+
+  ROS publisher:
+    -
+      type: "PublisherGraph"
+      topic: "graph"
+      package: "wolf_ros_node"
+      period: 0.2
+      viz_scale: 0.3
+      text_scale: 0.1
+      landmark_text_z_offset: 0.3
+      landmark_length: 0.5
+      frame_width: 0.01
+      frame_length: 0.1
+      frame_vel_scale: 1.0
+      factors_width: 0.01
+      factor_lmk_color: [0, 1, 1, 0.005]
+
+    -
+      type: "PublisherTf"
+      topic: " "
+      package: "wolf_ros_node"
+      period: 0.2
+      map_frame_id: "map"
+      odom_frame_id: "odom"
+      base_frame_id: "base_footprint"
+      publish_odom_tf: true
+
+    -
+      type: "PublisherVisionDebug"
+      processor_name: "VISUALODOMETRY PROC"
+      topic: "/debug_image"
+      topic_preprocessor: "/debug_image_preprocessor"
+      package: "wolf_ros_vision"
+      period: 0.05
+      follow: "publisher_vision_debug.yaml"
+    - 
+      type: "PublisherImuBias"
+      sensor_name: "IMU"
+      processor_name: "IMU"
+      topic: "/imu_bias"
+      package: "wolf_ros_imu"
+      period: 0.05
diff --git a/yaml/vi_sensor_imu.yaml b/yaml/imu_d435i.yaml
similarity index 100%
rename from yaml/vi_sensor_imu.yaml
rename to yaml/imu_d435i.yaml
diff --git a/yaml/imu_euroc.yaml b/yaml/imu_euroc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..45c454be0f33f75a4a40448087765c2a40817acb
--- /dev/null
+++ b/yaml/imu_euroc.yaml
@@ -0,0 +1,7 @@
+# IMU intrinsics:
+a_noise:                0.03      # standard deviation of Acceleration noise (same for all the axis) in m/s2
+w_noise:                0.05      # standard deviation of Gyroscope noise (same for all the axis) in rad/sec
+ab_initial_stdev:       0.1       # m/s2    - initial bias 
+wb_initial_stdev:       0.1       # rad/sec - initial bias 
+ab_rate_stdev:          0.001     # m/s2/sqrt(s)           
+wb_rate_stdev:          0.001     # rad/s/sqrt(s)