From 95c3e9c1c03267476d98db2250a4b524388ffbda Mon Sep 17 00:00:00 2001 From: m-guberina <gubi.guberina@gmail.com> Date: Fri, 20 Sep 2024 13:35:07 +0200 Subject: [PATCH] added new todos, started working towards dokerizing this --- Dockerfile | 11 ++++ README.md | 4 +- TODOS_2024_09_19 | 50 ++++++++++++++++++ docs/gepetto.md | 7 --- .../clik_point_to_point.cpython-312.pyc | Bin 14572 -> 14441 bytes .../clik/clik_point_to_point.py | 2 +- 6 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 Dockerfile create mode 100644 TODOS_2024_09_19 delete mode 100644 docs/gepetto.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0581e60 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM ubuntu:jammy +WORKDIR /usr/local/ur_simple_control + +# copy repo to workdir +COPY . . + +RUN apt update && apt upgrade + +# open up meshcat ports +# make this a range +EXPOSE 7000 diff --git a/README.md b/README.md index 4ca8353..8fb189b 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,15 @@ so does pinocchio for the most part. thus almost all the functions used are identical across languages, and so c++ implementations can be looked at to analyse python functionality as well - matrix operations are done with Eigen in C++, and NumPy in Python + # libraries used and their purpose ------------- - ur_rtde for the client-side real-time interface for ur robots (we have a UR5e) - pinocchio for dynamics intergration, and other robotics-related math on the client side -- gepetto for visualization (has nice integration with pinocchio) +- meshcat for visualization (has nice integration with pinocchio) - Dockerized ur simulator as a simulator (it's a bad simulator, but it uses the same robot-communication API as the real robot, making coding and testing easier) + # contents of this repository ------------- - basic documentation can be found in the docs directory: official UR documentation on the robot's capabilities diff --git a/TODOS_2024_09_19 b/TODOS_2024_09_19 new file mode 100644 index 0000000..a6257c4 --- /dev/null +++ b/TODOS_2024_09_19 @@ -0,0 +1,50 @@ +the primary goal is to make this as easy to use as possible, +and that means a docker image that just needs to be built. + +goal 1: ease of use +----------------------- +make a docker image installing everything +1. get clik with visualization to work in a ubuntu22 docker +2. write down the installation process in a Dockerfile +3. create a single loadable docker image however you can + +the secondary goal is to re-do the documentation and +add the tutorials going from basic linux to python to +to minimal robotics to the library itself. +to make this less painful clean up the code first. + +then just do the pareto optimal code rewrite to make it cleaner +(actually call everything in the step function, maybe finish logging and that's it) + +goal 2: clean up the code +--------------------------- +1. do all reading and updating into the local class in the step() function --> remove the rest +2. maybe fix logging a bit +3. stop asap + +then finish goal 2 by making the docs & tutorialss + +goal 3: documentation and tutorials +----------------------------------- +1. documents in text (md/tex) which at least outline the minimal amount of knowledge +2. linux cli video tutorials +2. python essentials video tutorials + some tips on how to learn it quicker (use shell etc) +3. ur_simple_control_library video tutorials, ex. example write circle tracking + +set yourself up for research success by using crocoddyl on the real robot, +i.e. get some experience with the basics with the bonus being you can trust +ik not to hit the table + +goal 4: more controllers +------------------------ +1. finish adding all ik algorithms +2. crocoddyl optimal control with obstacle avoidance (manipulator itself + table/floor is enough) +3. [hard] adjusting the dmp to get back on the path despite external forces + (fix the problem of writing on a non-flat surface/whatever) --> publishable side-project + +finally, do what you promised and put this on another robot, +thereby rendering this something publishable in joss + +goal 5: panda/yumi +---------------- +1. transfer the library to panda or yumi or both diff --git a/docs/gepetto.md b/docs/gepetto.md deleted file mode 100644 index db044a2..0000000 --- a/docs/gepetto.md +++ /dev/null @@ -1,7 +0,0 @@ -## visualization with gepetto -- https://github.com/Gepetto/gepetto-viewer is the link for more info -- needs to be installed - just pip or apt gepetto-viewer or a similar name(s) -- it needs to be ran with gepetto-gui before it can be called in code. -- for c++ api https://github.com/stack-of-tasks/pinocchio-gepetto-viewer needs to be installed. - when compiling with cmake, you need to se the install prefix to /usr, - i.e. do cmake -DCMAKE_INSTALL_PREFIX=/usr when running cmake diff --git a/python/ur_simple_control/clik/__pycache__/clik_point_to_point.cpython-312.pyc b/python/ur_simple_control/clik/__pycache__/clik_point_to_point.cpython-312.pyc index 0e87eb7a7f7d8001f3804aec246ec258c7d24557..f6eb30f9a3134ffe664f07421d12d9180a5ab800 100644 GIT binary patch delta 218 zcmaD;__BcaG%qg~0|NuYcCj~Uhd1)_8!<UBO|}tM7G+w^2oh&ts9}s}g0L7ECSOv} z;j3X>%?uH!WhvpE94jlsQp1=fFnOVbFr(1qiK4=j=Noe{f+Z&V7;{5dIF+DFyf+qr z=$I^H!p|r=S;s`4Q5<Y)yoms#<YX=tnaMpSyo|DwXPGoI@=rD}UCVxsfq|ic;mKrQ LHJQ!wW@niI%5pVG delta 130 zcmaD^@TQRWG%qg~0|Ns?N{oNnp^d!!Mobf!Cd(;rW@e~ioP0&OV)7p&?#cI+7qBzU zVX0+JVV-<XS#I(fV}3^2$#;z98RaKW6cwJ#Zz8~`I5|&KX0nY5FQe*YFOx=5;UZoJ g28JRx5K#ysiWnFeCZ91`%lLM(hMME%Ii_cs06khJmH+?% diff --git a/python/ur_simple_control/clik/clik_point_to_point.py b/python/ur_simple_control/clik/clik_point_to_point.py index a442d81..bf86a9a 100644 --- a/python/ur_simple_control/clik/clik_point_to_point.py +++ b/python/ur_simple_control/clik/clik_point_to_point.py @@ -350,7 +350,7 @@ if you don't care about rotation, make it np.zeros((3,3)) """ # add a threshold for the wrench def compliantMoveL(args, robot, goal_point): - assert type(goal_point) == pin.pinocchio_pywrap.SE3 +# assert type(goal_point) == pin.pinocchio_pywrap.SE3 robot.Mgoal = copy.deepcopy(goal_point) clik_controller = getClikController(args) controlLoop = partial(controlLoopCompliantClik, args, robot) -- GitLab