Omnidirectional Images and Depth Data in Outdoor (OIDDO) DB

OVERVIEW

DETAILS

DOWNLOAD

GENERATE PANORAMIC IMAGES

CITATION

VISIT ALSO

OVERVIEW

The OIDDO DB is a set of omnidirectional images and point clouds captured in an outdoor environment (Innova building sorroundings) at Miguel Hernandez University in Elche, Spain. This database is intended to test navigation, mapping and localization algoritmhs for mobile robots. It contains rangefinder-based geometric representation, omnidirectional images (captured by a catadioptric camera and a fish-eye lens camera) and GPS positioning information of outdoor environments.

The database includes the following sensorial information: Odometry, GPS, IMU, laser and omnidirectional color images. It has been captured during different times of the day (Morning, Midday, Afternoon and Evening) and also in different days.

The next figures show a bird eye's view of one trajectory (2022-12-07-15-22-43) where the robot captured the sets and an image of the robot used for it.

map Husky Robot

 

 

DETAILS

Technical data

  • Robot platform: Husky A200 @ maximum speed 1 m/s
  • Lidar: Ouster OS1-128 @ 10/20 Hz
  • IMU:UM7 from redshiftlabs
  • Catadioptric camera: Imaging Source DFK 37BUX264 (2448x2048) @ 1 FPS
  • Fish-eye lens camera: Garmin VIRB 360, 2 images (2496x2496), FoV: 201.8° @ 30 FPS
  • GPS: Harxon Ts100 @1Hz

Format

Sensors data are stored in a folders with their name (camera, gps, imu, odom, lidar, etc.). Their file names are in the format of {TIMESTAMP}.ext, where .ext is the corresponding extension (.png, .csv, .pcd, etc.) .

For example, 2022-11-28-11-24-49/robot0/camera/data/1669631090139103000.png encodes the following information.

  • The place scan was captured on 28/11/2022 and started at 11:24:49 .
  • The timestamp in Unix epoch time is 1669631090139103.000.

DOWNLOAD

The whole database is downloadable through the next links:

Route Illumination condition # Sequence File
Innova-gardens
(Trajectory map)
Sunny Sequence 1 .bag file
euroc asl
images
laser
Fish-eye images
Cloudy Sequence 1 .bag file
euroc asl
images
laser
Fish-eye images
Night Sequence 1 .bag file
euroc asl
images
laser
Fish-eye images
Innova->Altet
(Trajectory map)
Sunny Sequence 1 .bag file
euroc asl
images
laser
Fish-eye images
Cloudy Sequence 1 .bag file
euroc asl
images
laser
Fish-eye images
Night Sequence 1 .bag file
euroc asl
images
laser
Fish-eye images

The database was captured with an Imaging Source DFK 33UX264 camera, which takes pictures of a hyperbolic mirror (Eizoh Wide 70). The mirror is mounted over the camera, with its axis aligned with the camera optic axis. The Fish-eye images were captured with a Garmin VIRB 360 camera (two files of 2496x2496). The laser data were captured with a Ouster OS1-128 at 10/20 Hz.

GENERATE PANORAMIC IMAGES

We provide some code to convert a omnidirectional images to panoramic:


import numpy as np
def o2p(omni_img, r_int, r_ext):
    #r_int: internal radius (radius of the black point in the centre)
    #r_ext: external radius (edge of the omnidirectional image)


    dimensions = omni_img.shape
    [Cx, Cy] = [dimensions[0], dimensions[1]]
    #Centre of the image
    Cx = Cx/2
    Cy = Cy/2

    r1 = r_ext
    r2 = r_int

    i = 0
    j = 0

    pi=np.pi
    w = int(np.floor((r1 + r2) * pi))
    l1=int(len(range(r1, r2 - 1, -1)))
    l2=int(len(range(w, -1, -1)))

    panoramic_matrix = np.zeros([l1, l2, 3])
    for r in range(r1,r2-1,-1):
        for var in range(w,-1,-1):
            coorx1 = int(np.floor(r * np.sin(var * 2 * pi / w) + (Cx)))
            valorx1 = (r * np.sin(var * 2 * pi / w) + (Cx)) - np.floor(r * np.sin(var * 2 * pi / w) + (Cx))

            coory1 = int(np.floor(r * np.cos(var * 2 * pi / w) + (Cy)))
            valory1 = (r * np.cos(var * 2 * pi / w) + (Cy)) - np.floor(r * np.cos(var * 2 * pi / w) + (Cy))

            A=((2 - valorx1 - valory1) * omni_img[coorx1, coory1, 0:])
            B=((1 - valorx1 + valory1) * omni_img[coorx1, coory1 + 1,0:])
            C=((1 + valorx1 - valory1) * omni_img[coorx1 + 1, coory1,0:])
            D=((valorx1 + valory1) * omni_img[coorx1 + 1, coory1 + 1,0:])

            [red,green,blue]=(A + B + C + D)/ 4
            # panoramic_matrix[i, j, 0:] = int((A + B + C + D)/ 4)
            panoramic_matrix[i, j, 0]=int(red)
            panoramic_matrix[i, j, 1]=int(green)
            panoramic_matrix[i, j, 2] = int(blue)

            j = j + 1
        j=0
        i=i+1

    return panoramic_matrix.astype(np.uint8)

Publications

    Pending Publication...

Visit also

  1. ARVC (Automation, Robotics and Computer Vision group): Visit our research group.