From 7ceecb5f77fc80d197ef0b437f372fd61ddae383 Mon Sep 17 00:00:00 2001 From: m-guberina <gubi.guberina@gmail.com> Date: Tue, 31 Oct 2023 10:30:08 +0100 Subject: [PATCH] nicer readme --- README.md | 47 +++++++++--------- docs/.simulation.md.swp | Bin 12288 -> 0 bytes docs/pinocchio.md | 3 +- .../robot_stuff/.forw_kinm.py.swp | Bin 16384 -> 0 bytes 4 files changed, 25 insertions(+), 25 deletions(-) delete mode 100644 docs/.simulation.md.swp delete mode 100644 initial_python_solution/robot_stuff/.forw_kinm.py.swp diff --git a/README.md b/README.md index 163a6dc..6c87027 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,25 @@ # general info -- c++ implementation because python is too slow, and we're just doing math anyway -- but there are python versions of everything for students who don't need the best performance -# some specifics -- using the ur_rtde implementation of the client-side real-time interface for ur robots -- using pinocchio for dynamics intergration on the client side -- basic closed-loop inverse kinematics control is implemented, more algorithms should be added -- some basic tests will be here as well, other projects built on this will be in separate repos - -# TODO -focus: doing it all in C++ as it will most likely be equally easy when the rust falls off, -but it will work better and be easier to debug in the future - 6.1 get ur5e urdf that works - ---> you need to generate it from officile ur xacro files - 6.2 essentially copy-paste pinocchio sample clik, but implement your inverse-kinematics algorithms -https://gepettoweb.laas.fr/doc/stack-of-tasks/pinocchio/master/doxygen-html/md_doc_b-examples_d-inverse-kinematics.html - 6.3 get the ur simulator to work so that you can see things while testing with actual signals - (check their github page, their docker does not work atm, just find another one/run it on metal, you - know that the connection is OK) - 6.4 improvements: - - write some getting-started-type documentation so that students aren't intimidated - - get pybind for stuff you write in c++ (really no rush there) - - re-implement clik so that students can use it -7. force control on the gripper -10. basic environment simulation: dynamics with lugre friction via straight o.d.e. integration +- all of the code has been used and tested on Ubuntu 22 LTS +- both Python and C++ implementations are available, there's examples of both (both for the libraries + used and for their combination) +- all of the code is initially written in C++ - ur_rtde uses pybind to generate Python bindings, and + 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) +- 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 + and its interface, short instructions on installing Ubuntu, ur_rtde, pinocchio, gepetto and the simulator +- basic closed-loop inverse kinematics control is implemented in both C++ and python. the C++ version + uses exponential coordinates and the Lie group formalism, while the Python version uses homogenious + transformations and basic matrix operations +- robot description files: urdf containing both the arm and the gripper, and other urdf-related files +- more algorithms will be added over time +- documentation will be expanded according to demand +- some basic tests will be here as well, while full projects built on this repo will be in separate repos diff --git a/docs/.simulation.md.swp b/docs/.simulation.md.swp deleted file mode 100644 index 3c885c0abe3280b46fca4d555e69efa064e2a25c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmYc?2=nw+u+TGNU|?VnU|<kfWS`n^QOS@xnSmiazqlYjC9w!3g%9T@7H4PX;Zp&T ztAiP+pOK%NYNQY6=9K28=ob_vR%90ImlnkrXXX~<q{b)b=am%Y=jf;8Cl~7%XXcjX zB$j06=jr99K#UtDM?+vV1c(iR(vmb?3tk3eBSQm_7G)(x1!1935OWldhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjF1p0DPUx%XJBApg8G*iN;9I-Q0^!-8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiQ^Lm)AQf#C!<1A_z)Wd0x4|G&V`z>v<*z~IZz zz#z`gz;Kz5fgzEPf#Dx71H&U;28K#r1_mKs1_l;h28OvjQ2j&D|D#SG4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@RU|_J&Q^?CNS12mYQ>e@@Em9~b%1<v!%vDG%R>(|K$ShGP zPb>z>=4IxkE9B=X6s0ESC}boSrIaTYr7DzXmSiX-DunpE_$wr(f|QhGB$g<YWTY0Q zDr6Qb<mD@*7iAU{q!uY;=7EG25bJwER^+ECRHl|NnCmH|=PQ)tgH^y>P?DIWqmY=F zqEJv;qL5lql3J9Pn4<t)EDX||s8EntRHBfdhN4ZQBqLQJKQE^eBAb|2l3JvYo0yrW z$)KR1U}$8nXP{@GXQ%+;fs_`fmXu`Xr57t`cm^mWrlb_578j=$Yr>3$SqxjHtWa8% zoLB(!O=ysFVnMM&Nn(<oLUKl8UV19nEgt#BB?_JaARjT9!Tgp{Qc_^0uMcs7p`M|Y znSq6Yepz0!UPei7j(tXcafvNlQmr7rsKgeeLI){mGV_W{5_2HSqd}H}g9mCa$Un*X zd3mYHpvBXWm;uMAf3O}%PB*heA+e++F*zf(80^TB)S}!>P>@2y9Tc*OnRz9tMUY_E z)y+#Su?0CxAvZA_swp!!F+EkGI0F><pwP?7PfpAMsbMhH19=yejzHpIbvmGgqo9<M zpPZdq1ZL~%7Ue2{T!L(PWoc1yX0DQg9@tr6C22W{=?X=ux%p*KdkczE%QEvzi^1`q zn3<Paq{CpM2R0LCeo|>>PKttVi9#;KKn2}21sAZ@X_+~x3VKQ)_azslmO$bN>_P@( zJ%zl)vdr{EkSHYmft-(&O4IUlQc{Z`$sw~?p(wQ=9~7LR{86G_tWcI(RH;y&nv<iD zo0yWyV5Fyzkyw_hkf@N8pP#LeSfT*+eM)|EX>Mv>33zEc$R!YEc?y{+sfi%d%Rw0@ zvjmiDK#4vrzepi5uM(6ZGeHrWn4^%HmzH0Y3o(GfP)`Ax8eleP6qlytD<l?_=%%NZ Jph;>n0067zi1+{i diff --git a/docs/pinocchio.md b/docs/pinocchio.md index 227f1de..ba31652 100644 --- a/docs/pinocchio.md +++ b/docs/pinocchio.md @@ -12,4 +12,5 @@ while it's certainly a plus to learn them, you don't need to. you can just use t and calculating jacobian functions, and do ther rest of the math with eigen or numpy. # how to learn how to use pinocchio? -play around with it in ipython3 +follow exercises and tutorials from the pinocchio documentation webiste, play around with it in ipython3 (a nicer +shell than plain python, install with sudo apt-get install ipython3) diff --git a/initial_python_solution/robot_stuff/.forw_kinm.py.swp b/initial_python_solution/robot_stuff/.forw_kinm.py.swp deleted file mode 100644 index 54308cd4986776442849d527563602fa6a60b0e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 -- GitLab