Skip to content

Latest commit

 

History

History
132 lines (93 loc) · 3.5 KB

README.md

File metadata and controls

132 lines (93 loc) · 3.5 KB

Description

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.

Mathematical Model

Note: Naming Convention: RGB => x, y, z

Positive direction for rotation follows right hand thumb.

General Math Model

(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

Special Case

Tested On

  • Ubuntu 22.04
  • ROS2 Humble
  • Gazebo Classic V11

Usage

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

ToDos

Issues

Handy Commands