AUV-Coop-Assembly
Master Thesis for Robotics Engineering. Cooperative peg-in-hole assembly with two underwater vehicles guided by vision
AUV-Coop-assembly

MASTER THESIS Robotics Engineering 30-08-2019

Code Documentation Thesis

Screenshots

Video of the final experiment

GitHub link video Streamable link video Same video uploaded twice if one does not work.

Workspace folders

src/peg (catkin package)

The "only kinematic" package, simulated with UWsim. Folder "toBeAdded_uwsim":

Package with dynamics of vehicle and arm. The dynamics is provided by FreeFloatingGazebo, a plugin which use Gazebo and UWSim functionalities. Folder "tobeAdded_freeFloatDemo":

matlab folder

matlab code for plotting test

model folder

folder needed by kdlHelper (inside the packages) to parse the robot model and build the jacobian (the KDLHelper).

Others?

TODO: better put as separate package various support/helper classes that have no differences for kineatic and dynamic version.

Code Schemes

Code Scheme
Code Scheme

Control Flow Scheme

Control Flow Scheme

Dependencies

Simulators

Vision part

Solutions for some possible compiling issue:

eigen library not found

It may be cause by the fact that eigen is installed in a folder named eigen3 (and not eigen). Solution:

1 cd /usr/include #the folder where is eigen3
2 sudo ln -s /usr/include/eigen3/Eigen Eigen #create symbolic link

cmat_defines.h problem

in cmat there is a defined constant #define PI 3.14xxxx this is a problem because kdl library has a const int called PI. Solution is to change (in cmat_defines.h) : #define PI 3.14xxxxx in const int PI 3.14xxxxx

VISP_HAVE_PCL not setted

there is a function .track() in the tracker.cpp. This function is declared in a .h which has VISP_HAVE_PCL flag before. Even with pcl-ros installed, this flag can be unsetted. Solution? Not sure if I have broken all (at the moment is works, but be sure pcl is installed (ros-pcl is ok)), but I simply added

#define VISP_HAVE_PCL

in /opt/ros/kinetic/include/visp3/visp_modules.h


MISC

to add a task: CMAKE: add_library add target_link_libraries sia per task cpp sia metti sto task cpp come link al main

Libraries:

tf (to get transformation from ros) usata solo dal (rosInterface) che gestisce le cose ros.

cmat solo per computazioni pseudoinverse in icat eq e ican ineq, so nota solo alla classe controller che effettivamente fa ste operazioni. Indipendente da ros

eigen matrice di "passaggio" tra le due sopra. Usata anche per riempire le jacobiane nelle classi task (più comoda di cmat). Nota a TASKS e (main) ma non è un problema perchè è indipendente da ros, (installabile anche senza ros) controllore non la usa perchè usa solo cmat

kdl get jacobians from urdf models

the workspace chaining thing

https://answers.ros.org/question/205976/sourcing-from-multiple-workspaces/