Package: pychoreo
pychoreois a sequence and motion planning engine that allow you to print the following cool structures (and many more!) with ease:Note:pushpin:In the summer of 2019,pychoreowill be integrated into thecompas_fabinfrastructure. Stay tuned! :beers:The ROS implementation of choreo can be found here:choreo.Main featuresfeatureDocumentationComing soon!RequirementsInstallationCreditsIf 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.00998Applications of Choreo:Robotic extrusion of architectural structures with nonstandard topology, RobArch 2018,RobArch paper linkSpatial extrusion of Topology Optimized 3D Trusses, IASS 2018,IASS paper linkRelated reposTask and Motion Planninghttps://github.com/caelan/pb-constructionhttps://github.com/caelan/pddlstreamComputational design and digital fabricationhttps://github.com/compas-dev/compas_fabChangelogAll notable changes to this project will be documented in this file.The format is based onKeep a Changelogand this project adheres toSemantic Versioning.TODOstoringee_posesinCapVertis not necessary, should think of a way to get around this.storing joint data in a continuous array may not be necessary, since we are using nested list to describe subprocesses anywayneed to regulate the use ofik_jointsorik_joint_namesfor user interfaces0.3.0Added0.2.0AddedSparseLadderGraphcompletedexport planned trajectory for extrusionadd parsing function for visualizing saved extrusion trajectoriesfrom_datamethods forTrajectoryand subclassestagging print processes withground/creation/connectin the test functioninfinite pose sampler added for extrusion case when using sparse ladder graph to solveAddedmax_valence_extrusion_direction_routingtoextrusion.utilsAddedreverse_flagsinfo toadd_collision_fns_from_seqand extrusion’s testAddedstart_confparameter toSparseLadderGraph.extract_solutionandsolve_ladder_graph_from_cartesian_process_listto allow minimizing ladder graph with respect to a given start configurationAddedpicknplace.transition_plannerAddedtarget_confattribute toCartesianProcessto allow usingsnap_solswhensample_ik_solsis called. This is essential for robots with large joint limits, e.g. UR.Minoris_any_emptyutility function for checking ik sol list of listsreset_ee_pose_gen_fnfor easier resetting generatorAdded print_table model in themit_3-412_workspaceURDF/SRDFRemovedRemovedPicknPlaceBufferTrajectory’see_attachmentsandattachmentsattributesRemovedpicknplace.planner_interface(which is there only as an archive)Fixedfix nested empty list detection bug inis_any_emptyadddisabled_collisionsargument to the extrusion transition_plannerFixedmin_ztobase_pointmodel transformation inextrusion.parsingChangedextrusion export savelin_path’s poses as 4x4 tform matrix (there’s some disagreement in quaterion incompas.Frame.from_quat?)move extrusion test fixtures into a separate fixture moduleladder graph interface broken intofrom_cartesian_process_list,from_cartesian_process,from_posesto increase code reuseChangedsub_process_idsspecification inprune_ee_feasible_directionsChangedTrajectoryto haveee_attachmentsandattachmentsattributes nativelyChangedTrajectory’sfrom_data, making it raiseValueErrorwhen robot body cannot be found in pybulletChangedMoveTrajectoryto haveelement_idattributes nativelyChangedpicknplace.visualizationto reload and manually assign pybullet bodies to ensure objects get matched correctlyChangedbuild_picknplace_cartesian_process_seqto injectee_attachinfo before passing into ladder graph solver, and tag element attachment after solving is finished.0.1.1Addedcartesian process class for modeling general linear movement in the workspaceladder graph interface using the Cartesian process classTrajectoryclass for modeling result trajectory in different contexts (inherited classes)display_trajectoriesfor extrusionsome simple exceptions added forLadderGraphandDAGSearchsubprocess modeling to have a more detailed control over Cartesian process modelingaddexhaust_itermethod toCartisianProcesswhich resets the generatoradd template classGenFnfor generating functionsaddPrintBufferTrajectoryto model approach/retreat trajectoriesChangedmove transition planning to application context.conform to the latestpybullet_planningRemovedassembly_datastructurethe oldextrusion.runmodule, moved to the test fileFixedDeprecated0.0.1AddedInitial version