Skip to content

Latest commit

 

History

History
80 lines (59 loc) · 3.74 KB

README.md

File metadata and controls

80 lines (59 loc) · 3.74 KB

ROMAN Demo

Using demo.py, the full ROMAN pipeline can be run on a multi-robot dataset, or mapping, loop closures, or pose graph optimization can be separately run.

After following the install instructions and the demo setup instructions, the demo can be run with the following command:

cd roman
mkdir demo_output
python3 demo/demo.py \
    -r sparkal1 sparkal2 -e ROBOT \
    -p demo/params/demo \
    -o demo_output

Custom Data

Up to this point, ROMAN has mostly been used to process ROS 1/2 data (agnostic of ROS version). This documentation gives instructions for how to image data from a ROS bag and how to load pose data from a ROS bag or from a CSV file. To run ROMAN on played back data or in real-time, use the roman_ros repository. If you are interested in loading in another type of data, the ROMANMapRunner class can be edited to load other data types using the robotdatapy PoseData and ImgData interfaces.

To run ROMAN on your data, start by copying the demo params directory. Within mapping.yaml, the img_data and pose_data fields will need to be edited to load your data as explained in the following sections. Pass the updated params directory in using the -p argument.

Loading ROS Image Data

Update the following subfields within the img_data field in your new mapping.yaml file.

path: <bag file path>
img_topic: <topic name>
cam_info_topic: <topic name>
depth_img_topic: <topic name>
depth_cam_info_topic: <topic name>
depth_compressed: <boolean>

Loading ROS Pose Data

Update the following subfields within the pose_data field in your new mapping.yaml file.

path: <bag file path>
topic: <topic name of type Pose or Odometry>
time_tol: <time in seconds> # Pose data will not be interpolated if there is not a recorded pose within time_tol of a desired time

If the pose is recorded using /tf topic rather tha a Pose or Odometry message, then use the following:

path: <bag file path>
file_type: bag_tf
parent: <parent frame_id>
child: <child frame_id>
inv: <Whether the transformation from /tf should be inverted or not>

Additionally the following subfields should be provided if they are not identity: T_camera_flu and T_odombase_camera. These are used for determining (1) the pose of the a forward-left-up coordinate frame with respect to the camera frame and (2) the pose of the camera expressed in the odometry base frame. T_camera_flu is used to inform ROMAN roughly along which axis gravity will point, since ROMAN uses gravity direction to help guide loop closures. T_odombase_camera is necessary if the camera frame is not the child of the pose topic.

These two transformation subfields can be described with the following formats:

input_type: "string"
string: <"T_RDFFLU" or "T_FLURDF">

or

input_type: "tf"
parent: <parent frame_id>
child: <child frame_id>
inv: <Whether the transformation from /tf_static should be inverted or not>

Using environment variables in data paths/topics

To enable using the same set of parameters on different robot data, demo.py can be run with the -e argument to export a desired environment variable with the run names specified with the -r command. As an example, if you have two robots, julius and augustus, you can use -r julius augustus and in the path field of img_data, specify the path as "${ROBOT_ENV_VAR}.bag. Then use -e ROBOT_ENV_VAR so that ROMAN will correctly grab julius.bag for the julius run and augustus.bag for the augustus run.