Skip to content

A camera-based indoor localization system using ArUco markers to estimate position and orientation in real-time.

Notifications You must be signed in to change notification settings

vedantmalkar/VisiLoc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

VisiLoc

Visiloc is a camera-based indoor localization system which uses ArUco markers to estimate position and orientation in real-time, without the use of a GPS

OpenCV ROS2 Python

How It Works:

Every 30 miliseconds the robot's camera captures an image and sends it over to the Visloc. The first thing Visiloc does is convert the image to grayscale and starts checking if any of them contain the specific bit pattern that matches our marker ID.

Screenshot from 2025-12-14 22-54-31

Simulated Room

Once the marker is located Opencv gives us two pieces of data: rvec (rotation vector) and tvec (translation vector), these vectors are used to used to describe the marker's 3D pose relative to the camera. Using these vectors we are able to find the location of the bot with respect to the marker postion in the world by using the formula camera_position = -R^T × tvec (where R is the rotation matrix).

Screenshot from 2025-12-14 22-54-31

Marker on North Wall

Using some trigonometry and math, we can then rotate this camera position from the marker's coordinate frame into the world coordinate frame, giving us the robot's exact position in the world

Simulated Bot Anotated Camera Output Calculated Location

Simulated Bot Anotated Camera Output Calculated Location

Try it for yourself:

  1. clone the repo
git clone https://github.com/vedantmalkar/VisiLoc.git
cd VisiLoc/ros_ws/
  1. build and source your workspace
colcon build
source install/setup.bash
  1. launch simulation
ros2 launch ignition_robot complete.launch.py 
  1. on seperate terminal run finder node
ros2 run vision_controller coordinate_finder 
  1. on another terminal run visualizer node
ros2 run vision_controller coordinate_visualizer 
  1. move your bot using teleop_twist_keyboard on seperate terminal
ros2 run teleop_twist_keyboard teleop_twist_keyboard

About

A camera-based indoor localization system using ArUco markers to estimate position and orientation in real-time.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published