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

No visualization on rviz #8

Closed
TakShimoda opened this issue Sep 7, 2023 · 12 comments
Closed

No visualization on rviz #8

TakShimoda opened this issue Sep 7, 2023 · 12 comments

Comments

@TakShimoda
Copy link

Hello, thank you for making this project. I'm using this package in ros noetic.

I'm trying to run the example provided on the campus_outdoor_1014 dataset and I have the exact same issues as here, where after running the command CATKIN_WS=<path-to-catkin-ws> DATA_PATH=<path-to-campus-outdoor-data-folder> LOG_DIR=<path-to-log-folder> tmuxp load 1014-example.yaml, all the terminals run fine with no error output, but rviz shows no visualizations, with the Global Status Error "Unknown frame map". Nothing else in rviz shows errors (e.g. /acl_jackal/kimera_vio_ros/optimized_trajectory) but there is still nothing visualized. I also tried changing the global frame to be one of the robots' frames but it still doesn't show anything

Referencing issue #6 , I've tried installing image_transport_plugins with sudo apt-get install ros-noetic-image-transport-plugins but it didn't fix the issue.

Here is my log folder for acl_jackal: acl_jackal.zip. As can be seen, the results aren't all empty: e.g. lcd_log.csv and odometry_poses.csv have non-zero entries. It's the same for the other robots as well. When I try to compare the file trajectory_optimized.csv with the ground truth for jackal, it didn't optimize as you can see below:
jackal_optimized_trajectory

Any help to identify and fix the problem would be appreciated. Thank you.

@yuluntian
Copy link
Collaborator

Hi, thank you for using this system. I looked at the logs, and it seems everything is running correctly at least for the acl_jackal robot. You mentioned that rviz has error Unknown frame map. Can you try change the fixed frame to world and visualize the topic /acl_jackal/dpgo_ros_node/path? Note that you might need to wait a bit because for this dataset the trajectories might only be published toward the end of the rosbags.

@TakShimoda
Copy link
Author

Hello, thank you for your response. I ran it again and waited until the end and I was able to visualize the trajectories as shown:
kimera_trajectories_final

I have a question about the trajectory output:
Is the output trajectory in a different coordinate system compared to the ground truth? Here is another image of the output with the grid shown below. You can see the approximately planar trajectory is perpendicular to the grid.
kimera_multi_trajectories_grid.
When I compare the output to ground truth (e.g. /log/acl_jackal/distributed/trajectory_optimized.csv vs acl_jackal_gt_odom.csv), to match the ground truth laid out on the (x, y) plane, I need the trajectory laid out on the (-x, -z plane) as shown below:
jackal_gt_xy

jackal_-x-z
If I edit the trajectory_optimized.csv so the new (x, y, z) coordinate corresponds to (-x, -z, -y) of the original, then it's on the same plane but offset by a significant amount as shown:

Trajectory_aligned

When I use the evo tool to align and plot (using the command evo_traj tum ~/Trial_Data/Kimera-Multi/log/acl_jackal/distributed/kimera_distributed_poses_1560_edit.tum --ref ~/Trial_Data/Kimera-Multi/gt/acl_jackal_gt_odom.tum -p --plot_mode=xy -vas) , it gives the rotation, translation, and scaling factor of the Umeyama method as:

Aligning using Umeyama's method... (with scale correction)
Rotation of alignment:
[[-0.99030203  0.13427041 -0.03568398]
 [ 0.04090758  0.0363471  -0.99850161]
 [-0.13277221 -0.99027791 -0.04148729]]
Translation of alignment:
[320.93833654 -10.48923088 -16.60094272]
Scale correction: 0.9417950835404575

for the plot below, which does show the new coordinates to align are the (-x, -z, -y) of the original output, and there is a large translation. Is this normal for the trajectory output?
evo_jackal

I evaluated rpe and ape with the evo tool for acl_jackal and it gave the APE and RPE as:
APE:

   	max    12.284346
  	mean    4.439904
	median    4.385615
   	min    0.755411
  	rmse    4.971588
   	sse    20514.852177
   		std    2.236950

RPE:

   	max    21.091320
  	mean    2.051810
	median    1.379447
   	min    0.004813
  	rmse    3.135178
   	sse    8148.525092
   	std    2.370531

I also get strange RPY output using the same evo tool as shown below:
jackal_rpy
As expected from planar motion, there's no roll/pitch and only significant variation in the yaw for the ground truth, but the trajectory shows roll at -90 degrees and the yaw doesn't match very well with ground truth. For evaluating, I'm using the TUM format (time, x, y, z, qx, qy, qz, qw) so I did rearrange the csv files which were in Euroc format and also removed the "pose_index" column and checked to make sure the quaternion entries lined up so the angle entries matched.

Thanks.

@yuluntian
Copy link
Collaborator

Thanks for the updates and glad you can visualize the results now. What you are observing is expected and indeed the kimera-multi output and the ground truth will be in two different coordinate systems. In our paper, we compute the APE after aligning with a SE(3) transform (similar to what you did with evo, but we don't use scale correction). For the same reason, I think you will get a more reasonable RPY plot by first applying the SE3/Sim3 you found with evo to the kimera-multi trajectories and then visualize the RPY.

Also related: instead of trajectory_optimized.csv, it's better to use the latest kimera_distributed_poses_xxx.csv (the xxx is the time elapsed). The difference is that trajectory_optimized.csv only contains a subsampled version of each robot's trajectory, but kimera_distributed_poses_xxx.csv contains the full trajectory where there is a pose estimate for each VIO keyframe.

Hopefully this clarify things!

@TakShimoda
Copy link
Author

Thank you for the helpful comments, they cleared up all the questions I had.

@TakShimoda
Copy link
Author

Hello, sorry for reopening this issue, but my old computer had issues and I had to run this on a new computer (same OS and ROS: ubuntu 20.04 and noetic)

It installed fine and I tried running the 1014 example again, but I'm encountering an issue where the node kimera_vio_ros_node isn't running and I'm not getting any TF data as a result:
1014_example
Before, I was able to change the fixed global frame to frames from the robots but now, due to no TF, there's no option to choose any frames.
Under rviz topics, there's no ROBOT_NAME/kimera_vio_ros/optimized_trajectory topic available. Example shown for acl_jackal below:
rviz_topics

And finally, for the output log folder, there's no files, except for a X.txt file for each robot.
When I run rosnode list while the the program is running, I get an output like the following and can't see the vio node:

/acl_jackal/distributed_loop_closure/distributed_loop_closure_node
/acl_jackal/dpgo_ros_node/agent
/acl_jackal/kimera_distributed/posegraph_viewer
/acl_jackal2/distributed_loop_closure/distributed_loop_closure_node
/acl_jackal2/dpgo_ros_node/agent
/acl_jackal2/kimera_distributed/posegraph_viewer
/hathor/distributed_loop_closure/distributed_loop_closure_node
/hathor/dpgo_ros_node/agent
/hathor/kimera_distributed/posegraph_viewer
/player_acl_jackal
/player_acl_jackal2
/player_hathor
/player_sparkal1
/player_sparkal2
/player_thoth
/rosout
/rviz_1695063230799147579
/sparkal1/distributed_loop_closure/distributed_loop_closure_node
/sparkal1/dpgo_ros_node/agent
/sparkal1/kimera_distributed/posegraph_viewer
/sparkal2/distributed_loop_closure/distributed_loop_closure_node
/sparkal2/dpgo_ros_node/agent
/sparkal2/kimera_distributed/posegraph_viewer
/thoth/distributed_loop_closure/distributed_loop_closure_node
/thoth/dpgo_ros_node/agent
/thoth/kimera_distributed/posegraph_viewer

I know from the kimera_ros/launch/kimera_vio_ros.launch file, it's supposed to launch kimera_vio_ros_node. I did everything the same as last time (downloaded the 1014 bags and decompressed them, set up folders for calibration/data/log and ran the 1014-example.yaml file without editing anything), but now I'm running into this new issue. Any help would be appreciated.

Thank you.

@TakShimoda TakShimoda reopened this Sep 18, 2023
@yuluntian
Copy link
Collaborator

Hi, based on your description, this is most likely caused by a crash of the VIO node. Could you share if there is any error printed in the terminal, in the vio pane in tmux?

@TakShimoda
Copy link
Author

TakShimoda commented Sep 20, 2023

Hello,

I wasn't familiar with tmux, and just found out you can switch windows as i was only seeing the "data-" window. After seeing the vio window, I encountered many problems before this, which I think I fixed (including rebuilding the package again and linking to some libraries), right now I'm encountering the following issue for the each of the vio nodes:

process[thoth/kimera_vio_ros/kimera_vio_ros_node-1]: started with pid [277913]                                                                                                                             
process[thoth/base_to_realsense-2]: started with pid [277927]                                                                                                                                              
process[thoth/left_img_decompress-3]: started with pid [277941]                                                                                                                                            
process[thoth/right_img_decompress-4]: started with pid [277955]                                                                                                                                           
[ INFO] [1695241485.135775881]: BoW vector batch size: 10                                                                                                                                                  
[ INFO] [1695241485.154789846]: BoW vector skip num: 2                                                                                                                                                     
[ INFO] [1695241485.154817088]: Publish VLC frames: 1                                                                                                                                                      
I20230920 16:24:45.364785 277913 LoopClosureDetector.cpp:70] LoopClosureDetector:: Loading vocabulary from /home/glenn/catkin_ws/src/kimera_multi_lcd/vocab/mit_voc.yml                                   
terminate called after throwing an instance of 'cv::Exception'                                                                                                                                             
  what():  OpenCV(3.4.2) /home/glenn/catkin_ws/build/opencv3_catkin/opencv3_src/modules/core/src/persistence_yml.cpp:51: error: (-212:Parsing error) icvYMLSkipSpaces in function '/home/glenn/catkin_ws/sr
c/kimera_multi_lcd/vocab/mit_voc.yml(374416): Too long string or a last string w/o newline'                                                                                                                
                                                                                                                                                                                                           
================================================================================REQUIRED process [thoth/kimera_vio_ros/kimera_vio_ros_node-1] has died!
process has died [pid 277913, exit code -6, cmd /home/glenn/catkin_ws/devel/lib/kimera_vio_ros/kimera_vio_ros_node --use_lcd=true --vocabulary_path=/home/glenn/catkin_ws/src/kimera_multi_lcd/vocab/mit_vo
c.yml --flagfile=/home/glenn/catkin_ws/src/kimera_multi/params/D455/flags/Mesher.flags --flagfile=/home/glenn/catkin_ws/src/kimera_multi/params/D455/flags/VioBackend.flags --flagfile=/home/glenn/catkin_w
s/src/kimera_multi/params/D455/flags/RegularVioBackend.flags --flagfile=/home/glenn/catkin_ws/src/kimera_multi/params/D455/flags/Visualizer3D.flags --use_external_odometry=true --do_coarse_imu_camera_tem
poral_sync=false --do_fine_imu_camera_temporal_sync=false --lcd_no_optimize=true --lcd_no_detection=false --depth_image_mask= --logtostderr=1 --colorlogtostderr=1 --log_prefix=1 --minloglevel=0 --v=0 --l
og_output=false --log_euroc_gt_data=false --output_path=/home/glenn/catkin_ws/src/kimera_ros/output_logs/ --lcd_disable_stereo_match_depth_check=true --no_incremental_pose=true --viz_type=2 --visualize=t
rue left_cam/image_raw:=/thoth/forward/infra1/image_rect_raw left_cam/image_raw/compressed:=/thoth/forward/infra1/image_rect_raw/compressed right_cam/image_raw:=/thoth/forward/infra2/image_rect_raw right
_cam/image_raw/compressed:=/thoth/forward/infra2/image_rect_raw/compressed imu:=/thoth/forward/imu external_odom:=/thoth/jackal_velocity_controller/odom reinit_flag:=reinit_flag reinit_pose:=reinit_pose 
odometry:=odometry resiliency:=resiliency imu_bias:=imu_bias optimized_trajectory:=optimized_trajectory pose_graph:=pose_graph mesh:=mesh frontend_stats:=frontend_stats debug_mesh_img/image_raw:=debug_me
sh_img/image_raw feature_tracks/image_raw:=feature_tracks/image_raw time_horizon_pointcloud:=time_horizon_pointcloud __name:=kimera_vio_ros_node __log:=/home/glenn/.ros/log/b95b7fa8-57f3-11ee-b644-c72140
9d7ece/thoth-kimera_vio_ros-kimera_vio_ros_node-1.log].                                              
log file: /home/glenn/.ros/log/b95b7fa8-57f3-11ee-b644-c721409d7ece/thoth-kimera_vio_ros-kimera_vio_ros_node-1*.log
Initiating shutdown!      
                                                                           
================================================================================

I think this might be an OpenCV version error, but I'm not sure, as there wasn't any find_package(OPENCV <version>) command in the CMakeLists.txt of the package that LoopClosureDetector is in (kimera_multi_lcd) that usually fixes errors with OpenCV and ROS.

@yunzc
Copy link
Member

yunzc commented Sep 20, 2023

Hi @TakShimoda can you also check if the vocab file is in the correct folder?
(i.e. check that the file kimera_multi_lcd/vocab/mit_voc.yml exists)

@TakShimoda
Copy link
Author

Hello @yunzc. Yes, there is a file called kimera_multi_lcd/vocab/mit_voc.yml. It was quite large.

@yunzc
Copy link
Member

yunzc commented Sep 21, 2023

I asked because the opencv errors seems to be from parsing that file. Feel free to try manually downloading and unzipping the file directly.
If that still doesn't work then it is likely something to do with opencv.

@TakShimoda
Copy link
Author

TakShimoda commented Sep 21, 2023

Hello @yunzc. Thank you for providing the file. I replaced the old mit_voc.yml with the one you provided and the system works again. I don't know what may have caused an issue reading the old file which I didn't edit, but it works now.

I have another question. I'm trying to run this on EuRoC machine hall dataset with the 5 robots (and I'll also try the Vicon Rooms) as you guys did in your paper in section VII.B.

What I did is:

  1. Used the 1014-example.yaml as a template, and made my own called MH-Example here ():
session_name: kimera-distributed-mh-example

environment:
  ROBOT0: "acl_jackal"
  ROBOT1: "acl_jackal2"
  ROBOT2: "sparkal1"
  ROBOT3: "sparkal2"
  ROBOT4: "hathor"
  #ROBOT5: "thoth"
  ROSBAG0: "$DATA_PATH/MH_01_easy.bag"
  ROSBAG1: "$DATA_PATH/MH_02_easy.bag"
  ROSBAG2: "$DATA_PATH/MH_03_medium.bag"
  ROSBAG3: "$DATA_PATH/MH_04_difficult.bag"
  ROSBAG4: "$DATA_PATH/MH_05_difficult.bag"
  #ROSBAG5: "$DATA_PATH/10_14_thoth.bag"
  RATE: "1.0"
  NUM_ROBOTS: "5"
  BOW_SKIP_NUM: "3"

options:
  default-command: /bin/bash

windows:
- window_name: frontend
  layout: tiled  
  shell_command_before:
    - source $CATKIN_WS/devel/setup.bash
    - mkdir -p $LOG_DIR/$ROBOT0/distributed
    - mkdir -p $LOG_DIR/$ROBOT1/distributed
    - mkdir -p $LOG_DIR/$ROBOT2/distributed
    - mkdir -p $LOG_DIR/$ROBOT3/distributed
    - mkdir -p $LOG_DIR/$ROBOT4/distributed
    #- mkdir -p $LOG_DIR/$ROBOT5/distributed
    - sleep 5;

  panes:
    - roslaunch kimera_distributed kimera_distributed.launch robot_id:=0 robot_name:=$ROBOT0 num_robots:=$NUM_ROBOTS dataset_name:=Euroc log_output_path:=$LOG_DIR/$ROBOT0/distributed
    - roslaunch kimera_distributed kimera_distributed.launch robot_id:=1 robot_name:=$ROBOT1 num_robots:=$NUM_ROBOTS dataset_name:=Euroc log_output_path:=$LOG_DIR/$ROBOT1/distributed
    - roslaunch kimera_distributed kimera_distributed.launch robot_id:=2 robot_name:=$ROBOT2 num_robots:=$NUM_ROBOTS dataset_name:=Euroc log_output_path:=$LOG_DIR/$ROBOT2/distributed
    - roslaunch kimera_distributed kimera_distributed.launch robot_id:=3 robot_name:=$ROBOT3 num_robots:=$NUM_ROBOTS dataset_name:=Euroc log_output_path:=$LOG_DIR/$ROBOT3/distributed
    - roslaunch kimera_distributed kimera_distributed.launch robot_id:=4 robot_name:=$ROBOT4 num_robots:=$NUM_ROBOTS dataset_name:=Euroc log_output_path:=$LOG_DIR/$ROBOT4/distributed
    #- roslaunch kimera_distributed kimera_distributed.launch robot_id:=5 robot_name:=$ROBOT5 num_robots:=$NUM_ROBOTS dataset_name:=Jackal log_output_path:=$LOG_DIR/$ROBOT5/distributed

- window_name: dpgo
  layout: tiled
  shell_command_before:
    - source $CATKIN_WS/devel/setup.bash
    - sleep 5;

  panes:
    - roslaunch kimera_distributed dpgo.launch robot_id:=0 robot_name:=$ROBOT0 num_robots:=$NUM_ROBOTS dataset_name:=Euroc multi_master:=false log_output_path:=$LOG_DIR/$ROBOT0/distributed
    - roslaunch kimera_distributed dpgo.launch robot_id:=1 robot_name:=$ROBOT1 num_robots:=$NUM_ROBOTS dataset_name:=Euroc multi_master:=false log_output_path:=$LOG_DIR/$ROBOT1/distributed
    - roslaunch kimera_distributed dpgo.launch robot_id:=2 robot_name:=$ROBOT2 num_robots:=$NUM_ROBOTS dataset_name:=Euroc multi_master:=false log_output_path:=$LOG_DIR/$ROBOT2/distributed
    - roslaunch kimera_distributed dpgo.launch robot_id:=3 robot_name:=$ROBOT3 num_robots:=$NUM_ROBOTS dataset_name:=Euroc multi_master:=false log_output_path:=$LOG_DIR/$ROBOT3/distributed
    - roslaunch kimera_distributed dpgo.launch robot_id:=4 robot_name:=$ROBOT4 num_robots:=$NUM_ROBOTS dataset_name:=Euroc multi_master:=false log_output_path:=$LOG_DIR/$ROBOT4/distributed
    - roslaunch kimera_distributed dpgo.launch robot_id:=5 robot_name:=$ROBOT5 num_robots:=$NUM_ROBOTS dataset_name:=Euroc multi_master:=false log_output_path:=$LOG_DIR/$ROBOT5/distributed

- window_name: vio
  layout: tiled  
  shell_command_before:
    - source $CATKIN_WS/devel/setup.bash
    - sleep 5;

  panes:
    - roslaunch kimera_multi kimera_vio_jackal.launch robot_name:=$ROBOT0 robot_id:=0 use_d455:=true multirobot:=true lcd_no_optimize:=true use_external_odom:=true replay:=true should_use_sim_time:=true
    - roslaunch kimera_multi kimera_vio_jackal.launch robot_name:=$ROBOT1 robot_id:=1 use_d455:=true multirobot:=true lcd_no_optimize:=true use_external_odom:=true replay:=true should_use_sim_time:=true
    - roslaunch kimera_multi kimera_vio_jackal.launch robot_name:=$ROBOT2 robot_id:=2 use_d455:=true multirobot:=true lcd_no_optimize:=true use_external_odom:=true replay:=true should_use_sim_time:=true
    - roslaunch kimera_multi kimera_vio_jackal.launch robot_name:=$ROBOT3 robot_id:=3 use_d455:=true multirobot:=true lcd_no_optimize:=true use_external_odom:=true replay:=true should_use_sim_time:=true
    - roslaunch kimera_multi kimera_vio_jackal.launch robot_name:=$ROBOT4 robot_id:=4 use_d455:=true multirobot:=true lcd_no_optimize:=true use_external_odom:=true replay:=true should_use_sim_time:=true
    - roslaunch kimera_multi kimera_vio_jackal.launch robot_name:=$ROBOT5 robot_id:=5 use_d455:=true multirobot:=true lcd_no_optimize:=true use_external_odom:=true replay:=true should_use_sim_time:=true

- window_name: data
  focus: true  
  layout: tiled  
  shell_command_before:
    - source $CATKIN_WS/devel/setup.bash

  panes:
    - sleep 15; roslaunch kimera_distributed MH_rosbag.launch bagfile:=$ROSBAG0 input_ns:=$ROBOT0 output_ns:=$ROBOT0 rate:=$RATE
    - sleep 15; roslaunch kimera_distributed MH_rosbag.launch bagfile:=$ROSBAG1 input_ns:=$ROBOT1 output_ns:=$ROBOT1 rate:=$RATE
    - sleep 15; roslaunch kimera_distributed MH_rosbag.launch bagfile:=$ROSBAG2 input_ns:=$ROBOT2 output_ns:=$ROBOT2 rate:=$RATE
    - sleep 15; roslaunch kimera_distributed MH_rosbag.launch bagfile:=$ROSBAG3 input_ns:=$ROBOT3 output_ns:=$ROBOT3 rate:=$RATE
    - sleep 15; roslaunch kimera_distributed MH_rosbag.launch bagfile:=$ROSBAG4 input_ns:=$ROBOT4 output_ns:=$ROBOT4 rate:=$RATE
    #- sleep 15; roslaunch kimera_distributed mit_rosbag.launch bagfile:=$ROSBAG5 input_ns:=$ROBOT5 output_ns:=$ROBOT5 rate:=$RATE
    - sleep 15; rviz -d $(rospack find kimera_distributed)/rviz/single_machine.rviz
    - roscore
    - rosnode kill -a \
  1. Made my own MH_rosbag.launch file as you can see in the commands in the last pane. The contents of this bag file is:
<launch>
	<arg name="bagfile"   default="/home/glenn/Documents/Trial_Data/euroc/MH_01_easy.bag"/>
	<arg name="input_ns"  default="sobek" />
	<arg name="output_ns" default="sobek" />
	<arg name="rate"      default="1.0"   />
	
  	<node pkg="image_transport" type="republish" name="image_republisher1" output="screen" 
  		args="raw in:=$(arg output_ns)/forward/infra1/image_rect_raw compressed out:=$(arg output_ns)/forward/infra1/image_rect_raw">
 	</node>
 
   	<node pkg="image_transport" type="republish" name="image_republisher2" output="screen" 
  		args="raw in:=$(arg output_ns)/forward/infra2/image_rect_raw compressed out:=$(arg output_ns)/forward/infra2/image_rect_raw">
 	</node>

	<node pkg="rosbag" type="play" name="player_$(arg output_ns)" output="screen" 
		args="$(arg bagfile) --clock -r $(arg rate) -s0.1 --topics
		/$(arg input_ns)/detection_out_topic
		/$(arg input_ns)/forward/color/camera_info
		/$(arg input_ns)/forward/color/image_raw/compressed
		/$(arg input_ns)/forward/depth/camera_info
		/$(arg input_ns)/forward/depth/image_rect_raw
		/imu0
		/$(arg input_ns)/forward/infra1/camera_info
		/cam0/image_raw
		/$(arg input_ns)/forward/infra2/camera_info
		/cam0/image_raw
		/$(arg input_ns)/jackal_velocity_controller/odom
		/tf_static
		/tf_aggregate">

		<remap from="/$(arg input_ns)/detection_out_topic"                      to="/$(arg output_ns)/detection_out_topic"/>
		<remap from="/$(arg input_ns)/forward/color/camera_info"                to="/$(arg output_ns)/forward/color/camera_info"/>
		<remap from="/$(arg input_ns)/forward/color/image_raw/compressed"       to="/$(arg output_ns)/forward/color/image_raw/compressed"/>
		<remap from="/$(arg input_ns)/forward/depth/camera_info"                to="/$(arg output_ns)/forward/depth/camera_info"/>
		<remap from="/$(arg input_ns)/forward/depth/image_rect_raw"             to="/$(arg output_ns)/forward/depth/image_rect_raw"/>
		<remap from="/imu0"                              to="/$(arg output_ns)/forward/imu"/>
		<remap from="/$(arg input_ns)/forward/infra1/camera_info"               to="/$(arg output_ns)/forward/infra1/camera_info"/>
		<remap from="/cam0/image_raw" to="/$(arg output_ns)/forward/infra1/image_rect_raw"/>
		<remap from="/$(arg input_ns)/forward/infra2/camera_info"               to="/$(arg output_ns)/forward/infra2/camera_info"/>
		<remap from="/cam1/image_raw" to="/$(arg output_ns)/forward/infra2/image_rect_raw"/>
		<remap from="/$(arg input_ns)/jackal_velocity_controller/odom"          to="/$(arg output_ns)/jackal_velocity_controller/odom"/>
	</node>
	 
</launch>
  • Basically what I did is look at the topics from EuRoC Machine Hall (e.g. MH_01_easy.bag) and saw the topics as "imu0", "cam0/image_raw", "cam1/image_raw", so I remapped them to the appropriate names in the kimera-multi bags, which took multiple steps for the images from the infra red cameras. First, I would remap them when I play the bag, for example for cam0: <remap from="/cam0/image_raw" to="/$(arg output_ns)/forward/infra1/image_rect_raw"/>. Then, at the beginning of the launch file, I used the republish node from the image_transport package to change the aforementioned infra image to a compressed version, so the image on topic <robot>/forward/infra1/image_rect_raw is compressed and published to the topic <robot>/forward/infra1/image_rect_raw/compressed of type sensor_msgs/CompressedImage that matches what was in the kimera-multi bag files.
  • My issue right now is that when I run with the example yaml file, I don't get anything on the compressed image topics when I used rostopic echo (I can see the imu topic), but when I just run the MH_rosbag.launch file with roslaunch, I can see the compressed topics just fine. I was wondering if using the image_transport package is incurring too much overhead as it subscribes, compresses, and publishes topics and is doing this for 5 robots in the example. There were also other topics in the kimera-multi bag files but I don't know if all of them were needed.

Thank you,

@yunzc
Copy link
Member

yunzc commented Sep 21, 2023

Glad that it worked!

For your new question, could you take a look at the example euroc launch file for Kimera-VIO here and see if you see anything obvious?

I am also going to close this thread since the issues in this thread are resolved. Feel free to open a new issue if you still have Kimera-Multi related problems with Euroc. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants