Coder Social home page Coder Social logo

kartik-singhal26 / beetlebot-arm Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 1.0 5.95 MB

Beetlebot is a 3D Printed 5-DoF Robotic Arm. This repository contains code for setting up ROS Simulation and printable CAD files.

License: Apache License 2.0

CMake 100.00%
3d-printing ros-melodic robotics manipulator-robotics arduino rviz moveit solidworks

beetlebot-arm's Introduction

Beetle-Bot-Arm

BeetleBot is aimed to be an open source learning and tinkering platform for anyone interested in control of Robotic Manipulators and Computer Vision. Currently the project is under initial development and configurations.

About

Beetlebot is a 5-DoF robotic manipulator designed in Solidworks. Currently the arm is capable of basic manipulation and path motions. The robotic arm can either be printed using the provided .STL files and assembled with addition to some hardware and an Arduino board. Otherwise, it can be simulated in Rviz/Gazebo environment. For anyone looking to assemble the robot please find the list of required parts below:

  • 3D printable Parts provided in the Repository
  • Arduino Mega/Uno Board (Prefer Mega)
  • MG996R Servo x2 - For base and end effector bracket (continous rotation/unlocked servo)
  • MG995 Servo x2 - For both arms
  • SG90 Servo x2 - For Gripper Attachment
  • OV7670 Camera Module
  • DC to DC Step down Buck Converter (LM2596)
  • 16 Channel 12 Bit Servo Driver Board (PCA9685)
  • 12V DC Power Source
  • Ball Bearings x2 (8x22x7 MM)
  • Screws and Nuts
  • Jumper Cables

Note: All these parts are easily available on Amazon/Other Retailers

Installation

This part assumes that you are running Ubuntu 18.04 and have the following dependencies installed:

  • ROS Melodic
  • Rviz
  • MoveIt
  • Gazebo
  • Rosserial
  • OpenCV

Setup your environment

$ mkdir -p ~/beetlebot_setup/src
$ cd ~/beetlebot_setup/src

Clone this repository

$ git clone https://github.com/Kartik-Singhal26/Beetlebot-Arm
$ catkin_make
$ cd ~/beetlebot_setup
$ source devel/setup.bash

Task 1: Motion Planning in Simulation

For simulation purposes, plan and execute motion with Rviz. Use the following command to run Rviz Simulation:

$ roslaunch beetlebot_moveit_config demo.launch

Now, select a planner of your choice from the OMPL dropdown menu. In the Planning subgroup allow for Use Collision-Aware IK. Select the goal state for the robot from under the Query Menu. Since, Gripper and the rest of the arm are separate planning groups, select the beetlebot_arm group to move the manipulator. Select random valid or predifned poses from the drop down menu. Alternatively use the marker to move the robot.

To run Gazebo Simulation:

$ roslaunch beetlebot_moveit_config gazebo.launch

Task 2: Teleoperation from Host Computer

Note: I am currently working on Ubuntu 18.04 running on VirtualMachine with a Windows Host. For this task check all possible permissions and connections with the arduino board and see there are no conflicting softwares running.

Secondly, Make sure your PCA9685 driver is hooked-up correctly with the Arduino Board. Check this out: https://learn.adafruit.com/16-channel-pwm-servo-driver/hooking-it-up

Next, To communicate with the driver and ROS we need to setup a ros node for i2c communication. For this install:

  • libi2c-dev
  • ros-i2cpwmboard

Follow the following commands:

$ sudo apt-get install libi2c-dev
$ mkdir -p catkin_ws/src
$ cd ~/catkin_ws/src
$ git clone https://gitlab.com/bradanlane/ros-i2cpwmboard.git
$ cd ..
$ catkin_make
$ source devel/setup.bash

Make the following changes to the package files:

  • Navigate to the CMakeLists.txt file in catkin_ws/src/ros-i2cpwmboard folder and add i2c to line 22 The line should look like: target_link_libraries(12cpwm_board ${catkin_LIBRARIES} i2c)

  • Include the following code with the headers in the file i2cpwm_controller.cpp in catkin_ws/src/ros-i2cpwmboard_src folder:

extern "C"{ #include <i2c/smbus.h> }

Save and Close both the files and open a new terminal.

$ cd ~/catkin_ws
$ source devel/setup.bash
$ roscore

Open another Terminal at ~/catkin_ws, this will be the i2c communication node.

$ rosrun i2cpwm_board i2cpwm_board 

Project Status

Tasks

  • Added: Gripper
  • Solved: Orientation mismatch between Solidworks and Rviz/Gazebo
  • Created: Moveit Package
  • Created: URDF File
  • Completed: Design and Assembly in Solidworks

Current Known Issues

  • Unable to communicate with the driver sometimes. Even though Arduino IDE is able to scan the I2C at 0x40.

Error:

$ Failed to open I2C bus /dev/i2c-1
$ Failed to acquire bus access and./or talk to I2C slave at address 0x40

Tried:

$ sudo i2cdetect -y 0

No connection shown

Planned Tasks

  • Blob Detection with OpenCV
  • Motion Planning with the real robot

beetlebot-arm's People

Contributors

kartik-singhal26 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

yuebanban66

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.