aswathselvam / AcmeRoboticsPathPlanner

A C++ based manipulator arm path planner with IK solver

Home Page:https://github.com/aswathselvam/AcmeRoboticsPathPlanner

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status Coverage Status License: MIT

Arm path planner

A manipulator path planner with IK solver for Acme Robotics

Overview

This is a project for the path planning of a robotic arm manipulator. The work was proposed and developed for Acme Robotics. The system will provide a solution for a 6DOF UR5 robotic arm path planning consisting of an IK solver and path planner and the output will be simulated in a virtual environment. The input to the system will be the desired goal cartesian coordinates. This input will be applied to a 6 DOF robotic arm with set initial points and known configuration. Based on this data, the IK solver will calculate the configuration of individual arm components. To avoid unforeseen problems, each calculation will be validated against the arm constraints. For the implementation of the IK solver and path planner, we are using Pseudo Inverse of Jacobian method to control the end effector by feeding very small joint angles. The trajectory is generated based on a linear path from start to end position. The development team of two will work together and use agile methodologies. A standard software pair programming will be implemented. The driver-navigator method will ensure code is inspected on the go and this collaboration will result in a bug-free, robust product.

Project Development Documentation

The project backlog for AIP process can be found here Team discussions can be found here

cool Robot source

Authors

1. Kavyashree Devadiga (117398045)
Computer buff, interested in smart autonomous systems. Has a Bachelors degree in Computer Science and is currently pursuing Masters of Engineering in Robotics at University of Maryland College Park. linkedin   github

2. Aswath Muthuselvam (118286204)
Holds interest in Autonomous Mobile Agents, Computer Vision, Simultaneous Localization and Mapping, AI, Real-Time systems, and controls. Has a Bachelors's degree in Electrical, Electronics, and Communications Engineering and is currently pursuing Masters of Engineering in Robotics at the University of Maryland College Park. linkedin   github

Installation

The project requires a C++ environment, coppeliasim application for execution.

git clone --recursive https://github.com/kavyadevd/AcmeRoboticsPathPlanner.git
cd AcmeRoboticsPathPlanner
mkdir -p build
cd build
cmake ..
make

Fet Eigen for matrix computations

git clone https://gitlab.com/libeigen/eigen.git

MoveIt

For complete MoveIt installation refer to official documentation here. On Ubuntu 18.04 and above MoveIt can be installed using following commands:

mkdir -p ~/ws_moveit/src
cd ~/ws_moveit/src

wstool init .
wstool merge -t . https://raw.githubusercontent.com/ros-planning/moveit/master/moveit.rosinstall
wstool update -t .

Coppeliasim Download Coppeliasim Educational version and unpack the compressed file. Run the simulator script by running the following command on cmd:

$<CoppeliaSim>/coppeliaSim.sh <AcmeRoboticsPathPlanner>/ur5_CoppeliaSim_scene.ttt

The Matlab file used for calculation of Transformation matrices and Jacobian of UR5 robot arm can be found here

Example Demo: Below GIF shows end-effector reaching the goal state using Pseudo Inverse Jacobian method. Example demo

Assumptions:

  1. Singularity is dealt with randomly perturbing the robot arm joints by a small angle so that the Inverse Jacobian is found in the next iteration of Inverse Kinematics calculation.
  2. Joint angle limits are not applied with respect to the physical model.
  3. The arm's width is not considered, this might lead to angle commands that cause self-collision near the arm joints.

Our UML diagram UML_diagram

Building for code coverage

sudo apt-get install lcov
cmake -D COVERAGE=ON -D CMAKE_BUILD_TYPE=Debug ../
make
make code_coverage

Plugins

  • CppCheckEclipse

    To install and run cppcheck in Eclipse

    1. In Eclipse, go to Window -> Preferences -> C/C++ -> cppcheclipse. Set cppcheck binary path to "/usr/bin/cppcheck".

    2. To run CPPCheck on a project, right-click on the project name in the Project Explorer and choose cppcheck -> Run cppcheck.

    3. To run on terminal

    cppcheck --enable=all --std=c++11 -I include/ --suppress=missingIncludeSystem $( find . -name *.cpp -or -name *.h | grep -vE -e "^./build/" -e "^./vendor/") >     Results/cppcheckoutput.xml

    Results are present at Results/cppcheckoutput.xml

  • Cpplint

    1. To run cpplint on terminal
    cpplint $( find . -name *.cpp | grep -vE -e "^./build/" -e "^./vendor/") $( find . -name *.hpp | grep -vE -e "^./build/" -e "^./vendor/") >                    Results/cpplintoutput.txt

    Results are present at Results/cpplintoutput.xml

  • Google C++ Style

    To include and use Google C++ Style formatter in Eclipse

    1. In Eclipse, go to Window -> Preferences -> C/C++ -> Code Style -> Formatter. Import eclipse-cpp-google-style and apply.

    2. To use Google C++ style formatter, right-click on the source code or folder in Project Explorer and choose Source -> Format

  • Git

    It is possible to manage version control through Eclipse and the git plugin, but it typically requires creating another project. If you're interested in this, try it out yourself and contact me on Canvas.

  • Doxygen

    The HTML page for project outlines can be generated using the following commands

    1. doxygen -g
    2. doxygen Doxyfile

Licensing

The project is licensed under MIT License. Click here to know more

About

A C++ based manipulator arm path planner with IK solver

https://github.com/aswathselvam/AcmeRoboticsPathPlanner

License:MIT License


Languages

Language:TeX 46.6%Language:C++ 21.9%Language:JavaScript 14.6%Language:CSS 12.5%Language:CMake 2.5%Language:Python 1.7%Language:Makefile 0.2%