Skip to content

This AGV is implemented with Diff drive controller and Extended Kalman filter . Also implemented linear kalman filter as external node.

License

Notifications You must be signed in to change notification settings

shivasamkumar/AGV_Kalman_Filter_Robot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Robot Car: IMU Sensors and Extended Kalman Filter

This project involves designing and building a custom robot car equipped with IMU sensors and an Extended Kalman Filter (EKF) for advanced sensor fusion, resulting in enhanced data accuracy. The robot’s behavior is simulated in Gazebo, allowing for detailed visualization and validation of sensor fusion. This custom design is adaptable for real-world applications, such as precision agriculture and autonomous navigation.

Installation

Prequisites

  • Ubuntu 22.04 LTS

  • ROS2 humble

  • Gazebo

Step 1: Install ROS 2 Humble

Follow the ROS 2 Humble installation instructions for your operating system if ROS 2 is not already installed.

Step 2: Install Required ROS 2 Packages

Install the necessary ROS 2 packages.

sudo apt-get install ros-humble-ros2-control
sudo apt-get install ros-humble-ros2-controllers
sudo apt-get install ros-humble-xacro
sudo apt-get install ros-humble-ros-gz-*
sudo apt-get install ros-humble-*-ros2-control
sudo apt-get install ros-humble-joint-state-publisher-gui
sudo apt-get install ros-humble-turtlesim
sudo apt-get install ros-humble-robot-localization
sudo apt-get install ros-humble-joy
sudo apt-get install ros-humble-joy-teleop
sudo apt-get install ros-humble-tf-transformations

Step 3: Install Python Packages

Install Python and additional packages:

sudo apt-get install python3-pip
pip install transforms3d

Step 4: Additional Packages for Hardware Communication

To enable communication between the Arduino and ROS 2 using the Serial protocol:

sudo apt-get install libserial-dev

Run Locally

Clone the project

  git clone git@github.com:shivasamkumar/AGV_Kalman_Filter_Robot.git

Go to the project directory

  cd robo_car

build the project

  colcon build 

Source your workspace

  source ~/workspace/install/setup.bash 

Launch the project

  ros2 launch robot_car_bringup robot_car.launch.py use_simple_controller:=False 

This would use the diff drive controller with Noise simulated.

if true , it would simple controller designed , have a look at the implementation .

Demo

Robot car in Gazebo

Visulation of Extended Kalman Filter through Plot juggler

This image represents the visulation of Extended Kalman Filter through Plot juggler. The green line noisy controller implemented to recrate the life scenario and the red line is actual sensor output.

Video

This demo shows the Robot car controlled with a external joy stick. The project is digital twin and can deployed to external hardware (Rasberry pi) with slight modifications.

Watch the video

Click on the image to play the video

Future versions

  • Web-Based GUI

    Integrating a web-based control interface for remote access and operation, enabling users to control the robot arm from any device with internet access.

  • Localization, Mapping and Path planning and Execution

    Implementing Navigation stack for path planning and execution combined with web based control.

  • Hardware Integration

About

This AGV is implemented with Diff drive controller and Extended Kalman filter . Also implemented linear kalman filter as external node.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published