Code Monkey home page Code Monkey logo

choreo's Introduction

drawing

CHOREO: A robotic sequence and motion planning framework for spatial extrusion of 3D trusses

Build Status

With Choreo, you will be able to print the following cool structures (and many more!) with ease:

voronoi_extrusion

Check out the the full workflow of Choreo here:

choreo_workflow

Currently, Choreo only supports ROS-kinetic on Ubuntu 16.04.

Note: To increase the flexibility and usability of Choreo, we decided to shift our development and maintenance efforts to pychoreo, a python implementation based on the pybullet simulation engine. This python version implements exactly the same algorithm as its ROS counterpart, but is more flexible and usable (but of course, with some compromise on the computational efficiency). pychoreo is supported on all major platforms: Windows(!), OSX, Linux and has all the core components as the ROS version: collision checking, IKfast, motion planner, stiffness checker, all of which is ROS-free.

       

Installation

If you are new to Linux or ROS, you might find links in the references section handy.

Build from source

Name Description Install
ROS-kinetic base ROS system on Ubuntu 16.04 follow instruction here
python_catkin_tools catkin build tool sudo apt-get install python-catkin-tools
wstool workspace version control sudo apt install python-wstool
moveit! The Moveit! motion planning framework sudo apt-get install ros-kinetic-moveit
moveit visual tools visualization aids in rviz sudo apt-get install ros-kinetic-moveit-visual-tools
  • Cd into the 'src' directory of your catkin workspace (~/catkin_ws/src in my case) and run the following:

    wstool init .
    wstool merge https://github.com/yijiangh/Choreo/raw/kinetic-devel/choreo.rosinstall
    wstool update
    rosdep install --from-paths . --ignore-src
  • Finally, build Choreo from src:

    cd ~/catkin_ws (your catkin workspace root)
    catkin build
    source devel/setup.bash

Docker image

Coming soon.

Quick start demo

Start playing with robotic spatial extrusion on a KUKA KR6R900 robot:

roslaunch framefab_kr6_r900_support kr6_r900_choreo.launch

KR6R900_demo

Or on an ABB robot mounted on a linear track:

roslaunch framefab_irb6600_support irb6600_choreo.launch

ABB_demo

For a video demo on the topology optimized beam (details in the paper):

large_topopt

First set up your print model by clicking the Parameters button and set up model file path in Model Input (you might need to set up the robot start pose too). Save it and click Next. Some test models for spatial extrusion can be found here.

More detailed instruction coming soon.

Code API

Coming soon.

Publications

If you use this work, please consider citing as follows:

@article{huang2018automated, title={Automated sequence and motion planning for robotic spatial extrusion of 3D trusses}, author={Huang, Yijiang and Garrett, Caelan R and Mueller, Caitlin T}, journal={Construction Robotics}, volume={2}, number={1-4}, pages={15--39}, year={2018}, publisher={Springer} }

Algorithms behind Choreo:

  • Automated sequence and motion planning for robotic spatial extrusion of 3D trusses, Constr Robot (2018) 2:15-39, Arxiv-1810.00998

Applications of Choreo:

  • Robotic extrusion of architectural structures with nonstandard topology, RobArch 2018, paper link
  • Spatial extrusion of Topology Optimized 3D Trusses, IASS 2018, paper link

Bugs & Feature Requests

Please report bugs and request features using the Issue Tracker.

References

If you are new to Linux: You may find it helpful to first do a quick tutorial on common command line tools for linux. A good one is here.

For researchers and developers who wants to dive deep into the system implementation but not familiar to ROS, you may find the official ROS tutorial here useful.

choreo's People

Contributors

yijiangh 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

choreo's Issues

UI minor bug

QObject::connect: No such signal framefab_gui::SelectionWidget::simulateTypeChange(true)
QObject::connect: (sender name: 'pushbutton_simulate_single')
QObject::connect: (receiver name: 'SelectionWidgetWindow')
QObject::connect: No such signal framefab_gui::SelectionWidget::simulateTypeChange(false)
QObject::connect: (sender name: 'pushbutton_simulate_until')
QObject::connect: (receiver name: 'SelectionWidgetWindow')

app failure after simulation

QObject::connect: Cannot queue arguments of type 'QTextCursor'
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)

MoveIt! planning not continue after successful planning?

kuka-parser

This should be done ASAP, to be integrated as a debugger along the project's development.

This requires figuring out the time-parameterized filter and also semi-constrained trajectory planning (refer to descartes)

Qt UI feature to be added

  • slider for visualize links
  • type-in panel for transformation reference point (base point on heatbed for model)

No known scene monitor auto-start in launch

Log message:
[ INFO] [1493142892.757336621]: Starting scene monitor
[ INFO] [1493142892.761174170]: Listening to '/rviz_ubuntu_24663_1410616146488788559/monitored_planning_scene'

UI combines plan selection, simulation and output

  • freeze selection widget when simulation in progress
  • disable main widget panel when the selection widget is open (link widget close to slot that enables main panel)
  • fetch computed trajectory plans from core and put them in the list widget

Adding heating bed collision geometry

[ERROR] [1503110851.858065062]: generateUnitProcessMotionPlan: Failed to search graph. All points have IK, but process constraints (e.g velocity) prevent a solution
[ERROR] [1503110851.858493167]: Failed to plan for path #1, unable to connect to process planning node.

framefab_core refactor

  • massive abuse of using namespace
  • ros cpp style compliance: namespace, class, function
  • move some unnecessary header inclusion from header into cpp

Code architecture proposal - Framefab_mpp doesn't has be a node!

I think framefab_mpp doesn't need to be a node, it can just act as a plugin on Rviz, with a easy-to-change UI interface (say, the framefab_rviz_panel.cpp file in our code)

Designing main computation class as a node will require information exchange in the form of ros::msg, which makes it hard when a class is needed to be transported (ptr_wireframe from readfile in RenderWidget be transported to FrameFab class for computation).

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.