Git Product home page Git Product logo

mario's Introduction

MARIO WORKSHOP 2.3

Downloads License: MIT GitHub star chart Dependency Status Open Issues Open in GitHub Codespaces

MARIO abbreviation for Manipulator on ROS Based Input Output is a bot with 3 Degree of Freedom. It consists of two SG90 micro servo and one MG995 metal gear servo motor. The servo motors are placed on base, elbow and shoulder enabling it with 3 Degrees of Freedom.

Given below are instructions for ROS2-Humble and micro-ROS installations. For ROS1 and Rosserial based MARIO, refer to the following instructions.

Sneak Peek

Working of the Mario Bot

Mario bot simulated using Gazebo

File Structure

├── 1_chatter_listener                        # talker and listener script to understand the nodes and communications in ROS
├── 2_simulation_dh                           # simulation of DH paramteres
├── 3_simulation_rviz                         # simulation of MARIO bot on rviz
├── 4_simulation_gazebo                       # simulation of MARIO bot on gazebo
├── assets                                    # contains necessary gifs, images 
├── firmware                                  # contains ESP-IDF examples for controlling servo motors and micro-ROS
│   ├── 1_servo_set_zero                      # example in ESP-IDF to set angles of all servo motor zero
│   ├── 2_servo_sweep                         # example in ESP-IDF to set variable angles in servo motor
│   ├── 3_microros_rviz                       # example in ESP-IDF to interface with rviz environment as well as ESP32
│   ├── 4_microros_gazebo                     # example in ESP-IDF to interface with gazebo environment as well as ESP32
│   ├── 5_servo_test_webserver                # example in ESP-IDF to set angles of servo over the webserver interface
│   └── components                            # contains all the dependencies required for the above examples
│       ├── micro_ros_espidf_component        # library to interface between micro-ROS environment and ESP32
│       └── sra-board-component               # library to interface with SRA board
├── LICENSE
└── README.md 

Kinematics

  • MARIO workshop aims to provide the basic knowledge about the DH parameters, forward kinematics , inverse kinematics.
    • DH Parameters :- Denavit–Hartenberg parameters (also called DH parameters) are the four parameters associated with a particular convention for attaching reference frames to the links of a spatial kinematic chain, or robot manipulator
    • Forward Kinematics :- Forward kinematics refers to the use of the kinematic equations of a robot to compute the position of the end-effector from specified values for the joint parameters. The kinematics equations of the robot are used in robotics, computer games, and animation.
    • Inverse Kinematics :- inverse kinematics is the mathematical process of calculating the variable joint parameters needed to place the end of a kinematic chain, such as a robot manipulator or animation character's skeleton, in a given position and orientation relative to the start of the chain.

ROS-2

ROS2 is the ultimate toolkit for robotics enthusiasts and professionals alike. Seamlessly integrating hardware and software, ROS2 streamlines development workflows, accelerates prototyping, and enables rapid iteration. With its modular architecture and extensive library of reusable components, ROS2 simplifies the creation of complex robotics projects, from autonomous drones to collaborative robot arms.

Publisher and Subscriber

Publish/Subscribe is a messaging pattern that aims to decouple the sending (Publisher) and receiving (Subscriber) party. A real world example could be a sport mobile app that shows you up-to-date information of a particular football game you're interested in. In this case you are the subscriber, as you express interest in this specific game. On the other side sits the publisher, which is an online reporter that feeds a system with the actual match data. This system, which is often referred as the message broker brings the two parties together by sending the new data to all interested subscribers.

While ROS2 works on the same system, this system is also used in various other libraries like MQTT.

MICRO-ROS

micro-ROS is a robotic framework targeting embedded and deep-embedded robot components with extremely constrained computational resources. These devices have special characteristics: a minimum real-time operating system or no operating system, battery-powered, wireless low bandwidth connections, and intermittent operation with sleep periods.

ESP-IDF

ESP-IDF is the development framework for Espressif SoCs.The SRA Board uses ESP32 as microcontroller, hence ESPIDF is required to code the ESP32. Examples included inside firmware directory has been written in ESPIDF version 5.1 .

Installation of ROS2 and other dependencies

  • Copy and execute the following command in your bash terminal
wget -O - https://raw.githubusercontent.com/SRA-VJTI/MARIO/humble/installations.sh | bash
  • As an alternative, you can also install the required packages on your local machine by following the instructions below.

    • Clone SRA-VJTI's MARIO repository on your system
    git clone --recursive https://github.com/SRA-VJTI/MARIO.git
    • Change terminal directory inside the cloned repository
    cd MARIO/
    • Run the installation script
    ./installations.sh

mario's People

Contributors

adityavivekanand avatar apr0t0 avatar arn1954 avatar aryannanda17 avatar asc91 avatar atharv1035 avatar chinmaylonkar avatar gautam-dev-maker avatar hashmis79 avatar herculoxz avatar jamm02 avatar jash-shah avatar laukik-hase avatar moloch-dev avatar nachtspyder04 avatar pritk99 avatar rapidroger18 avatar saharshleo avatar skybirdsgp avatar superchamp234 avatar toshan-luktuke avatar ved29 avatar vedantparanjape avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

mario's Issues

Changing the gripper design

The aim of this issue is to design a new gripper for MARIO.
Older version of MARIO manipulator had an issue with its gripping mechanism. This time, we are thinking of designing new gripper for this purpose.
Currently, There are two designs that we have thought of :

  1. Gripper using rack and pinion mechanism :
    In this mechanism, gripping is done using rack and pinion structure which is supported/actuated by gear linked with motor.
    Screenshot (58)

  2. Gripper using more support
    This design is similar to the previous one except it has more support which allows it to rotate in a proper manner.

Screenshot (59)

Migration from Gazebo classis to gazebo harmonic and ROS1 to ROS2 for 3_simulation_gazebo package

[NECESSARY CHANGES]:

  • Change URDF to SDF
    • Reference
    • Things to be considered in this migration
      - While converting directly to .sdf make sure of the controllers from ros2_control
      - First try to understand how the controllers are used in this example
      - Clone the above example and try launching rrrobot example and observe the code as it will be helpful for this migration
      - Try using position controllers for the rotational joints
  • Rewrite the .launch scripts to .launch.py
    • For this one can refer this repo here
    • NOTE: This repo works for the gazebo classic with position controllers
  • Rewrite the inverse kinematics script for rclpy and utilize position controller to control the joints

[OPTIONAL CHANGES]:

  • Writing a smoother angle change for inverse kinematics

[FUTURE PROSPECTS]:

  • Writing script for inverse velocity kinematics

Installing packages without sufficient checks

The install_codes.sh has a version specific (kinetic) command without proper check ros-kinetic-rosserial
It would be better if you can simply display the install command and quit.
sudo apt install ros-<version>-rosserial
This will avoid breaking of script in the future, and allow melodic+ users to setup the environment without hassle

Migrating from ROSSERIAL to MICROROS

ROS1 noetic has an edge-compatible platform rosserial which utilizes its xml-rpc protocol for esp32 and wifi for communication with the roscore. ROS2 on the other hand utilizes DDS as its base protocol, so for this mircoros is a replacement for rosserial.

To be able to successfully migrate firmware of rosserial_rviz and rosserial_gazebo one needs to go through the following:

  1. https://micro.ros.org/docs/tutorials/core/first_application_rtos/freertos/
  2. Tutorial on how to write nodes and subscribers for esp32 microros
  3. Learn commands for flashing the firmware

Re-write details:

  1. Subscribe to the common topic of joint angles from the inverse kinematics script
  2. Utilize these values and just call servo functions from sra board components

Porting MARIO to ROS2 and esp-idf to 4.4 according to SRA board components

  • As ROS1 has ended its support for the latest ubuntu versions and as industry is progressing we need to adapt to the changes and port as soon as possible to the ROS2 latest distribution i.e. HUMBLE.
  • Same goes for the esp-idf v5.1
  • As ROSSERIAL is not supported for ROS1, one must look into the MICRO-ROS tutorials for writing nodes for esp32 and porting the firmware to microros

Tasks Need to be done

  • Porting to ROS2 Humble
  • Designing a new end effector (maybe not gripper this time)
  • Porting to esp-idf v5.1
  • OPTIONAL- Making a teleop controller to control the bot with webservice

Release v2.1 is outdated

In the release tab at the side of the repo, the install script is from 2020. It needs to be updated to the 2021 version of install_codes.sh which is present in the root of the repo

E (21596) esp-ros-wifi: Error receiving data: errno 113 E (22596) esp-ros-wifi: Error receiving data: errno 128

Hi!
I am trying to reproduce the project from the Workshop, but I'm facing some difficulties when flashing. It shows that the device is connected to the WiFi but I can't stablish any tcp connection.
If someone happens to know, have had the same issue before or have any thoughts on it, it would be very kind and I would be very thankful for it.
The errors from the ESP_LOGS, when monitor using (idf.py monitor) after flashing:

I (1586) esp-ros-wifi: Connected to AP
I (1596) esp-ros-wifi: Successfully connected
E (20596) esp-ros-wifi: Error receiving data: errno 113
E (21596) esp-ros-wifi: Error receiving data: errno 113
E (22596) esp-ros-wifi: Error receiving data: errno 128
E (23596) esp-ros-wifi: Error receiving data: errno 128
E (24596) esp-ros-wifi: Error receiving data: errno 128

The errors seem to be with the socket connection, but I am not any sure of it.
I am flasing the ESP32 using the ESP-IDF on a Windows 10 and ROS Melodic, instead of Linux and ROS Kinetic.
Thanks a lot in Advance to anyone who could have a look on it

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.