Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gramaziokohler/workshop_munich_2020
Materials for the Robotic Assembly workshop using COMPAS FAB framework
https://github.com/gramaziokohler/workshop_munich_2020
assembly compas-fab ros workshop
Last synced: about 1 month ago
JSON representation
Materials for the Robotic Assembly workshop using COMPAS FAB framework
- Host: GitHub
- URL: https://github.com/gramaziokohler/workshop_munich_2020
- Owner: gramaziokohler
- License: mit
- Created: 2020-02-27T08:28:11.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-11-23T11:32:23.000Z (about 4 years ago)
- Last Synced: 2024-11-06T12:25:10.495Z (3 months ago)
- Topics: assembly, compas-fab, ros, workshop
- Language: Python
- Homepage:
- Size: 61.7 MB
- Stars: 4
- Watchers: 22
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Workshop TU Munich 5., 6., and 20.11.2020
This workshop is about robotic assembly using the COMPAS framework.
## Overview
* COMPAS 101
* COMPAS FAB Intro
* Kinematics and path planning
* Attach/detach tools
* Pick and Place planning
* Brick assembly
* Robot control overview## Examples
### Day 1
* **Slides**: [session 1](https://docs.google.com/presentation/d/1nexXDZrQxwgEsNyjcaFsndLgY3z8m6igXAWk9GWiQAg/edit?usp=sharing)
* **Documentation**:
* [COMPAS API Reference](https://compas.dev/compas/latest/api.html)
* [COMPAS FAB API Reference](https://gramaziokohler.github.io/compas_fab/latest/reference.html)#### Robotic fundamentals
* `Frame` examples:
* [Several ways to construct a `Frame`](examples/001_several_ways_to_construct_frame.py)
* [`Point` in `Frame`](examples/002_point_in_frame.py)
* [`Frame` in `Frame`](examples/003_frame_in_frame.py)
* [Bring a box from the world coordinate frame into another coordinate frame](examples/004_box_from_the_world_to_local.py)
* [Use artists to draw the box in Rhino](examples/005_box_from_the_world_to_local_rhino.py)
* `Transformation` examples:
* [Several ways to construct a `Transformation`](examples/006_examples_transformation.py)
* [Inverse transformation](examples/007_inverse_transformation.py)
* [Pre-multiply transformations](examples/008_premultiply_transformations.py)
* [Pre- vs. post-multiplication](examples/009_pre_vs_post_multiplication.py)
* [Decompose transformation](examples/010_decompose_transformation.py)
* [Transform `Point` and `Vector`](examples/011_transform_point_and_vector.py)
* [Transformation of multiple points](examples/012_transform_multiple.py)
* [Change-basis transformation vs. transformation between frames](examples/013_change_basis_vs_between_frames.py)
* [Bring a box from the world coordinate frame into another coordinate frame](examples/014_box_from_the_world_to_local.py)
* [Use artists to draw the box in Rhino](examples/015_box_from_the_world_to_local_rhino.py)
* `Rotation` examples:
* [Several ways to construct a `Rotation`](examples/016_several_ways_to_construct_rotation.py)
* [Different Robot vendors use different conventions to describe TCP orientation](examples/017_robot_tcp_orientations.py)
* [Euler angles example](examples/018_euler_angles.py)
* [Axis-angle example](examples/019_axis_angle.py)
* [Unit Quaternion example](examples/020_quaternion.py)#### Robot model and ROS 1
* [Docker configuration to launch ROS & MoveIt](docker/)
* Open MoveIt! in your browser:
* `http://localhost:8080/vnc.html?resize=scale&autoconnect=true`
* Basic examples:
* [Programmatically define a robot](examples/021_define_model.py)
* [Load robots from Github](examples/022_robot_from_github.py)
* [Load robots from ROS](examples/023_robot_from_ros.py)
* [Visualize robots in Rhino](examples/024_robot_artist_rhino.py)
* [Visualize robots in Grasshopper](examples/025_robot_artist_grasshopper.ghx)
* [Build your own robot](examples/026_build_your_own_robot.py)
* Basic ROS examples:
* [Verify connection](examples/027_check_connection.py)
* The canonical example of ROS: chatter nodes
* [Talker node](examples/028_ros_hello_world_talker.py)
* [Listener node](examples/029_ros_hello_world_listener.py)### Day 2
* **Slides**: [session 2](https://docs.google.com/presentation/d/1Xbnb7wsjBr_FTUruj6bN0ltFRs4hd55l4udoDYYLtlA/edit?usp=sharing)
* **Documentation**:
* [COMPAS API Reference](https://compas.dev/compas/latest/api.html)
* [COMPAS FAB API Reference](https://gramaziokohler.github.io/compas_fab/latest/reference.html)#### RPC: Remote Procedure Call
* Examples of RPC calls:
* [Simple numpy example](examples/060_rcp_simple_example.py)
* [Custom function example](examples/061_rcp_custom_functions.py)#### Robot model and ROS 2
* Examples of ROS & MoveIt planning with UR10e:
* [Forward Kinematics](examples/030_forward_kinematics_ros_loader.py)
* [Inverse Kinematics](examples/031_inverse_kinematics_ros_loader.py)
* [Cartesian motion planning](examples/032_plan_cartesian_motion_ros_loader.py)
* [Free space motion planning](examples/033_plan_motion_ros_loader.py)
* Planning scene management:
* [Add objects to the scene](examples/034_add_collision_mesh.py)
* [Append nested objects to the scene](examples/035_append_collision_meshes.py)
* [Remove objects from the scene](examples/036_remove_collision_mesh.py)
* [Grasshopper Playground](examples/038_robot_playground.ghx)#### Path planning and assembly processes
* [Docker configuration to launch ROS & MoveIt](docker/)
* [Assembly Playground](examples/050_robot_assembly.ghx)
* Attaching gripper/tool:
* [Attach tool to last link of the robot](examples/041_attach_tool.py)
* [Plan cartesian motion with attached tool](examples/042_plan_cartesian_motion_with_attached_tool.py)
* Assembly elements (e.g. bricks):
* [Add assembly element to planning scene](examples/043_create_element_and_add_to_planning_scene.py)
* [Attach assembly element to gripper](examples/044_add_element_as_attached_collision_object.py)
* Assembly examples:
* [Pick and place example](examples/045_pick_and_place.py)
* [Assembly example](examples/046_assembly_example.py)
* [Plan assembly paths](examples/047_plan_paths_assembly.py)### Day 3
* Assembly examples with real robot:
* [Assembly Playground](examples/050_robot_assembly.ghx)
* [Send assembly tasks to robot](examples/051_send_assembly_task.py)
* [Subscribe to robot updates](examples/052_subscribe_joint_states.py)
* [Visualize robot updates in Grasshopper](examples/052_subscribe_joint_states_visualization.ghx)
* Robot control:
* [Control services](control/control_services.py)
* [Joint State Publisher](control/joint_state_publisher.py)![Diagram](robot-diagram.png)
## Requirements* Minimum OS: Windows 10 Pro or Mac OS Sierra 10.12
* [Anaconda 3](https://www.anaconda.com/distribution/)
* [Docker Desktop](https://www.docker.com/products/docker-desktop) Docker Toolbox would also work but it's a bit more annoying. After installation on Windows, it is required to enable "Virtualization" on the BIOS of the computer.
* [Rhino 6 & Grasshopper](https://www.rhino3d.com/download)
* [Visual Studio Code](https://code.visualstudio.com/): Any python editor works, but we recommend VS Code + extensions [as mentioned in our docs](https://gramaziokohler.github.io/compas_fab/latest/getting_started.html#working-in-visual-studio-code-1)## Installation
We use `conda` to make sure we have clean, isolated environment for dependencies.
First time using `conda`? Make sure you run this at least once:
(base) conda config --add channels conda-forge
Create a new conda environment:
**Windows**
(base) conda create -n tum20 python=3.8 compas_fab=0.13 --yes
(base) conda activate tum20**Mac**
(base) conda create -n tum20 python=3.8 compas_fab=0.13 python.app --yes
(base) conda activate tum20### Install TUM assembly information model library
(tum20) conda install git
(tum20) python -m pip install git+https://github.com/augmentedfabricationlab/assembly_information_model@compas_upgrade#egg=assembly_information_model
(tum20) python -m compas_rhino.install -p assembly_information_model### Verify installation
(tum20) pip show compas_fab
Name: compas-fab
Version: 0.13.1
Summary: Robotic fabrication package for the COMPAS Framework
...### Install on Rhino
(tum20) python -m compas_rhino.install
NOTE: This installs to Rhino 6.0, use `-v 5.0` if needed.