Skip to content
Snippets Groups Projects
Commit 48580f4d authored by Montaño Sarria, Andres Felipe's avatar Montaño Sarria, Andres Felipe
Browse files

zsh on melodic docker

parent 96c7e30b
No related branches found
No related tags found
No related merge requests found
{
"ros.distro": "noetic"
}
\ No newline at end of file
......@@ -4,5 +4,7 @@
"path": "."
}
],
"settings": {}
"settings": {
"ros.distro": "noetic"
}
}
\ No newline at end of file
......@@ -113,14 +113,14 @@ RUN apt-get install -y \
RUN apt-get install -y \
ros-melodic-ar-track-alvar \
ros-melodic-usb-cam \
libceres-dev \
libglfw3-dev \
sqlite3
RUN apt-get install -y \
ros-melodic-realsense2-camera \
ros-melodic-eigen-conversions \
ros-melodic-industrial-ci
ros-melodic-eigen-conversions
RUN apt-get update \
&& apt-get upgrade ca-certificates -y
......@@ -140,10 +140,17 @@ RUN apt-get install -y \
python3-pip \
python-pip \
graphviz \
xdot
xdot \
ros-melodic-image-view
RUN python3 -m pip install xdot
# set the zsh theme
ENV ZSH_THEME agnoster
# run the installation script
RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh || true
# Update final image
RUN apt-get update && apt-get -y upgrade && apt-get -y autoremove
RUN apt-get clean
......@@ -153,7 +160,7 @@ COPY ./ros_entrypoint.sh /
RUN chmod a+x /ros_entrypoint.sh
ENTRYPOINT ["/ros_entrypoint.sh"]
CMD ["bash"]
CMD ["zsh"]
# Switch back to dialog for any ad-hoc use of apt-get
ENV DEBIAN_FRONTEND=
\ No newline at end of file
......@@ -81,6 +81,8 @@ source $ZSH/oh-my-zsh.sh
# User configuration
setopt no_share_history
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
......
......@@ -25,7 +25,7 @@ function rdoc() {
}
function rundoc() {
rocker --home --user --nvidia --x11 --ssh --git --name melodic devenv:melodic $1
rocker --home --user --nvidia --x11 --ssh --git --volume /dev/video0:/dev/video0 --privileged --name melodic devenv:melodic $1
}
function runmelodic() {
......
Finite State Machine (FSM)
This is the simplest type:
You have a collection of states that the AI can be in;
The AI is in one of these states at any given time;
The choice of whether to continue the behaviour or move onto something else is evaluated completely inside the behaviour that the AI is currently in, i.e. there is no hierarchy.
Here's an example, you have one script each for Idle, Attack, and Run, and on each of these scripts is a coroutine which ticks the behaviour implementation. Inside each coroutine would be a complete evaluation of the game state and whether to move onto something else. You can see that:
You will be re-writing a lot of code, e.g. "If enemy disappears, go to idle" would be a part of the evaluation in both the Attack and the Run scripts. And this means..
Nodes are coupled tightly to all other nodes, i.e., modifying the Idle script would directly affect whether it was still relevant to be called from any of the other behaviour scripts, or it might mean that you would have to update contextual information across all of the other scripts so that you don't get some weird behaviour. For example if you modify the Idle script to have the character wipe their brow after running from the enemy, then if it was not called from the Run behaviour it would be illogical, and then you'd have to update the context for each time Idle was called, making 'breaking' the AI very easy.
Hierarchical FSM (HFSM)
The only difference between the HFSM and the FSM is that in the HFSM there is a hierarchy of choices, meaning that choices are evaluated at a high-level before getting into the details.
For example, instead of the Attack, Run and Idle behaviours being completely self-contained, you would have a hierarchy that began with two states "EnemyFound" and "EnemyNotFound". Attack and Run would then be children of the EnemyFound state, while Idle would be a child of the EnemyNotFound state. Since you're starting from the top each tick, you can then remove the transition to Idle from the Attack and Run states, and move it up into the parent state (writing it only once). This enables better organisation of the transitions, removes a lot of re-written code etc.
However the weakness is still that in each sub-group of a hierarchy, there may be nodes that are basically a re-write of nodes in a different sub-group, because the nodes in each hierarchy are still not modular, they are still coupled tightly to their hierarchy. This is where behaviour trees come in.
Behaviour Tree (BT)
To put it simply, a behaviour tree is like an HFSM, except that the nodes in the hierarchy are modular, uncoupled and self-contained, running on a context basis from any part of any sub-group of the hierarchy.
In fact, any piece of the behaviour tree is modular, and can be called from anywhere else in the tree. This makes it possible to skip to a different area on the tree and do something else if the current evaluation finds that it is no longer relevant.
The way this is achieved is by using a Blackboard which is a cache of information that can be accessed by any of the nodes in the tree, and which contains information that makes it possible to provide a context for each node that does not depend on where it was called from, keeping it completely modular.
And instead of creating ten different versions of a behaviour depending on where it was called from, you could simply call various modular behaviours in sequence.
So...
You can see that really, these three types are not completely different, they're just improvements on eachother. In my view the main difference in terms of implementation is the overhead of building the infrastructure - BTs being more time-consuming to set up, but ultimately great for huge behaviour structures. But because BTs have a modular nature, then for smaller structures they aren't very good for keeping information together in front of a programmer's eyes, so they aren't worth it for simple AI.
---------------------------------------------------------------------------------------------------
This is a current work in progress for me. This is what I have come up with so far:
FLEXBE - Python - work in progress as per this threads comments. associated tools: unknown
SMACH - Python - orphaned in ROS1 with status: unmaintained. Did have a viewer.
SMACC - C++ - ROS2 porting is in progress. Has a viewer.
BehaviourTrees.CPP - C++ - has been ported to ROS2 and also the viewer (Groot) but I think that is all on Rolling.
py_trees - Python - has been ported to ROS2. No runtime viewer, only static dot graph output.
If I am wrong about any of these findings. do let me know. Or any other frameworks I am not aware of.
My conclusion to date is that we do not yet have any behaviour framework ported up to ROS2 with all the bells and whistles included.
It is my guess that the FLEXBE/SMACH crowd would very much want to bring their existing behaviour modules forward without having to do a complete rewrite in a new framework.
\ No newline at end of file
Nautilus:
libtracker-sparql-2.0-0
libtracker-control-2.0-0
----
Gnome control center:
gnome-online-accounts (>= 3.25.3)
network-manager-gnome (>= 0.9.8)
libgoa-1.0-0b
libgoa-backend-1.0-1
python3-macaroonbakery
colord
libsane
libsane:
Depends: libsane-common (=1.0.29-0ubuntu5) but 1.0.29-0ubuntu5.2 is to be installed
Recommends: sane-utils (>= 1.0.29-0ubuntu5)
libcolord2:i386 libcolorhug2:i386 libgusb2:i386
ghostscript:amd64 9.50~dfsg-5ubuntu4.3+20.04.sav0 newer than version in archive
ghostscript-x:amd64 9.50~dfsg-5ubuntu4.3+20.04.sav0 newer than version in archive
gir1.2-gst-plugins-base-1.0:amd64 1.18.5-1~20.04.sav0 newer than version in archive
gir1.2-gstreamer-1.0:amd64 1.18.5-1~20.04.sav0 newer than version in archive
gstreamer1.0-alsa:amd64 1.18.5-1~20.04.sav0 newer than version in archive
gstreamer1.0-gl:amd64 1.18.5-1~20.04.sav0 newer than version in archive
gstreamer1.0-libav:amd64 1.18.5-1~20.04.sav0 newer than version in archive
gstreamer1.0-plugins-base:amd64 1.18.5-1~20.04.sav0 newer than version in archive
gstreamer1.0-plugins-base-apps:amd64 1.18.5-1~20.04.sav0 newer than version in archive
gstreamer1.0-tools:amd64 1.18.5-1~20.04.sav0 newer than version in archive
gstreamer1.0-x:amd64 1.18.5-1~20.04.sav0 newer than version in archive
intel-media-va-driver:amd64 21.3.5+dfsg1-0ubuntu1~20.04.sav0 newer than version in archive
libass9:amd64 1:0.15.2-0ubuntu1~20.04.sav0 newer than version in archive
libbluray2:amd64 1:1.3.0-2~20.04.sav0 newer than version in archive
libchromaprint1:amd64 1.5.0-1~20.04.sav0 newer than version in archive
libcodec2-0.9:amd64 0.9.2-4~20.04.sav0 newer than version in archive
libdeflate0:amd64 1.7-1ubuntu1~20.04.sav0 newer than version in archive
libdjvulibre-text:all 3.5.28-1ubuntu0.1~20.04.sav0 newer than version in archive
libdjvulibre21:amd64 3.5.28-1ubuntu0.1~20.04.sav0 newer than version in archive
libdvdnav4:amd64 6.1.1-0ubuntu1~20.04.sav0 newer than version in archive
libdvdread8:amd64 6.1.2-0ubuntu1~20.04.sav0 installed: No available version in archive
libexif12:amd64 0.6.22-3~20.04.sav0 newer than version in archive
libfaudio0:amd64 21.02-1~20.04.sav0 newer than version in archive
libflac8:amd64 1.3.3-2~20.04.sav0 newer than version in archive
libflite1:amd64 2.2-2~20.04.sav0 newer than version in archive
libfreetype6:amd64 2.10.2+dfsg-3ubuntu1~20.04.sav0 newer than version in archive
libgif7:amd64 5.1.9-2~20.04.sav0 newer than version in archive
libgs9:amd64 9.50~dfsg-5ubuntu4.3+20.04.sav0 newer than version in archive
libgs9-common:all 9.50~dfsg-5ubuntu4.3+20.04.sav0 newer than version in archive
libgstreamer-gl1.0-0:amd64 1.18.5-1~20.04.sav0 newer than version in archive
libgstreamer-plugins-base1.0-0:amd64 1.18.5-1~20.04.sav0 newer than version in archive
libgstreamer1.0-0:amd64 1.18.5-1~20.04.sav0 newer than version in archive
libharfbuzz-icu0:amd64 2.9.1-0ubuntu1~20.04.sav0 newer than version in archive
libharfbuzz0b:amd64 2.9.1-0ubuntu1~20.04.sav0 newer than version in archive
libigdgmm11:amd64 21.3.2+ds1-0ubuntu1~20.04.sav0 newer than version in archive
libjack-jackd2-0:amd64 1.9.17~dfsg-1~20.04.sav0 newer than version in archive
libjpeg-turbo8:amd64 2.0.6-0ubuntu2~20.04.sav0 newer than version in archive
liblilv-0-0:amd64 0.24.12-2~20.04.sav0 newer than version in archive
liblirc-client0:amd64 0.10.1-6.3~20.04.sav0 newer than version in archive
libmpg123-0:amd64 1.26.4-1~20.04.sav0 newer than version in archive
libmtp-common:all 1.1.18-1~20.04.sav0 newer than version in archive
libmtp-runtime:amd64 1.1.18-1~20.04.sav0 newer than version in archive
libmtp9:amd64 1.1.18-1~20.04.sav0 newer than version in archive
libmysofa1:amd64 1.2~dfsg0-1~20.04.sav0 newer than version in archive
libnorm1:amd64 1.5.9+dfsg-2~20.04.sav0 newer than version in archive
libogg0:amd64 1.3.5-0ubuntu1~20.04.sav0 newer than version in archive
libopenal-data:all 1:1.19.1-1build1~20.04.sav0 newer than version in archive
libopenal1:amd64 1:1.19.1-1build1~20.04.sav0 newer than version in archive
libopenexr24:amd64 2.3.0-6ubuntu0.5+20.04.sav0 newer than version in archive
liborc-0.4-0:amd64 1:0.4.32-1~20.04.sav0 newer than version in archive
libpcaudio0:amd64 1.1-6~20.04.sav0 newer than version in archive
libpng16-16:amd64 1.6.37-3~20.04.sav0 newer than version in archive
librubberband2:amd64 1.9.0-1~20.04.sav0 newer than version in archive
libsamplerate0:amd64 0.2.1+ds0-1~20.04.sav0 newer than version in archive
libsbc1:amd64 1.5-3~20.04.sav0 newer than version in archive
libserd-0-0:amd64 0.30.10-1~20.04.sav0 newer than version in archive
libshout3:amd64 2.4.5-1~20.04.sav0 newer than version in archive
libsndfile1:amd64 1.0.31-1ubuntu1~20.04.sav0 newer than version in archive
libsndio7.1:amd64 1.8.1-0ubuntu1~20.04.sav0 installed: No available version in archive
libsodium27:amd64 1.0.18+git20210525-0ubuntu1~20.04.sav0 installed: No available version in archive
libsord-0-0:amd64 0.16.8-2~20.04.sav0 newer than version in archive
libsoxr0:amd64 0.1.3-4~20.04.sav0 newer than version in archive
libspeechd2:amd64 0.10.2-2~20.04.sav0 newer than version in archive
libsratom-0-0:amd64 0.6.8-1~20.04.sav0 newer than version in archive
libstb0:amd64 0.0~git20200713.b42009b-1~20.04.sav0 newer than version in archive
libtag1v5:amd64 1.12-0ubuntu1~20.04.sav0 newer than version in archive
libtag1v5-vanilla:amd64 1.12-0ubuntu1~20.04.sav0 newer than version in archive
libtiff5:amd64 4.3.0-1~20.04.sav0 newer than version in archive
libudfread0:amd64 1.1.2-1~20.04.sav0 installed: No available version in archive
libv4l-0:amd64 1.20.0-3~20.04.sav0 newer than version in archive
libv4lconvert0:amd64 1.20.0-3~20.04.sav0 newer than version in archive
libva-drm2:amd64 2.13.0-1~20.04.sav0 newer than version in archive
libva-wayland2:amd64 2.13.0-1~20.04.sav0 newer than version in archive
libva-x11-2:amd64 2.13.0-1~20.04.sav0 newer than version in archive
libva2:amd64 2.13.0-1~20.04.sav0 newer than version in archive
libvdpau1:amd64 1.4-2~20.04.sav0 newer than version in archive
libvorbis0a:amd64 1.3.7-1~20.04.sav0 newer than version in archive
libvorbisenc2:amd64 1.3.7-1~20.04.sav0 newer than version in archive
libvorbisfile3:amd64 1.3.7-1~20.04.sav0 newer than version in archive
libvpx6:amd64 1.10.0-0ubuntu1~20.04.sav0 newer than version in archive
libvpx7:amd64 1.11.0-1~20.04.sav0 installed: No available version in archive
libvulkan-dev:amd64 1.2.189.0-2~20.04.sav0 newer than version in archive
libvulkan1:amd64 1.2.189.0-2~20.04.sav0 newer than version in archive
libvulkan1:i386 1.2.189.0-2~20.04.sav0 newer than version in archive
libwavpack1:amd64 5.4.0-1~20.04.sav0 newer than version in archive
libwebp6:amd64 0.6.1-2.1~20.04.sav0 newer than version in archive
libwebpdemux2:amd64 0.6.1-2.1~20.04.sav0 newer than version in archive
libwebpmux3:amd64 0.6.1-2.1~20.04.sav0 newer than version in archive
libzen0v5:amd64 0.4.39-1~20.04.sav0 newer than version in archive
libzmq5:amd64 4.3.4-1~20.04.sav0 newer than version in archive
libzstd1:amd64 1.4.8+dfsg-2~20.04.sav0 newer than version in archive
libzstd1:i386 1.4.8+dfsg-2~20.04.sav0 newer than version in archive
python3-speechd:all 0.10.2-2~20.04.sav0 newer than version in archive
speech-dispatcher:amd64 0.10.2-2~20.04.sav0 newer than version in archive
speech-dispatcher-audio-plugins:amd64 0.10.2-2~20.04.sav0 newer than version in archive
speech-dispatcher-espeak-ng:amd64 0.10.2-2~20.04.sav0 newer than version in archive
va-driver-all:amd64 2.13.0-1~20.04.sav0 newer than version in archive
vdpau-driver-all:amd64 1.4-2~20.04.sav0 newer than version in archive
youtube-dl:all 2021.06.06-1~20.04.sav0 newer than version in archive
krb5-multidev:
Depends: (=1.17-6ubuntu4) but 1.17-6ubuntu4.1 is to be installed
Depends: libk5crypto3 (=1.17-6ubuntu4) but 1.17-6ubuntu4.1 is to be installed
Depends: libgssapi-krb5-2 (=1.17-6ubuntu4) but 1.17-6ubuntu4.1 is to be installed
Depends: libgssrpc4 but it is not going to be installed
Depends: libkadm5srv-mit11 but it is not going to be installed
Depends: libkadm5clnt-mit11 but it is not going to be installed
Depends: comerr-dev but it is not going to be installed
(Reading database ... 410267 files and directories currently installed.)
Removing libcinnamon-desktop4:amd64 (4.4.1-3) ...
Removing cinnamon-desktop-data (4.4.1-3) ...
Removing cinnamon-l10n (4.4.2-2) ...
Removing gist (5.0.0-4) ...
Removing google-mock:amd64 (1.10.0-2) ...
Removing libgtest-dev:amd64 (1.10.0-2) ...
Removing googletest (1.10.0-2) ...
Removing hwdata (0.333-1) ...
Removing inxi (3.0.38-1-0ubuntu1) ...
Removing liblog4cxx-dev:amd64 (0.10.0-15ubuntu2) ...
Removing libaprutil1-dev (1.6.1-4ubuntu2) ...
Removing libgpgme-dev (1.13.1-7ubuntu2) ...
Removing libassuan-dev (2.5.3-7ubuntu2) ...
Removing libbz2-dev:amd64 (1.0.8-2) ...
Removing python3-matplotlib (3.1.2-1ubuntu4) ...
Removing libjs-jquery-ui (1.12.1+dfsg-5) ...
Removing liblog4cxx10v5:amd64 (0.10.0-15ubuntu2) ...
Removing libnemo-extension1:amd64 (4.4.2-2) ...
Removing liborocos-kdl-dev:amd64 (1.4.0-7build2) ...
Removing python3-pykdl:amd64 (1.4.0-7build2) ...
Removing liborocos-kdl1.4 (1.4.0-7build2) ...
Removing libpoco-dev (1.9.2-3ubuntu3) ...
Removing libpoconetssl62:amd64 (1.9.2-3ubuntu3) ...
Removing libpococrypto62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocodatasqlite62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocodataodbc62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocodatamysql62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocoencodings62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocozip62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocoutil62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocoxml62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocojson62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocomongodb62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocoredis62:amd64 (1.9.2-3ubuntu3) ...
Removing libpoconet62:amd64 (1.9.2-3ubuntu3) ...
Removing libpyside2-dev (5.14.0-1~exp1ubuntu5) ...
Removing python3-pyside2.qtsvg (5.14.0-1~exp1ubuntu5) ...
Removing python3-pyside2.qtwidgets (5.14.0-1~exp1ubuntu5) ...
Removing python3-pyside2.qtgui (5.14.0-1~exp1ubuntu5) ...
Removing libshiboken2-dev (5.14.0-1~exp1ubuntu5) ...
Removing python3-pyside2.qtcore (5.14.0-1~exp1ubuntu5) ...
Removing libxapp1:amd64 (1.6.10-2) ...
Removing libyaml-cpp-dev (0.6.2-4ubuntu1) ...
Removing libyaml-cpp0.6:amd64 (0.6.2-4ubuntu1) ...
Removing nemo-data (4.4.2-2) ...
Removing pyqt5-dev (5.14.1+dfsg-3build1) ...
Removing python-matplotlib-data (3.1.2-1ubuntu4) ...
Removing python3-cycler (0.10.0-3) ...
Removing python3-defusedxml (0.6.0-2) ...
Removing python3-empy (3.3.2-5.1) ...
Removing python3-gnupg (0.4.5-2) ...
Removing python3-kiwisolver (1.0.1-3build1) ...
Removing python3-nose (1.3.7-5) ...
Removing python3-opencv (4.2.0+dfsg-5) ...
Removing python3-opengl (3.1.0+dfsg-2build1) ...
Removing python3-pycryptodome (3.6.1-2build4) ...
Removing python3-pydot (1.4.1-3) ...
Removing python3-pyqt5.qtwebkit (5.14.1+dfsg-3build1) ...
Removing python3-pyqt5.qtsvg (5.14.1+dfsg-3build1) ...
Removing python3-pyqt5.qtopengl (5.14.1+dfsg-3build1) ...
Removing sbcl (2:2.0.1-3) ...
Removing shiboken2 (5.14.0-1~exp1ubuntu5) ...
Removing xapps-common (1.6.10-2) ...
Removing libpocodata62:amd64 (1.9.2-3ubuntu3) ...
Removing libpocofoundation62:amd64 (1.9.2-3ubuntu3) ...
Removing libpyside2-py3-5.14 (5.14.0-1~exp1ubuntu5) ...
Removing libshiboken2-py3-5.14 (5.14.0-1~exp1ubuntu5) ...
Removing python3-pyqt5 (5.14.1+dfsg-3build1) ...
......@@ -8,6 +8,7 @@ Git hub repositories for [community & partner](https://github.com/ros-industrial
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Warning: These packages are under heavy development and are subject to change.
#### Build Instructions
. Clone repository into your workspace
......@@ -35,13 +36,205 @@ sudo apt-get install bison flex
### Documentation
https://github.com/tesseract-robotics/tesseract_docs.git
=====
https://github.com/ros-industrial/fanuc.git (melodic)
http://docs.ros.org/en/kinetic/api/moveit_tutorials/html/doc/ikfast/ikfast_tutorial.html
fanuc_driver (melodic)
fanuc_resources (melodic)
fanuc_cr7ia_support (melodic)
!!! ZIVID !!! (kinetic) ros-kinetic-zivid-camera Noetic from sources??
download and install:
.
├── zivid_1.8.1+6967bc1b-1_amd64.deb
├── zivid-studio_1.8.1+6967bc1b-1_amd64.deb
├── zivid-telicam-driver_3.0.1.1-1_amd64.deb
└── zivid-tools_1.8.1+6967bc1b-1_amd64.deb
Download zivid-ros tag v 1.1.0 compatible with zivid_1.8.1+6967bc1b-1
=============
Tesseract’s interface includes plugins for several popular planning algorithms such as OMPL, TrajOpt, TrajOpt IFOPT and Descartes.
# Tesseract CORE
Tesseract Core Packages
*Warning:* These packages are under heavy development and are subject to change.
- tesseract
- tesseract_collision
- tesseract_common
- tesseract_environment
- tesseract_geometry
- tesseract_kinematics
- tesseract_planners
- tesseract_scene_graph
- tesseract_srdf
- tesseract_support
- tesseract_urdf
- tesseract_visualization
## Tesseract Environment
## Tesseract Scene Graph
## Tesseract Collision
## Tesseract Kinematics
# Tesseract Planning
## Tesseract Motion Planning API
Tesseract contains an easy to use motion planning API that enables developers to quickly create custom-tailored motion plans. Tesseract’s interface includes plugins for several popular planning algorithms such as OMPL, TrajOpt, TrajOpt IFOPT and Descartes.
## Tesseract Command Language
This is a high level programming language used throughout the Tesseract Planning Framework. The goal is to provide an abstraction between motion commands and motion planner specific configurations similar to programming on an industrial teach pendant.
At the lowest level the command language is a set of instruction where on an industrial teach pendant these include move instructions, set I/O instruction and set Analog instruction. These are all included in the command language with a few additional instruction like plan instruction and environment instruction to start. These instructions are specific to motion planning and environment management.
This high level language allows a novice user to create complex programs without the knowledge of planner specifics which is designed to encode the the whole process including motion planning, motion execution, environment management, sensor signals and much more.
# Tesseract ROS
For Tesseract, the most common interface will be through ROS with the tesseract_ros package. It provides functionality for common operations such as setting joint or pose goals, creating motion plans, moving the robot, adding objects into the environment, etc.
Examples...
=============
tessearct_ros as initial package
dependencies from dependencies.rosinstall
- git:
local-name: descartes_light
uri: https://github.com/swri-robotics/descartes_light.git
version: 0eeeaf216677112c24d8ec51b984044e7f62c209
- git:
local-name: ifopt
uri: https://github.com/ethz-adrl/ifopt.git
version: master
- git:
local-name: opw_kinematics
uri: https://github.com/Jmeyer1292/opw_kinematics.git
version: master
- git:
local-name: ros_industrial_cmake_boilerplate
uri: https://github.com/ros-industrial/ros_industrial_cmake_boilerplate.git
version: master
- git:
local-name: tesseract
uri: https://github.com/ros-industrial-consortium/tesseract.git
version: master
- git:
local-name: tesseract_planning
uri: https://github.com/ros-industrial-consortium/tesseract_planning.git
version: 0.6.3
- git:
local-name: trajopt
uri: https://github.com/ros-industrial-consortium/trajopt_ros.git
version: f7c5b27ac87eee0d2e692741003f37efd78ebb76
Remove ros-noetic-ifopt, it produces compilation errors
ros-noetic-ifopt is intalled by rosdep.
To build everything, run:
catkin build --force-cmake -DTESSERACT_ENABLE_TESTING=ON -DTRAJOPT_ENABLE_TESTING=ON
https://githubmemory.com/repo/ros-industrial-consortium/trajopt_ros/issues/261
# Tesseract ROS2
WIP
# Descartes (Hydro-Indigo-Melodic)
https://index.ros.org/p/descartes/github-ros-industrial-consortium-descartes/#melodic
Descartes is a ROS-Industrial project for performing path-planning on under-defined Cartesian trajectories.
From a software architecture perspective, Descartes uses trajectory points, robot models, and planners to generate an joint-trajectory that complies with the constraints of a given process.
- *Trajectory Points* define an individual point in time along a path. These points encapsulate the logic for how to search for valid joint solutions given a user's process requirements, including constraints / tolerances.
- *Robot Models* define the physical characteristics of a robot that must complete a given trajectory. Calculations such as forward and inverse kinematics and validity checks are performed by the robot model.
- *Planners* are the highest level component of Descartes' architecture. They are responsible for finding valid and optimal solutions through a sequence of trajectory points for a given robot model.
## Descartes_light
Library for generation motion plans for process toolpaths
https://github.com/swri-robotics/descartes_light
## Key Features
Descartes, as a path planning library, is often compared to MoveIt. However, it differs from MoveIt in several key ways:
- *Cartesian Planning:* While MoveIt plans free space motion (i.e. move from A to B), Descartes plans robot joint motion for semi-constrained Cartesian paths (i.e. ones whose waypoints may have less than a fully specified 6DOF pose).
- *Efficient, Repeatable, Scale-able Planning:* The paths that result from Descartes appear very similar to human generated paths, but without all the effort. The plans are also repeatable and scale-able to the complexity of the problem (easy paths are planned very quickly, hard paths take time but are still solved).
- *Dynamic Re-planning:* Path planning structures are maintained in memory after planning is complete. When changes are made to the desired path, an updated robot joint trajectory can be generated nearly instantaneously.
- *Offline Planning:* Similar to MoveIt, but different than other planners, Descartes is primarily focused on offline or sense/plan/act applications. Real-time planning is not a feature of Descartes.
# Fermi
(7 years old)
Google Summer of Code Project: Cartesian Path Planner MoveIt Plug-in
# trajopt_ros
trajopt_ros implements sequential convex optimization to solve the motion planning problem. It implements a penalty method to optimize for joint velocities while satisfying a set of constraints. Internally, it makes use of convex solvers that are able to solve linearly constrained quadratic problems. At the moment, the following solvers are supported:
- BPMPD (interior point method, free for non-commercial use only)
- Gurobi (simplex and interior point/parallel barrier, license required)
- OSQP (ADMM, BSD2 license)
- qpOASES (active set, LGPL 2.1 license)
https://rosindustrial.org/news/2018/7/5/optimization-motion-planning-with-tesseract-and-trajopt-for-industrial-applications
### Optimization Motion Planning with Tesseract and TrajOpt for Industrial Applications
July 09, 2018
#### Summary
Southwest Research Institute launched an internal R&D project to integrate the existing motion planner TrajOpt (Trajectory Optimization for Motion Planning) into ROS. TrajOpt was created at UC Berkeley as a software framework for generating robot trajectories by local optimization. The integration of TrajOpt necessitated new capabilities that spawned the creation of several new packages: tesseract and trajopt_ros. The tesseract package contains a new lightweight motion planning environment designed for industrial application, while the trajopt_ros package contains packages specific to TrajOpt. We will demonstrate how these tools complement existing planners, like OMPL or Descartes, to solve complex problems quickly and robustly.
#### Description
The original implementation of TrajOpt was developed using OpenRave for Kinematics and Bullet for contact checking. The first step was to replace OpenRave with MoveIt! Kinematics and second replace the collision environment with MoveIt!’s Collision environment. Early on in the process several limitations were found in both MoveIt!’s Kinematics and Collision environment.
TrajOpt requires the ability to calculate specific information about the robot not provided by MoveIt!, but it turns out KDL, which is one of the kinematics libraries used by MoveIt!, provides methods for obtaining the required information. This resulted in the development of a custom kinematics library built on KDL for both kinematic chains and non-kinematic chains. Secondly TrajOpt leverages specific characteristics of convex to convex contact checking to provide the minimum translation vector to move two objects out of collision. In the process of integrating with MoveIt!, it was determined that it did not provide detailed distance information. Also, after further evaluation it was found that MoveIt! does not support convex to convex collision checking requiring significant API changes across multiple repositories. Since the IR&D was time-sensitive, it was determined to not use MoveIt! and create a light-weight Motion Planning Environment (Tesseract).
The Tesseract environment was designed to support SwRI’s work in complex industrial motion planning applications where flexibility and modularity are key to adapting to new applications. Packages include:
- tesseract_core – Contains platform agnostic interfaces and data structures to be used. tesseract_ros –ROS implementation of the interfaces identified in the tesseract_core package, currently leverages Orocos/KDL libraries.
- tesseract_collision – ROS implementation of a Bullet collision library. It includes both continuous and discrete collision checking for convex-convex and convex-concave shapes.
- tesseract_msgs – ROS message types used by Tesseract.
- tesseract_rviz –ROS visualization plugins for Rviz for both the environment state and trajectories.
- tesseract_monitoring – Provides tools for monitoring the active environment state and publishing contact information. This is useful if the robot is being controlled outside of ROS, but you want to make sure it does not collide with objects in the environment. Also includes the environment monitor, which is the main environment facilitating requests to add, remove, disable and enable collision objects, while publishing its current state to keep other ROS nodes updated.
- tesseract_planning – Contains interface bridges between Tesseract Environment and motion planners OMPL and TrajOpt.
After the creation of Tesseract all necessary capabilities were available to finish the integration of TrajOpt into ROS. The new motion planner was evaluated against the following use case while minimizing joint velocity, acceleration and jerk cost along with collision avoidance cost:
- Fully Constrained Cartesian Path
- Semi-Constrained Cartesian Path
- Free Space Path
- Semi-Constrained Free Space Path
- Free Space + Constrained Cartesian Path
TrajOpt for moveit is in an alpha stage and it is not working yet (2-years ago).
The TrajOpt planner is still an alpha feature of MoveIt from a summer 2019 intern project, and needs further hardening. Please contact hello@picknik.ai if you are interested in further development.
https://ros-planning.github.io/moveit_tutorials/doc/trajopt_planner/trajopt_planner_tutorial.html
# Pilz Industrial Motion Planner
Moved to MoveIt, to install the planner run: sudo apt install '^ros-noetic-pilz-.*'
To launch a demo run: roslaunch prbt_moveit_config moveit_planning_execution.launch pipeline:=pilz_industrial_motion_planner
\ No newline at end of file
#!/bin/sh
# @(#)downgrade.sh 2007-07-08 A.J.Travis
# Modified 2012-11-05 Jeremy Stephens
# Original post: https://lists.ubuntu.com/archives/ubuntu-uk/2007-October/008513.html
#
# Downgrade versions of packages newer than in archive
#
TMP=/tmp/downgrade.$$
if [ $USER != "root" ]; then
echo "downgrade: Only root can do this"
exit 1
fi
apt-show-versions -i
apt-show-versions |
fgrep 'newer than version in archive' |
cut -d' ' -f 1 >$TMP
if [ -s $TMP ]; then
apt-show-versions -a |
fgrep -f $TMP |
cut -d' ' -f 1-3 |
grep quantal$ |
cut -d' ' -f 1-2 |
sed -e 's/ /=/' |
xargs aptitude -y install
fi
rm $TMP
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment