The current ROS node that comes with ORB-SLAM runs on some example data sets. We want to write a new node that runs on a live stream of data
Assumptions
Assume the right and left camera streams are published to the topics "/camera/left/image_raw" and "/camera/right/image_raw" respectively and are in the format sensor_msgs::Image. Output to a topic called "sensors/slam/state" or something in the format Float32MultiArray, which is a one dimentional array with the state elements in the following order:
Purpose
The current ROS node that comes with ORB-SLAM runs on some example data sets. We want to write a new node that runs on a live stream of data
Assumptions
Assume the right and left camera streams are published to the topics
"/camera/left/image_raw"
and"/camera/right/image_raw"
respectively and are in the formatsensor_msgs::Image
. Output to a topic called"sensors/slam/state"
or something in the format Float32MultiArray, which is a one dimentional array with the state elements in the following order:[x, y, z, theta, phi, psi, dx/dt, dy/dt, dz/dt, dtheta/dt, dphi/dt, dpsi/dt]
I decided to add the other two rotation values.
Resources
simple ros publisher/subscriber tutorial
orb-slam example ros node
If you look at the example code, it basically just feeds data into the ORB_SLAM2::System class and records the state output
There are some calibration parameters required by the example, leave them as they are until we can find the calibration parameters for our new cameras
Here are a few resources explaining how to use ros's Float32MultiArrays