From 48580f4d94157c637e177e1f0dc7120b820d0f78 Mon Sep 17 00:00:00 2001 From: Andres Montano <andres.montano@tecnalia.com> Date: Tue, 23 Nov 2021 21:22:24 +0100 Subject: [PATCH] zsh on melodic docker --- .vscode/settings.json | 3 + developer.code-workspace | 4 +- dockerfiles/DevenvMelodic.Dockerfile | 15 +- dotfiles/.zshrc | 2 + dotfiles/docker.bash | 2 +- notes/Finite State Machine (FSM).md | 48 +++++++ notes/Nautilus | 206 +++++++++++++++++++++++++++ notes/ROS Industrial.md | 199 +++++++++++++++++++++++++- notes/downgrade.sh | 29 ++++ 9 files changed, 499 insertions(+), 9 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 notes/Finite State Machine (FSM).md create mode 100644 notes/Nautilus create mode 100644 notes/downgrade.sh diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5d7d730 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "ros.distro": "noetic" +} \ No newline at end of file diff --git a/developer.code-workspace b/developer.code-workspace index 876a149..0f60934 100644 --- a/developer.code-workspace +++ b/developer.code-workspace @@ -4,5 +4,7 @@ "path": "." } ], - "settings": {} + "settings": { + "ros.distro": "noetic" + } } \ No newline at end of file diff --git a/dockerfiles/DevenvMelodic.Dockerfile b/dockerfiles/DevenvMelodic.Dockerfile index 47c88c9..5a62946 100644 --- a/dockerfiles/DevenvMelodic.Dockerfile +++ b/dockerfiles/DevenvMelodic.Dockerfile @@ -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 diff --git a/dotfiles/.zshrc b/dotfiles/.zshrc index 61d6b4e..6c1ca24 100644 --- a/dotfiles/.zshrc +++ b/dotfiles/.zshrc @@ -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 diff --git a/dotfiles/docker.bash b/dotfiles/docker.bash index 9266b91..a222116 100644 --- a/dotfiles/docker.bash +++ b/dotfiles/docker.bash @@ -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() { diff --git a/notes/Finite State Machine (FSM).md b/notes/Finite State Machine (FSM).md new file mode 100644 index 0000000..5f62de8 --- /dev/null +++ b/notes/Finite State Machine (FSM).md @@ -0,0 +1,48 @@ +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 diff --git a/notes/Nautilus b/notes/Nautilus new file mode 100644 index 0000000..bffd9a7 --- /dev/null +++ b/notes/Nautilus @@ -0,0 +1,206 @@ +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) ... + + + diff --git a/notes/ROS Industrial.md b/notes/ROS Industrial.md index 8bd3333..a77d529 100644 --- a/notes/ROS Industrial.md +++ b/notes/ROS Industrial.md @@ -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 diff --git a/notes/downgrade.sh b/notes/downgrade.sh new file mode 100644 index 0000000..21513d2 --- /dev/null +++ b/notes/downgrade.sh @@ -0,0 +1,29 @@ +#!/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 -- GitLab