Alternative method to generate odometry data for indoor robots using optical flow sensor.
Note: This branch tests the ideology by utilizing RGB camera and performing cross corelation algorithm in gazebo simulation environment.
Devices that can be used as optical flow sensors
- USB mouse - requires USB driver
- Optical Flow sensor module, e.g
MATEKSYS 3901-L0X, Avago ADNS-9500- requires low level communication driver as well as has some minimum height issues. - General Purpose Camera, e.g RaspberryPi camera - requires to design a custom cross-corelation algorithm.
Challenges:
Performance highly depends on the surface of the ground. Rough terrains, high reflective surfaces are not suitable.
Node Structure:
- Low level driver: Communicates with hardware : publishes data on individual sensor topic - x2 for each sensor
- High level driver: which publishes data on topic odom by subscribing to individual sensor topics and performing the mathematical operations.
Parameters:
- Position of sensor from center of robot - x, y, yaw
Topics:
- /optical_flow_sensor_a
- /optical_flow_sensor_b
- /odom
Services:
- Reset initial pose
Frames:
- odom => base_link
⚠️ Note: The initial position fo the robot is consider to be that from when the launch file is launched.
Note: Naming Convention: RGB => x, y, z
Positive direction for rotation follows right hand thumb.
(Rx)M1: Translation in x-direction of Robot interpreted by Sensor M1
(Ry)M1 : Translation in y-direction of Robot interpreted by Sensor M1
(Rψ)M1 : Rotation about z-axis of Robot interpreted by Sensor M1
θ, (M1)θ : Orientational offset of sensor M1 wrt Robot
(M1)px : Positional offset of sensor M1 wrt Robot in x-direction
(M1)py : Positional offset of sensor M1 wrt Robot in y-direction
Rx : Translation in x-direction of Robot
Ry : Translation in y-direction of Robot
Rψ : Rotation about z-axis of Robot
- Ubuntu 22.04
- ROS2 Humble
- Gazebo Classic V11
To test the system in simulation environment,
Clone repository in your workspace
git clone git@github.com:maker-ATOM/optical-odometry.git
and perform,
colcon build --packages-select optical_odometry_gazebo --symlink-install
in the root of your workspace.
Launch the bringup file which launches rviz2, gazebo and spawns the turtlebot3.
ros2 launch optical_odometry_gazebo bringup.launch.py