Coder Social home page Coder Social logo

reakain / climberspider Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 81.71 MB

Slow development of a model and algorithm set for a climbing hexapod robot in Unity. Initial arm build out is part of a class project

License: MIT License

C# 85.72% Smalltalk 0.04% ShaderLab 13.12% Shell 1.12%

climberspider's Introduction

ClimberSpider

Build Status unity version

Unity project to develop grasping and motion planning of a climbing 6-legged robot. Initial work focuses on development of single arm grasp selection and motion, then spread to double arm separate and parallelized actions, before expanding out to the final six leg concept.

Initial single and double arm build out is part of a term project for a motion planning class.

Unity Script Definitions

ArmPlanner.cs

The Arm Planner handles the primary RRT implementation, and is fed information about possible goal states from the assigned object's Grasp Region class. The Arm Planner also calls the IK Solver functions to determine if the arm can find a motion to a CFree point.

GraspRegion.cs

In addition to the scripts added to the joints, hand, and arm of the robot, each graspable object has a C# component. This component handles the PCA-based grasp region definitions, and the secondary set of adding potential goal poses to the pose tree defined in the Arm Planner.

MultiArmPlanner.cs

The Multi-Arm Planner handles interactions between the two arms. All Arm objects in Unity3D are added as children to a root-level object who's only components are the transform, which each object has, and the Multi-Arm Planner script. When each Arm Planner finds a solution, the solution is fed to the Multi-Arm Planner, which then handles deadlock and inter-arm collision checks.

ArmController.cs

When an acceptable multi-arm solution is found, the appropriate arm solutions are then piped from the script to each arm's specific Arm Controller class for implementation. Unity3D's Update method in-built to their scripting components then allows each arm step to implement simultaneously.

Arm Directory

This directory contains scripts that attach to child objects on the Arm prefab object.

RobotJoint.cs, ArmJoint.cs, WristJoint.cs, FingerJoint.cs

The primary support class is the base Robot Joint class which is inherited by both the Finger Joint and Arm Joint classes. This class handles all joint rotations and angle checks, and is an underpinning of the gradient descent based IK Solver used in this RRT implementation. Information stored in this component class is an individual joint's rotation angle range from the "home" position, and the axis of rotation. This base class is then separated into inherited finger, wrist, and arm joints. This split allows for simplified inverse kinematic solutions, and more focus spent on movements that only impact the actual object grasp.

IKSolver.cs, Arm.cs, Wrist.cs, Finger.cs

The inverse kinematics of the robot are handled by a set of classes that inherit from the IK Solver class. The IK Solver class is a gradient descent based inverse kinematics solver. It solves the inverse kinematics to move the last joint position in a joint chain to a specified point. This solver uses the location of the object it is assigned to as the static root location. This solver class is the inherited class for the Finger, Wrist, and Arm classes, which solve the inverse kinematics for each associated joint chain.

Infrastructure Directory

Contains utility class definitions and functions for building node trees, hand configuration poses, and movement solutions.

Unity Prefabs

  • Arm
  • Hand
  • Gripper

Third-Party Packages

ProCore

Package for Mesh building and rendering

Accord

Contains statistical modeling tools, in this case specifically PCA, which is attempted to use for grasp region planning

Improvement/Correction To-Do List

  • Item numero uno
  • Item numero dos
  • Item numero tres

climberspider's People

Contributors

reakain avatar

Stargazers

 avatar HJliu96 avatar

Watchers

James Cloos avatar  avatar

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.