A computer-implemented method of determining optical-flow in physical space, comprising: generating a first RGB-D image and a second RGB-D image, wherein the generating of each of the first and second RGB-D images (1010, 1020) includes: receiving RGB image data from an RGB camera assembly; receiving a first depth-map data set from a first ultrasonic array corresponding to a first portion of the RGB image data; receiving a second depth-map data set from a second ultrasonic array corresponding to a second portion of the RGB image data; aligning said RGB image data and said depth-map data with each other; cropping portions of the first and second depth-map data sets that do not correspond to the RGB image data; upsampling the first and second depth-map data sets to match a resolution of the RGB image data; and combining the corresponding depth-map data sets and RGB image data to generate the RGB-D image (1010, 1020); identifying a plurality of feature points in the first RGB-D image, wherein the feature points are identified in RGB image data; and determining optical-flow velocities of the plurality of feature points in physical space, including: determining a pixel velocity of a portion of the feature points by comparing the RGB portions of the first and second RGB-D images (1010, 1020), wherein the movement of the feature points is identified by tracking the feature points between the first and second RGB-D images (1010, 1020) and determining a pixel distance that the feature points move between the first and second RGB-D images (1010, 1020); and converting determined pixel velocity of the portion of the feature points to velocity in physical space using depth data of the first and second RGB-D images (1010, 1020) that is associated with the pixel positions on the feature points, wherein the depth data associated with the feature points is used to obtain units in physical space. generating a first RGB-D image and a second RGB-D image, wherein the generating of each of the first and second RGB-D images (1010, 1020) includes: receiving RGB image data from an RGB camera assembly; receiving a first depth-map data set from a first ultrasonic array corresponding to a first portion of the RGB image data; receiving a second depth-map data set from a second ultrasonic array corresponding to a second portion of the RGB image data; aligning said RGB image data and said depth-map data with each other; cropping portions of the first and second depth-map data sets that do not correspond to the RGB image data; upsampling the first and second depth-map data sets to match a resolution of the RGB image data; and combining the corresponding depth-map data sets and RGB image data to generate the RGB-D image (1010, 1020); receiving RGB image data from an RGB camera assembly; receiving a first depth-map data set from a first ultrasonic array corresponding to a first portion of the RGB image data; receiving a second depth-map data set from a second ultrasonic array corresponding to a second portion of the RGB image data; aligning said RGB image data and said depth-map data with each other; cropping portions of the first and second depth-map data sets that do not correspond to the RGB image data; upsampling the first and second depth-map data sets to match a resolution of the RGB image data; and combining the corresponding depth-map data sets and RGB image data to generate the RGB-D image (1010, 1020); identifying a plurality of feature points in the first RGB-D image, wherein the feature points are identified in RGB image data; and determining optical-flow velocities of the plurality of feature points in physical space, including: determining a pixel velocity of a portion of the feature points by comparing the RGB portions of the first and second RGB-D images (1010, 1020), wherein the movement of the feature points is identified by tracking the feature points between the first and second RGB-D images (1010, 1020) and determining a pixel distance that the feature points move between the first and second RGB-D images (1010, 1020); and converting determined pixel velocity of the portion of the feature points to velocity in physical space using depth data of the first and second RGB-D images (1010, 1020) that is associated with the pixel positions on the feature points, wherein the depth data associated with the feature points is used to obtain units in physical space. determining a pixel velocity of a portion of the feature points by comparing the RGB portions of the first and second RGB-D images (1010, 1020), wherein the movement of the feature points is identified by tracking the feature points between the first and second RGB-D images (1010, 1020) and determining a pixel distance that the feature points move between the first and second RGB-D images (1010, 1020); and converting determined pixel velocity of the portion of the feature points to velocity in physical space using depth data of the first and second RGB-D images (1010, 1020) that is associated with the pixel positions on the feature points, wherein the depth data associated with the feature points is used to obtain units in physical space.