Skip to content

This repository contains my hardware and software implementation of my learning on robotics

Notifications You must be signed in to change notification settings

ashuRMS/Experimental_Robotics

Repository files navigation

Experimental Robotics

This repository showcases the practical implementation of robotics concepts, encompassing hardware and software components. It comprises six distinct experiments that delve into various aspects of robotics. The experiments covered are as follows:

  1. Introduction to ROS.
  2. Control of Turtlebot3.
  3. Control of Open Manipulator X.
  4. End Effector and Trajectory Control of Open Manipulator X.
  5. Jacobian-based Control of the End Effector of Open Manipulator X.

Introduction to ROS

Task A: Running TurtleSim with Linear and Angular Velocities

To initiate TurtleSim simulation with linear and angular velocities as inputs, follow these steps:

  1. Open two separate Linux terminals.

  2. Run the following commands in the respective terminals:

    $ roscore
    $ rosrun turtlesim turtlesim_node
    
  3. In the second terminal, execute:

    $ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.5]'
    

    This command publishes velocity commands at a rate of 1 Hz, with a linear velocity of 2 m/sec in the x-direction and an angular velocity of 1.5 rad/sec.

Task B: Custom Code for Position Control of TurtleSim

To move TurtleSim to a desired position, a custom code is provided. See the solutions for both Python and C++ implementations:

TurtleSim

TurtleSim.__.Go.to.goal.behaviour._.Proportional.Control.mp4

Video Demo

Task C: Custom Service and Client Nodes

Implement a custom service and client node where the client requests basic calculations from the server:

Task D: Creating a ROS Package

Learn how to create a ROS package manually, without using the "catkin_create_pkg" command:

Control of TurtleBot3

This section highlights a combination of software and hardware experiments executed using the TurtleBot3 Waffle Pi model.

TurtleBot 3 Waffle Pi TurtleBot 3 Dimensions

Task A: Navigating TurtleBot3 using Proportional Control

This task employs proportional control to guide the TurtleBot to a designated destination. The error function computes the Euclidean distance between the current and target positions, serving as the foundation for generating linear velocity commands. Simultaneously, heading error calculates angular velocity commands.

TurtleBot3.__.GoToGoal.__.Hardware.Simulation.on.Waffle.Pi.mp4

Task B: Creating a Robotics Lab Map using SLAM

This task introduces SLAM (Simultaneous Localization and Mapping), a technique that constructs maps by estimating current locations in a given space. TurtleBot3's proficiency in SLAM is showcased as it accurately maps a compact and cost-effective platform.

Robotics Lab Map

Task C: Navigating within a Custom Map

Navigation involves moving the robot from one point to another in a designated environment. Achieving this requires a map containing spatial information about furniture, objects, and walls. The map is generated through SLAM, utilizing sensor distance data and robot pose information.

Task D: Navigating within a Custom Map and Teleoperating a Simulated Node

World Map

Control of OpenManipulator-X

OpenManipulator_Introduction

  • OpenMANIPULATOR-X is based on ROS ​and OpenSource. ROS official hardware platform, TurtleBot series has been supporting “TurtleBot Arm”. The OpenMANIPULATOR-X has full hardware compatibility with TurtleBot3​. Users can also control it more easily by adopting the MoveIt! package. Even if you do not have an actual robot, you can control the robot in the Gazebo simulator​.

Objective - 1: Connecting the Robot with a computer using U2D2 and Learning basic operations on the Robot using existing packages

  • In the Linux(Ubuntu platform) environment, USB latency time is set to 16ms by default. Follow the steps below to set the communication latency time to the lowest value (1ms) between DYNAMIXELs and PCs connected via USB.
  1. Open a terminal window.

  2. Run the ROS core with the following command:

    $ roscore

    This command initializes the ROS master, which is essential for ROS communication.

  3. Open a new terminal window.

  4. To change the USB latency to 1 ms, use the following commands:

    $ rosrun open_manipulator_controller create_udev_rules
    $ cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer

    The first command configures the USB rules for your device, and the second command displays the current USB latency timer value for ttyUSB0.

  5. Move the manipulator using keyboard teleoperation

$ roslaunch open_manipulator_teleop open_manipulator_teleop_keyboard.launch
Open.Manipulator.X.__.Teleoperation.mp4

Objective - 2: Control of Robot using GUI

The robot was controlles by a GUI program to draw 3 different shapes .

Control.of.Open.Manipulator.using.GUI.__.Drawing.Circle.Rhombus.and.Heart.mp4
  • Final Drawings

Objective - 3: Connecting the Robot with a computer using U2D2 and Learning basic operations on the Robot using existing packages

  • In this example, if the user is holding the master OpenMANIPULATOR, the slave OpenMANIPULATOR-X moves like master robot. Recording mode allows you to save the trajectory as you move the master OpenMANIPULATOR-X and play it back to the slave OpenMANIPULATOR

-OpenManipulator_master_slave_connection

-OpenManipulator_master_slave

Master.Slave.Operation.__.Open.Manipulator.X.mp4

About

This repository contains my hardware and software implementation of my learning on robotics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published