/Omni-Directional-Bot-with-UR5-Arm

A python based project to simulate a mobile manipulator in Gazebo simulation environment. The kinematics for the model was derived manually along with the mobile base and the forward and inverse kinematics was used to control the entire robot. A real world alike agriculture world was created to simulate real world experience.

Primary LanguagePythonMIT LicenseMIT

Omni Directional Bot with UR5 Arm

A python based project to simulate a mobile manipulator in Gazebo simulation environment. The kinematics for the model was derived manually along with the mobile base and the forward and inverse kinematics was used to control the entire robot. A real world alike agriculture world was created to simulate real world experience.

Documents:

  1. Link to report, discussions are here
  2. Jacobian calculation was done in MATLAB file which can be found here.

Setup

  • Clone this repository into your catkin_ws:

    git clone https://github.com/vaishanth-rmrj/Omni-Directional-Bot-with-UR5-Arm.git
    catkin_make
    source devel/setup.bash
    
  • If running ROS Noetic, you might have to run this command in the terminals you open:

    mkdir ~/bin
    PATH=~/bin:$PATH
    ln -s /usr/bin/python3 ~/bin/python
    

    Subsequently, you can add PATH=~/bin:$PATH to ~/.bashrc.

  • The python reqirements.txt file can be used to install the required python library dependencies.
    Install the libraries by using the following command:

    pip install -r requirements.txt
    

Unit Test

Video shows the arm's End effector is moved in X,Y and Z coordinates using Inverse Jacobian method.

Test

  1. Gazebo simulation:

    Vegetation Full Video Youtube link

  • Run Vegetation pest survey Environment:
    # Vegetation word Gazebo launch
    roslaunch enpm662_final_project gazebo_test_robot.launch
    • Attend to pests on bushes in the field using the command:
    # Run Attend to Pests node
    rosrun enpm662_final_project attend_to_pests.py
  1. Run sample world file:

    Object world

  • Launch the sample world file:

    # Objects world Gazebo launch
    roslaunch enpm662_final_project gazebo_test_robot.launch argworld:=objects
    • Touch objects in environment using these commands:
    # Run Go to Goals node
    rosrun enpm662_final_project go_to_goals.py
  1. Run Teleop for UR5 Arm using Inverse Jacobian using:

    # Mecanum control node listener node
    rosrun enpm662_final_project teleop_arm.py
  2. For Teleop for chassis run these 2 nodes:

    # Mecanum control node listener node
    rosrun enpm662_final_project test_mecanum_robot.py
    # Teleop control node
    rosrun enpm662_final_project test_publisher.py

Data visualization:

Plot joint angles with RQT:

Rviz

roslaunch enpm662_final_project rqt_vis.launch  

Visualize in Rviz:

Rviz

# Rviz visualization:
roslaunch enpm662_final_project rviz.launch

World file & Models:

  1. The bush model is taken from this repository.
  2. The world file is take from Agribot repository.
  3. Mecanum Wheel FM202-205-15U-R/L (FUJI) gazebo model description.