From 4138cd5a9b29c9e20e5be8d0874f0d1186ad59bb Mon Sep 17 00:00:00 2001 From: Marc Toussaint Date: Tue, 26 Sep 2023 17:10:06 +0200 Subject: [PATCH] doc updates --- docs/_images/notebooks_1c-komo_36_0.png | Bin 0 -> 24529 bytes docs/genindex.html | 702 +++++++ docs/getting_started.html | 5 +- docs/index.html | 284 ++- docs/notebooks/1a-configurations.html | 1 + docs/notebooks/1b-botop.html | 1 + docs/notebooks/1c-komo.html | 5 +- docs/notebooks/1d-real.html | 589 ++++++ docs/notebooks/1d-real.ipynb | 619 ++++++ docs/notebooks/botop3-vision-toBeMerged.html | 2 +- docs/notebooks/core2-features.html | 4 +- docs/notebooks/core3-configurations.html | 8 +- docs/notebooks/core3-configurations.ipynb | 8 +- docs/notebooks/komo1-IK-toBeMerged.html | 2 +- docs/notebooks/komo1-IK-toBeMerged.ipynb | 2 +- .../komo2-PathOptimization-toBeMerged.html | 2 +- .../komo2-PathOptimization-toBeMerged.ipynb | 2 +- docs/notebooks/komo3-switches-skeletons.html | 4 +- docs/notebooks/komo3-switches-skeletons.ipynb | 4 +- docs/notebooks/notebooks.html | 3 + docs/notebooks/opt1-basics.html | 2 +- docs/notebooks/opt1-basics.ipynb | 2 +- docs/notebooks/sim1-physics.html | 2 +- docs/notebooks/sim1-physics.ipynb | 2 +- docs/py-modindex.html | 130 ++ docs/rai.html | 1741 ++++++++++++++++- docs/script/script.html | 2 +- docs/searchindex.js | 2 +- docs/source/conf.py | 4 +- docs/source/getting_started.md | 5 +- docs/source/getting_started.rst | 5 +- docs/source/notebooks/1d-real.ipynb | 619 ++++++ .../notebooks/botop3-vision-toBeMerged.ipynb | 2 +- .../notebooks/core3-configurations.ipynb | 8 +- .../notebooks/komo1-IK-toBeMerged.ipynb | 2 +- .../komo2-PathOptimization-toBeMerged.ipynb | 2 +- .../notebooks/komo3-switches-skeletons.ipynb | 4 +- docs/source/notebooks/notebooks.rst | 2 + docs/source/notebooks/opt1-basics.ipynb | 2 +- docs/source/notebooks/sim1-physics.ipynb | 2 +- docs/source/old/_Configuration.rst | 56 +- docs/source/old/_Simulation.rst | 28 +- docs/source/rai.rst | 2 +- docs/source/script/script.rst | 2 +- 44 files changed, 4780 insertions(+), 95 deletions(-) create mode 100644 docs/_images/notebooks_1c-komo_36_0.png create mode 100644 docs/notebooks/1d-real.html create mode 100644 docs/notebooks/1d-real.ipynb create mode 100644 docs/py-modindex.html create mode 100644 docs/source/notebooks/1d-real.ipynb diff --git a/docs/_images/notebooks_1c-komo_36_0.png b/docs/_images/notebooks_1c-komo_36_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b321051afafccb7a474f83ceaffc501c47c552e4 GIT binary patch literal 24529 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%0A8?!d2ZiBeW47Hbc_r+nM5> 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 AtpET3 literal 0 HcmV?d00001 diff --git a/docs/genindex.html b/docs/genindex.html index c249984..24698c1 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -76,8 +76,710 @@

Index

+ A + | B + | C + | D + | E + | F + | G + | H + | I + | J + | K + | L + | M + | N + | O + | P + | R + | S + | T + | U + | V + | W
+

A

+ + + +
+ +

B

+ + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + + +
+ +

I

+ + + +
+ +

J

+ + +
+ +

K

+ + +
+ +

L

+ + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

O

+ + + +
+ +

P

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + +
+ +

U

+ + + +
+ +

V

+ + + +
+ +

W

+ + + +
+ diff --git a/docs/getting_started.html b/docs/getting_started.html index 5d743e7..c299b4c 100644 --- a/docs/getting_started.html +++ b/docs/getting_started.html @@ -128,8 +128,9 @@

1.2. Avanced info

1.3. Installing the tutorial notebooks

-
git clone <https://github.com/MarcToussaint/rai-python.git> cd
-rai-python/notebooks jupyter-notebook .
+
git clone https://github.com/MarcToussaint/rai-python.git
+cd rai-python/notebooks
+jupyter-notebook .
 

If you don’t have jupyter installed yet:

diff --git a/docs/index.html b/docs/index.html index 1f973da..16c0bc0 100644 --- a/docs/index.html +++ b/docs/index.html @@ -102,6 +102,7 @@

Welcome to the Robotics Course Repo2.1.1. Configurations
  • 2.1.2. Robot Operation (BotOp) interface
  • 2.1.3. KOMO: Motion Optimization
  • +
  • 2.1.4. Starting with a real robot
  • 2.2. More in depth
      @@ -225,7 +226,288 @@

      Welcome to the Robotics Course Repo4.7. Array

  • -
  • 5. rai python API
  • +
  • 5. rai python API +
  • diff --git a/docs/notebooks/1a-configurations.html b/docs/notebooks/1a-configurations.html index 208970a..151083e 100644 --- a/docs/notebooks/1a-configurations.html +++ b/docs/notebooks/1a-configurations.html @@ -61,6 +61,7 @@
  • 2.1.2. Robot Operation (BotOp) interface
  • 2.1.3. KOMO: Motion Optimization
  • +
  • 2.1.4. Starting with a real robot
  • 2.2. More in depth
  • diff --git a/docs/notebooks/1b-botop.html b/docs/notebooks/1b-botop.html index 9a599f1..ca9ae6d 100644 --- a/docs/notebooks/1b-botop.html +++ b/docs/notebooks/1b-botop.html @@ -54,6 +54,7 @@
  • 2.1.1. Configurations
  • 2.1.2. Robot Operation (BotOp) interface
  • 2.1.3. KOMO: Motion Optimization
  • +
  • 2.1.4. Starting with a real robot
  • 2.2. More in depth
  • diff --git a/docs/notebooks/1c-komo.html b/docs/notebooks/1c-komo.html index 6180101..c89f90b 100644 --- a/docs/notebooks/1c-komo.html +++ b/docs/notebooks/1c-komo.html @@ -23,7 +23,7 @@ - + @@ -60,6 +60,7 @@
  • 2.1.3.4. Path example
  • +
  • 2.1.4. Starting with a real robot
  • 2.2. More in depth
  • @@ -623,7 +624,7 @@

    2.1.3.4. Path example - +


    diff --git a/docs/notebooks/1d-real.html b/docs/notebooks/1d-real.html new file mode 100644 index 0000000..ce395b1 --- /dev/null +++ b/docs/notebooks/1d-real.html @@ -0,0 +1,589 @@ + + + + + + + 2.1.4. Starting with a real robot — Robotics Course documentation + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    +
      +
    • + + +
    • +
    • +
    +
    +
    +
    +
    + +
    +

    2.1.4. Starting with a real robot

    +

    The BotOp interface should work equally for a simulated and real robot. Note that currently only a locally compiled robotic package supports connecting to a Franka robot and Realsense camera. Here some first cautious steps to get started with a real robot.

    +
    +

    2.1.4.1. First robot motion, camera & pcl, and gripper motion

    +
    +
    [1]:
    +
    +
    +
    from robotic import ry
    +import numpy as np
    +import time
    +print(ry.compiled())
    +
    +
    +
    +
    +
    +
    +
    +
    +compile time: Sep 23 2023 18:22:45
    +
    +
    +
    +
    [2]:
    +
    +
    +
    #in case you switch to simulation
    +ry.params_add({'botsim/verbose': 1., 'physx/motorKp': 10000., 'physx/motorKd': 1000.})
    +ry.params_print()
    +
    +
    +
    +
    +
    +
    +
    +
    +-- ry.cpp:operator():99(0) python,
    +message: "Hello, the local 'rai.cfg' was loaded",
    +botsim/verbose: 1,
    +physx/motorKp: 10000,
    +physx/motorKd: 1000
    +
    +
    +

    First, also for a real robot we first load the configuration and maintain our own workspace configuration.

    +
    +
    [3]:
    +
    +
    +
    C = ry.Config()
    +C.addFile(ry.raiPath('../rai-robotModels/scenarios/pandaSingle.g'))
    +pcl = C.addFrame('pcl', 'cameraWrist')
    +C.view(False, 'this is your workspace data structure C -- NOT THE SIMULTATION')
    +
    +
    +
    +
    +
    [3]:
    +
    +
    +
    +
    +0
    +
    +
    +

    Now we start botop with real=True. By passing the model configuration C, the system knows which and how many robots there should be an tries to connect with them.

    +
    +
    [4]:
    +
    +
    +
    # True = real robot!!
    +bot = ry.BotOp(C, useRealRobot=True)
    +
    +
    +
    +
    +
    +
    +
    +
    +-- bot.cpp:BotOp:38(0) CONNECTING TO FRANKAS..
    +STACK9 /usr/bin/python3(PyObject_Call
    +STACK8 /usr/bin/python3() [0x50b8a8]
    +STACK7 /usr/bin/python3(_PyObject_MakeTpCall
    +STACK6 /usr/bin/python3(PyCFunction_Call
    +STACK5 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0xbc6af) [0x7f9a446ad6af]
    +STACK4 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0x3bb9e) [0x7f9a4462cb9e]
    +STACK3 BotOp::BotOp(rai::Configuration&, bool)
    +STACK2 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<FrankaThread, std::allocator<FrankaThread>, int, rai::Array<unsigned int>, Var<rai::CtrlCmdMsg>&, Var<rai::CtrlStateMsg>&>(FrankaThread*&, std::_Sp_alloc_shared_tag<std::allocator<FrankaThread> >, int&&, rai::Array<unsigned int>&&, Var<rai::CtrlCmdMsg>&, Var<rai::CtrlStateMsg>&)
    +STACK1 FrankaThread::init(unsigned int, rai::Array<unsigned int> const&)
    +STACK0 rai::LogToken::~LogToken()
    +-- WARNING:bot.cpp:BotOp:70(-1) Starting the real robot failed! Error msg: franka.cpp:init:356(-2) not implemented with this compiler options: usually this means that the implementation needs an external library and a corresponding compiler option - see the source code
    +
    +
    +
    +
    +
    +
    +
    +== ERROR:franka.cpp:init:356(-2) not implemented with this compiler options: usually this means that the implementation needs an external library and a corresponding compiler option - see the source code
    +
    +
    +

    If that failed, you could ry.params_print() to see which global parameters were used and whether you should change them.

    +
    +
    [5]:
    +
    +
    +
    if bot.get_t()==0: #if the above failed, use a sim...
    +    del bot
    +    bot = ry.BotOp(C, useRealRobot=False)
    +
    +
    +
    +
    +
    +
    +
    +
    +-- bot.cpp:~BotOp:112(0) shutting down BotOp...
    +
    +
    +

    A first motion:

    +
    +
    [6]:
    +
    +
    +
    q = bot.get_qHome()
    +q[1] = q[1] + .2
    +
    +bot.moveTo(q)
    +bot.wait(C)
    +print('first motion done')
    +
    +bot.moveTo(bot.get_qHome())
    +bot.wait(C)
    +
    +
    +
    +
    +
    +
    +
    +
    +first motion done
    +
    +
    +
    +
    [6]:
    +
    +
    +
    +
    +0
    +
    +
    +

    Grabbing a camera image & pcl, adding the pcl to the workspace C:

    +
    +
    [7]:
    +
    +
    +
    pcl = C.addFrame('pcl', 'cameraWrist')
    +pcl.setShape(ry.ST.pointCloud, [2]) # the size here is pixel size for display
    +bot.sync(C)
    +
    +while bot.getKeyPressed()!=ord('q'):
    +    image, depth, points = bot.getImageDepthPcl("cameraWrist")
    +    pcl.setPointCloud(points, image)
    +    pcl.setColor([1,0,0])
    +    bot.sync(C, .1)
    +
    +
    +
    +
    +
    +
    +
    +
    +-- WARNING:kin.cpp:addFrame:191(-1) frame already exists! returning existing without modifications!
    +-- frame.cpp:glDraw:1668(1) trying to draw empty mesh (shape type:pointCloud)
    +STACK9 /usr/bin/python3(PyCFunction_Call
    +STACK8 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0xbc6af) [0x7f9a446ad6af]
    +STACK7 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0x47f29) [0x7f9a44638f29]
    +STACK6 BotOp::getImageDepthPcl(rai::Array<unsigned char>&, rai::Array<float>&, rai::ArrayDouble&, char const*, bool)
    +STACK5 rai::Simulation::getImageAndDepth(rai::Array<unsigned char>&, rai::Array<float>&)
    +STACK4 rai::CameraView::updateConfiguration(rai::Configuration const&)
    +STACK3 rai::Configuration::getFrameState(rai::Array<rai::Frame*> const&) const
    +STACK2 rai::Frame::ensure_X()
    +STACK1 rai::Frame::calc_X_from_parent()
    +STACK0 rai::LogToken::~LogToken()
    +
    +
    +
    +
    +
    +
    +
    +== ERROR:frame.cpp:calc_X_from_parent:94(-2) CHECK failed: 'parent->_state_X_isGood' --
    +
    +
    +
    +
    +
    +
    +
    +---------------------------------------------------------------------------
    +RuntimeError                              Traceback (most recent call last)
    +Cell In[7], line 6
    +      3 bot.sync(C)
    +      5 while bot.getKeyPressed()!=ord('q'):
    +----> 6     image, depth, points = bot.getImageDepthPcl("cameraWrist")
    +      7     pcl.setPointCloud(points, image)
    +      8     pcl.setColor([1,0,0])
    +
    +RuntimeError: frame.cpp:calc_X_from_parent:94(-2) CHECK failed: 'parent->_state_X_isGood' --
    +
    +
    +

    Closing & opening the gripper:

    +
    +
    [ ]:
    +
    +
    +
    #slow close
    +bot.gripperMove(ry._left, width=.01, speed=.2)
    +
    +while not bot.gripperDone(ry._left):
    +    bot.sync(C)
    +
    +#fast open
    +bot.gripperMove(ry._left, width=.08, speed=1.)
    +
    +while not bot.gripperDone(ry._left):
    +    bot.sync(C)
    +
    +
    +
    +

    Always shut down the robot properly by destroying the handle:

    +
    +
    [8]:
    +
    +
    +
    del bot
    +del C
    +
    +
    +
    +
    +
    +
    +
    +
    +-- bot.cpp:~BotOp:112(0) shutting down BotOp...
    +-- simulation.cpp:~BotThreadedSim:56(0) shutting down SimThread
    +-- simulation.cpp:~Simulation:148(0) shutting down Simulation
    +
    +
    +
    +
    +

    2.1.4.2. Advanced: Compliance & Force/Torque feedback

    +
    +
    [1]:
    +
    +
    +
    from robotic import ry
    +import numpy as np
    +import time
    +
    +
    +
    +
    +
    [2]:
    +
    +
    +
    C = ry.Config()
    +C.addFile(ry.raiPath('scenarios/pandaSingle.g'))
    +C.view(False, 'this is your workspace data structure C -- NOT THE SIMULTATION')
    +
    +
    +
    +
    +
    [2]:
    +
    +
    +
    +
    +0
    +
    +
    +
    +
    [3]:
    +
    +
    +
    # True = real robot!!
    +bot = ry.BotOp(C, False)
    +
    +
    +
    +

    After opening the robot, it is floating (=setting the reference always to q_current) but damped (with D-gains). You should be able to move the robot now!

    +
    +
    [4]:
    +
    +
    +
    C.view(True, 'Try moving the robot by hand!\n-- press any key to continue --')
    +
    +
    +
    +
    +
    [4]:
    +
    +
    +
    +
    +86
    +
    +
    +

    We can also turn off the damping, which makes the robot move more freely:

    +
    +
    [5]:
    +
    +
    +
    bot.hold(floating=True, damping=False)
    +C.view(True, 'Try moving the robot by hand!\n-- press any key to continue --')
    +
    +
    +
    +
    +
    [5]:
    +
    +
    +
    +
    +107
    +
    +
    +

    Now let’s hold stiffly around a constant reference:

    +
    +
    [6]:
    +
    +
    +
    bot.hold(floating=False, damping=True)
    +C.view(True, 'Try moving the robot by hand!\n-- press any key to continue --')
    +
    +
    +
    +
    +
    [6]:
    +
    +
    +
    +
    +111
    +
    +
    +

    The hold methods above might be useful for kinestetic teaching or so (you can always keep C sync’ed and compute any features while moving the robot).

    +

    But for autonomous compliant manipulation we want to follow a reference and impose compliance in following this reference along some task space dimensions only. I.e., a task space compliance.

    +
    +
    [7]:
    +
    +
    +
    bot.moveTo(bot.get_qHome(), 1.)
    +bot.wait(C)
    +
    +while True:
    +    bot.sync(C, .1)
    +    if bot.getKeyPressed()==ord('q'):
    +       break
    +    y, J = C.eval(ry.FS.position, ["l_gripper"], [[1,0,0]])
    +    bot.setCompliance(J, 1.)
    +    print(' direct:', J @ bot.get_tauExternal(),
    +          ' pseudoInv:', np.linalg.pinv(J.T) @ bot.get_tauExternal())
    +
    +bot.setCompliance([], 0.)
    +
    +
    +
    +
    +
    +
    +
    +
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    + direct: [nan]  pseudoInv: [nan]
    +-- bot.cpp:setCompliance:328(0) clearing compliance
    +
    +
    +
    +
    [ ]:
    +
    +
    +
    bot.home(C)
    +
    +
    +
    +
    +
    [ ]:
    +
    +
    +
    del bot
    +
    +
    +
    +
    +
    [ ]:
    +
    +
    +
    
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/notebooks/1d-real.ipynb b/docs/notebooks/1d-real.ipynb new file mode 100644 index 0000000..65ba04c --- /dev/null +++ b/docs/notebooks/1d-real.ipynb @@ -0,0 +1,619 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "59a99259", + "metadata": {}, + "source": [ + "# Starting with a real robot\n", + "\n", + "The BotOp interface should work equally for a simulated and real robot. Note that currently only a locally compiled robotic package supports connecting to a Franka robot and Realsense camera. Here some first cautious steps to get started with a real robot." + ] + }, + { + "cell_type": "markdown", + "id": "fee0684d", + "metadata": {}, + "source": [ + "## First robot motion, camera & pcl, and gripper motion" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "eca938ab", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "compile time: Sep 23 2023 18:22:45\n" + ] + } + ], + "source": [ + "from robotic import ry\n", + "import numpy as np\n", + "import time\n", + "print(ry.compiled())" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "950397d7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-- ry.cpp:operator():99(0) python,\n", + "message: \"Hello, the local 'rai.cfg' was loaded\",\n", + "botsim/verbose: 1,\n", + "physx/motorKp: 10000,\n", + "physx/motorKd: 1000\n" + ] + } + ], + "source": [ + "#in case you switch to simulation\n", + "ry.params_add({'botsim/verbose': 1., 'physx/motorKp': 10000., 'physx/motorKd': 1000.})\n", + "ry.params_print()" + ] + }, + { + "cell_type": "markdown", + "id": "e3280d7b", + "metadata": {}, + "source": [ + "First, also for a real robot we first load the configuration and maintain our own workspace configuration." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "33f75e77", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C = ry.Config()\n", + "C.addFile(ry.raiPath('../rai-robotModels/scenarios/pandaSingle.g'))\n", + "pcl = C.addFrame('pcl', 'cameraWrist')\n", + "C.view(False, 'this is your workspace data structure C -- NOT THE SIMULTATION')" + ] + }, + { + "cell_type": "markdown", + "id": "f0a194da", + "metadata": {}, + "source": [ + "Now we start botop with real=True. By passing the model configuration C, the system knows which and how many robots there should be an tries to connect with them." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f1119ecc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-- bot.cpp:BotOp:38(0) CONNECTING TO FRANKAS..\n", + "STACK9 /usr/bin/python3(PyObject_Call\n", + "STACK8 /usr/bin/python3() [0x50b8a8]\n", + "STACK7 /usr/bin/python3(_PyObject_MakeTpCall\n", + "STACK6 /usr/bin/python3(PyCFunction_Call\n", + "STACK5 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0xbc6af) [0x7f9a446ad6af]\n", + "STACK4 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0x3bb9e) [0x7f9a4462cb9e]\n", + "STACK3 BotOp::BotOp(rai::Configuration&, bool)\n", + "STACK2 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, int, rai::Array, Var&, Var&>(FrankaThread*&, std::_Sp_alloc_shared_tag >, int&&, rai::Array&&, Var&, Var&)\n", + "STACK1 FrankaThread::init(unsigned int, rai::Array const&)\n", + "STACK0 rai::LogToken::~LogToken()\n", + "-- WARNING:bot.cpp:BotOp:70(-1) Starting the real robot failed! Error msg: franka.cpp:init:356(-2) not implemented with this compiler options: usually this means that the implementation needs an external library and a corresponding compiler option - see the source code\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "== ERROR:franka.cpp:init:356(-2) not implemented with this compiler options: usually this means that the implementation needs an external library and a corresponding compiler option - see the source code\n" + ] + } + ], + "source": [ + "# True = real robot!!\n", + "bot = ry.BotOp(C, useRealRobot=True)" + ] + }, + { + "cell_type": "markdown", + "id": "570afef1", + "metadata": {}, + "source": [ + "If that failed, you could `ry.params_print()` to see which global parameters were used and whether you should change them." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "bafdead7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-- bot.cpp:~BotOp:112(0) shutting down BotOp...\n" + ] + } + ], + "source": [ + "if bot.get_t()==0: #if the above failed, use a sim...\n", + " del bot\n", + " bot = ry.BotOp(C, useRealRobot=False)" + ] + }, + { + "cell_type": "markdown", + "id": "b7d17dd0", + "metadata": {}, + "source": [ + "A first **motion**:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "df4ea390", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "first motion done\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "q = bot.get_qHome()\n", + "q[1] = q[1] + .2\n", + "\n", + "bot.moveTo(q)\n", + "bot.wait(C)\n", + "print('first motion done')\n", + "\n", + "bot.moveTo(bot.get_qHome())\n", + "bot.wait(C)" + ] + }, + { + "cell_type": "markdown", + "id": "a845b0fb", + "metadata": {}, + "source": [ + "Grabbing a **camera image & pcl**, adding the pcl to the workspace C:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1b2144a8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-- WARNING:kin.cpp:addFrame:191(-1) frame already exists! returning existing without modifications!\n", + "-- frame.cpp:glDraw:1668(1) trying to draw empty mesh (shape type:pointCloud)\n", + "STACK9 /usr/bin/python3(PyCFunction_Call\n", + "STACK8 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0xbc6af) [0x7f9a446ad6af]\n", + "STACK7 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0x47f29) [0x7f9a44638f29]\n", + "STACK6 BotOp::getImageDepthPcl(rai::Array&, rai::Array&, rai::ArrayDouble&, char const*, bool)\n", + "STACK5 rai::Simulation::getImageAndDepth(rai::Array&, rai::Array&)\n", + "STACK4 rai::CameraView::updateConfiguration(rai::Configuration const&)\n", + "STACK3 rai::Configuration::getFrameState(rai::Array const&) const\n", + "STACK2 rai::Frame::ensure_X()\n", + "STACK1 rai::Frame::calc_X_from_parent()\n", + "STACK0 rai::LogToken::~LogToken()\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "== ERROR:frame.cpp:calc_X_from_parent:94(-2) CHECK failed: 'parent->_state_X_isGood' -- \n" + ] + }, + { + "ename": "RuntimeError", + "evalue": "frame.cpp:calc_X_from_parent:94(-2) CHECK failed: 'parent->_state_X_isGood' -- ", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[7], line 6\u001b[0m\n\u001b[1;32m 3\u001b[0m bot\u001b[38;5;241m.\u001b[39msync(C)\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m bot\u001b[38;5;241m.\u001b[39mgetKeyPressed()\u001b[38;5;241m!=\u001b[39m\u001b[38;5;28mord\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mq\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[0;32m----> 6\u001b[0m image, depth, points \u001b[38;5;241m=\u001b[39m \u001b[43mbot\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetImageDepthPcl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcameraWrist\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m pcl\u001b[38;5;241m.\u001b[39msetPointCloud(points, image)\n\u001b[1;32m 8\u001b[0m pcl\u001b[38;5;241m.\u001b[39msetColor([\u001b[38;5;241m1\u001b[39m,\u001b[38;5;241m0\u001b[39m,\u001b[38;5;241m0\u001b[39m])\n", + "\u001b[0;31mRuntimeError\u001b[0m: frame.cpp:calc_X_from_parent:94(-2) CHECK failed: 'parent->_state_X_isGood' -- " + ] + } + ], + "source": [ + "pcl = C.addFrame('pcl', 'cameraWrist')\n", + "pcl.setShape(ry.ST.pointCloud, [2]) # the size here is pixel size for display\n", + "bot.sync(C)\n", + "\n", + "while bot.getKeyPressed()!=ord('q'):\n", + " image, depth, points = bot.getImageDepthPcl(\"cameraWrist\")\n", + " pcl.setPointCloud(points, image)\n", + " pcl.setColor([1,0,0])\n", + " bot.sync(C, .1)" + ] + }, + { + "cell_type": "markdown", + "id": "e0563891", + "metadata": {}, + "source": [ + "Closing & opening the **gripper**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79a8549c", + "metadata": {}, + "outputs": [], + "source": [ + "#slow close\n", + "bot.gripperMove(ry._left, width=.01, speed=.2)\n", + "\n", + "while not bot.gripperDone(ry._left):\n", + " bot.sync(C)\n", + "\n", + "#fast open\n", + "bot.gripperMove(ry._left, width=.08, speed=1.)\n", + "\n", + "while not bot.gripperDone(ry._left):\n", + " bot.sync(C)" + ] + }, + { + "cell_type": "markdown", + "id": "0f41998c", + "metadata": {}, + "source": [ + "Always shut down the robot properly by destroying the handle:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "10443e09", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-- bot.cpp:~BotOp:112(0) shutting down BotOp...\n", + "-- simulation.cpp:~BotThreadedSim:56(0) shutting down SimThread\n", + "-- simulation.cpp:~Simulation:148(0) shutting down Simulation\n" + ] + } + ], + "source": [ + "del bot\n", + "del C" + ] + }, + { + "cell_type": "markdown", + "id": "c1278498", + "metadata": {}, + "source": [ + "## Advanced: Compliance & Force/Torque feedback" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "6e82d8f8", + "metadata": {}, + "outputs": [], + "source": [ + "from robotic import ry\n", + "import numpy as np\n", + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "aa1a93be", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C = ry.Config()\n", + "C.addFile(ry.raiPath('scenarios/pandaSingle.g'))\n", + "C.view(False, 'this is your workspace data structure C -- NOT THE SIMULTATION')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5844a69c", + "metadata": {}, + "outputs": [], + "source": [ + "# True = real robot!!\n", + "bot = ry.BotOp(C, False)" + ] + }, + { + "cell_type": "markdown", + "id": "fba6e622", + "metadata": {}, + "source": [ + "After opening the robot, it is floating (=setting the reference always to q_current) but damped (with D-gains). You should be able to move the robot now!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "18468cf5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "86" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C.view(True, 'Try moving the robot by hand!\\n-- press any key to continue --')" + ] + }, + { + "cell_type": "markdown", + "id": "63ee0298", + "metadata": {}, + "source": [ + "We can also turn off the damping, which makes the robot move more freely:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "953b9f3f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "107" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bot.hold(floating=True, damping=False)\n", + "C.view(True, 'Try moving the robot by hand!\\n-- press any key to continue --')" + ] + }, + { + "cell_type": "markdown", + "id": "f79a4d54", + "metadata": {}, + "source": [ + "Now let's hold stiffly around a constant reference:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5d51abbd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "111" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bot.hold(floating=False, damping=True)\n", + "C.view(True, 'Try moving the robot by hand!\\n-- press any key to continue --')" + ] + }, + { + "cell_type": "markdown", + "id": "3e838508", + "metadata": {}, + "source": [ + "The `hold` methods above might be useful for kinestetic teaching or so (you can always keep C sync'ed and compute any features while moving the robot).\n", + "\n", + "But for autonomous compliant manipulation we want to follow a reference and impose compliance in following this reference *along some task space dimensions only*. I.e., a task space compliance." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "86cad3be", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + "-- bot.cpp:setCompliance:328(0) clearing compliance\n" + ] + } + ], + "source": [ + "bot.moveTo(bot.get_qHome(), 1.)\n", + "bot.wait(C)\n", + "\n", + "while True:\n", + " bot.sync(C, .1)\n", + " if bot.getKeyPressed()==ord('q'):\n", + " break\n", + " y, J = C.eval(ry.FS.position, [\"l_gripper\"], [[1,0,0]])\n", + " bot.setCompliance(J, 1.)\n", + " print(' direct:', J @ bot.get_tauExternal(),\n", + " ' pseudoInv:', np.linalg.pinv(J.T) @ bot.get_tauExternal())\n", + "\n", + "bot.setCompliance([], 0.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "549b1e19", + "metadata": {}, + "outputs": [], + "source": [ + "bot.home(C)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "248e8726", + "metadata": {}, + "outputs": [], + "source": [ + "del bot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41dbc4e8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/botop3-vision-toBeMerged.html b/docs/notebooks/botop3-vision-toBeMerged.html index 2394e30..6c1a1a2 100644 --- a/docs/notebooks/botop3-vision-toBeMerged.html +++ b/docs/notebooks/botop3-vision-toBeMerged.html @@ -102,7 +102,7 @@

    “#import sys, osn”, “#sys.path.append(os.path.expanduser(‘~/git/botop/build’))n”, -“#import libry as ryn”, +“#from robotic import ryn”, “from robotic import ryn”, “import numpy as npn”, “import timen”, diff --git a/docs/notebooks/core2-features.html b/docs/notebooks/core2-features.html index 4f447ca..4f1785d 100644 --- a/docs/notebooks/core2-features.html +++ b/docs/notebooks/core2-features.html @@ -24,7 +24,7 @@ - + @@ -499,7 +499,7 @@

    2.2.1.6. Objectives

    2.2. More in depth

    +

    These need consolidation, cleaning, and merging with the ‘old material’.

    • 2.2.1. Features
    • diff --git a/docs/notebooks/opt1-basics.html b/docs/notebooks/opt1-basics.html index b8098e3..441d697 100644 --- a/docs/notebooks/opt1-basics.html +++ b/docs/notebooks/opt1-basics.html @@ -107,7 +107,7 @@

      2.2.11. Optimization (NLP formulation an
      import sys
       sys.path += ['../../lib', '../../build', '../../../build']
       import numpy as np
      -import libry as ry
      +from robotic import ry
       

    diff --git a/docs/notebooks/opt1-basics.ipynb b/docs/notebooks/opt1-basics.ipynb index 2591566..b51c933 100644 --- a/docs/notebooks/opt1-basics.ipynb +++ b/docs/notebooks/opt1-basics.ipynb @@ -18,7 +18,7 @@ "import sys\n", "sys.path += ['../../lib', '../../build', '../../../build']\n", "import numpy as np\n", - "import libry as ry" + "from robotic import ry" ] }, { diff --git a/docs/notebooks/sim1-physics.html b/docs/notebooks/sim1-physics.html index 1168949..67ad810 100644 --- a/docs/notebooks/sim1-physics.html +++ b/docs/notebooks/sim1-physics.html @@ -107,7 +107,7 @@

    2.2.10. Direct simulation interface
    import sys
     sys.path.append('../build')
     import numpy as np
    -import libry as ry
    +from robotic import ry
     from time import sleep
     
    diff --git a/docs/notebooks/sim1-physics.ipynb b/docs/notebooks/sim1-physics.ipynb index 7755557..5b1bb3b 100644 --- a/docs/notebooks/sim1-physics.ipynb +++ b/docs/notebooks/sim1-physics.ipynb @@ -20,7 +20,7 @@ "import sys\n", "sys.path.append('../build')\n", "import numpy as np\n", - "import libry as ry\n", + "from robotic import ry\n", "from time import sleep" ] }, diff --git a/docs/py-modindex.html b/docs/py-modindex.html new file mode 100644 index 0000000..b819052 --- /dev/null +++ b/docs/py-modindex.html @@ -0,0 +1,130 @@ + + + + + + Python Module Index — Robotics Course documentation + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    +
      +
    • + +
    • +
    • +
    +
    +
    +
    +
    + + +

    Python Module Index

    + +
    + r +
    + + + + + + + + + + +
     
    + r
    + robotic +
        + robotic.ry +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2023, Marc Toussaint.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/rai.html b/docs/rai.html index 9ee0aaf..04fdf19 100644 --- a/docs/rai.html +++ b/docs/rai.html @@ -48,7 +48,288 @@
  • 2. Tutorials
  • 3. Lecture Script
  • 4. Old Material
  • -
  • 5. rai python API
  • +
  • 5. rai python API +
  • @@ -74,8 +355,1462 @@
    -
    -

    5. rai python API

    +
    +

    5. rai python API

    +

    rai bindings

    +
    +
    +class robotic.ry.ArgWord
    +

    Members:

    +

    _left

    +

    _right

    +

    _sequence

    +

    _path

    +
    +
    +property name
    +
    + +
    + +
    +
    +class robotic.ry.BotOp
    +

    needs some docu!

    +
    +
    +getCameraFxypxy(self: robotic.ry.BotOp, sensorName: str) arr
    +

    returns camera intrinsics

    +
    + +
    +
    +getImageAndDepth(self: robotic.ry.BotOp, sensorName: str) tuple
    +

    returns image and depth from a camera sensor

    +
    + +
    +
    +getImageDepthPcl(self: robotic.ry.BotOp, sensorName: str, globalCoordinates: bool = False) tuple
    +

    returns image, depth and point cloud (assuming sensor knows intrinsics) from a camera sensor, optionally in global instead of camera-frame-relative coordinates

    +
    + +
    +
    +getKeyPressed(self: robotic.ry.BotOp) int
    +

    get key pressed in window at last sync

    +
    + +
    +
    +getTimeToEnd(self: robotic.ry.BotOp) float
    +

    get time-to-go of the current spline reference that is tracked (use getTimeToEnd()<=0. to check if motion execution is done)

    +
    + +
    +
    +get_q(self: robotic.ry.BotOp) arr
    +

    get the current (real) robot joint vector

    +
    + +
    +
    +get_qDot(self: robotic.ry.BotOp) arr
    +

    get the current (real) robot joint velocities

    +
    + +
    +
    +get_qHome(self: robotic.ry.BotOp) arr
    +

    returns home joint vector (defined as the configuration C when you created BotOp)

    +
    + +
    +
    +get_t(self: robotic.ry.BotOp) float
    +

    returns the control time (absolute time managed by the high freq tracking controller)

    +
    + +
    +
    +get_tauExternal(self: robotic.ry.BotOp) arr
    +

    get the current (real) robot joint torques (external: gravity & acceleration removed) – each call averages from last call; first call might return nonsense!

    +
    + +
    +
    +gripperClose(self: robotic.ry.BotOp, leftRight: robotic.ry.ArgWord, force: float = 10.0, width: float = 0.05, speed: float = 0.1) None
    +

    close gripper

    +
    + +
    +
    +gripperCloseGrasp(self: robotic.ry.BotOp, leftRight: robotic.ry.ArgWord, objName: str, force: float = 10.0, width: float = 0.05, speed: float = 0.1) None
    +

    close gripper and indicate what should be grasped – makes no different in real, but helps simulation to mimic grasping more reliably

    +
    + +
    +
    +gripperDone(self: robotic.ry.BotOp, leftRight: robotic.ry.ArgWord) bool
    +

    returns if gripper is done

    +
    + +
    +
    +gripperMove(self: robotic.ry.BotOp, leftRight: robotic.ry.ArgWord, width: float = 0.075, speed: float = 0.2) None
    +

    move the gripper to width (default: open)

    +
    + +
    +
    +gripperPos(self: robotic.ry.BotOp, leftRight: robotic.ry.ArgWord) float
    +

    returns the gripper pos

    +
    + +
    +
    +hold(self: robotic.ry.BotOp, floating: bool = False, damping: bool = True) None
    +

    hold the robot with a trivial PD controller, floating means reference = real, without damping the robot is free floating

    +
    + +
    +
    +home(self: robotic.ry.BotOp, C: robotic.ry.Config) None
    +

    immediately drive the robot home (see get_qHome); keeps argument C synced; same as moveTo(qHome, 1., True); wait(C);

    +
    + +
    +
    +move(self: robotic.ry.BotOp, path: arr, times: arr, overwrite: bool = False, overwriteCtrlTime: float = -1.0) None
    +

    core motion command: set a spline motion reference; if only a single time [T] is given for multiple waypoints, it assumes equal time spacing with TOTAL time T

    +

    By default, the given spline is APPENDED to the current reference spline. The user can also enforce the given spline to overwrite the current reference starting at the given absolute ctrlTime. This allows implementation of reactive (e.g. MPC-style) control. However, the user needs to take care that overwriting is done in a smooth way, i.e., that the given spline starts with a pos/vel that is close to the pos/vel of the current reference at the given ctrlTime.

    +
    + +
    +
    +moveAutoTimed(self: robotic.ry.BotOp, path: arr, maxVel: float = 1.0, maxAcc: float = 1.0) None
    +

    helper to execute a path (typically fine resolution, from KOMO or RRT) with equal time spacing chosen for given max vel/acc

    +
    + +
    +
    +moveTo(self: robotic.ry.BotOp, q_target: arr, timeCost: float = 1.0, overwrite: bool = False) None
    +

    helper to move to a single joint vector target, where timing is chosen optimally based on the given timing cost

    +

    When using overwrite, this immediately steers to the target – use this as a well-timed reactive q_target controller

    +
    + +
    +
    +setCompliance(self: robotic.ry.BotOp, J: arr, compliance: float = 0.5) None
    +

    set a task space compliant, where J defines the task space Jacobian, and compliance goes from 0 (no compliance) to 1 (full compliance, but still some damping)

    +
    + +
    +
    +setControllerWriteData(self: robotic.ry.BotOp, arg0: int) None
    +

    [for internal debugging only] triggers writing control data into a file

    +
    + +
    +
    +stop(self: robotic.ry.BotOp, C: robotic.ry.Config) None
    +

    immediately stop the robot; keeps argument C synced; same as moveTo(get_q(), 1., True); wait(C);

    +
    + +
    +
    +sync(self: robotic.ry.BotOp, C: robotic.ry.Config, waitTime: float = 0.1) int
    +

    sync your workspace configuration C with the robot state

    +
    + +
    +
    +wait(self: robotic.ry.BotOp, C: robotic.ry.Config, forKeyPressed: bool = True, forTimeToEnd: bool = True) int
    +

    repeatedly sync your workspace C until a key is pressed or motion ends (optionally)

    +
    + +
    + +
    +
    +class robotic.ry.Config
    +

    Core data structure to represent a kinematic configuration.

    +
    +
    +addConfigurationCopy(self: robotic.ry.Config, config: robotic.ry.Config, tau: float = 1.0) None
    +
    + +
    +
    +addFile(self: robotic.ry.Config, filename: str, namePrefix: str = '') None
    +

    add the contents of the file to C

    +
    + +
    +
    +addFrame(self: robotic.ry.Config, name: str, parent: str = '', args: str = '') rai::Frame
    +

    add a new frame to C; optionally make this a child to the given parent; use the Frame methods to set properties of the new frame

    +
    + +
    +
    +addObject(self: robotic.ry.Config, name: str, parent: str = '', shape: rai::ShapeType, size: List[float] = [], color: List[float] = [], pos: List[float] = [], quat: List[float] = []) rai::Frame
    +

    TODO remove! use addFrame only

    +
    + +
    +
    +attach(self: robotic.ry.Config, arg0: str, arg1: str) None
    +

    change the configuration by creating a rigid joint from frame1 to frame2, adopting their current relative pose. This also breaks the first joint that is parental to frame2 and reverses the topological order from frame2 to the broken joint

    +
    + +
    +
    +cameraView(self: robotic.ry.Config) ry::RyCameraView
    +

    create an offscreen renderer for this configuration

    +
    + +
    +
    +clear(self: robotic.ry.Config) None
    +

    clear all frames and additional data; becomes the empty configuration, with no frames

    +
    + +
    +
    +computeCollisions(self: robotic.ry.Config) None
    +

    call the broadphase collision engine (SWIFT++ or FCL) to generate the list of collisions (or near proximities) between all frame shapes that have the collision tag set non-zero

    +
    + +
    +
    +copy(self: robotic.ry.Config, C2: robotic.ry.Config) None
    +

    make C a (deep) copy of the given C2

    +
    + +
    +
    +delFrame(self: robotic.ry.Config, frameName: str) None
    +

    destroy and remove a frame from C

    +
    + +
    +
    +equationOfMotion(self: robotic.ry.Config, qdot: List[float], gravity: bool) tuple
    +
    + +
    +
    +eval(self: robotic.ry.Config, featureSymbol: FeatureSymbol, frames: StringA = [], scale: arr = array(1.e-05), target: arr = array(0.0078125), order: int = -1) tuple
    +

    evaluate a feature

    +
    + +
    +
    +feature(self: robotic.ry.Config, featureSymbol: FeatureSymbol, frameNames: List[str] = [], scale: List[float] = [], target: List[float] = [], order: int = -1) Feature
    +

    create a feature (a differentiable map from joint state to a vector space), as they’re typically used for IK or optimization. See the dedicated tutorial for details. featureSymbol defines which mapping this is (position, vectors, collision distance, etc). many mapping refer to one or several frames, which need to be specified using frameNames

    +
    + +
    +
    +frame(self: robotic.ry.Config, frameName: str) rai::Frame
    +

    get access to a frame by name; use the Frame methods to set/get frame properties

    +
    + +
    +
    +frames(self: robotic.ry.Config) List[rai::Frame]
    +
    + +
    +
    +getCollisions(self: robotic.ry.Config, belowMargin: float = 1.0) list
    +

    return the results of collision computations: a list of 3 tuples with (frame1, frame2, distance). Optionally report only on distances below a margin To get really precise distances and penetrations use the FS.distance feature with the two frame names

    +
    + +
    +
    +getDofIDs(self: robotic.ry.Config) List[int]
    +
    + +
    +
    +getFrame(self: robotic.ry.Config, frameName: str) rai::Frame
    +

    get access to a frame by name; use the Frame methods to set/get frame properties

    +
    + +
    +
    +getFrameDimension(self: robotic.ry.Config) int
    +

    get the total number of frames

    +
    + +
    +
    +getFrameNames(self: robotic.ry.Config) List[str]
    +

    get the list of frame names

    +
    + +
    +
    +getFrameState(*args, **kwargs)
    +

    Overloaded function.

    +
      +
    1. getFrameState(self: robotic.ry.Config) -> numpy.ndarray[numpy.float64]

    2. +
    +

    get the frame state as a n-times-7 numpy matrix, with a 7D pose per frame

    +
      +
    1. getFrameState(self: robotic.ry.Config, arg0: str) -> numpy.ndarray[numpy.float64]

    2. +
    +

    TODO remove -> use individual frame!

    +
    + +
    +
    +getJointDimension(self: robotic.ry.Config) int
    +

    get the total number of degrees of freedom

    +
    + +
    +
    +getJointNames(self: robotic.ry.Config) StringA
    +

    get the list of joint names

    +
    + +
    +
    +getJointState(self: robotic.ry.Config) arr
    +

    get the joint state as a numpy vector, optionally only for a subset of joints specified as list of joint names

    +
    + +
    +
    +makeObjectsConvex(self: robotic.ry.Config) None
    +

    remake all meshes associated with all frames to become their convex hull

    +
    + +
    +
    +makeObjectsFree(self: robotic.ry.Config, arg0: List[str]) None
    +

    TODO remove -> to frame

    +
    + +
    +
    +report(self: robotic.ry.Config) rai::String
    +
    + +
    +
    +selectJoints(self: robotic.ry.Config, jointNames: List[str], notThose: bool = False) None
    +

    redefine what are considered the DOFs of this configuration: only joints listed in jointNames are considered part of the joint state and define the number of DOFs

    +
    + +
    +
    +selectJointsByTag(self: robotic.ry.Config, jointGroups: List[str]) None
    +

    redefine what are considered the DOFs of this configuration: only joint that have a tag listed in jointGroups are considered part of the joint state and define the number of DOFs

    +
    + +
    +
    +setFrameState(*args, **kwargs)
    +

    Overloaded function.

    +
      +
    1. setFrameState(self: robotic.ry.Config, X: List[float], frames: List[str] = []) -> None

    2. +
    +

    set the frame state, optionally only for a subset of frames specified as list of frame names

    +
      +
    1. setFrameState(self: robotic.ry.Config, X: numpy.ndarray, frames: List[str] = []) -> None

    2. +
    +

    set the frame state, optionally only for a subset of frames specified as list of frame names

    +
    + +
    +
    +setJointState(self: robotic.ry.Config, q: arr, joints: list = []) None
    +

    set the joint state, optionally only for a subset of joints specified as list of joint names

    +
    + +
    +
    +setJointStateSlice(self: robotic.ry.Config, arg0: List[float], arg1: int) None
    +
    + +
    +
    +simulation(self: robotic.ry.Config, engine: rai::Simulation::Engine, verbose: int) rai::Simulation
    +

    create a generic Simulation engine, which can internally call PhysX, Bullet, or just kinematics to forward simulate, allows you to control robot motors by position, velocity, or accelerations, and allows you go query camera images and depth

    +
    + +
    +
    +sortFrames(self: robotic.ry.Config) None
    +

    resort the internal order of frames according to the tree topology. This is important before saving the configuration.

    +
    + +
    +
    +stepDynamics(self: robotic.ry.Config, qdot: List[float], u_control: List[float], tau: float, dynamicNoise: float, gravity: bool) numpy.ndarray[numpy.float64]
    +
    + +
    +
    +view(self: robotic.ry.Config, pause: bool = False, message: str = None) int
    +

    open a view window for the configuration

    +
    + +
    +
    +view_close(self: robotic.ry.Config) None
    +

    close the view

    +
    + +
    +
    +view_getScreenshot(self: robotic.ry.Config) numpy.ndarray[numpy.uint8]
    +
    + +
    +
    +view_playVideo(self: robotic.ry.Config, delay: float = 1.0, saveVideoPath: str = None) None
    +
    + +
    +
    +view_recopyMeshes(self: robotic.ry.Config) None
    +
    + +
    +
    +watchFile(self: robotic.ry.Config, arg0: str) None
    +

    launch a viewer that listents (inode) to changes of a file (made by you in an editor), and reloads, displays and animates the configuration whenever the file is changed

    +
    + +
    + +
    +
    +class robotic.ry.ControlMode
    +

    Members:

    +

    none

    +

    position

    +

    velocity

    +

    acceleration

    +

    spline

    +
    +
    +property name
    +
    + +
    + +
    +
    +class robotic.ry.FS
    +

    Members:

    +

    position

    +

    positionDiff

    +

    positionRel

    +

    quaternion

    +

    quaternionDiff

    +

    quaternionRel

    +

    pose

    +

    poseDiff

    +

    poseRel

    +

    vectorX

    +

    vectorXDiff

    +

    vectorXRel

    +

    vectorY

    +

    vectorYDiff

    +

    vectorYRel

    +

    vectorZ

    +

    vectorZDiff

    +

    vectorZRel

    +

    scalarProductXX

    +

    scalarProductXY

    +

    scalarProductXZ

    +

    scalarProductYX

    +

    scalarProductYY

    +

    scalarProductYZ

    +

    scalarProductZZ

    +

    gazeAt

    +

    angularVel

    +

    accumulatedCollisions

    +

    jointLimits

    +

    distance

    +

    negDistance

    +

    oppose

    +

    qItself

    +

    jointState

    +

    aboveBox

    +

    insideBox

    +

    pairCollision_negScalar

    +

    pairCollision_vector

    +

    pairCollision_normal

    +

    pairCollision_p1

    +

    pairCollision_p2

    +

    standingAbove

    +

    physics

    +

    contactConstraints

    +

    energy

    +

    transAccelerations

    +

    transVelocities

    +
    +
    +property name
    +
    + +
    + +
    +
    +class robotic.ry.Feature
    +

    todo doc

    +
    +
    +description(self: robotic.ry.Feature, arg0: robotic.ry.Config) str
    +
    + +
    +
    +eval(self: robotic.ry.Feature, arg0: robotic.ry.Config) tuple
    +
    + +
    +
    +setOrder(self: robotic.ry.Feature, arg0: int) robotic.ry.Feature
    +
    + +
    +
    +setScale(self: robotic.ry.Feature, arg0: arr) robotic.ry.Feature
    +
    + +
    +
    +setTarget(self: robotic.ry.Feature, arg0: arr) robotic.ry.Feature
    +
    + +
    + +
    +
    +class robotic.ry.Frame
    +

    todo doc

    +
    +
    +addAttribute(self: robotic.ry.Frame, arg0: str, arg1: float) robotic.ry.Frame
    +
    + +
    +
    +addAttributes(self: robotic.ry.Frame, arg0: dict) None
    +

    add/set attributes for the frame

    +
    + +
    +
    +getAttributes(self: robotic.ry.Frame) dict
    +

    get frame attributes

    +
    + +
    +
    +getJointState(self: robotic.ry.Frame) arr
    +
    + +
    +
    +getMeshPoints(self: robotic.ry.Frame) arr
    +
    + +
    +
    +getMeshTriangles(self: robotic.ry.Frame) Array<T>
    +
    + +
    +
    +getPosition(self: robotic.ry.Frame) arr
    +
    + +
    +
    +getQuaternion(self: robotic.ry.Frame) arr
    +
    + +
    +
    +getRelativePosition(self: robotic.ry.Frame) arr
    +
    + +
    +
    +getRelativeQuaternion(self: robotic.ry.Frame) arr
    +
    + +
    +
    +getRotationMatrix(self: robotic.ry.Frame) arr
    +
    + +
    +
    +getSize(self: robotic.ry.Frame) arr
    +
    + +
    +
    +info(self: robotic.ry.Frame) dict
    +
    + +
    +
    +setColor(self: robotic.ry.Frame, arg0: arr) robotic.ry.Frame
    +
    + +
    +
    +setContact(self: robotic.ry.Frame, arg0: int) robotic.ry.Frame
    +
    + +
    +
    +setJoint(self: robotic.ry.Frame, arg0: rai::JointType) robotic.ry.Frame
    +
    + +
    +
    +setJointState(self: robotic.ry.Frame, arg0: arr) robotic.ry.Frame
    +
    + +
    +
    +setMass(self: robotic.ry.Frame, arg0: float) robotic.ry.Frame
    +
    + +
    +
    +setMeshAsLines(self: robotic.ry.Frame, arg0: List[float]) None
    +
    + +
    +
    +setParent(self: robotic.ry.Frame, arg0: robotic.ry.Frame, arg1: bool, arg2: bool) robotic.ry.Frame
    +
    + +
    +
    +setPointCloud(self: robotic.ry.Frame, points: numpy.ndarray, colors: numpy.ndarray[numpy.uint8] = array([], dtype=uint8)) None
    +
    + +
    +
    +setPose(self: robotic.ry.Frame, arg0: str) None
    +
    + +
    +
    +setPosition(self: robotic.ry.Frame, arg0: arr) robotic.ry.Frame
    +
    + +
    +
    +setQuaternion(self: robotic.ry.Frame, arg0: arr) robotic.ry.Frame
    +
    + +
    +
    +setRelativePose(self: robotic.ry.Frame, arg0: str) None
    +
    + +
    +
    +setRelativePosition(self: robotic.ry.Frame, arg0: arr) robotic.ry.Frame
    +
    + +
    +
    +setRelativeQuaternion(self: robotic.ry.Frame, arg0: arr) robotic.ry.Frame
    +
    + +
    +
    +setShape(self: robotic.ry.Frame, type: robotic.ry.ST, size: arr) robotic.ry.Frame
    +
    + +
    + +
    + +
    + +
    +
    +class robotic.ry.ImpType
    +

    Members:

    +

    closeGripper

    +

    openGripper

    +

    depthNoise

    +

    rgbNoise

    +

    adversarialDropper

    +

    objectImpulses

    +

    noPenetrations

    +
    +
    +property name
    +
    + +
    + +
    +
    +class robotic.ry.JT
    +

    Members:

    +

    hingeX

    +

    hingeY

    +

    hingeZ

    +

    transX

    +

    transY

    +

    transZ

    +

    transXY

    +

    trans3

    +

    transXYPhi

    +

    transYPhi

    +

    universal

    +

    rigid

    +

    quatBall

    +

    phiTransXY

    +

    XBall

    +

    free

    +

    generic

    +

    tau

    +
    +
    +property name
    +
    + +
    + +
    +
    +class robotic.ry.KOMO
    +

    Constrained solver to optimize configurations or paths. (KOMO = k-order Markov Optimization)

    +
    +
    +addControlObjective(self: robotic.ry.KOMO, times: arr, order: int, scale: float = 1.0, target: arr = array(0.0078125), deltaFromStep: int = 0, deltaToStep: int = 0) Objective
    +
    + +
    +
    +addInteraction_elasticBounce(self: robotic.ry.KOMO, time: float, from: str, to: str, elasticity: float = 0.8, stickiness: float = 0.0) None
    +
    + +
    +
    +addModeSwitch(self: robotic.ry.KOMO, times: arr, newMode: rai::SkeletonSymbol, frames: StringA, firstSwitch: bool = True) None
    +
    + +
    +
    +addObjective(self: robotic.ry.KOMO, times: arr, feature: robotic.ry.FS, frames: List[str] = [], type: ObjectiveType, scale: arr = array(0.0078125), target: arr = array(0.0078125), order: int = -1) None
    +
    + +
    +
    +addQuaternionNorms(self: robotic.ry.KOMO, times: arr = array(0.0078125), scale: float = 3.0, hard: bool = True) None
    +
    + +
    +
    +addTimeOptimization(self: robotic.ry.KOMO) None
    +
    + +
    +
    +clearObjectives(self: robotic.ry.KOMO) None
    +
    + +
    +
    +getConstraintViolations(self: robotic.ry.KOMO) float
    +
    + +
    +
    +getCosts(self: robotic.ry.KOMO) float
    +
    + +
    +
    +getForceInteractions(self: robotic.ry.KOMO) list
    +
    + +
    +
    +getFrameState(self: robotic.ry.KOMO, arg0: int) arr
    +
    + +
    +
    +getPath(self: robotic.ry.KOMO) arr
    +
    + +
    +
    +getPathFrames(self: robotic.ry.KOMO) arr
    +
    + +
    +
    +getPathTau(self: robotic.ry.KOMO) arr
    +
    + +
    +
    +getPath_qAll(self: robotic.ry.KOMO) arrA
    +
    + +
    +
    +getReport(self: robotic.ry.KOMO) dict
    +
    + +
    +
    +getT(self: robotic.ry.KOMO) int
    +
    + +
    +
    +initOrg(self: robotic.ry.KOMO) None
    +
    + +
    +
    +initPhaseWithDofsPath(self: robotic.ry.KOMO, t_phase: int, dofIDs: Array<T>, path: arr, autoResamplePath: bool = False) None
    +
    + +
    +
    +initRandom(self: robotic.ry.KOMO, verbose: int = 0) None
    +
    + +
    +
    +initWithConstant(self: robotic.ry.KOMO, q: arr) None
    +
    + +
    +
    +initWithPath_qOrg(self: robotic.ry.KOMO, q: arr) None
    +
    + +
    +
    +initWithWaypoints(self: robotic.ry.KOMO, waypoints: arrA, waypointStepsPerPhase: int = 1, interpolate: bool = False, verbose: int = -1) Array<T>
    +
    + +
    +
    +nlp(self: robotic.ry.KOMO) NLP
    +

    return the problem NLP

    +
    + +
    +
    +reportProblem(self: robotic.ry.KOMO) str
    +
    + +
    +
    +setConfig(self: robotic.ry.KOMO, config: robotic.ry.Config, enableCollisions: bool) None
    +
    + +
    +
    +setTiming(self: robotic.ry.KOMO, phases: float, stepsPerPhase: int, durationPerPhase: float, k_order: int) None
    +
    + +
    +
    +updateRootObjects(self: robotic.ry.KOMO, config: robotic.ry.Config) None
    +

    update root frames (without parents) within all KOMO configurations

    +
    + +
    +
    +view(self: robotic.ry.KOMO, pause: bool = False, txt: str = None) int
    +
    + +
    +
    +view_close(self: robotic.ry.KOMO) None
    +
    + +
    +
    +view_play(self: robotic.ry.KOMO, pause: bool = False, delay: float = 0.1, saveVideoPath: str = None) int
    +
    + +
    + +
    +
    +class robotic.ry.NLP
    +

    Representation of a Nonlinear Mathematical Program

    +
    +
    +evaluate(self: robotic.ry.NLP, arg0: arr) Tuple[arr, arr]
    +

    query the NLP at a point $x$; returns the tuple $(phi,J)$, which is the feature vector and its Jacobian; features define cost terms, sum-of-square (sos) terms, inequalities, and equalities depending on ‘getFeatureTypes’

    +
    + +
    +
    +getBounds(self: robotic.ry.NLP) Tuple[arr, arr]
    +

    returns the tuple $(b_{lo},b_{up})$, where both vectors are of same dimensionality of $x$ (or size zero, if there are no bounds)

    +
    + +
    +
    +getDimension(self: robotic.ry.NLP) int
    +

    return the dimensionality of $x$

    +
    + +
    +
    +getFHessian(self: robotic.ry.NLP, arg0: arr) arr
    +

    returns Hessian of the sum of $f$-terms

    +
    + +
    +
    +getFeatureTypes(self: robotic.ry.NLP) List[ObjectiveType]
    +

    features (entries of $phi$) can be of one of (ry.OT.f, ry.OT.sos, ry.OT.ineq, ry.OT.eq), which means (cost, sum-of-square, inequality, equality). The total cost $f(x)$ is the sum of all f-terms plus sum-of-squares of sos-terms.

    +
    + +
    +
    +getInitializationSample(self: robotic.ry.NLP, previousOptima: arr = array(0.0078125)) arr
    +

    returns a sample (e.g. uniform within bounds) to initialize an optimization – not necessarily feasible

    +
    + +
    +
    +report(self: robotic.ry.NLP, arg0: int) str
    +

    displays semantic information on the last query

    +
    + +
    + +
    +
    +class robotic.ry.NLP_Factory
    +
    +
    +setBounds(self: robotic.ry.NLP_Factory, arg0: arr, arg1: arr) None
    +
    + +
    +
    +setDimension(self: robotic.ry.NLP_Factory, arg0: int) None
    +
    + +
    +
    +setEvalCallback(self: robotic.ry.NLP_Factory, arg0: Callable[[arr], Tuple[arr, arr]]) None
    +
    + +
    +
    +setFeatureTypes(self: robotic.ry.NLP_Factory, arg0: Array<T>) None
    +
    + +
    +
    +testCallingEvalCallback(self: robotic.ry.NLP_Factory, arg0: arr) Tuple[arr, arr]
    +
    + +
    + +
    +
    +class robotic.ry.NLP_Solver
    +

    An interface to portfolio of solvers

    +
    +
    +getOptions(self: robotic.ry.NLP_Solver) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +getTrace_J(self: robotic.ry.NLP_Solver) arr
    +
    + +
    +
    +getTrace_costs(self: robotic.ry.NLP_Solver) arr
    +
    + +
    +
    +getTrace_phi(self: robotic.ry.NLP_Solver) arr
    +
    + +
    +
    +getTrace_x(self: robotic.ry.NLP_Solver) arr
    +
    + +
    +
    +setOptions(self: robotic.ry.NLP_Solver, verbose: int = 1, stopTolerance: float = 0.01, stopFTolerance: float = -1.0, stopGTolerance: float = -1.0, stopEvals: int = 1000, maxStep: float = 0.2, damping: float = 1.0, stepInc: float = 1.5, stepDec: float = 0.5, wolfe: float = 0.01, muInit: float = 1.0, muInc: float = 5.0, muMax: float = 10000.0, muLBInit: float = 0.1, muLBDec: float = 0.2) robotic.ry.NLP_Solver
    +

    set solver options

    +
    + +
    +
    +setProblem(self: robotic.ry.NLP_Solver, arg0: robotic.ry.NLP) robotic.ry.NLP_Solver
    +
    + +
    +
    +setSolver(self: robotic.ry.NLP_Solver, arg0: NLP_SolverID) robotic.ry.NLP_Solver
    +
    + +
    +
    +setTracing(self: robotic.ry.NLP_Solver, arg0: bool, arg1: bool, arg2: bool, arg3: bool) robotic.ry.NLP_Solver
    +
    + +
    +
    +solve(self: robotic.ry.NLP_Solver, resampleInitialization: int = -1) SolverReturn
    +
    + +
    + +
    +
    +class robotic.ry.NLP_SolverID
    +

    Members:

    +

    gradientDescent

    +

    rprop

    +

    LBFGS

    +

    newton

    +

    augmentedLag

    +

    squaredPenalty

    +

    logBarrier

    +

    singleSquaredPenalty

    +

    NLopt

    +

    Ipopt

    +

    Ceres

    +
    +
    +property name
    +
    + +
    + +
    +
    +class robotic.ry.NLP_SolverOptions
    +

    solver options

    +
    +
    +dict(self: robotic.ry.NLP_SolverOptions) dict
    +
    + +
    +
    +set_damping(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_maxStep(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_muInc(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_muInit(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_muLBDec(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_muLBInit(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_muMax(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_stepDec(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_stepInc(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_stopEvals(self: robotic.ry.NLP_SolverOptions, arg0: int) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_stopFTolerance(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_stopGTolerance(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_stopTolerance(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_verbose(self: robotic.ry.NLP_SolverOptions, arg0: int) robotic.ry.NLP_SolverOptions
    +
    + +
    +
    +set_wolfe(self: robotic.ry.NLP_SolverOptions, arg0: float) robotic.ry.NLP_SolverOptions
    +
    + +
    + +
    +
    +class robotic.ry.OT
    +

    Members:

    +

    none

    +

    f

    +

    sos

    +

    ineq

    +

    eq

    +

    ineqB

    +

    ineqP

    +
    +
    +property name
    +
    + +
    + +
    +
    +class robotic.ry.PathFinder
    +

    todo doc

    +
    +
    +setExplicitCollisionPairs(self: robotic.ry.PathFinder, collisionPairs: StringA) robotic.ry.PathFinder
    +
    + +
    +
    +setProblem(self: robotic.ry.PathFinder, Configuration: robotic.ry.Config, starts: arr, goals: arr) robotic.ry.PathFinder
    +
    + +
    +
    +solve(self: robotic.ry.PathFinder) SolverReturn
    +
    + +
    +
    +step(self: robotic.ry.PathFinder) bool
    +
    + +
    + +
    +
    +class robotic.ry.ST
    +

    Members:

    +

    none

    +

    box

    +

    sphere

    +

    capsule

    +

    mesh

    +

    cylinder

    +

    marker

    +

    pointCloud

    +

    ssCvx

    +

    ssBox

    +

    ssCylinder

    +

    ssBoxElip

    +

    quad

    +

    camera

    +

    sdf

    +
    +
    +property name
    +
    + +
    + +
    +
    +class robotic.ry.SY
    +

    Members:

    +

    touch

    +

    above

    +

    inside

    +

    oppose

    +

    restingOn

    +

    poseEq

    +

    positionEq

    +

    stableRelPose

    +

    stablePose

    +

    stable

    +

    stableOn

    +

    dynamic

    +

    dynamicOn

    +

    dynamicTrans

    +

    quasiStatic

    +

    quasiStaticOn

    +

    downUp

    +

    break

    +

    stableZero

    +

    contact

    +

    contactStick

    +

    contactComplementary

    +

    bounce

    +

    push

    +

    magic

    +

    magicTrans

    +

    pushAndPlace

    +

    topBoxGrasp

    +

    topBoxPlace

    +

    dampMotion

    +

    identical

    +

    alignByInt

    +

    makeFree

    +

    forceBalance

    +

    relPosY

    +

    touchBoxNormalX

    +

    touchBoxNormalY

    +

    touchBoxNormalZ

    +

    boxGraspX

    +

    boxGraspY

    +

    boxGraspZ

    +

    lift

    +

    stableYPhi

    +

    stableOnX

    +

    stableOnY

    +

    end

    +
    +
    +property name
    +
    + +
    + +
    +
    +class robotic.ry.Simulation
    +

    todo doc

    +
    +
    +addImp(self: robotic.ry.Simulation, arg0: robotic.ry.ImpType, arg1: StringA, arg2: arr) None
    +
    + +
    +
    +addSensor(self: robotic.ry.Simulation, sensorName: str, frameAttached: str = '', width: int = 640, height: int = 360, focalLength: float = -1.0, orthoAbsHeight: float = -1.0, zRange: arr = []) rai::CameraView::Sensor
    +
    + +
    +
    +closeGripper(self: robotic.ry.Simulation, gripperFrameName: str, width: float = 0.05, speed: float = 0.3, force: float = 20.0) None
    +
    + +
    +
    +depthData2pointCloud(self: robotic.ry.Simulation, arg0: numpy.ndarray[numpy.float32], arg1: List[float]) numpy.ndarray[numpy.float64]
    +
    + +
    +
    +getGripperIsGrasping(self: robotic.ry.Simulation, gripperFrameName: str) bool
    +
    + +
    +
    +getGripperWidth(self: robotic.ry.Simulation, gripperFrameName: str) float
    +
    + +
    +
    +getGroundTruthPosition(self: robotic.ry.Simulation, arg0: str) numpy.ndarray[numpy.float64]
    +
    + +
    +
    +getGroundTruthRotationMatrix(self: robotic.ry.Simulation, arg0: str) numpy.ndarray[numpy.float64]
    +
    + +
    +
    +getGroundTruthSize(self: robotic.ry.Simulation, arg0: str) numpy.ndarray[numpy.float64]
    +
    + +
    +
    +getImageAndDepth(self: robotic.ry.Simulation) tuple
    +
    + +
    +
    +getScreenshot(self: robotic.ry.Simulation) Array<T>
    +
    + +
    +
    +getState(self: robotic.ry.Simulation) tuple
    +
    + +
    +
    +getTimeToMove(self: robotic.ry.Simulation) float
    +
    + +
    +
    +get_q(self: robotic.ry.Simulation) arr
    +
    + +
    +
    +get_qDot(self: robotic.ry.Simulation) arr
    +
    + +
    +
    +loadTeleopCallbacks(self: robotic.ry.Simulation) None
    +
    + +
    +
    +openGripper(self: robotic.ry.Simulation, gripperFrameName: str, width: float = 0.075, speed: float = 0.3) None
    +
    + +
    +
    +pushConfigurationToSimulator(self: robotic.ry.Simulation, frameVelocities: arr = [], jointVelocities: arr = []) None
    +

    set the simulator to the full (frame) state of the configuration

    +
    + +
    +
    +selectSensor(self: robotic.ry.Simulation, sensorName: str) rai::CameraView::Sensor
    +
    + +
    +
    +setMoveto(self: robotic.ry.Simulation, path: arr, t: float, append: bool = True) None
    +

    set the spline reference to genreate motion

    +
    + +
    +
    +setState(self: robotic.ry.Simulation, frameState: arr, frameVelocities: arr = [], jointState: arr = [], jointVelocities: arr = []) None
    +
    + +
    +
    +step(self: robotic.ry.Simulation, u_control: arr, tau: float = 0.01, u_mode: robotic.ry.ControlMode = <ControlMode.velocity: 2>) None
    +
    + +
    + +
    +
    +class robotic.ry.SimulationEngine
    +

    Members:

    +

    physx

    +

    bullet

    +

    kinematic

    +
    +
    +property name
    +
    + +
    + +
    +
    +class robotic.ry.SolverReturn
    +

    return of nlp solve call

    +
    +
    +dict(self: robotic.ry.SolverReturn) dict
    +
    + +
    + +
    +
    +robotic.ry.compiled() str
    +

    return a compile date+time version string

    +
    + +
    +
    +robotic.ry.getStartGoalPath(arg0: robotic.ry.Config, arg1: arr, arg2: arr) arr
    +
    + +
    +
    +robotic.ry.params_add(arg0: dict) None
    +

    add/set parameters

    +
    + +
    +
    +robotic.ry.params_file(arg0: str) None
    +

    add parameters from a file

    +
    + +
    +
    +robotic.ry.params_print() None
    +

    print the parameters

    +
    + +
    +
    +robotic.ry.raiPath(arg0: str) rai::String
    +

    get a path relative to rai base path

    +
    + +
    +
    +robotic.ry.setRaiPath(arg0: str) None
    +

    redefine the rai (or rai-robotModels) path

    +
    +
    diff --git a/docs/script/script.html b/docs/script/script.html index c4126d5..7d4a3c9 100644 --- a/docs/script/script.html +++ b/docs/script/script.html @@ -1853,7 +1853,7 @@

    3.6.4.3. Notation to specify transformat

    3.6.4.4. Joint types

    -

    The libry.JT enum (in python; or rai::JointType in C++) lists all +

    The ry.JT enum (in python; or rai::JointType in C++) lists all available joint type. Currently these are:

    hingeX, hingeY, hingeZ, transX, transY, transZ, transXY, trans3, transXYPhi, universal, rigid, quatBall, phiTransXY, XBall, free, tau
     
    diff --git a/docs/searchindex.js b/docs/searchindex.js index 0703ff9..93f13b7 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["getting_started", "index", "notebooks/1a-configurations", "notebooks/1b-botop", "notebooks/1c-komo", "notebooks/botop2-realRobotStarters", "notebooks/botop3-vision", "notebooks/botop3-vision-toBeMerged", "notebooks/botop4-examples", "notebooks/core2-features", "notebooks/core3-configurations", "notebooks/komo1-IK-toBeMerged", "notebooks/komo2-PathOptimization", "notebooks/komo2-PathOptimization-toBeMerged", "notebooks/komo3-switches-skeletons", "notebooks/notebooks", "notebooks/opt1-basics", "notebooks/script5-PathFind", "notebooks/sim1-physics", "old/_Array", "old/_Configuration", "old/_ConfigurationFiles", "old/_Graph", "old/_Simulation", "old/komo", "old/old", "old/simlab", "old/simlab1", "old/simlab2", "old/simlab3", "old/simlab4", "old/simlab5", "old/skeleton", "rai", "script/script"], "filenames": ["getting_started.rst", "index.rst", "notebooks/1a-configurations.ipynb", "notebooks/1b-botop.ipynb", "notebooks/1c-komo.ipynb", "notebooks/botop2-realRobotStarters.ipynb", "notebooks/botop3-vision.ipynb", "notebooks/botop3-vision-toBeMerged.ipynb", "notebooks/botop4-examples.ipynb", "notebooks/core2-features.ipynb", "notebooks/core3-configurations.ipynb", "notebooks/komo1-IK-toBeMerged.ipynb", "notebooks/komo2-PathOptimization.ipynb", "notebooks/komo2-PathOptimization-toBeMerged.ipynb", "notebooks/komo3-switches-skeletons.ipynb", "notebooks/notebooks.rst", "notebooks/opt1-basics.ipynb", "notebooks/script5-PathFind.ipynb", "notebooks/sim1-physics.ipynb", "old/_Array.rst", "old/_Configuration.rst", "old/_ConfigurationFiles.rst", "old/_Graph.rst", "old/_Simulation.rst", "old/komo.rst", "old/old.rst", "old/simlab.rst", "old/simlab1.rst", "old/simlab2.rst", "old/simlab3.rst", "old/simlab4.rst", "old/simlab5.rst", "old/skeleton.rst", "rai.rst", "script/script.rst"], "titles": ["1. Getting Started", "Welcome to the Robotics Course Repo", "2.1.1. Configurations", "2.1.2. Robot Operation (BotOp) interface", "2.1.3. KOMO: Motion Optimization", "2.2.7. Starting with a real robot", "2.2.8. First example to grap images from a webcam", "<no title>", "2.2.9. Example for grasping in Sim", "2.2.1. Features", "2.2.2. Importing, Editing & Manipulating Configurations", "2.2.3. Inverse Kinematics as Optimization (to be merged)", "2.2.4. Path optimization example", "2.2.5. Path Optimization (to be merged)", "2.2.6. Advanced: Switches & Skeletons", "2. Tutorials", "2.2.11. Optimization (NLP formulation and solving)", "2.2.12. Path finding example", "2.2.10. Direct simulation interface", "4.7. Array", "4.3. Configuration", "4.4. .g-files to describe robot configurations", "4.5. Graph and .g-files", "4.6. Simulation", "4.2. Learning KOMO (K-Order Markov Optimization)", "4. Old Material", "4.1. Lab Course in Simulation", "4.1.1. SimLab Exercise 1 - Basic Setup", "4.1.2. SimLab Exercise 2 - Motion", "4.1.3. SimLab Exercise 3 - OpenCV", "4.1.4. SimLab Exercise 4 - Grasp", "4.1.5. SimLab - Project Proposal and Final Presentation", "Learning about Skeletons & LGP", "5. rai python API", "3. Lecture Script"], "terms": {"robot": [0, 2, 4, 7, 8, 9, 11, 12, 15, 16, 17, 18, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], "python": [0, 1, 3, 7, 8, 9, 15, 21, 22, 24, 27, 28, 29, 34], "packag": [0, 21, 24, 31, 34], "On": [0, 2], "standard": [0, 11, 13, 22, 23, 29, 34], "ubuntu": [0, 31, 34], "follow": [0, 3, 4, 10, 20, 21, 23, 24, 27, 30, 31, 34], "should": [0, 1, 4, 9, 20, 21, 23, 24, 27, 28, 31, 34], "suffici": [0, 34], "sudo": [0, 34], "apt": [0, 34], "liblapack3": [0, 34], "freeglut3": [0, 34], "libglew": [0, 34], "dev": [0, 34], "python3": [0, 7, 34], "pip": [0, 34], "m": [0, 20, 34], "user": [0, 1, 2, 3, 20, 23, 24, 26, 34], "numpi": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 18, 34], "scipi": [0, 34], "A": [0, 2, 4, 8, 9, 11, 20, 21, 22, 23, 24, 30, 31], "test": [0, 4, 21, 22, 25, 27, 28, 29, 34], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 16, 17, 18, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 34], "c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 21, 22, 24, 25, 29, 34], "from": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 22, 23, 24, 25, 27, 28, 30, 31, 32], "import": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 24, 25, 27, 28], "ry": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 34], "print": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 17, 34], "version": [0, 7, 8, 24, 27], "__version__": [0, 6, 8], "compil": [0, 2, 8, 18, 21, 24, 27, 34], "rndscene": [0, 34], "real": [0, 1, 3, 4, 10, 12, 15, 17, 18, 23, 25, 27, 30, 34], "The": [0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34], "doe": [0, 1, 10, 17, 20, 22, 25, 28, 29, 30, 34], "have": [0, 1, 2, 3, 4, 8, 16, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 34], "driver": 0, "panda": [0, 2, 3, 10], "includ": [0, 2, 9, 10, 20, 22, 24, 26, 27, 31, 34], "therefor": [0, 20, 21, 23, 24, 30, 34], "onli": [0, 1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 17, 19, 20, 21, 22, 25, 27, 28, 29, 31, 32, 34], "support": [0, 9, 10, 21, 27, 34], "simul": [0, 1, 3, 5, 8, 10, 15, 25, 28, 29, 30, 34], "mode": [0, 3, 11, 18, 32], "howev": [0, 2, 9, 11, 18, 20, 21, 24, 34], "interfac": [0, 1, 4, 10, 12, 15, 16, 17, 19, 20, 24, 28], "code": [0, 1, 3, 7, 16, 19, 20, 21, 23, 24, 25, 26, 29, 30, 31], "design": [0, 2, 4, 8, 11, 24, 28, 30], "so": [0, 2, 3, 4, 8, 9, 10, 11, 13, 16, 20, 21, 22, 23, 24, 28, 29, 31, 32, 34], "everyth": [0, 2, 6, 24, 30], "directli": [0, 3, 4, 9, 10, 22, 23, 24, 27, 28, 34], "transfer": 0, "all": [0, 1, 2, 4, 9, 11, 15, 16, 18, 20, 21, 22, 23, 24, 27, 28, 29, 34], "you": [0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 21, 23, 25, 27, 28, 29, 30, 31, 32, 34], "do": [0, 1, 2, 3, 4, 23, 25, 26, 28, 29, 30, 34], "re": [0, 2, 3, 4, 9, 21, 23, 27, 30, 34], "your": [0, 3, 5, 10, 11, 24, 27, 28, 29, 30, 31], "machin": [0, 26], "libfranka": 0, "librealsens": 0, "thi": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34], "done": [0, 3, 4, 6, 8, 21, 24, 34], "us": [0, 1, 2, 3, 4, 8, 9, 10, 11, 17, 19, 20, 22, 23, 24, 25, 27, 29, 30, 31, 32], "pdflatex": 0, "sourc": [0, 7, 34], "wheel": [0, 34], "creat": [0, 1, 2, 3, 8, 9, 10, 11, 22, 24, 25, 27, 28, 29, 31, 34], "repo": [0, 27, 28, 29, 30], "hardest": 0, "part": [0, 20, 21, 24, 31, 34], "wa": [0, 3, 18, 19, 22, 24], "docker": [0, 34], "mani": [0, 3, 4, 9, 11, 20, 23, 24, 32, 34], "depend": [0, 3, 11, 24, 27, 34], "static": [0, 3], "librari": [0, 21, 24, 27, 34], "cento": 0, "onc": [0, 4, 24], "": [0, 2, 3, 4, 9, 11, 13, 14, 17, 20, 21, 24, 28, 32, 34], "botop": [0, 1, 4, 5, 6, 7, 8, 10, 12, 17, 18], "lib": [0, 11, 14, 16, 18, 19], "can": [0, 1, 2, 3, 4, 7, 9, 10, 11, 17, 20, 21, 22, 23, 25, 27, 28, 29, 30, 31, 32, 34], "compat": 0, "manner": [0, 2, 9, 32, 34], "share": [0, 1, 20, 24], "docstr": 0, "tab": 0, "complet": [0, 16, 23, 34], "when": [0, 2, 3, 4, 6, 7, 9, 10, 11, 20, 21, 24, 28, 29, 30, 32, 34], "an": [0, 1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 20, 21, 22, 23, 25, 27, 28, 30, 31, 32], "id": [0, 7, 11], "e": [0, 2, 3, 4, 9, 10, 11, 18, 20, 21, 22, 24, 25, 27, 30, 31, 34], "g": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20, 23, 24, 25, 27, 28, 30, 31, 32, 34], "v": [0, 7, 9, 10, 18, 27, 28, 31, 34], "definit": [0, 4, 11, 27, 34], "want": [0, 1, 3, 4, 9, 11, 21, 24, 25, 31, 34], "method": [0, 1, 3, 4, 8, 9, 10, 11, 12, 17, 20, 22, 23, 25, 26, 27, 28, 30, 31, 34], "modul": [0, 1, 4, 9, 10, 34], "pybind11": [0, 27], "nativ": 0, "lack": 0, "stubgen": 0, "one": [0, 3, 4, 8, 9, 11, 20, 21, 22, 24, 27, 28, 29, 32, 34], "gener": [0, 1, 2, 3, 4, 11, 16, 20, 21, 24, 26, 28, 30, 31, 32, 34], "someth": [0, 9, 31], "like": [0, 3, 9, 20, 21, 24, 31, 34], "header": [0, 24, 27], "file": [0, 1, 2, 9, 10, 20, 23, 24, 25, 27, 32], "whole": [0, 9, 11, 21, 34], "call": [0, 2, 3, 4, 9, 10, 11, 16, 20, 21, 22, 24, 27, 28, 30, 32, 34], "ipi": 0, "That": [0, 2, 3, 4, 20, 24, 32, 34], "resid": 0, "local": [0, 3, 28, 30, 34], "site": 0, "next": [0, 21, 24, 27, 34], "py": [0, 7, 21, 24, 34], "work": [0, 4, 9, 11, 21, 24, 26, 27, 28, 29, 31, 32, 34], "ensur": [0, 4, 20, 24, 34], "after": [0, 2, 8, 12, 17, 20, 22, 24, 26, 30, 34], "class": [0, 1, 4, 9, 19, 22, 23, 24, 25, 34], "If": [0, 2, 3, 11, 20, 24, 27, 31, 34], "autocomplet": 0, "jupyt": [0, 15, 27, 34], "try": [0, 9, 19, 21, 27, 28, 30, 31, 32, 34], "pip3": 0, "jedi": 0, "0": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 24, 28, 34], "17": [0, 4, 8], "2": [0, 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 23, 25, 26, 30, 31, 34], "git": [0, 7, 10, 25, 28, 29, 30, 34], "clone": 0, "http": [0, 1, 9, 15, 21, 24, 26, 27, 29, 31, 34], "github": [0, 1, 9, 15, 21, 24, 26, 27, 34], "com": [0, 1, 9, 15, 21, 24, 26, 27, 31, 34], "marctoussaint": [0, 1, 9, 15, 21, 24, 26, 27, 34], "rai": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 19, 20, 21, 22, 25, 27, 32], "cd": [0, 27, 28, 29, 30], "don": [0, 4, 6, 9, 31, 34], "t": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 17, 19, 20, 21, 24, 28, 31], "yet": [0, 21, 23, 24, 27, 28, 34], "nbconvert": 0, "matplotlib": [0, 4, 7], "repositori": [1, 21, 24, 26, 27, 34], "three": [1, 4, 9, 11, 21, 24, 28, 34], "lectur": [1, 7, 26], "introduct": [1, 26], "To": [1, 4, 9, 10, 11, 20, 24, 32, 34], "u": [1, 7, 27, 28, 31, 34], "stuttgart": 1, "lab": [1, 25, 27], "baxter": 1, "we": [1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 17, 18, 20, 21, 24, 26, 27, 28, 31, 34], "offer": 1, "some": [1, 2, 4, 8, 9, 10, 11, 13, 20, 21, 22, 23, 24, 26, 27, 28, 31, 32, 34], "year": [1, 26], "And": [1, 2, 4, 21, 23, 24, 28, 34], "now": [1, 2, 3, 4, 11, 22, 24, 28, 34], "both": [1, 4, 8, 9, 20, 22, 30, 32, 34], "tu": [1, 26, 34], "berlin": [1, 26, 34], "thei": [1, 8, 9, 11, 20, 21, 23, 24, 32, 34], "same": [1, 3, 4, 9, 18, 20, 21, 23, 24, 28, 29, 34], "core": [1, 20, 22, 23, 25, 27, 31, 34], "quit": [1, 8, 24], "differ": [1, 3, 4, 9, 11, 12, 14, 20, 23, 24, 27, 28, 29, 34], "instal": [1, 10, 27, 34], "setup": [1, 11, 13, 25, 26, 28], "exercis": [1, 25, 26, 34], "embed": 1, "below": [1, 4, 9, 19, 21, 24, 26, 28, 30, 31, 34], "ar": [1, 2, 3, 4, 7, 8, 9, 10, 15, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 34], "document": [1, 25, 29], "refer": [1, 3, 4, 8, 9, 11, 23, 24], "almost": [1, 4, 24], "ident": [1, 24, 34], "how": [1, 2, 3, 4, 11, 20, 21, 25, 27, 28, 29, 30, 31, 32, 34], "get": [1, 2, 4, 9, 24, 25, 27, 28], "start": [1, 2, 3, 11, 15, 17, 22, 24, 27, 28, 29, 31, 32], "quick": 1, "avanc": 1, "info": 1, "tutori": [1, 2, 3, 4, 25, 27, 28, 29], "notebook": [1, 15, 27, 34], "round": [1, 28], "1": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 23, 25, 26, 28, 30, 31, 32, 34], "basic": [1, 2, 3, 4, 10, 11, 19, 20, 24, 25, 26, 32, 34], "configur": [1, 3, 4, 8, 11, 12, 13, 17, 22, 23, 24, 25, 28, 29, 32], "komo": [1, 3, 8, 9, 12, 13, 14, 17, 25, 28, 30, 34], "oper": [1, 6, 8, 15, 20, 24, 25, 27, 32, 34], "motion": [1, 3, 5, 8, 12, 15, 17, 20, 24, 25, 26, 30, 34], "optim": [1, 2, 3, 9, 14, 15, 17, 20, 21, 22, 25, 26, 30, 32, 34], "waypoint": [8, 34], "exampl": [1, 2, 3, 15, 20, 21, 22, 24, 27, 28, 29, 31, 34], "problem": [1, 2, 3, 4, 8, 9, 11, 12, 17, 20, 22, 25, 26, 28, 31, 32, 34], "featur": [1, 4, 10, 12, 13, 15, 16, 25], "edit": [1, 15, 22, 24, 25, 31], "manipul": [1, 15, 24, 26, 32], "invers": [1, 3, 4, 15, 20, 30], "kinemat": [1, 2, 3, 4, 8, 10, 15, 18, 20, 21, 22, 23, 25], "merg": [1, 7, 15], "path": [1, 7, 8, 10, 11, 14, 15, 16, 18, 20, 21, 25, 32, 34], "advanc": [1, 4, 15, 24, 25], "switch": [1, 5, 15, 25, 31, 32, 34], "skeleton": [1, 15], "sim": [1, 3, 12, 15, 17, 34], "first": [1, 2, 4, 10, 12, 15, 17, 21, 22, 25, 27, 28, 29, 31, 32, 34], "grap": [1, 15, 28], "imag": [1, 3, 5, 7, 9, 10, 15, 25, 27, 29], "webcam": [1, 15, 29], "grasp": [1, 11, 14, 15, 24, 25, 26, 28], "more": [1, 2, 3, 18, 20, 21, 23, 25, 28, 29, 31, 34], "direct": [1, 4, 5, 9, 15, 17, 23, 30, 34], "nlp": [1, 3, 4, 8, 9, 12, 15, 17, 24], "formul": [1, 2, 4, 9, 12, 15, 17, 20, 24, 34], "solv": [1, 3, 4, 8, 11, 12, 15, 17, 20, 25, 26, 28, 30, 34], "find": [1, 4, 15, 20, 22, 24, 29, 30, 34], "script": [1, 4, 9, 10, 11, 21, 32], "materi": 1, "scene": [1, 10, 20, 23, 24, 27, 28, 32], "descript": [1, 9, 10, 21, 22, 23, 31, 32], "transform": [1, 2, 7, 11, 20, 23, 24, 25], "coordin": [1, 2, 7, 9, 11, 20, 24, 28, 29], "composit": 1, "tree": [1, 2, 10, 15, 20, 21, 24], "forest": 1, "parameter": [1, 2, 20], "joint": [1, 3, 4, 8, 9, 23, 24, 25, 28], "vector": [1, 2, 4, 9, 11, 19, 20, 21, 24, 30], "forward": [1, 2, 20, 23, 28], "jacobian": [1, 9, 10, 20, 24, 28, 30], "implement": [1, 3, 9, 18, 20, 23, 24, 29, 30], "engin": [1, 3, 8, 9, 10, 11, 20, 23], "placehold": 1, "3d": [1, 7, 9, 11, 20, 23, 24, 28, 29], "rotat": [1, 9, 20, 21, 30], "quaternion": [1, 2, 9, 20, 21, 24, 28], "graph": [1, 20, 21, 24, 25], "yaml": [1, 22], "style": 1, "describ": [1, 3, 9, 19, 20, 24, 25, 28, 30, 31, 32], "camera": [1, 3, 7, 10, 23, 27, 29], "world": [1, 2, 3, 7, 9, 11, 18, 20, 21, 24, 27, 28, 29, 30], "homogen": 1, "matrix": [1, 2, 4, 9, 20, 23, 24, 30], "p": [1, 2, 4, 18, 21], "calibr": 1, "estim": [1, 3, 29, 31], "k": [1, 4, 9, 12, 13, 22, 25, 28], "r": [1, 2, 7, 9, 10, 20, 21, 24], "depth": [1, 5, 6, 7, 9, 10, 25, 27, 29], "data": [1, 3, 5, 20, 21, 22, 24, 27], "shape": [1, 2, 3, 4, 9, 10, 12, 13, 17, 18, 20, 21, 24, 28], "formal": [1, 4, 20, 25, 30], "old": [1, 21, 24, 34], "simlab": [1, 25, 26], "3": [1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 31, 34], "opencv": [1, 6, 25, 26, 30], "4": [1, 2, 3, 4, 7, 8, 9, 12, 14, 17, 21, 22, 23, 25, 26, 28, 34], "project": [1, 2, 9, 25, 26, 30, 34], "propos": [1, 25, 26], "final": [1, 4, 8, 11, 17, 20, 21, 24, 25, 26, 28, 30, 34], "present": [1, 25, 26], "learn": [1, 3, 11, 18, 25, 26, 31], "order": [1, 3, 4, 9, 12, 13, 20, 25, 28, 32, 34], "markov": [1, 4, 9, 12, 25, 34], "No": [1, 25], "dynam": [1, 3, 20, 23, 25], "veloc": [1, 4, 8, 11, 20, 23, 25, 30, 34], "what": [1, 4, 21, 22, 23, 25, 28, 31, 34], "main": [1, 20, 25], "step": [1, 4, 18, 21, 25, 28, 30, 31, 32, 34], "defin": [1, 2, 3, 4, 8, 9, 10, 11, 16, 17, 20, 21, 23, 25, 28, 32, 34], "roughli": [1, 20, 25, 27, 34], "spec": [1, 25], "load": [1, 3, 8, 20, 21, 25, 34], "urdf": [1, 20, 25], "practic": [1, 25, 26, 32, 34], "vari": [1, 21, 25, 28, 34], "decis": [1, 11, 20, 25, 32], "variabl": [1, 4, 11, 20, 25], "per": [1, 4, 25, 28, 34], "time": [1, 2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 16, 17, 18, 20, 25, 26, 28, 31, 32, 34], "slice": [1, 3, 11, 25, 28], "forc": [1, 20, 23, 25, 28, 34], "contact": [1, 9, 10, 25], "summari": [1, 25], "few": [1, 25], "fundament": [1, 20, 25, 34], "rest": [1, 25, 26], "helper": [1, 4, 25, 34], "phase": [1, 3, 4, 10, 25, 28, 32], "link": [1, 3, 4, 8, 20, 21, 23, 25, 34], "tor": [1, 25], "ad": [1, 3, 4, 8, 9, 11, 24, 25, 28, 30, 32, 34], "frame": [1, 3, 4, 7, 8, 9, 11, 21, 23, 24, 25, 27, 28, 32], "copi": [1, 3, 4, 11, 24, 25, 27, 31], "clear": [1, 2, 23, 25, 31], "state": [1, 3, 4, 9, 17, 18, 24, 25, 30, 34], "set": [1, 2, 3, 4, 9, 10, 11, 21, 23, 24, 25, 27, 28, 30, 34], "select": [1, 9, 25], "activ": [1, 3, 4, 9, 24, 25], "anyth": [1, 24, 25, 34], "might": [1, 2, 21, 24, 25, 28, 31, 32, 34], "comput": [1, 4, 7, 9, 10, 11, 12, 13, 16, 17, 24, 25, 28, 30, 31, 34], "structur": [1, 3, 5, 21, 22, 24, 25, 27, 31, 34], "collis": [1, 8, 11, 13, 17, 21, 24, 25, 34], "function": [1, 9, 16, 24, 25, 34], "other": [1, 2, 9, 10, 11, 22, 24, 25, 28, 32, 34], "viewer": [1, 25], "etc": [1, 2, 9, 11, 21, 22, 24, 25, 34], "kinedit": [1, 20, 24, 25], "notat": [1, 19, 22, 24, 25], "specifi": [1, 4, 9, 11, 12, 20, 22, 23, 24, 25, 28], "type": [1, 2, 4, 11, 12, 13, 22, 24, 25, 28], "physic": [1, 3, 10, 18, 20, 24, 25, 27], "open": [1, 2, 3, 8, 10, 12, 17, 21, 22, 25, 34], "close": [1, 2, 3, 4, 8, 9, 10, 20, 25, 28, 30, 34], "gripper": [1, 2, 3, 4, 8, 14, 25, 28, 30], "grip": [1, 25, 30], "rgb": [1, 7, 25, 27, 29], "restart": [1, 11, 21, 25, 34], "previou": [1, 11, 13, 22, 24, 25, 28, 30, 34], "depthdata2pointcloud": [1, 25], "arrai": [1, 16, 20, 22, 25, 34], "api": [1, 19], "index": [1, 9, 34], "search": [1, 22, 34], "page": [1, 27, 31], "essenti": [2, 4, 20, 24, 34], "where": [2, 4, 8, 10, 11, 21, 22, 24, 28, 29, 30, 32, 34], "each": [2, 4, 7, 8, 9, 11, 20, 21, 23, 24, 27, 29, 30, 31, 32, 34], "repres": [2, 7, 11, 20, 21, 22, 24, 27, 34], "inertia": [2, 20], "introduc": [2, 20, 21, 23, 24, 26, 34], "handl": [2, 9, 10, 24, 34], "window": [2, 3, 6, 11, 13, 21, 34], "np": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 18], "sep": 2, "23": [2, 34], "2023": 2, "12": [2, 4, 8, 34], "43": 2, "33": [2, 34], "point": [2, 3, 4, 5, 7, 8, 9, 20, 23, 24, 27, 28, 29, 30, 31, 32, 34], "config": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 34], "show": [2, 4, 7, 10, 11, 31, 34], "empti": 2, "tip": [2, 28], "make": [2, 3, 4, 9, 21, 22, 24, 28, 29, 30, 31, 34], "appear": [2, 3, 24, 32, 34], "alwai": [2, 3, 4, 10, 11, 13, 18, 21, 23, 24, 28, 29, 30, 34], "top": [2, 11, 13, 24, 34], "right": [2, 7, 9, 28, 32, 34], "click": 2, "bar": [2, 34], "forrest": 2, "usual": [2, 4, 9, 10, 21, 24, 34], "add": [2, 4, 6, 9, 10, 11, 13, 20, 23, 24, 27, 28, 34], "model": [2, 14, 20, 21, 22, 24, 28, 29, 30, 34], "let": [2, 3, 4, 9, 11, 13, 24, 28, 30, 32, 34], "manual": [2, 3, 8, 20, 21, 24, 32, 34], "here": [2, 3, 4, 6, 8, 9, 10, 11, 13, 17, 20, 21, 22, 24, 29, 30, 31, 32, 34], "f": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 22, 24, 25, 34], "addfram": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 34], "name": [2, 4, 7, 9, 10, 11, 13, 18, 20, 21, 23, 24, 28, 34], "setshap": [2, 3, 4, 6, 7, 8, 11, 12, 17, 34], "st": [2, 3, 4, 6, 7, 8, 11, 12, 13, 17, 18, 34], "marker": [2, 3, 4, 7, 8, 34], "size": [2, 4, 6, 7, 8, 12, 13, 16, 17, 18, 21, 24, 28, 30, 34], "setposit": [2, 3, 4, 6, 7, 8, 11], "5": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 17, 18, 21, 22, 24, 31, 34], "setquaternion": [2, 4, 7], "normal": [2, 4, 9, 20, 22, 24, 34], "intern": [2, 3, 11, 21, 23, 24, 34], "po": [2, 3, 11, 13, 18, 34], "getposit": [2, 3, 4, 6, 7, 28, 34], "quat": [2, 34], "getquaternion": [2, 7, 34], "95782629": 2, "28734789": 2, "second": [2, 24, 28, 29, 34], "parent": [2, 9, 10, 13, 18, 20, 21, 22, 34], "hing": [2, 20, 21, 34], "setjoint": 2, "jt": [2, 21, 34], "hingex": [2, 21, 34], "setcolor": [2, 4, 6, 7, 8, 11, 12, 17, 34], "sinc": [2, 4, 7, 34], "articul": [2, 21, 34], "q": [2, 3, 4, 5, 6, 9, 10, 21, 24, 34], "getjointst": [2, 3, 4, 9, 10, 12, 13, 17, 20, 34], "setjointst": [2, 3, 4, 9, 10, 11, 12, 17, 20, 34], "ball": [2, 21, 25, 34], "sphere": [2, 7, 8, 11, 21, 28, 29, 30, 34], "setrelativeposit": [2, 3, 12, 17, 34], "box": [2, 8, 9, 14, 25, 28, 34], "ssbox": [2, 4, 6, 7, 8, 12, 13, 17, 18, 28, 34], "02": [2, 3, 7, 12, 13, 17, 18, 21, 26, 27, 34], "capsul": [2, 21, 28, 34], "05": [2, 6, 7, 8, 11, 13, 21, 30, 34], "rang": [2, 3, 4, 6, 7, 10, 12, 17, 18], "100": [2, 3, 4, 8, 18], "co": [2, 34], "sleep": [2, 3, 4, 6, 10, 12, 17, 18], "addfil": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 34], "raipath": [2, 3, 4, 5, 6, 7, 8, 10, 12, 17, 34], "prefix": [2, 10, 24], "move": [2, 3, 8, 9, 10, 11, 24, 27, 28, 29, 34], "side": [2, 3], "r_": [2, 34], "base_r": 2, "getfram": [2, 4, 6, 7, 10], "r_panda_bas": 2, "full": [2, 9, 11, 19, 21, 24, 28, 32, 34], "getjointnam": [2, 9], "getframenam": 2, "anim": [2, 10, 20, 27, 34], "q0": [2, 3, 12, 17, 21, 34], "20": [2, 3, 4, 12, 13, 24, 26], "random": [2, 3, 4, 11], "randn": [2, 3, 4], "For": [2, 4, 8, 11, 20, 24, 28, 29, 31, 34], "everi": [2, 29, 34], "queri": [2, 3, 9, 23, 28, 34], "its": [2, 9, 10, 11, 20, 21, 24, 27, 32, 34], "pose": [2, 3, 4, 8, 9, 17, 20, 21, 23, 24, 28, 30, 34], "r_gripper": [2, 6, 10, 12, 17, 28, 30, 32, 34], "rot": [2, 34], "getrotationmatrix": [2, 7], "abov": [2, 3, 4, 9, 10, 28, 30, 32, 34], "provid": [2, 9, 16, 19, 24, 34], "ani": [2, 4, 20, 21, 22, 24, 28, 31, 34], "wai": [2, 3, 9, 11, 13, 20, 22, 23, 24, 28, 34], "differenti": [2, 9, 11, 16, 21, 24, 34], "often": [2, 4, 9, 11, 20, 23, 24, 34], "understand": [2, 22, 28, 34], "foundat": 2, "which": [2, 3, 4, 9, 10, 11, 18, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 34], "ll": [2, 3, 26, 27, 34], "need": [2, 3, 6, 11, 16, 18, 21, 23, 24, 27, 28, 32, 34], "lot": [2, 24, 31], "evalu": [2, 4, 9, 20, 24, 34], "y": [2, 4, 5, 7, 8, 9, 10, 16, 21, 22, 23, 28, 34], "j": [2, 5, 7, 10, 16, 22, 24, 34], "eval": [2, 3, 4, 5, 8, 9, 10, 34], "posit": [2, 3, 5, 6, 8, 9, 11, 14, 20, 21, 23, 24, 28, 29, 34], "njacobian": [2, 34], "neg": [2, 9, 10, 24, 28, 34], "distanc": [2, 4, 9, 11, 13, 20, 24, 28, 34], "between": [2, 3, 4, 9, 10, 11, 20, 21, 23, 24, 28, 31, 34], "two": [2, 3, 4, 8, 9, 11, 20, 21, 23, 24, 27, 28, 31, 32, 34], "convex": [2, 9, 24, 28, 34], "origin": [2, 9, 24, 28, 29, 34], "negdist": 2, "panda_coll7": 2, "r_panda_coll7": 2, "x": [2, 4, 7, 8, 9, 12, 16, 17, 18, 20, 21, 22, 23, 24, 28, 30, 32, 34], "axi": [2, 4, 9, 21, 28, 30, 34], "given": [2, 4, 9, 10, 17, 20, 23, 24, 28, 32, 34], "vectorx": [2, 9, 34], "n": [2, 7, 9, 10, 16, 20, 22, 24, 34], "ha": [2, 3, 4, 9, 10, 11, 20, 21, 23, 24, 28, 29, 30, 34], "7d": [2, 9, 34], "z": [2, 4, 7, 9, 11, 21, 22, 28, 30, 34], "qw": 2, "qx": 2, "qy": 2, "qz": 2, "7": [2, 3, 4, 8, 9, 11, 20, 21, 22, 24, 28, 34], "th": [2, 24], "row": [2, 34], "also": [2, 3, 4, 9, 10, 11, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 32, 34], "mean": [2, 4, 9, 11, 21, 22, 24, 28, 29, 32, 34], "rel": [2, 8, 11, 20, 21, 24, 34], "transfrom": 2, "child": [2, 10, 20, 21, 24, 34], "degre": [2, 10, 20, 21, 24, 34], "freedom": [2, 10, 20, 24, 34], "dof": [2, 9, 20, 21, 23, 24, 34], "total": [2, 3, 4, 20, 31, 34], "dimension": [2, 9, 11, 16, 24, 34], "impli": [2, 4, 9, 28, 34], "chain": [2, 21, 24, 34], "allow": [2, 3, 4, 9, 10, 20, 21, 22, 23, 24, 28, 30, 34], "inconsist": [2, 20, 34], "imposs": 2, "w": [2, 7, 9, 23, 24, 34], "assign": 2, "onto": [2, 9, 24, 34], "actual": [2, 4, 9, 20, 21, 22, 23, 24, 30, 32, 34], "contain": [2, 4, 22, 23, 24, 34], "store": [2, 4, 11, 17, 20, 23, 29, 34], "p_x": [2, 7], "p_y": [2, 7], "p_z": 2, "q_w": 2, "q_x": 2, "q_y": 2, "q_z": 2, "x0": [2, 11, 13], "getframest": [2, 11, 13, 18], "veri": [2, 3, 12, 24, 27, 31, 32, 34], "question": [2, 31, 34], "thing": [2, 20, 21, 24, 30, 31, 32, 34], "number": [2, 4, 23, 24, 28, 34], "setframest": [2, 11, 13, 18, 20], "broke": 2, "global": [2, 3, 23, 34], "overwrit": [2, 3, 20, 32, 34], "non": [2, 3, 4, 11, 16, 21, 24, 34], "These": [2, 24, 34], "reset": [2, 18, 24], "view_clos": [2, 8, 10], "still": [2, 3, 23, 24, 26, 30, 34], "paus": 2, "fals": [2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 17, 22, 34], "messag": [2, 3, 8], "wait": [2, 3], "keypress": [2, 3], "block": [2, 3, 18, 21, 32, 34], "true": [2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 16, 17, 22, 34], "press": [2, 34], "kei": [2, 3, 4, 22, 24, 34], "chr": 2, "screenshot": 2, "img": [2, 6], "view_getscreenshot": 2, "del": [2, 3, 4, 5, 6, 7, 8, 10, 12, 17], "interact": [3, 20, 25, 31], "narrow": [3, 18], "spline": [3, 4, 8, 34], "complianc": 3, "around": [3, 9, 10, 21, 25, 28, 31, 34], "getimag": 3, "grab": [3, 6, 11, 13, 23, 29], "cloud": [3, 29], "interest": [3, 9, 24, 28, 34], "latter": [3, 28, 34], "gym": 3, "environ": [3, 18, 20, 27], "look": [3, 21, 34], "thread": [3, 18], "process": [3, 23, 24, 29], "mimic": [3, 34], "specif": [3, 9, 11, 21, 24, 26, 27, 28, 29, 34], "swappabl": 3, "run": [3, 12, 17, 18, 24, 27, 29, 31], "pure": 3, "object": [3, 4, 8, 10, 11, 12, 13, 18, 20, 21, 23, 24, 25, 26, 27, 29, 30, 31, 32, 34], "pd": 3, "motor": [3, 18, 34], "paramet": [3, 31, 34], "cfg": [3, 5], "behav": 3, "botim": 3, "physx": [3, 5, 8, 12, 17, 18, 20, 23], "multibodi": [3, 8], "params_add": [3, 5, 8, 12, 17], "botsim": [3, 5, 8, 12, 17], "verbos": [3, 4, 5, 8, 9, 12, 14, 17, 23], "motorkp": [3, 5, 8, 12, 17], "10000": [3, 5, 8, 12, 17], "motorkd": [3, 5, 8, 12, 17], "1000": [3, 5, 8, 12, 17], "big": [3, 24, 34], "params_print": [3, 5, 8], "cpp": [3, 8, 9, 34], "99": 3, "34": [3, 8], "hello": [3, 8, 27], "39": [3, 4, 8], "robotmodel": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 21, 24, 27, 34], "scenario": [3, 4, 5, 6, 7, 8, 10, 12, 17, 24, 34], "pandasingl": [3, 4, 5, 8], "view": [3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 17, 18, 20, 28, 34], "workspac": [3, 5], "NOT": [3, 5], "THE": [3, 5, 27], "simult": [3, 5], "would": [3, 4, 9, 11, 20, 24, 28, 31, 34], "commun": 3, "lead": [3, 4, 24, 34], "explicit": [3, 24, 34], "bot": [3, 5, 6, 7, 8, 12, 17], "note": [3, 4, 9, 10, 12, 17, 20, 24, 28, 29, 30, 32], "arm": [3, 13, 24, 28, 30, 34], "go": [3, 26], "down": [3, 9, 14, 34], "free": [3, 13, 17, 21, 30, 34], "float": [3, 24, 28], "kin_physx": 3, "physxinterfac": 3, "768": 3, "addground": 3, "238": 3, "239": 3, "within": [3, 20, 23, 29, 34], "addlink": 3, "254": 3, "tabl": [3, 9, 10, 12, 14, 17, 21, 24, 34], "addmultibodi": 3, "466": 3, "base": [3, 9, 10, 17, 20, 22, 24, 25, 27, 34], "l_panda_bas": 3, "486": 3, "l_panda_link0_0": 3, "l_panda_joint1": 3, "l_panda_link1_0": 3, "l_panda_joint2": 3, "l_panda_link2_0": 3, "bellybutton": 3, "l_panda_joint3": 3, "l_panda_link3_0": 3, "l_panda_joint4": 3, "l_panda_link4_0": 3, "l_panda_joint5": 3, "l_panda_link5_0": 3, "l_panda_joint6": 3, "l_panda_link6_0": 3, "l_panda_joint7": 3, "l_panda_link7_0": 3, "l_panda_hand_0": 3, "l_panda_finger_joint1": 3, "l_panda_leftfinger_0": 3, "l_panda_finger_joint2": 3, "l_panda_rightfinger_0": 3, "592": 3, "805": 3, "home": [3, 4, 5, 6, 7, 8, 10, 12, 17, 24, 27, 28, 29, 30, 34], "q1": [3, 21, 34], "2nd": [3, 9, 21, 24, 28, 34], "bend": 3, "back": [3, 9, 11, 34], "forth": 3, "them": [3, 4, 8, 9, 11, 20, 21, 26, 29, 31, 34], "qhome": [3, 4], "get_qhom": 3, "moveto": [3, 8], "simplest": [3, 24, 28], "current": [3, 17, 21, 23, 24, 28, 30, 34], "target": [3, 4, 9, 11, 21, 24, 25, 34], "It": [3, 4, 18, 20, 21, 23, 24, 27, 34], "kept": 3, "sync": [3, 5, 6, 7, 8, 12, 17], "till": 3, "finish": 3, "check": [3, 4, 9, 11, 24, 34], "time_til_end_of_reference_splin": 3, "meanwhil": 3, "stai": [3, 4, 28], "ed": 3, "6": [3, 4, 8, 9, 22, 34], "while": [3, 5, 6, 8, 10, 12, 17, 20, 24, 34], "gettimetoend": [3, 8, 12, 17], "append": [3, 4, 7, 10, 11, 13, 18, 22, 34], "As": [3, 11, 22, 23, 24, 28, 34], "sever": [3, 29, 34], "timetoend": 3, "073524058876411": 3, "0957189420649807": 3, "191437884129961": 3, "becom": [3, 9, 10, 11, 20, 24, 34], "reactiv": [3, 25, 34], "smoothli": [3, 8, 24], "high": [3, 24], "frequenc": 3, "randomli": 3, "track": [3, 25, 30], "8": [3, 4, 6, 7, 8, 10, 11, 24, 31], "cen": 3, "9": [3, 4, 8, 13, 14, 34], "about": [3, 20, 21, 24, 26, 28, 29, 31, 34], "later": [3, 4, 24, 29, 31, 34], "def": [3, 16], "ik": [3, 8, 11, 12, 17, 25, 30], "delta_t": 3, "addobject": [3, 4, 8, 11, 12, 13, 14, 17, 18, 25, 28, 34], "jointstat": [3, 4], "ot": [3, 4, 8, 11, 12, 13, 14, 16, 17, 34], "1e": [3, 4, 8, 10, 12, 14, 17, 24, 34], "cost": [3, 4, 11, 12, 14, 24, 34], "positiondiff": [3, 4, 9, 10, 11, 12, 13, 14, 17, 34], "l_gripper": [3, 4, 5, 8, 10, 12, 17, 34], "eq": [3, 4, 8, 9, 11, 12, 13, 14, 17, 24, 34], "1e1": [3, 4, 8, 12, 17, 24, 34], "constraint": [3, 8, 11, 12, 14, 20, 24, 28, 32, 34], "ret": [3, 4, 6, 8, 12, 17, 34], "nlp_solver": [3, 4, 8, 12, 16, 17, 34], "return": [3, 4, 8, 9, 12, 16, 20, 23, 28, 29, 34], "getpath": [3, 4, 8, 12, 17, 34], "just": [3, 4, 9, 10, 20, 21, 23, 24, 30, 31, 34], "solut": [3, 4, 8, 11, 12, 13, 17, 24, 27, 32], "send": [3, 23, 31], "10": [3, 4, 7, 8, 10, 13, 21, 24, 31, 34], "98": 3, "q_target": 3, "005057": 3, "feasibl": [3, 4, 8], "00789171": 3, "ineq": [3, 4, 8, 9, 11, 12, 13, 17, 24, 34], "00138392": 3, "001435": 3, "0055078": 3, "00038073": 3, "001453": 3, "00485786": 3, "0031066": 3, "000382": 3, "00552496": 3, "00285066": 3, "000871": 3, "00481289": 3, "000176548": 3, "000181": 3, "00416384": 3, "00404598": 3, "001811": 3, "00394648": 3, "00118522": 3, "000637": 3, "00410849": 3, "00429565": 3, "001591": 3, "00454469": 3, "000211266": 3, "000784": 3, "00470588": 3, "00357698": 3, "000942": 3, "00478467": 3, "00148874": 3, "001108": 3, "00457452": 3, "00162474": 3, "001451": 3, "005894": 3, "000439926": 3, "002882": 3, "00540869": 3, "0027726": 3, "001624": 3, "00720508": 3, "00069492": 3, "001267": 3, "0075089": 3, "000505518": 3, "002128": 3, "0078162": 3, "0019024": 3, "001489": 3, "00831903": 3, "00241169": 3, "005757": 3, "0106921": 3, "000467631": 3, "001208": 3, "0115667": 3, "000478951": 3, "reativ": 3, "increas": 3, "agress": 3, "penal": [3, 4, 24, 28], "durat": [3, 24], "cubic": 3, "11": [3, 4, 8, 34], "keep": [3, 21, 24, 30, 34], "idl": 3, "sec": [3, 8], "timecost": 3, "good": [3, 9, 30, 31, 34], "practis": 3, "abort": 3, "execut": [3, 4, 11, 24, 32], "In": [3, 4, 8, 9, 11, 20, 21, 23, 24, 26, 28, 29, 30, 31, 34], "break": [3, 5, 6, 21, 34], "loop": [3, 20, 28, 29, 30, 34], "til": 3, "endoftim": 3, "rais": 3, "getkeypress": [3, 5], "ord": [3, 5, 6], "movement": [3, 4], "grippermov": 3, "_left": [3, 5, 8], "width": [3, 6, 9, 10, 22, 23, 34], "gripperdon": [3, 8], "075": 3, "properli": [3, 9, 21, 23, 28, 34], "been": [3, 8, 23, 24], "far": [3, 10, 24, 28, 30, 34], "give": [3, 6, 24, 27, 28, 31, 34], "idea": 3, "exist": 3, "framework": 4, "special": [4, 19, 20, 21, 22, 24, 34], "case": [4, 5, 11, 20, 23, 24, 28, 34], "over": [4, 8, 12, 20, 24, 29, 32, 34], "singl": [4, 9, 11, 12, 20, 24, 28, 34], "rather": [4, 11, 17, 19, 20, 21, 22, 24, 30, 34], "than": [4, 11, 17, 19, 20, 21, 24, 29, 34], "realiz": [4, 28, 29, 30, 32], "rough": [4, 25, 31], "fine": [4, 24, 30], "linear": [4, 8, 16, 19, 24, 34], "mathemat": [4, 9, 16, 20, 24, 32, 34], "program": [4, 9, 16, 20, 24, 32, 34], "25": [4, 8, 13, 31], "06": [4, 30], "005": [4, 6, 7, 8], "setcontact": [4, 6, 7, 8, 10], "list": [4, 9, 10, 21, 22, 24, 32, 34], "constructor": 4, "declar": [4, 9, 21, 23, 24, 34], "scale": [4, 9, 11, 12, 24, 25, 34], "explain": [4, 11, 18, 21, 24, 27, 28, 31, 34], "argument": [4, 12, 23, 24, 28, 32, 34], "signatur": [4, 16, 34], "interv": [4, 11, 20, 24, 28, 32, 34], "subset": [4, 24, 34], "irrelev": 4, "symbol": [4, 9, 24, 32, 34], "see": [4, 7, 9, 20, 24, 28, 29, 30, 31, 34], "whether": [4, 9, 22, 24, 34], "sum": [4, 9, 10, 11, 24, 34], "squar": [4, 9, 11, 24, 34], "multipli": [4, 24], "offset": [4, 7, 34], "substract": [4, 25], "befor": [4, 11, 23, 24, 28, 29, 30, 34], "pleas": [4, 27, 31, 34], "detail": [4, 20, 24, 25, 34], "solver": [4, 8, 9, 16, 23, 24, 28, 34], "000823": 4, "00414146": 4, "00188382": 4, "augmentedlagrangian": [4, 8], "bound": [4, 8, 24, 34], "ye": [4, 24, 34], "mu": [4, 8], "nu": [4, 8], "mulb": [4, 8], "newton": [4, 8, 16, 24, 34], "initi": [4, 8, 11, 20, 21, 23, 24, 28, 34], "16": [4, 8], "0447": 4, "alpha": [4, 8, 34], "beta": [4, 8], "delta": [4, 8, 34], "55808": 4, "accept": [4, 8], "686083": 4, "144223": 4, "0170221": 4, "0221449": 4, "00418093": 4, "stop": [4, 6, 8], "absmax": [4, 8], "lt": [4, 8], "option": [4, 8, 9, 11, 23, 24, 34], "stoptoler": [4, 8, 12, 17, 34], "00414937": 4, "h": [4, 7, 8, 9, 22, 23, 24, 27, 34], "00951471": 4, "373024": 4, "deltaconverg": [4, 8], "00437027": 4, "00240133": 4, "00413537": 4, "stoppingcriterion": [4, 8], "01": [4, 6, 8, 18, 26, 27, 30, 34], "displai": [4, 6, 11, 12, 17, 21, 23, 24, 29, 34], "overlai": [4, 7, 34], "sequenc": [4, 8, 12, 20, 24, 28, 32, 34], "len": [4, 6, 12, 34], "ndarrai": 4, "gt": 4, "destroi": [4, 9, 10], "Then": [4, 9, 11, 17, 21, 24, 27, 28, 29, 30, 34], "clever": 4, "realist": [4, 31], "accumulatedcollis": [4, 8, 9, 10, 12, 13, 17, 34], "jointlimit": [4, 8, 9, 12, 13, 17, 34], "scalarproductxx": [4, 9, 14, 34], "scalarproductxz": [4, 9, 11], "l_palm": 4, "scalarproduct": [4, 9, 28, 34], "connect": [4, 22, 34], "finger": [4, 9, 18, 28], "orthogon": [4, 9, 30, 34], "ax": [4, 7, 9, 34], "oppos": 4, "plane": [4, 9, 34], "could": [4, 20, 28, 31, 32, 34], "flag": [4, 9, 10], "els": [4, 23, 34], "infeas": [4, 34], "001353": 4, "00552548": 4, "00124449": 4, "reus": 4, "instanc": [4, 11, 20, 24, 26, 28, 34], "ok": [4, 9, 31, 34], "aspect": 4, "chang": [4, 6, 9, 10, 11, 20, 21, 24, 27, 28, 29, 34], "resolv": [4, 31], "p0": 4, "13": [4, 8, 11, 34], "updaterootobject": 4, "root": [4, 20, 21, 34], "001635": 4, "00352417": 4, "00216173": 4, "006638": 4, "0207398": 4, "00141503": 4, "006179": 4, "00694048": 4, "00205847": 4, "004424": 4, "0152197": 4, "000563407": 4, "008229": 4, "0104266": 4, "00210566": 4, "008263": 4, "0165911": 4, "00175033": 4, "009852": 4, "019162": 4, "0395863": 4, "005472": 4, "0100858": 4, "00146084": 4, "00514": 4, "00327878": 4, "000313999": 4, "007166": 4, "030142": 4, "00111338": 4, "249048": 4, "722": 4, "0802649": 4, "102041": 4, "051558": 4, "61": 4, "0779214": 4, "93279": 4, "018069": 4, "30": [4, 6, 10, 14, 21, 34], "0117585": 4, "000335161": 4, "008438": 4, "14": [4, 8, 11], "0114653": 4, "000106237": 4, "005415": 4, "0221542": 4, "000198337": 4, "078182": 4, "94": 4, "0645244": 4, "116509": 4, "017363": 4, "28": [4, 8], "0795235": 4, "000762834": 4, "127013": 4, "216": 4, "114508": 4, "481591": 4, "021431": 4, "0178241": 4, "000106574": 4, "018806": 4, "0130349": 4, "00024334": 4, "exploit": 4, "null": [4, 7, 34], "space": [4, 9, 11, 24, 25, 34], "proper": [4, 31, 34], "possibl": [4, 20, 28, 31, 32, 34], "pick": [4, 24, 28, 32], "best": [4, 11, 13, 21, 22, 24, 34], "scalarproductxi": [4, 9], "15": [4, 8, 11, 12, 17, 21, 30, 31, 34], "orient": [4, 9, 20, 21, 24, 28, 30, 34], "score": 4, "argmin": [4, 34], "none": [4, 22, 23, 34], "resolut": 4, "interpol": [4, 8], "desir": [4, 20, 30, 34], "pre": [4, 10, 28, 34], "common": [4, 8, 34], "pattern": [4, 8], "simplifi": [4, 31, 32, 34], "way1": [4, 8], "way2": 4, "way3": 4, "way4": 4, "18": [4, 8], "addcontrolobject": [4, 8, 12, 17, 34], "1e0": [4, 13, 24], "003266": 4, "39494": 4, "000305648": 4, "35382383": 4, "05464486": 4, "41770589": 4, "0833263": 4, "05951381": 4, "17630166": 4, "49971152": 4, "29434065": 4, "3758991": 4, "40467003": 4, "73241762": 4, "02310692": 4, "33740027": 4, "49945799": 4, "44111823": 4, "06340917": 4, "31723911": 4, "1024485": 4, "12222711": 4, "20326576": 4, "49926996": 4, "43343189": 4, "36084256": 4, "2768184": 4, "74048984": 4, "12188603": 4, "34753359": 4, "49916996": 4, "valu": [4, 7, 9, 11, 21, 22, 23, 34], "stepsperphas": 4, "discret": [4, 20, 23, 24], "form": [4, 20, 21, 34], "k_order": 4, "maxim": [4, 24], "tupl": [4, 11, 24, 34], "take": [4, 22, 24, 32, 34], "finit": [4, 24, 34], "our": [4, 6, 11, 28, 29, 34], "sub": [4, 9, 20, 22, 24, 31, 34], "sampl": [4, 17, 30], "why": [4, 28, 34], "consecut": [4, 11, 20, 24], "hold": [4, 5, 23, 24, 28, 32, 34], "sqr": 4, "acceler": [4, 11, 20, 23, 24, 25, 31, 34], "across": [4, 9, 22, 34], "factor": [4, 22, 24, 34], "sqrt": [4, 24, 34], "somehow": 4, "control": [4, 18, 20, 23, 24, 25, 34], "approxim": [4, 11, 23, 24, 34], "independ": [4, 16], "choic": [4, 23, 24], "zig": 4, "zag": 4, "smooth": [4, 24, 29, 30, 32, 34], "19": [4, 13], "happen": [4, 24], "weight": [4, 34], "017709": 4, "51987": 4, "00176075": 4, "40": [4, 24, 28], "constrain": [4, 8, 11, 17, 24, 28], "zero": [4, 7, 8, 9, 10, 11, 20, 21, 24, 28, 34], "042404": 4, "5162": 4, "000765251": 4, "notic": [4, 21, 34], "new": [4, 21, 24, 27, 28, 29, 30, 34], "last": [4, 24, 30, 34], "without": [4, 10, 24, 28, 34], "plot": 4, "trajectori": [4, 20, 24, 34], "21": [4, 34], "pyplot": [4, 7], "plt": [4, 7], "22": [4, 34], "exactli": [5, 10, 20, 23, 24, 32, 34], "botop1": 5, "userealrobot": 5, "instead": [5, 9, 10, 24, 28, 30, 34], "params_fil": 5, "pcl": [5, 7, 10], "camerawrist": 5, "getimagedepthpcl": [5, 7], "setpointcloud": [5, 7], "gripperopen": [5, 8], "setcompli": 5, "get_tauextern": 5, "pseudoinv": 5, "linalg": [5, 10], "pinv": 5, "hit": [6, 21, 34], "cv2": 6, "cv": 6, "cap": 6, "videocaptur": 6, "captur": 6, "read": [6, 13, 20, 21, 22, 23, 24, 27, 34], "come": [6, 21, 24, 34], "cvtcolor": 6, "color_bgr2grai": 6, "result": [6, 11, 14, 20, 21, 24, 28, 34], "imshow": [6, 7], "waitkei": 6, "0xff": 6, "releas": 6, "destroyallwindow": 6, "o": [6, 7, 10, 34], "_exit": [6, 10], "pandast": [6, 7, 10, 12, 17, 34], "obj": [6, 7, 20], "setpos": [6, 7], "setmass": [6, 7, 8, 18], "fxypxi": [6, 7, 23], "getcamerafxypxi": [6, 7], "camerafram": [6, 7], "tau": [6, 9, 21, 24, 34], "sensor": [6, 23], "getimageanddepth": [6, 7], "100hz": 6, "render": [6, 20, 27], "slow": [6, 14], "color_bgr2rgb": 6, "central": 6, "addit": [6, 23, 24, 28, 34], "r_grippercamera": 6, "addattribut": 6, "focallength": [6, 9, 10, 23], "895": 6, "640": [6, 10], "height": [6, 9, 10, 23, 34], "360": 6, "_": [6, 7, 32, 34], "cell": [7, 11, 18], "cell_typ": 7, "markdown": 7, "metadata": 7, "vision": [7, 26], "execution_count": 7, "91746f55": 7, "11c2": 7, "4591": 7, "a337": 7, "4155376e7596": 7, "output": [7, 21, 34], "sy": [7, 10, 11, 13, 14, 16, 18, 34], "osn": 7, "expandus": [7, 34], "build": [7, 10, 11, 13, 14, 16, 18, 20, 28, 29, 30], "libri": [7, 10, 11, 13, 14, 16, 18, 21, 34], "ryn": 7, "npn": 7, "timen": 7, "f18925ed": 7, "mycamera": 7, "55da8f34": 7, "1bd73706": 7, "2f9b": 7, "4c4d": 7, "93bd": 7, "cdba581408b7": 7, "fig": [7, 34], "figur": [7, 28, 31, 34], "figsiz": 7, "subplot": 7, "matshow": 7, "ce65b01b": 7, "9811": 7, "496c": 7, "9774": 7, "1589d5455deb": 7, "slide": [7, 24, 26, 30, 31, 34], "learnedn": 7, "hat": [7, 34], "frac": [7, 9, 34], "wheren": 7, "pixel": [7, 23, 29, 34], "andn": 7, "know": [7, 23, 27, 34], "426eb3b6": 7, "shapen": 7, "cc08f354": 7, "0e4d": 7, "475b": 7, "8af5": 7, "ebff63533142": 7, "fx": 7, "fy": 7, "px": 7, "ctmp": 7, "continuen": 7, "sign": [7, 24, 34], "flipe": 7, "downn": 7, "zn": 7, "tn": 7, "tmp": 7, "pc": 7, "str": 7, "255": 7, "1a9d2d8a": 7, "07ae": 7, "4dc3": 7, "afa5": 7, "3c90ac7d2b8": 7, "c2": 7, "pclframe": 7, "delfram": [7, 9, 10], "truthn": 7, "view_recopymesh": 7, "6e222a0a": 7, "72179b41": 7, "cfdb8d55": 7, "botn": 7, "60ecc8d4": 7, "kernelspec": 7, "display_nam": 7, "ipykernel": 7, "languag": [7, 21, 25, 34], "language_info": 7, "codemirror_mod": 7, "ipython": 7, "file_extens": 7, "mimetyp": 7, "text": [7, 9, 11, 21, 24, 27, 31, 34], "nbconvert_export": 7, "pygments_lex": 7, "ipython3": 7, "nbformat": 7, "nbformat_minor": 7, "rigidli": [8, 21, 34], "6d": 8, "endeff": [8, 20, 24], "conveni": [8, 20, 24, 34], "pipelin": [8, 21, 29, 30, 34], "hard": [8, 34], "transit": [8, 24], "through": [8, 27], "broken": 8, "again": [8, 20, 24, 28, 30, 34], "fall": [8, 28, 29], "angulardamp": 8, "defaultfrict": 8, "101": 8, "lgp": 8, "camerafocu": 8, "stoptim": 8, "300": 8, "stopsol": 8, "opt": [8, 12], "maxstep": 8, "boundednewton": 8, "025": 8, "675": 8, "way0": 8, "setrelativepos": 8, "d": [8, 9, 10, 11, 13, 16, 18, 20, 21, 22, 25, 34], "90": [8, 9, 10, 21, 34], "86": 8, "setconfig": [8, 12, 17, 34], "settim": [8, 12, 14, 17, 24, 34], "posediff": [8, 9, 34], "setproblem": [8, 12, 16, 17, 34], "setopt": [8, 12, 17, 34], "93": 8, "1593": 8, "69": 8, "6169": 8, "47": 8, "7566": 8, "1096": 8, "4588": 8, "02281": 8, "0943": 8, "170104": 8, "57494": 8, "0579509": 8, "52862": 8, "0238862": 8, "52229": 8, "016744": 8, "37426": 8, "000145596": 8, "elta": 8, "94215": 8, "24621": 8, "750159": 8, "00314": 8, "5031": 8, "10763": 8, "34517": 8, "0250832": 8, "33636": 8, "0132012": 8, "33499": 8, "00671988": 8, "33466": 8, "20162": 8, "211307": 8, "219168": 8, "53258": 8, "0376555": 8, "37467": 8, "00825317": 8, "37395": 8, "36729": 8, "00768814": 8, "0459086": 8, "37595": 8, "125": 8, "00476621": 8, "3742": 8, "gripperclosegrasp": 8, "end": [8, 9, 11, 20, 24, 28, 32, 34], "07": 8, "gripperclos": 8, "pass": [9, 12, 17, 24, 34], "proxim": 9, "accumul": 9, "measur": [9, 24], "penetr": [9, 10, 24, 28, 34], "pair": [9, 10, 22, 24, 28, 34], "geometr": [9, 24, 32], "wit": 9, "pr2": [9, 11, 13], "kitchen": [9, 11, 13, 21, 34], "scalar": [9, 11, 24, 28, 34], "coll": 9, "computecollis": [9, 10], "proxi": 9, "automat": [9, 20, 21, 24, 32, 34], "redo": [9, 11], "selectjointsbytag": 9, "inform": [9, 20, 21, 24, 28, 34], "getcollis": [9, 10], "report": [9, 20, 21, 24, 34], "detect": [9, 10], "swift": 9, "deactiv": [9, 10, 20], "nuissanc": 9, "default": [9, 22, 24, 28, 34], "activatecollisionpair": 9, "deactivatecollisionpair": 9, "modifi": [9, 11, 22, 24, 28, 34], "todo": [9, 10, 11, 13, 15, 18, 20, 23], "gjk": [9, 20], "algorithm": [9, 10, 20, 34], "dist": 9, "coll_wrist_r": 9, "_10": 9, "becaus": [9, 24], "typic": [9, 11, 20, 21, 22, 23, 24, 28, 34], "put": [9, 10, 11], "inequ": [9, 11, 24, 25, 34], "geometri": 9, "easili": [9, 20, 34], "request": 9, "help": [9, 24, 30, 31, 34], "choos": [9, 24, 28, 30, 34], "entri": [9, 24, 32, 34], "affect": 9, "arml": 9, "attach": [9, 20, 21, 23, 24, 27, 34], "head": [9, 10], "associ": [9, 10, 20, 23, 34], "head_tilt_link": [9, 10], "arg": [9, 10, 14], "180": [9, 10], "cameraview": [9, 10, 23], "iv": 9, "imageview": [9, 10], "addsensor": [9, 10], "frameattach": [9, 10], "600": [9, 10], "400": [9, 10], "computeimageanddepth": [9, 10], "head_pan_joint": [9, 10], "updateconfig": [9, 10], "reassign": [9, 10], "remov": [9, 10, 11, 13, 21, 24, 28, 34], "assum": [9, 20, 24, 29, 34], "x_1": [9, 24, 34], "x_t": [9, 24], "x_i": [9, 34], "mathbb": [9, 20, 24, 34], "phi": [9, 20, 24, 34], "map": [9, 11, 24, 26, 34], "mapsto": [9, 34], "x_0": [9, 34], "x_2": [9, 34], "x_k": 9, "most": [9, 24, 28, 31, 34], "access": [9, 10, 11, 23, 27, 29, 34], "via": [9, 10, 21, 24, 27, 34], "blob": [9, 11, 24], "master": [9, 15, 21, 24, 29, 34], "kin": [9, 21, 24, 34], "featuresymbol": [9, 24, 34], "respect": [9, 22, 34], "o1": [9, 34], "o2": [9, 34], "positionrel": [9, 11, 28, 34], "4d": [9, 34], "nbsphinx": 9, "math": [9, 20, 34], "footnot": [9, 34], "There": [9, 21, 24, 27, 28, 34], "invari": [9, 24, 34], "si": 9, "gn": 9, "quaterniondiff": [9, 34], "quaternionrel": [9, 34], "poserel": [9, 34], "vectorxdiff": [9, 34], "vectorxrel": [9, 34], "seend": [9, 34], "vectori": [9, 34], "product": [9, 11, 24, 28, 34], "fo": [9, 34], "gazeat": [9, 34], "2d": [9, 34], "xy": [9, 24, 34], "angularvel": [9, 34], "angular": [9, 24, 34], "noth": [9, 24, 34], "collid": [9, 20, 28, 34], "limit": [9, 20, 23, 24, 34], "mesh": [9, 21, 24, 34], "qitself": [9, 12, 13, 14, 28, 34], "abovebox": [9, 34], "insid": [9, 34], "insidebox": [9, 34], "standingabov": [9, 34], "fs_": [9, 34], "drive": [9, 34], "redefin": [9, 11, 34], "texttt": [9, 34], "cdot": [9, 34], "dim": [9, 11, 34], "1st": [1, 9, 34], "oder": [9, 34], "x_3": [9, 34], "equiv": [9, 24, 34], "hand": [9, 11, 21, 23, 24, 28, 34], "handr": 9, "left": [9, 11, 28, 32, 34], "10centimet": 9, "sai": [9, 31, 34], "equal": [9, 11, 20, 22, 24, 28, 34], "align": [9, 24, 30, 34], "much": [9, 17, 24, 31, 34], "robust": [9, 21, 34], "error": [9, 20, 21, 23, 34], "gradient": [9, 34], "optimum": [9, 34], "meant": [9, 19, 27], "indic": [9, 20, 24, 29, 34], "rho_k": 9, "pi_k": 9, "subseteq": [9, 24], "phi_1": 9, "phi_k": 9, "x_n": [9, 34], "begin": [9, 24, 34], "min_": [9, 24, 34], "sum_": 9, "x_": [9, 24, 34], "mathopforall_": 9, "le": [9, 24, 34], "quad": [9, 24, 34], "mini": [10, 34], "watchfil": [10, 34], "command": [10, 21, 23, 24, 28, 30, 34], "editor": [10, 21, 24, 34], "being": [10, 24, 34], "redisplai": 10, "whenev": [10, 21, 24, 34], "save": [10, 21, 34], "trivial": [10, 22, 24, 27, 34], "reload": [10, 21, 34], "extern": [10, 27, 34], "coupl": [10, 24], "those": [10, 21, 24, 29, 34], "setraipath": 10, "mtoussai": [10, 26], "simpl": [10, 21, 24, 27, 28, 29, 31, 34], "bit": [10, 28, 34], "sin": [10, 34], "configurationview": 10, "setconfigur": [10, 11], "broadphas": [10, 20], "bring": [10, 20, 29], "evalfeatur": 10, "r_grippercent": 10, "l_grippercent": 10, "vel": 10, "inv": 10, "ey": [10, 16], "belowmargin": 10, "integ": 10, "contribut": [10, 34], "topolog": 10, "distant": 10, "warn": 10, "broad": 10, "cannot": [10, 23, 24, 34], "were": [10, 20, 24, 31, 34], "dure": [10, 24, 26, 28, 29, 31], "recreat": [10, 28], "fresh": [10, 27], "But": [10, 20, 21, 24, 28, 31, 34], "realli": [10, 20, 24, 27, 28, 34], "approach": [10, 28, 34], "nvisii": 10, "export": [10, 21, 34], "vimg": 10, "vseg": 10, "segmentationview": 10, "vpcl": 10, "pointcloudview": 10, "kinect": 10, "endeffkinect": 10, "480": 10, "580": 10, "50": 10, "selectsensor": 10, "seg": 10, "computesegment": 10, "computepointcloud": 10, "segment": [10, 29], "head_tilt_joint": 10, "panda_clean": 10, "encod": [10, 21, 24, 34], "utf": 10, "fil": 10, "safe_load": 10, "doc": [11, 24, 27, 29], "At": 11, "bottom": [11, 32, 34], "concept": [11, 20, 24, 26], "lock": [11, 13], "simplic": [11, 34], "goal": [11, 17, 26, 28, 29, 31], "pr2l": [11, 13], "yellow": [11, 34], "komo_ik": 11, "getreport": [11, 13, 14], "retriev": [11, 30, 34], "anoth": [11, 21, 22, 24, 28, 32, 34], "locat": [11, 21, 24, 34], "iter": [11, 24, 29, 30, 34], "reoptim": 11, "nois": [11, 23], "novel": [11, 34], "pr2r": [11, 13], "20cm": 11, "straight": [11, 23], "front": [11, 34], "vectorzdiff": 11, "scalarproductzz": 11, "redund": [11, 21, 24, 34], "pointer": [11, 24], "either": [11, 21, 28, 30, 32, 34], "term": [11, 24, 31, 34], "dimens": [11, 20, 34], "15th": 11, "overal": [11, 21, 34], "keyword": [11, 22, 34], "tell": [11, 23, 34], "linearli": [11, 34], "conf": 11, "feat": [11, 24], "avoid": [11, 24, 28, 30], "especi": [11, 24], "impos": [11, 24, 28], "Or": [11, 20, 29], "correspond": [11, 34], "natur": [11, 24, 34], "esp": [11, 23, 24, 30, 34], "posdiff": 11, "posrel": 11, "aim": [11, 20, 24], "constant": [11, 24, 28, 30, 32], "rescal": 11, "aris": [11, 34], "signific": 11, "impact": 11, "converg": [11, 34], "behavior": [11, 26, 31], "guid": [11, 21, 24, 34], "treat": [11, 34], "penalti": [11, 24, 34], "squaredpenalti": 11, "made": [11, 27, 34], "reason": [11, 20, 24, 28, 34], "effici": [11, 24, 34], "auglag": 11, "precis": [11, 20, 24, 34], "cylind": [11, 28], "l_gripper_l_finger_joint": 11, "03": [11, 26, 28, 34], "similarli": [12, 21, 23, 34], "confus": [12, 34], "simpli": [12, 17, 19, 20, 21, 27, 34], "plai": [12, 17, 25, 28, 31, 34], "boxr": [12, 17, 34], "boxl": [12, 17, 34], "view_plai": [12, 13, 14], "moveautotim": [12, 17], "perhap": [13, 24, 31, 34], "item1": 13, "sink1": 13, "52": 13, "color": [13, 18, 21, 22, 25, 34], "item2": 13, "trai": 13, "stove1": 13, "42": 13, "touch": [13, 24, 25, 32], "obj1": [13, 28], "komo_path": 13, "1e2": [13, 14], "endeffworkspac": 13, "my": [13, 28], "out": [13, 20, 22, 23, 24, 28, 34], "analyz": [13, 24], "model2": 14, "setmodel": [14, 24], "add_qcontrolobject": [14, 28], "addquaternionnorm": 14, "addmodeswitch": 14, "stabl": [14, 24], "vectorz": 14, "up": [14, 20, 21, 24, 27, 31, 32, 34], "place": [14, 24, 26, 32, 34], "08": 14, "checkgradi": 14, "miss": [14, 23], "getconstraintviol": 14, "getcost": 14, "topboxgrasp": 14, "box2": 14, "downup": 14, "poseeq": 14, "target2": 14, "setskeleton": 14, "reportproblem": 14, "download": 15, "own": [15, 20, 24, 27, 34], "variou": [16, 20, 21, 24, 34], "sqrpot": 16, "nlp_factori": 16, "setdimens": 16, "setbound": 16, "setfeaturetyp": 16, "setevalcallback": 16, "setsolv": 16, "nlp_solverid": 16, "getlog_x": 16, "getlog_cost": 16, "rrt": 17, "easier": 17, "qt": 17, "jointli": 17, "bi": 17, "pathfind": 17, "sometim": [18, 21, 24, 30, 34], "low": 18, "level": [18, 20, 24, 31, 34], "reinforc": [18, 31], "multi": [18, 20], "bodi": [18, 20, 34], "gain": 18, "friction": 18, "graviti": 18, "compens": 18, "45": 18, "fail": 18, "bullet": [18, 20, 23, 31], "comment": [18, 22, 24], "mk": 18, "getstat": [18, 23], "multipl": [18, 20, 21, 28, 30, 34], "setstat": [18, 20, 23], "concern": [19, 24, 32, 34], "inherit": 19, "std": 19, "algebra": [19, 34], "lapack": 19, "eigen": 19, "well": [19, 24, 28, 34], "concis": [19, 34], "closer": 19, "matlab": 19, "sheet": 19, "focuss": 19, "synopsi": 20, "similar": [20, 24, 34], "graphic": 20, "further": [20, 22, 24, 28, 34], "angl": [20, 21, 24, 34], "togeth": [20, 31], "represent": [20, 24, 26, 34], "appli": [20, 23, 29], "numer": [20, 23, 24], "quantiti": [20, 24], "nearest": 20, "involv": [20, 30, 34], "under": [20, 34], "newtonian": 20, "although": 20, "semant": [20, 24, 34], "perform": [20, 27, 34], "opengl": [20, 23, 27], "format": [20, 21, 22, 34], "collada": [20, 21, 34], "rigid": [20, 21, 34], "se": [20, 34], "mai": [20, 21, 22, 24, 31, 34], "write": [20, 34], "nabla_x": 20, "role": 20, "tool": [20, 21, 24, 31, 34], "urdf2rai": [20, 21, 24, 34], "requir": [20, 21, 22, 24, 34], "fix": [20, 21, 24, 28, 34], "selet": 20, "quirk": 20, "ignor": [20, 34], "interestingli": 20, "extract": [20, 34], "along": [20, 28, 34], "freeli": [20, 34], "consist": [20, 24, 34], "potenti": [20, 21, 24, 25, 26, 34], "fcl": 20, "lower": [20, 24, 28], "ccd": 20, "trigger": [20, 28], "f_accumulatedcolls": 20, "explicitli": [20, 23, 24, 28, 34], "updat": [20, 21, 23, 28, 29, 30, 34], "ensureproxi": 20, "ompl": 20, "relat": [20, 24, 34], "recurs": 20, "collect": [20, 34], "filter": [20, 29], "cont": 20, "properti": [20, 21, 34], "int": [20, 24], "upward": [20, 34], "supp": 20, "matric": [20, 34], "engergi": 20, "residu": [20, 30], "equat": [20, 24, 34], "system": [20, 21, 24, 26, 31, 34], "absolut": [20, 21, 34], "propag": 20, "Such": [20, 24], "therebi": [20, 24, 34], "classic": 20, "whatev": 20, "altern": [20, 24, 27, 28, 34], "reffram": 20, "everli": [21, 34], "node": [21, 22, 34], "attribut": [21, 22, 23, 32, 34], "previous": [21, 34], "omit": [21, 34], "taken": [21, 34], "stem": [21, 34], "mass": [21, 34], "joint1_pr": [21, 34], "joint1": [21, 34], "arm1": [21, 34], "arm2": [21, 34], "eff": [21, 34], "joint2": [21, 34], "b": [21, 22, 25, 34], "joint3": [21, 34], "001": [21, 34], "line": [21, 24, 27, 34], "length": [21, 23, 24, 28, 34], "radiu": [21, 28, 34], "inerti": [21, 34], "4th": [21, 34], "meter": [21, 23, 34], "degress": [21, 34], "short": [21, 34], "arm3": [21, 34], "retrospect": [21, 34], "implicitli": [21, 34], "joint2_pr": [21, 34], "chile": [21, 34], "underli": [21, 34], "bin": [21, 24, 32, 34], "cmake": [21, 24, 34], "otherwis": [21, 23, 24, 34], "somefil": [21, 34], "equival": [21, 34], "repeatedli": [21, 34], "clean": [21, 24, 34], "prune": [21, 34], "continu": [21, 28, 30, 32, 34], "enter": [21, 34], "enforc": [21, 25, 34], "littl": [21, 28, 29, 30, 34], "tri": [21, 34], "catch": [21, 34], "syntax": [21, 32, 34], "crash": [21, 31, 34], "convert": [21, 23, 24, 29, 34], "convers": [21, 34], "partial": [21, 24, 34], "fiddl": [21, 24, 34], "correct": [21, 24, 34], "hole": [21, 24, 34], "meshlab": [21, 24, 34], "compress": [21, 24, 34], "ply": [21, 24, 34], "hubo": [21, 24, 34], "howto": [21, 24, 34], "sh": [21, 24, 34], "manag": [21, 34], "bremenkitchen": [21, 34], "unreal": [21, 34], "json": [21, 22, 34], "gltf": [21, 34], "augment": [21, 34], "extra": [21, 34], "p1": [21, 34], "p2": [21, 34], "p3": [21, 34], "q2": [21, 34], "q3": [21, 34], "intuit": [21, 34], "human": [21, 34], "bracket": [21, 34], "interpret": [21, 34], "turtl": [21, 34], "translat": [21, 24, 32], "_radians_": [21, 34], "_degrees_": [21, 34], "roll": [21, 34], "pitch": [21, 34], "yaw": [21, 34], "euler": [21, 34], "enum": [21, 24, 34], "jointtyp": [21, 34], "avail": [21, 24, 34], "hingei": [21, 34], "hingez": [21, 34], "transx": [21, 34], "transi": [21, 34], "transz": [21, 34], "transxi": [21, 34], "trans3": [21, 34], "transxyphi": [21, 34], "univers": [21, 27, 34], "quatbal": [21, 34], "phitransxi": [21, 34], "xball": [21, 34], "seem": [21, 24, 34], "mark": [21, 34], "separ": [21, 22, 23, 27, 34], "sit": [21, 34], "dictionari": [22, 34], "turn": [22, 34], "mix": 22, "hierarch": [22, 34], "ideal": [22, 24, 30, 31], "xml": 22, "kind": [22, 24, 31], "logic": [22, 32, 34], "clarifi": 22, "hopefulli": 22, "self": 22, "explanatori": 22, "boolean": [22, 34], "vertex": [22, 34], "edg": [22, 34], "hyperedg": [22, 34], "subgraph": [22, 34], "blue": [22, 34], "red": [22, 29, 30, 34], "string": [22, 34], "mt": [22, 34], "except": [22, 24, 34], "mod": [22, 34], "txt": [22, 27, 34], "filetoken": [22, 34], "1234": [22, 34], "doubl": [22, 24, 34], "arr": [22, 24, 28, 34], "deprec": [22, 34], "bool": [22, 34], "pars": [22, 34], "b0": [22, 34], "b1": [22, 34], "b2": [22, 34], "b3": [22, 34], "hallo": [22, 34], "filenam": [22, 34], "org": [22, 24, 29, 34], "delet": [22, 34], "tag": [22, 34], "otherstr": [22, 34], "newattribut": [22, 34], "example_includ": [22, 34], "strang": [22, 34], "parentgraph": [22, 34], "knowledg": [22, 34], "adverseri": 23, "imp": [23, 30], "callback": [23, 30], "perturb": [23, 30], "signal": [23, 29], "distinguish": [23, 24], "govern": 23, "law": 23, "push": [23, 26, 28], "u_mod": 23, "u_control": 23, "receiv": [23, 24], "until": [23, 24, 32, 34], "reach": [23, 28, 30], "speed": 23, "zrang": 23, "expos": [23, 24, 34], "post": [23, 24], "systemat": 23, "disir": 23, "exact": [23, 34], "visit": 23, "infact": 23, "slighli": 23, "hidden": 23, "instanti": [23, 24], "restorest": 23, "fact": [23, 24], "must": [23, 29, 31, 34], "arbitrari": [23, 24, 34], "acut": 23, "somewher": [23, 27, 34], "percept": [23, 26, 28, 30], "alreadi": [23, 30, 34], "x3": 23, "four": [23, 34], "focal": [23, 34], "unit": [23, 30, 34], "center": [23, 28, 29, 30, 34], "ealier": 24, "influenc": 24, "experi": 24, "think": [24, 28, 29, 34], "implicit": [24, 34], "particular": [24, 29, 31, 32, 34], "velocit": 24, "concecut": 24, "dull": 24, "ineffici": 24, "inher": [24, 28], "higher": 24, "jerk": 24, "concret": 24, "One": [24, 34], "past": 24, "thrid": 24, "subject": 24, "deriv": 24, "technic": [24, 34], "convent": [24, 28, 34], "consid": [24, 28, 32, 34], "od": 24, "word": [24, 34], "rho": [24, 34], "phi_": [24, 34], "textbf": [24, 34], "analog": [24, 27, 28, 34], "addition": [24, 28], "phi_j": 24, "With": [24, 34], "By": [24, 28], "shortest": 24, "skip": [24, 34], "certain": [24, 34], "cope": 24, "leaf": 24, "tablet": 24, "abstract": [24, 34], "virtual": [24, 26, 31, 34], "mathematicalprogram": 24, "mathematicalprogram_factor": 24, "behind": [24, 27], "necessarili": 24, "thought": [24, 34], "plug": 24, "replac": [24, 30], "nlopt": 24, "ipopt": 24, "cere": 24, "spars": [24, 34], "computation": 24, "casevia": 24, "individu": 24, "network": 24, "cliqu": 24, "spare": 24, "easi": 24, "watch": [24, 31], "folder": [24, 27], "sandbox": 24, "tutorialbas": 24, "grain": 24, "undo": 24, "setsquaredqaccvelhom": 24, "smoothest": 24, "harder": 24, "correl": 24, "better": [24, 28, 30, 34], "condit": 24, "hessian": [24, 34], "fs_positiondiff": 24, "fs_quaterniondiff": [24, 28], "setslow": 24, "ot_eq": 24, "ot_so": 24, "reduc": 24, "task": [24, 26, 28, 34], "struct": 24, "const": [24, 34], "stringa": 24, "input": 24, "objectivetyp": 24, "noarr": 24, "deltafromstep": 24, "deltatostep": 24, "seri": [24, 26, 28], "fs_posit": 24, "subtract": [24, 34], "endeffector": 24, "pmatrix": 24, "effect": [24, 28, 30, 32, 34], "third": [24, 30], "small": [24, 30, 31, 34], "section": [24, 29, 31, 34], "fourth": 24, "rare": 24, "refin": 24, "ptr": 24, "principl": [24, 34], "larg": [24, 34], "predefin": 24, "featuresylbol": 24, "uniqu": 24, "complic": 24, "cours": [24, 25, 27, 28, 29, 30, 31, 34], "modulo": 24, "flip": [24, 34], "account": [24, 34], "coverag": 24, "apart": 24, "among": [24, 34], "fs_qitself": 24, "itself": [24, 34], "setqaccvelhom": 24, "prefer": [24, 34], "fs_qlimit": 24, "2n": 24, "slack": 24, "met": 24, "violat": 24, "group": [24, 27, 34], "fs_accumulatedcollis": 24, "fs_distanc": 24, "margin": [24, 28], "cm": 24, "placement": 24, "liter": [24, 32, 34], "addswitch": 24, "creation": 24, "setupconfigur": 24, "mechan": [24, 34], "enabl": [24, 29, 34], "exchang": 24, "addcontact": 24, "blueprint": 24, "enumer": [24, 34], "conv_time2step": 24, "conv_step2tim": 24, "purpos": [24, 34], "distinct": 24, "scheme": 24, "decid": 24, "fast": [24, 30], "settimeoptim": 24, "0th": 24, "evolv": 24, "newtoneul": 24, "applic": [24, 34], "schedul": 24, "adapt": [24, 34], "evolut": 24, "arxiv": 24, "tech": 24, "ab": [24, 34], "1407": 24, "0414": 24, "docu": 24, "mainten": 24, "bind": 24, "ipynb": [24, 28], "reintegr": 25, "familiar": 25, "explor": [25, 32], "tricki": 25, "background": [25, 34], "lift": 25, "drop": [25, 29, 34], "hop": 25, "throw": 25, "bonu": [25, 29], "lesson": 25, "integr": [26, 34], "plan": [26, 31, 34], "mobil": [26, 34], "navig": 26, "major": 26, "spend": 26, "supervis": 26, "instructor": 26, "session": [26, 29, 31], "leverag": 26, "perceiv": 26, "student": 26, "expect": 26, "offlin": [26, 31], "homework": 26, "though": 26, "team": [26, 31], "challeng": 26, "www": [26, 31, 34], "de": [26, 34], "teach": [26, 34], "labcours": 26, "pdf": [26, 31], "04": [26, 29], "instruct": [26, 27], "readm": 27, "delivar": 27, "course3": [27, 28], "eg": 27, "qtcreator": 27, "pycharm": 27, "brows": 27, "debug": [27, 30], "pull": [27, 28, 29, 30], "futur": 27, "gitlab": 27, "organ": [27, 31], "fork": 27, "usr": 27, "subfold": 27, "makefil": 27, "too": [27, 31], "difficult": 27, "submodul": [27, 28, 29, 30], "pybind": 27, "checkout": 27, "branch": [27, 34], "cmakelist": 27, "deliver": 27, "isi": 27, "unfamiliar": 27, "io": [27, 29], "parallel": 27, "develop": [27, 29, 30], "member": 27, "least": [27, 34], "commit": 27, "hardli": 27, "plain": [27, 30], "_simul": 27, "Be": [27, 28], "abl": [27, 28, 34], "walk": 27, "j4": [28, 29, 30], "demonstr": [28, 31, 34], "minimalist": [28, 31, 34], "immedi": 28, "fulfil": [28, 34], "apriori": 28, "fs_scalarproductxz": 28, "zoom": 28, "combin": [28, 29, 34], "holist": 28, "paircollis": 28, "impress": 28, "neglect": 28, "fair": 28, "awai": 28, "even": [28, 34], "optima": 28, "obstacl": 28, "r_finger1": 28, "r_finger2": 28, "ingredi": 28, "myobj": 28, "shortcut": [28, 30], "realworld": [28, 30], "swept": [28, 30], "corner": 28, "primit": 28, "determin": [28, 32, 34], "sscvx": 28, "hull": 28, "sweep": 28, "understood": 28, "care": 28, "l": 28, "compon": [28, 34], "grippercent": 28, "greater": 28, "live": [28, 31, 34], "readi": 28, "minim": [28, 30, 34], "weak": 28, "repeat": [28, 30], "subscrib": 29, "fun": 29, "tutroal": 29, "readthedoc": 29, "en": 29, "latest": 29, "py_tutori": 29, "html": 29, "tracker": 29, "redish": 29, "binari": 29, "mask": 29, "contour": 29, "draw": 29, "identifi": 29, "yield": 29, "averag": 29, "significantli": 29, "fit": 29, "blur": 29, "discuss": [29, 31, 34], "largest": 29, "less": [29, 34], "foreground": 29, "cheat": 30, "stochast": 30, "failur": 30, "sp": 30, "pseudo": 30, "stack": [30, 34], "toward": [30, 34], "occlud": 30, "occlus": 30, "enough": [30, 31], "reliabl": 30, "success": 30, "opengripp": 30, "robustli": 30, "endless": 30, "long": 30, "column": [30, 34], "15cm": 30, "suffic": 30, "cf": 30, "email": 31, "latex": 31, "brief": [31, 34], "prepar": 31, "statement": 31, "eventu": [31, 34], "workplan": 31, "achiev": 31, "intend": 31, "effort": 31, "mention": [31, 34], "split": 31, "max": 31, "minut": 31, "spotlight": 31, "video": 31, "min": 31, "demo": 31, "briefli": 31, "softwar": 31, "talk": [31, 34], "mayb": 31, "fanci": 31, "persist": [31, 32], "explan": [31, 34], "interrupt": 31, "titl": 31, "clip": 31, "possibli": 31, "x5": 31, "cut": 31, "caption": 31, "youtub": 31, "1qymi": 31, "qon9m": 31, "sink": 31, "submit": 31, "confer": 31, "linux": 31, "super": 31, "bad": 31, "davinci": 31, "kdenliv": 31, "keyfram": 32, "insight": [32, 34], "lgpplayer": 32, "folfil": 32, "action": 32, "pddl": 32, "conffil": 32, "skeletonsolv": 32, "mathematicalproblem": 32, "sktfile": 32, "predic": 32, "produc": 32, "src_skeletonsolv": 32, "ex": 32, "block1": 32, "stable_": 32, "block2": 32, "stableon_": 32, "block3": 32, "block4": 32, "block5": 32, "box1": 32, "repetit": 32, "five": [32, 34], "concurr": 32, "workshop": 32, "stick": 32, "intellig": 34, "intro": 34, "craig": 34, "addison": 34, "weslei": 34, "york": 34, "1989": 34, "3rd": 34, "2006": 34, "steven": 34, "laval": 34, "cambridg": 34, "onlin": 34, "uiuc": 34, "edu": 34, "videolectur": 34, "oussama": 34, "khatib": 34, "net": 34, "oussama_khatib": 34, "focu": 34, "oliv": 34, "brock": 34, "menu": 34, "stefan": 34, "schaal": 34, "clmc": 34, "usc": 34, "teachingintroductiontoroboticssyllabu": 34, "theori": 34, "analyt": 34, "pid": 34, "chapter": 34, "chri": 34, "atkeson": 34, "cmu": 34, "cga": 34, "kdc": 34, "book": 34, "ewhitman1": 34, "pptx": 34, "af": 34, "academ": 34, "16311": 34, "bug": 34, "holonom": 34, "springer": 34, "handbook": 34, "bruno": 34, "siciliano": 34, "1007": 34, "978": 34, "319": 34, "32552": 34, "seciton": 34, "found": 34, "speak": 34, "clearli": 34, "simplif": 34, "secshap": 34, "landmark": 34, "cross": 34, "appendix": 34, "apptransform": 34, "cc": 34, "commonli": 34, "r_0": 34, "theta": 34, "underlin": 34, "never": 34, "sequenti": 34, "radian": 34, "doesn": 34, "figtransform": 34, "q_": 34, "circ": 34, "to2": 34, "to3": 34, "compos": 34, "concaten": 34, "ask": 34, "backward": 34, "somewhat": 34, "ill": 34, "situat": 34, "surpris": 34, "covari": 34, "contra": 34, "variant": 34, "children": 34, "ground": 34, "q_1": 34, "q_2": 34, "q_3": 34, "hspace": 34, "0pt": 34, "textrm": 34, "5pt": 34, "q_i": 34, "abbrevi": 34, "d_i": 34, "cccc": 34, "prismat": 34, "cylindr": 34, "spheric": 34, "lie": 34, "manifold": 34, "strict": 34, "pi": 34, "q_j": 34, "denavit": 34, "hartenberg": 34, "conceptu": 34, "cleaner": 34, "becam": 34, "stream": 34, "uncov": 34, "issu": 34, "perspect": 34, "textbook": 34, "seckinemat": 34, "t_i": 34, "r_i": 34, "_x": 34, "textsf": 34, "vec": 34, "construct": 34, "_i": 34, "e_x": 34, "e_i": 34, "e_z": 34, "basi": 34, "tensor": 34, "framec": 34, "dot": 34, "recal": 34, "auto": 34, "express": 34, "simpler": 34, "cover": 34, "p_j": 34, "a_j": 34, "Its": 34, "skew": 34, "obviou": 34, "eqquatvel": 34, "ang": 34, "rewrit": 34, "label": 34, "eqquatr": 34, "wise": 34, "written": 34, "insert": 34, "unusu": 34, "notion": 34, "trickier": 34, "eqquatjac": 34, "summar": 34, "x_j": 34, "r_j": 34, "eqquatjoint1": 34, "e_k": 34, "variat": 34, "induc": 34, "divis": 34, "necessari": 34, "annot": 34, "maintain": 34, "lazili": 34, "demand": 34, "syntact": 34, "sugar": 34, "rm": 34, "diag": 34, "relev": 34, "fuse": 34, "WITH": 34, "q_t": 34, "q_0": 34, "q_k": 34, "overload": 34, "tabfeatur": 34, "invert": 34, "address": 34, "eqiknlp": 34, "operatornam": 34, "_q": 34, "regular": 34, "satisfi": 34, "2_w": 34, "recommend": 34, "beyond": 34, "sort": 34, "rich": 34, "educ": 34, "secnlp": 34, "f_1": 34, "r_1": 34, "h_1": 34, "g_1": 34, "h_2": 34, "vdot": 34, "b_l": 34, "b_u": 34, "bf": 34, "orang": 34, "pgik": 34, "controlobject": 34, "mpc": 34, "lagrangian": 34, "strongli": 34, "tackl": 34, "eqsoft": 34, "2_c": 34, "norm": 34, "metric": 34, "undesir": 34, "investig": 34, "infti": 34, "canon": 34, "gauss": 34, "nabla_": 34, "approx": 34, "rewritten": 34, "sharp": 34, "eqik": 34, "woodburi": 34, "rh": 34, "jump": 34, "proport": 34, "due": 34, "lucki": 34, "stepsiz": 34, "sens": 34, "heurist": 34, "infinitesim": 34, "loos": 34, "drift": 34, "nullspac": 34, "det": 34, "rank": 34, "stretch": 34, "extend": 34, "soft": 34, "trade": 34, "off": 34, "restrict": 34, "ourselv": 34, "ones": 34, "raw": 34, "times3": 34, "orthonorm": 34, "r_2": 34, "transpos": 34, "unconstrain": 34, "thumb": 34, "rodrigu": 34, "formula": 34, "symmetr": 34, "ccc": 34, "w_3": 34, "w_2": 34, "w_1": 34, "eqrodriguez": 34, "exp": 34, "exponenti": 34, "element": 34, "diagon": 34, "outer": 34, "eqdotr": 34, "denot": 34, "context": 34, "negat": 34, "eqquat": 34, "_0": 34, "ij": 34, "comparison": 34, "tr": 34, "r_3": 34, "31": 34, "32": 34, "analogi": 34, "lh": 34, "iff": 34, "e_0": 34, "e_3": 34, "w_i": 34, "wasn": 34, "j_": 34, "expand": 34, "rx": 34, "ordinari": 34, "t_1": 34, "t_2": 34, "v_1": 34, "v_2": 34, "t_": 34, "rigor": 34, "a_b": 34, "regard": 34, "ato": 34, "convinc": 34, "yourself": 34, "boldsymbol": 34, "e_1": 34, "e_n": 34, "p_": 34, "nolimits_i": 34, "p_i": 34, "b_1": 34, "b_n": 34, "w_n": 34, "b_i": 34, "w_": 34, "sum_j": 34, "w_j": 34, "ji": 34, "sum_i": 34, "b_j": 34, "rightarrow": 34, "d_g": 34, "d_h": 34, "d_r": 34, "sampler": 34, "matter": 34, "functnio": 34, "uint": 34, "objectivetypea": 34, "featuretyp": 34, "bounds_lo": 34, "bounds_up": 34, "void": 34, "getinitializationsampl": 34, "previousoptima": 34, "getfhessian": 34, "throughout": 34, "anytyp": 34, "extens": 34, "parser": 34, "implic": 34, "url": 34, "embrac": 34, "ref": 34, "refgraph": 34, "extrins": 34, "u_x": 34, "u_i": 34, "u_d": 34, "diagram": 34, "drawn": 34, "paper": 34, "consequ": 34, "count": 34, "readabl": 34, "eqxtou": 34, "f_x": 34, "c_x": 34, "f_y": 34, "c_y": 34, "intrins": 34, "vertic": 34, "tan": 34, "cartesian": 34, "u_z": 34, "cal": 34, "lambda": 34, "bold": 34, "kr": 34, "subsum": 34, "fulli": 34, "_p": 34, "compar": 34, "decompos": 34, "rq": 34, "decomposit": 34, "agument": 34, "_t": 34}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"get": [0, 20, 23, 34], "start": [0, 5, 34], "quick": 0, "instal": 0, "avanc": 0, "info": 0, "tutori": [0, 15, 24], "notebook": 0, "welcom": 1, "robot": [1, 3, 5, 6, 10, 21, 34], "cours": [1, 26], "repo": 1, "content": 1, "indic": 1, "tabl": 1, "configur": [2, 9, 10, 15, 20, 21, 27, 34], "ad": [2, 20], "frame": [2, 6, 10, 20, 34], "load": [2, 10, 24], "exist": 2, "featur": [2, 9, 11, 20, 24, 28, 34], "comput": [2, 20], "geometr": 2, "properti": 2, "joint": [2, 20, 21, 34], "state": [2, 20, 23], "view": [2, 9], "interact": [2, 28], "releas": 2, "object": [2, 9, 28], "oper": [3, 28], "botop": [3, 15], "interfac": [3, 18, 34], "komo": [4, 15, 20, 24], "motion": [4, 28], "optim": [4, 11, 12, 13, 16, 24, 28], "minim": 4, "ik": [4, 28, 34], "exampl": [4, 6, 8, 9, 12, 17, 32], "more": [4, 9, 10, 11, 15, 24], "constraint": 4, "box": [4, 30], "grasp": [4, 8, 10, 30], "waypoint": 4, "path": [4, 9, 12, 13, 17, 24, 28], "real": [5, 24, 28], "advanc": [5, 9, 10, 14, 28], "complianc": 5, "forc": [5, 24], "torqu": 5, "feedback": 5, "first": [6, 24], "grap": 6, "imag": [6, 23, 34], "from": [6, 20, 21, 34], "webcam": 6, "2": [6, 24, 28], "convert": 6, "simul": [6, 18, 20, 23, 26, 27], "rgb": [6, 23], "d": [6, 28], "point": 6, "cloud": 6, "3": [6, 29], "us": [6, 21, 28, 34], "multipl": [6, 10], "camera": [6, 9, 34], "attach": [6, 10], "differ": 6, "sim": 8, "push": 8, "code": [9, 27, 34], "collis": [9, 10, 20, 28], "over": 9, "tupl": 9, "veloc": [9, 24, 28], "acceler": [9, 28], "need": 9, "test": [9, 24], "import": [10, 21, 34], "edit": [10, 20, 21, 34], "manipul": 10, "predefin": 10, "model": 10, "singl": 10, "how": [10, 24], "fake": 10, "enabl": 10, "disabl": 10, "queri": 10, "report": 10, "render": 10, "yaml": [10, 34], "dict": 10, "represent": 10, "invers": [11, 34], "kinemat": [11, 24, 34], "merg": [11, 13], "demo": 11, "explan": 11, "switch": [14, 24], "skeleton": [14, 32], "same": 14, "again": 14, "onli": [14, 24], "keyfram": 14, "round": 15, "1": [24, 27], "basic": [15, 27, 28], "problem": 24, "design": [], "nlp": [16, 34], "formul": 16, "solv": [16, 24], "find": 17, "direct": 18, "arrai": 19, "c": [20, 23, 27, 28, 30], "tor": [20, 23], "copi": 20, "clear": 20, "set": 20, "select": 20, "activ": 20, "anyth": 20, "you": [20, 24], "might": 20, "want": 20, "structur": 20, "function": 20, "creat": 20, "other": 20, "class": 20, "viewer": 20, "etc": 20, "g": [21, 22], "file": [21, 22, 34], "describ": [21, 34], "kinedit": [21, 34], "urdf": [21, 24, 34], "notat": [21, 34], "specifi": [21, 34], "transform": [21, 34], "type": [21, 34], "graph": [22, 34], "step": [23, 24], "physic": 23, "open": 23, "close": 23, "gripper": 23, "grip": 23, "depth": [15, 23, 34], "restart": 23, "previou": 23, "helper": [23, 24], "depthdata2pointcloud": 23, "learn": [24, 32], "k": [24, 34], "order": 24, "markov": 24, "No": 24, "dynam": [24, 34], "do": 24, "what": [24, 32], "i": [24, 32], "formal": [24, 34], "ar": 24, "main": 24, "defin": 24, "roughli": 24, "doe": 24, "spec": 24, "can": 24, "an": [24, 34], "practic": 24, "lesson": 24, "plai": 24, "around": 24, "rai": [24, 33, 34], "addobject": 24, "method": 24, "languag": 24, "core": 24, "vari": 24, "decis": 24, "variabl": 24, "per": 24, "time": 24, "slice": 24, "contact": 24, "summari": 24, "few": 24, "fundament": 24, "rest": 24, "phase": 24, "link": 24, "document": 24, "old": 25, "materi": [25, 34], "lab": 26, "simlab": [27, 28, 29, 30, 31], "exercis": [27, 28, 29, 30], "setup": 27, "b": [27, 28, 29, 30], "git": 27, "rough": 27, "familiar": 27, "explor": 28, "enforc": 28, "touch": 28, "e": 28, "tricki": 28, "inequ": 28, "scale": 28, "target": 28, "f": 28, "reactiv": 28, "space": 28, "control": 28, "opencv": 29, "color": 29, "base": 29, "track": 29, "background": 29, "substract": 29, "4": 30, "lift": 30, "drop": 30, "hop": 30, "ball": 30, "throw": 30, "bonu": 30, "project": 31, "propos": 31, "final": 31, "present": 31, "detail": 31, "about": 32, "lgp": 32, "python": 33, "api": 33, "lectur": 34, "script": 34, "introduct": 34, "refer": 34, "scene": 34, "descript": 34, "coordin": 34, "composit": 34, "tree": 34, "forest": 34, "parameter": 34, "vector": 34, "forward": 34, "jacobian": 34, "rotat": 34, "translat": 34, "quaternion": 34, "implement": 34, "engin": 34, "build": 34, "classic": 34, "deriv": 34, "pseudo": 34, "solut": 34, "On": 34, "fly": 34, "singular": 34, "placehold": 34, "3d": 34, "static": 34, "A": 34, "note": 34, "affin": 34, "style": 34, "world": 34, "homogen": 34, "matrix": 34, "p": 34, "calibr": 34, "estim": 34, "r": 34, "t": 34, "data": 34, "shape": 34, "1st": 15}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"Getting Started": [[0, "getting-started"]], "Quick install": [[0, "quick-install"]], "Avanced info": [[0, "avanced-info"]], "Installing the tutorial notebooks": [[0, "installing-the-tutorial-notebooks"]], "Welcome to the Robotics Course Repo": [[1, "welcome-to-the-robotics-course-repo"]], "Contents:": [[1, null]], "Indices and tables": [[1, "indices-and-tables"]], "Configurations": [[2, "Configurations"]], "Adding frames to a configuration": [[2, "Adding-frames-to-a-configuration"]], "Loading existing configurations": [[2, "Loading-existing-configurations"]], "Features: computing geometric properties": [[2, "Features:-computing-geometric-properties"]], "Joint and Frame State": [[2, "Joint-and-Frame-State"]], "View interaction and releasing objects": [[2, "View-interaction-and-releasing-objects"]], "Robot Operation (BotOp) interface": [[3, "Robot-Operation-(BotOp)-interface"]], "KOMO: Motion Optimization": [[4, "KOMO:-Motion-Optimization"]], "Minimal IK example": [[4, "Minimal-IK-example"]], "Example for more constraints: box grasping IK": [[4, "Example-for-more-constraints:-box-grasping-IK"]], "Waypoints example": [[4, "Waypoints-example"]], "Path example": [[4, "Path-example"]], "Starting with a real robot": [[5, "Starting-with-a-real-robot"]], "Advanced: Compliance & Force/Torque feedback": [[5, "Advanced:-Compliance-&-Force/Torque-feedback"]], "First example to grap images from a webcam": [[6, "First-example-to-grap-images-from-a-webcam"]], "2. Example to convert simulated RGB-D images into point clouds": [[6, "2.-Example-to-convert-simulated-RGB-D-images-into-point-clouds"]], "3. example to use multiple camera attached to different robot frames": [[6, "3.-example-to-use-multiple-camera-attached-to-different-robot-frames"]], "Example for grasping in Sim": [[8, "Example-for-grasping-in-Sim"]], "Example for pushing in sim": [[8, "Example-for-pushing-in-sim"]], "Features": [[9, "Features"], [9, "id1"]], "Code example for collision features": [[9, "Code-example-for-collision-features"]], "Advanced: Features over configuration tuples (path configurations, velocity/acceleration features)": [[9, "Advanced:-Features-over-configuration-tuples-(path-configurations,-velocity/acceleration-features)"]], "Camera views (needs more testing)": [[9, "Camera-views-(needs-more-testing)"]], "Examples": [[9, "Examples"]], "Objectives": [[9, "Objectives"]], "Importing, Editing & Manipulating Configurations": [[10, "Importing,-Editing-&-Manipulating-Configurations"]], "Editing": [[10, "Editing"]], "Predefined robot models": [[10, "Predefined-robot-models"]], "Loading multiple models in a single configuration": [[10, "Loading-multiple-models-in-a-single-configuration"]], "How to attach frames - faking grasps": [[10, "How-to-attach-frames---faking-grasps"]], "How to enable/disable collisions": [[10, "How-to-enable/disable-collisions"], [10, "id1"]], "More on collisions: Disable/enable, query, report": [[10, "More-on-collisions:-Disable/enable,-query,-report"]], "Rendering configurations": [[10, "Rendering-configurations"]], "Advanced: YAML and dict representations": [[10, "Advanced:-YAML-and-dict-representations"]], "Inverse Kinematics as Optimization (to be merged)": [[11, "Inverse-Kinematics-as-Optimization-(to-be-merged)"]], "Demo of features in Inverse Kinematics": [[11, "Demo-of-features-in-Inverse-Kinematics"]], "More explanations": [[11, "More-explanations"]], "Path optimization example": [[12, "Path-optimization-example"]], "Path Optimization (to be merged)": [[13, "Path-Optimization-(to-be-merged)"]], "Advanced: Switches & Skeletons": [[14, "Advanced:-Switches-&-Skeletons"]], "Same again, but only the keyframes:": [[14, "Same-again,-but-only-the-keyframes:"]], "Skeletons": [[14, "Skeletons"]], "Tutorials": [[15, "tutorials"]], "1st Round: Basics on Configurations, BotOp & KOMO": [[15, "st-round-basics-on-configurations-botop-komo"]], "More in depth": [[15, "more-in-depth"]], "Optimization (NLP formulation and solving)": [[16, "Optimization-(NLP-formulation-and-solving)"]], "Path finding example": [[17, "Path-finding-example"]], "Direct simulation interface": [[18, "Direct-simulation-interface"]], "Array": [[19, "array"]], "Configuration": [[20, "configuration"]], "C\u2019tor": [[20, "c-tor"], [23, "c-tor"]], "Adding frames to the configuration": [[20, "adding-frames-to-the-configuration"]], "Copy, clear": [[20, "copy-clear"]], "Joint state: get/set, and selecting active joints": [[20, "joint-state-get-set-and-selecting-active-joints"]], "Frame state": [[20, "frame-state"]], "Features: Anything you might want to compute from Configurations": [[20, "features-anything-you-might-want-to-compute-from-configurations"]], "Structural edits": [[20, "structural-edits"]], "Collision computations": [[20, "collision-computations"]], "Functions to create other classes (KOMO, Simulation, viewer, etc)": [[20, "functions-to-create-other-classes-komo-simulation-viewer-etc"]], ".g-files to describe robot configurations": [[21, "g-files-to-describe-robot-configurations"]], "Editing using kinEdit": [[21, "editing-using-kinedit"], [34, "editing-using-kinedit"]], "Import from URDF": [[21, "import-from-urdf"], [34, "import-from-urdf"]], "Notation to specify transformations": [[21, "notation-to-specify-transformations"], [34, "notation-to-specify-transformations"]], "Joint types": [[21, "joint-types"], [34, "joint-types"]], "Graph and .g-files": [[22, "graph-and-g-files"]], "Simulation": [[23, "simulation"]], "Stepping physics": [[23, "stepping-physics"]], "Opening & closing the gripper, and gripping state": [[23, "opening-closing-the-gripper-and-gripping-state"]], "Getting simulated RGB and depth images": [[23, "getting-simulated-rgb-and-depth-images"]], "Simulation states: restarting the simulation in previous states": [[23, "simulation-states-restarting-the-simulation-in-previous-states"]], "Helper: depthData2pointCloud": [[23, "helper-depthdata2pointcloud"]], "Learning KOMO (K-Order Markov Optimization)": [[24, "learning-komo-k-order-markov-optimization"]], "No dynamics? No velocities? How do you solve for dynamic problems?": [[24, "no-dynamics-no-velocities-how-do-you-solve-for-dynamic-problems"]], "What is KOMO?": [[24, "what-is-komo"]], "What is KOMO \u2013 formally?": [[24, "what-is-komo-formally"]], "What are the main steps to define a KOMO problem?": [[24, "what-are-the-main-steps-to-define-a-komo-problem"]], "Roughly, what does KOMO do with these specs?": [[24, "roughly-what-does-komo-do-with-these-specs"]], "Can KOMO only optimize paths?": [[24, "can-komo-only-optimize-paths"]], "Can I load an URDF?": [[24, "can-i-load-an-urdf"]], "First practical steps": [[24, "first-practical-steps"]], "Lesson 1: play around with $RAI/test/KOMO/tutorial": [[24, "lesson-1-play-around-with-rai-test-komo-tutorial"]], "Lesson 2: Learn the addObjective method and the \u201cLanguage of Features\u201d": [[24, "lesson-2-learn-the-addobjective-method-and-the-language-of-features"]], "Features are at the core": [[24, "features-are-at-the-core"]], "Varying decision variables per time slice: kinematic switches & force contacts": [[24, "varying-decision-variables-per-time-slice-kinematic-switches-force-contacts"]], "Summary: there are only a few fundamental methods in KOMO, the rest are helpers": [[24, "summary-there-are-only-a-few-fundamental-methods-in-komo-the-rest-are-helpers"]], "Steps, phase, real time, and time optimization": [[24, "steps-phase-real-time-and-time-optimization"]], "LINKS to more documentation": [[24, "links-to-more-documentation"]], "Old Material": [[25, "old-material"]], "Lab Course in Simulation": [[26, "lab-course-in-simulation"]], "SimLab Exercise 1 - Basic Setup": [[27, "simlab-exercise-1-basic-setup"]], "a) Code Setup": [[27, "a-code-setup"]], "b) Git Setup": [[27, "b-git-setup"]], "c) Rough familiarity with Simulation and Configuration": [[27, "c-rough-familiarity-with-simulation-and-configuration"]], "SimLab Exercise 2 - Motion": [[28, "simlab-exercise-2-motion"]], "a) Basic IK": [[28, "a-basic-ik"]], "b) Path Optimization & velocity/acceleration objectives": [[28, "b-path-optimization-velocity-acceleration-objectives"]], "c) Explore collision features, and enforce touch": [[28, "c-explore-collision-features-and-enforce-touch"]], "d) Interacting with \u201creal\u201d objects": [[28, "d-interacting-with-real-objects"]], "e) Advanced: Tricky use of inequalities, scaling, and target": [[28, "e-advanced-tricky-use-of-inequalities-scaling-and-target"]], "f) Advanced: Reactive Operational Space Control": [[28, "f-advanced-reactive-operational-space-control"]], "SimLab Exercise 3 - OpenCV": [[29, "simlab-exercise-3-opencv"]], "a) OpenCV - color-based tracking": [[29, "a-opencv-color-based-tracking"]], "b) OpenCV - background substraction": [[29, "b-opencv-background-substraction"]], "SimLab Exercise 4 - Grasp": [[30, "simlab-exercise-4-grasp"]], "a) Grasp, lift & drop a hopping ball": [[30, "a-grasp-lift-drop-a-hopping-ball"]], "b) Throw the ball": [[30, "b-throw-the-ball"]], "c) Bonus: \u2026and for a box": [[30, "c-bonus-and-for-a-box"]], "SimLab - Project Proposal and Final Presentation": [[31, "simlab-project-proposal-and-final-presentation"]], "Project Proposal": [[31, "project-proposal"]], "Presentation Details": [[31, "presentation-details"]], "Learning about Skeletons & LGP": [[32, "learning-about-skeletons-lgp"]], "What is LGP?": [[32, "what-is-lgp"]], "Example Skeletons": [[32, "example-skeletons"]], "rai python API": [[33, "rai-python-api"]], "Lecture Script": [[34, "lecture-script"]], "Introduction": [[34, "introduction"]], "Reference material": [[34, "reference-material"]], "Coding Getting Started": [[34, "coding-getting-started"]], "Scene & Robot Description": [[34, "scene-robot-description"]], "Transformations": [[34, "transformations"], [34, "id1"]], "Coordinates and Composition of Transformations": [[34, "coordinates-and-composition-of-transformations"]], "Scene Tree or Forest": [[34, "scene-tree-or-forest"]], "Kinematics": [[34, "kinematics"]], "Robots as Parameterized Trees": [[34, "robots-as-parameterized-trees"]], "Configuration & Joint Vector": [[34, "configuration-joint-vector"]], "Forward Kinematics": [[34, "forward-kinematics"]], "Jacobians": [[34, "jacobians"]], "Rotational Joint": [[34, "rotational-joint"]], "Translational Joint": [[34, "translational-joint"]], "Quaternion Joint": [[34, "quaternion-joint"]], "Implementing a Kinematic Engine": [[34, "implementing-a-kinematic-engine"]], "Features in rai": [[34, "features-in-rai"]], "Inverse Kinematics": [[34, "inverse-kinematics"]], "Building an NLP from features": [[34, "building-an-nlp-from-features"]], "Classical Derivation of Pseudo-Inverse Jacobian Solution": [[34, "classical-derivation-of-pseudo-inverse-jacobian-solution"]], "Pseudo-inverse Jacobian.": [[34, "pseudo-inverse-jacobian"]], "On the fly IK.": [[34, "on-the-fly-ik"]], "Singularity.": [[34, "singularity"]], "Placeholder": [[34, "placeholder"], [34, "id4"]], "3D Transformations, Rotations, Quaternions": [[34, "d-transformations-rotations-quaternions"]], "Rotations": [[34, "rotations"]], "Static transformations": [[34, "static-transformations"]], "Dynamic transformations": [[34, "dynamic-transformations"]], "A note on affine coordinate frames": [[34, "a-note-on-affine-coordinate-frames"]], "RAI references": [[34, "rai-references"]], "NLP interface": [[34, "nlp-interface"]], "Kinematic Features": [[34, "kinematic-features"]], "Graph-Yaml Files": [[34, "graph-yaml-files"]], "yaml-style files to describe robot configurations": [[34, "yaml-style-files-to-describe-robot-configurations"]], "Cameras": [[34, "cameras"]], "Image, Camera, & World Coordinates": [[34, "image-camera-world-coordinates"]], "Homogeneous coordinates & Camera Matrix P": [[34, "homogeneous-coordinates-camera-matrix-p"]], "Calibration as Estimating P,K,R,t from Depth Data": [[34, "calibration-as-estimating-p-k-r-t-from-depth-data"]], "Shapes": [[34, "shapes"]], "Kinematics formally": [[34, "kinematics-formally"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["getting_started", "index", "notebooks/1a-configurations", "notebooks/1b-botop", "notebooks/1c-komo", "notebooks/1d-real", "notebooks/botop2-realRobotStarters", "notebooks/botop3-vision", "notebooks/botop3-vision-toBeMerged", "notebooks/botop4-examples", "notebooks/core2-features", "notebooks/core3-configurations", "notebooks/komo1-IK-toBeMerged", "notebooks/komo2-PathOptimization", "notebooks/komo2-PathOptimization-toBeMerged", "notebooks/komo3-switches-skeletons", "notebooks/notebooks", "notebooks/opt1-basics", "notebooks/script5-PathFind", "notebooks/sim1-physics", "old/_Array", "old/_Configuration", "old/_ConfigurationFiles", "old/_Graph", "old/_Simulation", "old/komo", "old/old", "old/simlab", "old/simlab1", "old/simlab2", "old/simlab3", "old/simlab4", "old/simlab5", "old/skeleton", "rai", "script/script"], "filenames": ["getting_started.rst", "index.rst", "notebooks/1a-configurations.ipynb", "notebooks/1b-botop.ipynb", "notebooks/1c-komo.ipynb", "notebooks/1d-real.ipynb", "notebooks/botop2-realRobotStarters.ipynb", "notebooks/botop3-vision.ipynb", "notebooks/botop3-vision-toBeMerged.ipynb", "notebooks/botop4-examples.ipynb", "notebooks/core2-features.ipynb", "notebooks/core3-configurations.ipynb", "notebooks/komo1-IK-toBeMerged.ipynb", "notebooks/komo2-PathOptimization.ipynb", "notebooks/komo2-PathOptimization-toBeMerged.ipynb", "notebooks/komo3-switches-skeletons.ipynb", "notebooks/notebooks.rst", "notebooks/opt1-basics.ipynb", "notebooks/script5-PathFind.ipynb", "notebooks/sim1-physics.ipynb", "old/_Array.rst", "old/_Configuration.rst", "old/_ConfigurationFiles.rst", "old/_Graph.rst", "old/_Simulation.rst", "old/komo.rst", "old/old.rst", "old/simlab.rst", "old/simlab1.rst", "old/simlab2.rst", "old/simlab3.rst", "old/simlab4.rst", "old/simlab5.rst", "old/skeleton.rst", "rai.rst", "script/script.rst"], "titles": ["1. Getting Started", "Welcome to the Robotics Course Repo", "2.1.1. Configurations", "2.1.2. Robot Operation (BotOp) interface", "2.1.3. KOMO: Motion Optimization", "2.1.4. Starting with a real robot", "2.2.7. Starting with a real robot", "2.2.8. First example to grap images from a webcam", "<no title>", "2.2.9. Example for grasping in Sim", "2.2.1. Features", "2.2.2. Importing, Editing & Manipulating Configurations", "2.2.3. Inverse Kinematics as Optimization (to be merged)", "2.2.4. Path optimization example", "2.2.5. Path Optimization (to be merged)", "2.2.6. Advanced: Switches & Skeletons", "2. Tutorials", "2.2.11. Optimization (NLP formulation and solving)", "2.2.12. Path finding example", "2.2.10. Direct simulation interface", "4.7. Array", "4.3. Configuration", "4.4. .g-files to describe robot configurations", "4.5. Graph and .g-files", "4.6. Simulation", "4.2. Learning KOMO (K-Order Markov Optimization)", "4. Old Material", "4.1. Lab Course in Simulation", "4.1.1. SimLab Exercise 1 - Basic Setup", "4.1.2. SimLab Exercise 2 - Motion", "4.1.3. SimLab Exercise 3 - OpenCV", "4.1.4. SimLab Exercise 4 - Grasp", "4.1.5. SimLab - Project Proposal and Final Presentation", "Learning about Skeletons & LGP", "5. rai python API", "3. Lecture Script"], "terms": {"robot": [0, 2, 4, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34], "python": [0, 1, 3, 5, 8, 9, 10, 16, 22, 23, 25, 28, 29, 30, 35], "packag": [0, 5, 22, 25, 32, 35], "On": [0, 2], "standard": [0, 12, 14, 23, 24, 30, 35], "ubuntu": [0, 32, 35], "follow": [0, 3, 4, 5, 11, 21, 22, 24, 25, 28, 31, 32, 35], "should": [0, 1, 4, 5, 10, 21, 22, 24, 25, 28, 29, 32, 34, 35], "suffici": [0, 35], "sudo": [0, 35], "apt": [0, 35], "liblapack3": [0, 35], "freeglut3": [0, 35], "libglew": [0, 35], "dev": [0, 35], "python3": [0, 5, 8, 35], "pip": [0, 35], "m": [0, 21, 35], "user": [0, 1, 2, 3, 21, 24, 25, 27, 34, 35], "numpi": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 34, 35], "scipi": [0, 35], "A": [0, 2, 4, 5, 9, 10, 12, 21, 22, 23, 24, 25, 31, 32], "test": [0, 4, 22, 23, 26, 28, 29, 30, 35], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35], "c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 22, 23, 25, 26, 30, 34, 35], "from": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 28, 29, 31, 32, 33, 34], "import": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 25, 26, 28, 29, 34], "ry": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 34, 35], "print": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 34, 35], "version": [0, 8, 9, 25, 28, 34], "__version__": [0, 7, 9], "compil": [0, 1, 2, 5, 9, 19, 22, 25, 28, 34, 35], "rndscene": [0, 35], "real": [0, 1, 3, 4, 11, 13, 16, 18, 19, 24, 26, 28, 31, 34, 35], "The": [0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35], "doe": [0, 1, 11, 18, 21, 23, 26, 29, 30, 31, 35], "have": [0, 1, 2, 3, 4, 9, 17, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 34, 35], "driver": 0, "panda": [0, 2, 3, 11], "includ": [0, 2, 10, 11, 21, 23, 25, 27, 28, 32, 35], "therefor": [0, 21, 22, 24, 25, 31, 35], "onli": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 18, 20, 21, 22, 23, 26, 28, 29, 30, 32, 33, 34, 35], "support": [0, 5, 10, 11, 22, 28, 35], "simul": [0, 1, 3, 5, 6, 9, 11, 16, 26, 29, 30, 31, 34, 35], "mode": [0, 3, 12, 19, 33], "howev": [0, 2, 10, 12, 19, 21, 22, 25, 34, 35], "interfac": [0, 1, 4, 5, 11, 13, 16, 17, 18, 20, 21, 25, 29, 34], "code": [0, 1, 3, 5, 8, 17, 20, 21, 22, 24, 25, 26, 27, 30, 31, 32], "design": [0, 2, 4, 9, 12, 25, 29, 31], "so": [0, 2, 3, 4, 5, 9, 10, 11, 12, 14, 17, 21, 22, 23, 24, 25, 29, 30, 32, 33, 34, 35], "everyth": [0, 2, 7, 25, 31], "directli": [0, 3, 4, 10, 11, 23, 24, 25, 28, 29, 35], "transfer": 0, "all": [0, 1, 2, 4, 10, 12, 16, 17, 19, 21, 22, 23, 24, 25, 28, 29, 30, 34, 35], "you": [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 22, 24, 26, 28, 29, 30, 31, 32, 33, 34, 35], "do": [0, 1, 2, 3, 4, 24, 26, 27, 29, 30, 31, 35], "re": [0, 2, 3, 4, 10, 22, 24, 28, 31, 34, 35], "your": [0, 3, 5, 6, 11, 12, 25, 28, 29, 30, 31, 32, 34], "machin": [0, 27], "libfranka": 0, "librealsens": 0, "thi": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35], "done": [0, 3, 4, 5, 7, 9, 22, 25, 34, 35], "us": [0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 18, 20, 21, 23, 24, 25, 26, 28, 30, 31, 32, 33, 34], "pdflatex": 0, "sourc": [0, 5, 8, 35], "wheel": [0, 35], "creat": [0, 1, 2, 3, 9, 10, 11, 12, 23, 25, 26, 28, 29, 30, 32, 34, 35], "repo": [0, 28, 29, 30, 31], "hardest": 0, "part": [0, 21, 22, 25, 32, 34, 35], "wa": [0, 3, 5, 19, 20, 23, 25], "docker": [0, 35], "mani": [0, 3, 4, 5, 10, 12, 21, 24, 25, 33, 34, 35], "depend": [0, 3, 12, 25, 28, 34, 35], "static": [0, 3], "librari": [0, 5, 22, 25, 28, 35], "cento": 0, "onc": [0, 4, 25], "": [0, 2, 3, 4, 5, 10, 12, 14, 15, 18, 21, 22, 25, 29, 33, 35], "botop": [0, 1, 4, 5, 6, 7, 8, 9, 11, 13, 18, 19, 34], "lib": [0, 5, 12, 15, 17, 19, 20], "can": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 18, 21, 22, 23, 24, 26, 28, 29, 30, 31, 32, 33, 34, 35], "compat": 0, "manner": [0, 2, 10, 33, 35], "share": [0, 1, 21, 25], "docstr": 0, "tab": 0, "complet": [0, 17, 24, 35], "when": [0, 2, 3, 4, 7, 8, 10, 11, 12, 21, 22, 25, 29, 30, 31, 33, 34, 35], "an": [0, 1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 21, 22, 23, 24, 26, 28, 29, 31, 32, 33, 34], "id": [0, 8, 12], "e": [0, 2, 3, 4, 5, 10, 11, 12, 19, 21, 22, 23, 25, 26, 28, 31, 32, 34, 35], "g": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 21, 24, 25, 26, 28, 29, 31, 32, 33, 34, 35], "v": [0, 8, 10, 11, 19, 28, 29, 32, 35], "definit": [0, 4, 12, 28, 35], "want": [0, 1, 3, 4, 5, 10, 12, 22, 25, 26, 32, 35], "method": [0, 1, 3, 4, 5, 9, 10, 11, 12, 13, 18, 21, 23, 24, 26, 27, 28, 29, 31, 32, 34, 35], "modul": [0, 1, 4, 10, 11, 35], "pybind11": [0, 28], "nativ": 0, "lack": 0, "stubgen": 0, "one": [0, 3, 4, 9, 10, 12, 21, 22, 23, 25, 28, 29, 30, 33, 34, 35], "gener": [0, 1, 2, 3, 4, 12, 17, 21, 22, 25, 27, 29, 31, 32, 33, 34, 35], "someth": [0, 10, 32], "like": [0, 3, 10, 21, 22, 25, 32, 35], "header": [0, 25, 28], "file": [0, 1, 2, 10, 11, 21, 24, 25, 26, 28, 33, 34], "whole": [0, 10, 12, 22, 35], "call": [0, 2, 3, 4, 5, 10, 11, 12, 17, 21, 22, 23, 25, 28, 29, 31, 33, 34, 35], "ipi": 0, "That": [0, 2, 3, 4, 21, 25, 33, 35], "resid": 0, "local": [0, 3, 5, 29, 31, 35], "site": [0, 5], "next": [0, 22, 25, 28, 35], "py": [0, 8, 22, 25, 35], "work": [0, 4, 5, 10, 12, 22, 25, 27, 28, 29, 30, 32, 33, 35], "ensur": [0, 4, 21, 25, 35], "after": [0, 2, 5, 9, 13, 18, 21, 23, 25, 27, 31, 35], "class": [0, 1, 4, 10, 20, 23, 24, 25, 26, 34, 35], "If": [0, 2, 3, 5, 12, 21, 25, 28, 32, 35], "autocomplet": 0, "jupyt": [0, 16, 28, 35], "try": [0, 5, 10, 20, 22, 28, 29, 31, 32, 33, 35], "pip3": 0, "jedi": 0, "0": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 25, 29, 34, 35], "17": [0, 4, 9], "2": [0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 26, 27, 31, 32, 34, 35], "git": [0, 8, 11, 26, 29, 30, 31, 35], "clone": 0, "http": [0, 1, 10, 16, 22, 25, 27, 28, 30, 32, 35], "github": [0, 1, 10, 16, 22, 25, 27, 28, 35], "com": [0, 1, 10, 16, 22, 25, 27, 28, 32, 35], "marctoussaint": [0, 1, 10, 16, 22, 25, 27, 28, 35], "rai": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 21, 22, 23, 26, 28, 33], "cd": [0, 28, 29, 30, 31], "don": [0, 4, 7, 10, 32, 35], "t": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 18, 20, 21, 22, 25, 29, 32, 34], "yet": [0, 22, 24, 25, 28, 29, 35], "nbconvert": 0, "matplotlib": [0, 4, 8], "repositori": [1, 22, 25, 27, 28, 35], "three": [1, 4, 10, 12, 22, 25, 29, 35], "lectur": [1, 8, 27], "introduct": [1, 27], "To": [1, 4, 10, 11, 12, 21, 25, 33, 34, 35], "u": [1, 8, 28, 29, 32, 35], "stuttgart": 1, "lab": [1, 26, 28], "baxter": 1, "we": [1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 18, 19, 21, 22, 25, 27, 28, 29, 32, 35], "offer": 1, "some": [1, 2, 4, 5, 9, 10, 11, 12, 14, 21, 22, 23, 24, 25, 27, 28, 29, 32, 33, 34, 35], "year": [1, 27], "And": [1, 2, 4, 22, 24, 25, 29, 35], "now": [1, 2, 3, 4, 5, 12, 23, 25, 29, 35], "both": [1, 4, 9, 10, 21, 23, 31, 33, 34, 35], "tu": [1, 27, 35], "berlin": [1, 27, 35], "thei": [1, 9, 10, 12, 21, 22, 24, 25, 33, 34, 35], "same": [1, 3, 4, 10, 19, 21, 22, 24, 25, 29, 30, 34, 35], "core": [1, 21, 23, 24, 26, 28, 32, 34, 35], "quit": [1, 9, 25], "differ": [1, 3, 4, 10, 12, 13, 15, 21, 24, 25, 28, 29, 30, 34, 35], "instal": [1, 11, 28, 35], "setup": [1, 12, 14, 26, 27, 29], "exercis": [1, 26, 27, 35], "embed": 1, "below": [1, 4, 10, 20, 22, 25, 27, 29, 31, 32, 34, 35], "ar": [1, 2, 3, 4, 8, 9, 10, 11, 16, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35], "document": [1, 26, 30], "refer": [1, 3, 4, 5, 9, 10, 12, 24, 25, 34], "almost": [1, 4, 25], "ident": [1, 25, 34, 35], "how": [1, 2, 3, 4, 5, 12, 21, 22, 26, 28, 29, 30, 31, 32, 33, 35], "get": [1, 2, 4, 5, 10, 25, 26, 28, 29, 34], "start": [1, 2, 3, 12, 16, 18, 23, 25, 28, 29, 30, 32, 33, 34], "quick": 1, "avanc": 1, "info": [1, 34], "tutori": [1, 2, 3, 4, 26, 28, 29, 30, 34], "notebook": [1, 16, 28, 35], "1st": [1, 10, 35], "round": [1, 29], "basic": [1, 2, 3, 4, 11, 12, 20, 21, 25, 26, 27, 33, 35], "configur": [1, 3, 4, 5, 9, 12, 13, 14, 18, 23, 24, 25, 26, 29, 30, 33, 34], "komo": [1, 3, 9, 10, 13, 14, 15, 18, 26, 29, 31, 34, 35], "oper": [1, 5, 7, 9, 16, 21, 25, 26, 28, 33, 35], "motion": [1, 3, 6, 9, 13, 16, 18, 21, 25, 26, 27, 31, 34, 35], "optim": [1, 2, 3, 10, 15, 16, 18, 21, 22, 23, 26, 27, 31, 33, 34, 35], "more": [1, 2, 3, 5, 19, 21, 22, 24, 26, 29, 30, 32, 34, 35], "depth": [1, 5, 6, 7, 8, 10, 11, 26, 28, 30, 34], "featur": [1, 4, 5, 11, 13, 14, 16, 17, 26, 34], "edit": [1, 16, 23, 25, 26, 32], "manipul": [1, 5, 16, 25, 27, 33], "invers": [1, 3, 4, 16, 21, 31], "kinemat": [1, 2, 3, 4, 9, 11, 16, 19, 21, 22, 23, 24, 26, 34], "merg": [1, 8, 16], "path": [1, 8, 9, 11, 12, 15, 16, 17, 19, 21, 22, 26, 33, 34, 35], "exampl": [1, 2, 3, 16, 21, 22, 23, 25, 28, 29, 30, 32, 35], "advanc": [1, 4, 16, 25, 26], "switch": [1, 5, 6, 16, 26, 32, 33, 35], "skeleton": [1, 16], "first": [1, 2, 4, 11, 13, 16, 18, 22, 23, 26, 28, 29, 30, 32, 33, 34, 35], "grap": [1, 16, 29], "imag": [1, 3, 5, 6, 8, 10, 11, 16, 26, 28, 30, 34], "webcam": [1, 16, 30], "grasp": [1, 12, 15, 16, 25, 26, 27, 29, 34], "sim": [1, 3, 5, 13, 16, 18, 35], "direct": [1, 4, 5, 6, 10, 16, 18, 24, 31, 35], "nlp": [1, 3, 4, 9, 10, 13, 16, 18, 25, 34], "formul": [1, 2, 4, 10, 13, 16, 18, 21, 25, 35], "solv": [1, 3, 4, 9, 12, 13, 16, 18, 21, 26, 27, 29, 31, 34, 35], "find": [1, 4, 16, 21, 23, 25, 30, 31, 35], "script": [1, 4, 10, 11, 12, 22, 33], "materi": [1, 16], "scene": [1, 11, 21, 24, 25, 28, 29, 33], "descript": [1, 10, 11, 22, 23, 24, 32, 33, 34], "transform": [1, 2, 8, 12, 21, 24, 25, 26], "coordin": [1, 2, 8, 10, 12, 21, 25, 29, 30, 34], "composit": 1, "tree": [1, 2, 11, 16, 21, 22, 25, 34], "forest": 1, "parameter": [1, 2, 21], "joint": [1, 3, 4, 9, 10, 24, 25, 26, 29, 34], "vector": [1, 2, 4, 10, 12, 20, 21, 22, 25, 31, 34], "forward": [1, 2, 21, 24, 29, 34], "jacobian": [1, 10, 11, 21, 25, 29, 31, 34], "implement": [1, 3, 5, 10, 19, 21, 24, 25, 30, 31, 34], "engin": [1, 3, 9, 10, 11, 12, 21, 24, 34], "placehold": 1, "3d": [1, 8, 10, 12, 21, 24, 25, 29, 30], "rotat": [1, 10, 21, 22, 31], "quaternion": [1, 2, 10, 21, 22, 25, 29, 34], "graph": [1, 21, 22, 25, 26], "yaml": [1, 23], "style": [1, 34], "describ": [1, 3, 10, 20, 21, 25, 26, 29, 31, 32, 33], "camera": [1, 3, 8, 11, 24, 28, 30, 34], "world": [1, 2, 3, 8, 10, 12, 19, 21, 22, 25, 28, 29, 30, 31], "homogen": 1, "matrix": [1, 2, 4, 10, 21, 24, 25, 31, 34], "p": [1, 2, 4, 19, 22], "calibr": 1, "estim": [1, 3, 30, 32], "k": [1, 4, 10, 13, 14, 23, 26, 29, 34], "r": [1, 2, 8, 10, 11, 21, 22, 25], "data": [1, 3, 5, 6, 21, 22, 23, 25, 28, 34], "shape": [1, 2, 3, 4, 5, 10, 11, 13, 14, 18, 19, 21, 22, 25, 29, 34], "formal": [1, 4, 21, 26, 31], "old": [1, 16, 22, 25, 35], "simlab": [1, 26, 27], "1": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 26, 27, 29, 31, 32, 33, 34, 35], "3": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 29, 32, 34, 35], "opencv": [1, 7, 26, 27, 31], "4": [1, 2, 3, 4, 5, 8, 9, 10, 13, 15, 18, 22, 23, 24, 26, 27, 29, 35], "project": [1, 2, 10, 26, 27, 31, 35], "propos": [1, 26, 27], "final": [1, 4, 9, 12, 18, 21, 22, 25, 26, 27, 29, 31, 35], "present": [1, 26, 27], "learn": [1, 3, 12, 19, 26, 27, 32], "order": [1, 3, 4, 10, 13, 14, 21, 26, 29, 33, 34, 35], "markov": [1, 4, 10, 13, 26, 34, 35], "No": [1, 26], "dynam": [1, 3, 21, 24, 26, 34], "veloc": [1, 4, 9, 12, 21, 24, 26, 31, 34, 35], "problem": [1, 2, 3, 4, 9, 10, 12, 13, 18, 21, 23, 26, 27, 29, 32, 33, 34, 35], "what": [1, 4, 22, 23, 24, 26, 29, 32, 34, 35], "main": [1, 21, 26], "step": [1, 4, 5, 19, 22, 26, 29, 31, 32, 33, 34, 35], "defin": [1, 2, 3, 4, 9, 10, 11, 12, 17, 18, 21, 22, 24, 26, 29, 33, 34, 35], "roughli": [1, 21, 26, 28, 35], "spec": [1, 26], "load": [1, 3, 5, 9, 21, 22, 26, 35], "urdf": [1, 21, 26], "practic": [1, 26, 27, 33, 35], "vari": [1, 22, 26, 29, 35], "decis": [1, 12, 21, 26, 33], "variabl": [1, 4, 12, 21, 26], "per": [1, 4, 26, 29, 34, 35], "time": [1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 17, 18, 19, 21, 26, 27, 29, 32, 33, 34, 35], "slice": [1, 3, 12, 26, 29], "forc": [1, 21, 24, 26, 29, 34, 35], "contact": [1, 10, 11, 26, 34], "summari": [1, 26], "few": [1, 26], "fundament": [1, 21, 26, 35], "rest": [1, 26, 27], "helper": [1, 4, 26, 34, 35], "phase": [1, 3, 4, 11, 26, 29, 33, 34], "link": [1, 3, 4, 9, 21, 22, 24, 26, 35], "tor": [1, 26], "ad": [1, 3, 4, 5, 9, 10, 12, 25, 26, 29, 31, 33, 35], "frame": [1, 3, 4, 5, 8, 9, 10, 12, 22, 24, 25, 26, 28, 29, 33, 34], "copi": [1, 3, 4, 12, 25, 26, 28, 32, 34], "clear": [1, 2, 5, 24, 26, 32, 34], "state": [1, 3, 4, 10, 18, 19, 25, 26, 31, 34, 35], "set": [1, 2, 3, 4, 5, 10, 11, 12, 22, 24, 25, 26, 28, 29, 31, 34, 35], "select": [1, 10, 26], "activ": [1, 3, 4, 10, 25, 26], "anyth": [1, 25, 26, 35], "might": [1, 2, 5, 22, 25, 26, 29, 32, 33, 34, 35], "comput": [1, 4, 5, 8, 10, 11, 12, 13, 14, 17, 18, 25, 26, 29, 31, 32, 34, 35], "structur": [1, 3, 5, 6, 22, 23, 25, 26, 28, 32, 34, 35], "collis": [1, 9, 12, 14, 18, 22, 25, 26, 34, 35], "function": [1, 10, 17, 25, 26, 34, 35], "other": [1, 2, 10, 11, 12, 23, 25, 26, 29, 33, 35], "viewer": [1, 26, 34], "etc": [1, 2, 10, 12, 22, 23, 25, 26, 34, 35], "kinedit": [1, 21, 25, 26], "notat": [1, 20, 23, 25, 26], "specifi": [1, 4, 10, 12, 13, 21, 23, 24, 25, 26, 29, 34], "type": [1, 2, 4, 5, 12, 13, 14, 23, 25, 26, 29, 34], "physic": [1, 3, 11, 19, 21, 25, 26, 28, 34], "open": [1, 2, 3, 5, 9, 11, 13, 18, 22, 23, 26, 34, 35], "close": [1, 2, 3, 4, 5, 9, 10, 11, 21, 26, 29, 31, 34, 35], "gripper": [1, 2, 3, 4, 9, 15, 26, 29, 31, 34], "grip": [1, 26, 31], "rgb": [1, 8, 26, 28, 30], "restart": [1, 12, 22, 26, 35], "previou": [1, 12, 14, 23, 25, 26, 29, 31, 35], "depthdata2pointcloud": [1, 26, 34], "arrai": [1, 5, 17, 21, 23, 26, 34, 35], "api": [1, 20], "index": [1, 10, 35], "search": [1, 23, 35], "page": [1, 28, 32], "essenti": [2, 4, 21, 25, 35], "where": [2, 4, 9, 11, 12, 22, 23, 25, 29, 30, 31, 33, 34, 35], "each": [2, 4, 8, 9, 10, 12, 21, 22, 24, 25, 28, 30, 31, 32, 33, 34, 35], "repres": [2, 8, 12, 21, 22, 23, 25, 28, 34, 35], "inertia": [2, 21], "introduc": [2, 21, 22, 24, 25, 27, 35], "handl": [2, 5, 10, 11, 25, 35], "window": [2, 3, 7, 12, 14, 22, 34, 35], "np": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 19], "sep": [2, 5], "23": [2, 5, 35], "2023": [2, 5], "12": [2, 4, 9, 35], "43": 2, "33": [2, 35], "point": [2, 3, 4, 5, 6, 8, 9, 10, 21, 24, 25, 28, 29, 30, 31, 32, 33, 34, 35], "config": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 34, 35], "show": [2, 4, 8, 11, 12, 32, 35], "empti": [2, 5, 34], "tip": [2, 29], "make": [2, 3, 4, 5, 10, 22, 23, 25, 29, 30, 31, 32, 34, 35], "appear": [2, 3, 25, 33, 35], "alwai": [2, 3, 4, 5, 11, 12, 14, 19, 22, 24, 25, 29, 30, 31, 35], "top": [2, 12, 14, 25, 35], "right": [2, 8, 10, 29, 33, 35], "click": 2, "bar": [2, 35], "forrest": 2, "usual": [2, 4, 5, 10, 11, 22, 25, 35], "add": [2, 4, 7, 10, 11, 12, 14, 21, 24, 25, 28, 29, 34, 35], "model": [2, 5, 15, 21, 22, 23, 25, 29, 30, 31, 35], "let": [2, 3, 4, 5, 10, 12, 14, 25, 29, 31, 33, 35], "manual": [2, 3, 9, 21, 22, 25, 33, 35], "here": [2, 3, 4, 5, 7, 9, 10, 11, 12, 14, 18, 21, 22, 23, 25, 30, 31, 32, 33, 35], "f": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 23, 25, 26, 34, 35], "addfram": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 18, 19, 34, 35], "name": [1, 2, 4, 8, 10, 11, 12, 14, 19, 21, 22, 24, 25, 29, 34, 35], "setshap": [1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 18, 34, 35], "st": [1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 18, 19, 34, 35], "marker": [2, 3, 4, 8, 9, 34, 35], "size": [2, 4, 5, 7, 8, 9, 13, 14, 17, 18, 19, 22, 25, 29, 31, 34, 35], "setposit": [1, 2, 3, 4, 7, 8, 9, 12, 34], "5": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 22, 23, 25, 32, 34, 35], "setquaternion": [1, 2, 4, 8, 34], "normal": [2, 4, 10, 21, 23, 25, 35], "intern": [2, 3, 12, 22, 24, 25, 34, 35], "po": [2, 3, 12, 14, 19, 34, 35], "getposit": [1, 2, 3, 4, 7, 8, 29, 34, 35], "quat": [2, 34, 35], "getquaternion": [1, 2, 8, 34, 35], "95782629": 2, "28734789": 2, "second": [2, 25, 29, 30, 35], "parent": [2, 5, 10, 11, 14, 19, 21, 22, 23, 34, 35], "hing": [2, 21, 22, 35], "setjoint": [1, 2, 34], "jt": [1, 2, 22, 34, 35], "hingex": [2, 22, 34, 35], "setcolor": [1, 2, 4, 5, 7, 8, 9, 12, 13, 18, 34, 35], "sinc": [2, 4, 8, 35], "articul": [2, 22, 35], "q": [2, 3, 4, 5, 6, 7, 10, 11, 22, 25, 34, 35], "getjointst": [1, 2, 3, 4, 10, 11, 13, 14, 18, 21, 34, 35], "setjointst": [1, 2, 3, 4, 10, 11, 12, 13, 18, 21, 34, 35], "ball": [2, 22, 26, 35], "sphere": [2, 8, 9, 12, 22, 29, 30, 31, 34, 35], "setrelativeposit": [1, 2, 3, 13, 18, 34, 35], "box": [2, 9, 10, 15, 26, 29, 34, 35], "ssbox": [2, 4, 7, 8, 9, 13, 14, 18, 19, 29, 34, 35], "02": [2, 3, 8, 13, 14, 18, 19, 22, 27, 28, 35], "capsul": [2, 22, 29, 34, 35], "05": [2, 7, 8, 9, 12, 14, 22, 31, 34, 35], "rang": [2, 3, 4, 7, 8, 11, 13, 18, 19], "100": [2, 3, 4, 9, 19], "co": [2, 35], "sleep": [2, 3, 4, 7, 11, 13, 18, 19], "addfil": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 34, 35], "raipath": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 18, 34, 35], "prefix": [2, 11, 25], "move": [1, 2, 3, 5, 9, 10, 11, 12, 25, 28, 29, 30, 34, 35], "side": [2, 3], "r_": [2, 35], "base_r": 2, "getfram": [1, 2, 4, 7, 8, 11, 34], "r_panda_bas": 2, "full": [2, 10, 12, 20, 22, 25, 29, 33, 34, 35], "getjointnam": [1, 2, 10, 34], "getframenam": [1, 2, 34], "anim": [2, 11, 21, 28, 34, 35], "q0": [2, 3, 13, 18, 22, 35], "20": [2, 3, 4, 13, 14, 25, 27, 34], "random": [2, 3, 4, 12], "randn": [2, 3, 4], "For": [2, 4, 9, 12, 21, 25, 29, 30, 32, 35], "everi": [2, 30, 35], "queri": [2, 3, 10, 24, 29, 34, 35], "its": [2, 10, 11, 12, 21, 22, 25, 28, 33, 34, 35], "pose": [2, 3, 4, 9, 10, 18, 21, 22, 24, 25, 29, 31, 34, 35], "r_gripper": [2, 7, 11, 13, 18, 29, 31, 33, 35], "rot": [2, 35], "getrotationmatrix": [1, 2, 8, 34], "abov": [2, 3, 4, 5, 10, 11, 29, 31, 33, 34, 35], "provid": [2, 10, 17, 20, 25, 35], "ani": [2, 4, 5, 21, 22, 23, 25, 29, 32, 35], "wai": [2, 3, 10, 12, 14, 21, 23, 24, 25, 29, 34, 35], "differenti": [2, 10, 12, 17, 22, 25, 34, 35], "often": [2, 4, 10, 12, 21, 24, 25, 35], "understand": [2, 23, 29, 35], "foundat": 2, "which": [2, 3, 4, 5, 10, 11, 12, 19, 21, 22, 23, 24, 25, 28, 29, 30, 31, 33, 34, 35], "ll": [2, 3, 27, 28, 35], "need": [2, 3, 5, 7, 12, 16, 17, 19, 22, 24, 25, 28, 29, 33, 34, 35], "lot": [2, 25, 32], "evalu": [1, 2, 4, 10, 21, 25, 34, 35], "y": [2, 4, 5, 6, 8, 9, 10, 11, 17, 22, 23, 24, 29, 35], "j": [2, 5, 6, 8, 11, 17, 23, 25, 34, 35], "eval": [1, 2, 3, 4, 5, 6, 9, 10, 11, 34, 35], "posit": [2, 3, 5, 6, 7, 9, 10, 12, 15, 21, 22, 24, 25, 29, 30, 34, 35], "njacobian": [2, 35], "neg": [2, 10, 11, 25, 29, 35], "distanc": [2, 4, 10, 12, 14, 21, 25, 29, 34, 35], "between": [2, 3, 4, 10, 11, 12, 21, 22, 24, 25, 29, 32, 34, 35], "two": [2, 3, 4, 9, 10, 12, 21, 22, 24, 25, 28, 29, 32, 33, 34, 35], "convex": [2, 10, 25, 29, 34, 35], "origin": [2, 10, 25, 29, 30, 35], "negdist": [2, 34], "panda_coll7": 2, "r_panda_coll7": 2, "x": [2, 4, 8, 9, 10, 13, 17, 18, 19, 21, 22, 23, 24, 25, 29, 31, 33, 34, 35], "axi": [2, 4, 10, 22, 29, 31, 35], "given": [2, 4, 10, 11, 18, 21, 24, 25, 29, 33, 34, 35], "vectorx": [2, 10, 34, 35], "n": [2, 5, 8, 10, 11, 17, 21, 23, 25, 34, 35], "ha": [2, 3, 4, 10, 11, 12, 21, 22, 24, 25, 29, 30, 31, 35], "7d": [2, 10, 34, 35], "z": [2, 4, 8, 10, 12, 22, 23, 29, 31, 35], "qw": 2, "qx": 2, "qy": 2, "qz": 2, "7": [2, 3, 4, 5, 9, 10, 12, 21, 22, 23, 25, 29, 34, 35], "th": [2, 25], "row": [2, 35], "also": [2, 3, 4, 5, 10, 11, 12, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 33, 34, 35], "mean": [2, 4, 5, 10, 12, 22, 23, 25, 29, 30, 33, 34, 35], "rel": [2, 9, 12, 21, 22, 25, 34, 35], "transfrom": 2, "child": [2, 11, 21, 22, 25, 34, 35], "degre": [2, 11, 21, 22, 25, 34, 35], "freedom": [2, 11, 21, 25, 34, 35], "dof": [2, 10, 21, 22, 24, 25, 34, 35], "total": [2, 3, 4, 21, 32, 34, 35], "dimension": [2, 10, 12, 17, 25, 34, 35], "impli": [2, 4, 10, 29, 35], "chain": [2, 22, 25, 35], "allow": [2, 3, 4, 10, 11, 21, 22, 23, 24, 25, 29, 31, 34, 35], "inconsist": [2, 21, 35], "imposs": 2, "w": [2, 8, 10, 24, 25, 35], "assign": 2, "onto": [2, 10, 25, 35], "actual": [2, 4, 10, 21, 22, 23, 24, 25, 31, 33, 35], "contain": [2, 4, 23, 24, 25, 35], "store": [2, 4, 12, 18, 21, 24, 30, 35], "p_x": [2, 8], "p_y": [2, 8], "p_z": 2, "q_w": 2, "q_x": 2, "q_y": 2, "q_z": 2, "x0": [2, 12, 14], "getframest": [1, 2, 5, 12, 14, 19, 34], "veri": [2, 3, 13, 25, 28, 32, 33, 35], "question": [2, 32, 35], "thing": [2, 21, 22, 25, 31, 32, 33, 35], "number": [2, 4, 24, 25, 29, 34, 35], "setframest": [1, 2, 12, 14, 19, 21, 34], "broke": 2, "global": [2, 3, 5, 24, 34, 35], "overwrit": [2, 3, 21, 33, 34, 35], "non": [2, 3, 4, 12, 17, 22, 25, 34, 35], "These": [2, 16, 25, 35], "reset": [2, 19, 25], "view_clos": [1, 2, 9, 11, 34], "still": [2, 3, 24, 25, 27, 31, 34, 35], "paus": [2, 34], "fals": [2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 18, 23, 34, 35], "messag": [2, 3, 5, 9, 34], "wait": [1, 2, 3, 5, 34], "keypress": [2, 3], "block": [2, 3, 19, 22, 33, 35], "true": [2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 17, 18, 23, 34, 35], "press": [2, 5, 34, 35], "kei": [2, 3, 4, 5, 23, 25, 34, 35], "chr": 2, "screenshot": 2, "img": [2, 7], "view_getscreenshot": [1, 2, 34], "del": [2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 18], "interact": [3, 21, 26, 32], "narrow": [3, 19], "spline": [3, 4, 9, 34, 35], "complianc": [3, 34], "around": [3, 5, 10, 11, 22, 26, 29, 32, 35], "getimag": 3, "grab": [3, 5, 7, 12, 14, 24, 30], "cloud": [3, 30, 34], "interest": [3, 10, 25, 29, 35], "latter": [3, 29, 35], "gym": 3, "environ": [3, 19, 21, 28], "look": [3, 22, 35], "thread": [3, 19], "process": [3, 24, 25, 30], "mimic": [3, 34, 35], "specif": [3, 10, 12, 22, 25, 27, 28, 29, 30, 35], "swappabl": 3, "run": [3, 13, 18, 19, 25, 28, 30, 32], "pure": 3, "object": [3, 4, 9, 11, 12, 13, 14, 19, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35], "pd": [3, 34], "motor": [3, 19, 34, 35], "paramet": [3, 5, 32, 34, 35], "cfg": [3, 5, 6], "behav": 3, "botim": 3, "physx": [3, 5, 6, 9, 13, 18, 19, 21, 24, 34], "multibodi": [3, 9], "params_add": [1, 3, 5, 6, 9, 13, 18, 34], "botsim": [3, 5, 6, 9, 13, 18], "verbos": [3, 4, 5, 6, 9, 10, 13, 15, 18, 24, 34], "motorkp": [3, 5, 6, 9, 13, 18], "10000": [3, 5, 6, 9, 13, 18, 34], "motorkd": [3, 5, 6, 9, 13, 18], "1000": [3, 5, 6, 9, 13, 18, 34], "big": [3, 25, 35], "params_print": [1, 3, 5, 6, 9, 34], "cpp": [3, 5, 9, 10, 35], "99": [3, 5], "34": [3, 5, 9], "hello": [3, 5, 9, 28], "39": [3, 4, 5, 9], "robotmodel": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 22, 25, 28, 34, 35], "scenario": [3, 4, 5, 6, 7, 8, 9, 11, 13, 18, 25, 35], "pandasingl": [3, 4, 5, 6, 9], "view": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 18, 19, 21, 29, 34, 35], "workspac": [3, 5, 6, 34], "NOT": [3, 5, 6], "THE": [3, 5, 6, 28], "simult": [3, 5, 6], "would": [3, 4, 10, 12, 21, 25, 29, 32, 35], "commun": 3, "lead": [3, 4, 25, 35], "explicit": [3, 25, 35], "bot": [3, 5, 6, 7, 8, 9, 13, 18], "note": [3, 4, 5, 10, 11, 13, 18, 21, 25, 29, 30, 31, 33], "arm": [3, 14, 25, 29, 31, 35], "go": [3, 27, 34], "down": [3, 5, 10, 15, 35], "free": [3, 14, 18, 22, 31, 34, 35], "float": [3, 5, 25, 29, 34], "kin_physx": 3, "physxinterfac": 3, "768": 3, "addground": 3, "238": 3, "239": 3, "within": [3, 21, 24, 30, 34, 35], "addlink": 3, "254": 3, "tabl": [3, 10, 11, 13, 15, 18, 22, 25, 35], "addmultibodi": 3, "466": 3, "base": [3, 10, 11, 18, 21, 23, 25, 26, 28, 34, 35], "l_panda_bas": 3, "486": 3, "l_panda_link0_0": 3, "l_panda_joint1": 3, "l_panda_link1_0": 3, "l_panda_joint2": 3, "l_panda_link2_0": 3, "bellybutton": 3, "l_panda_joint3": 3, "l_panda_link3_0": 3, "l_panda_joint4": 3, "l_panda_link4_0": 3, "l_panda_joint5": 3, "l_panda_link5_0": 3, "l_panda_joint6": 3, "l_panda_link6_0": 3, "l_panda_joint7": 3, "l_panda_link7_0": 3, "l_panda_hand_0": 3, "l_panda_finger_joint1": 3, "l_panda_leftfinger_0": 3, "l_panda_finger_joint2": 3, "l_panda_rightfinger_0": 3, "592": 3, "805": 3, "home": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 18, 25, 28, 29, 30, 31, 34, 35], "q1": [3, 22, 35], "2nd": [3, 10, 22, 25, 29, 35], "bend": 3, "back": [3, 10, 12, 35], "forth": 3, "them": [3, 4, 5, 9, 10, 12, 21, 22, 27, 30, 32, 35], "qhome": [3, 4, 34], "get_qhom": [1, 3, 5, 34], "moveto": [1, 3, 5, 9, 34], "simplest": [3, 25, 29], "current": [3, 5, 18, 22, 24, 25, 29, 31, 34, 35], "target": [3, 4, 10, 12, 22, 25, 26, 34, 35], "It": [3, 4, 19, 21, 22, 24, 25, 28, 35], "kept": 3, "sync": [1, 3, 5, 6, 7, 8, 9, 13, 18, 34], "till": 3, "finish": 3, "check": [3, 4, 5, 10, 12, 25, 34, 35], "time_til_end_of_reference_splin": 3, "meanwhil": 3, "stai": [3, 4, 29], "ed": [3, 5], "6": [3, 4, 5, 9, 10, 23, 35], "while": [3, 5, 6, 7, 9, 11, 13, 18, 21, 25, 35], "gettimetoend": [1, 3, 9, 13, 18, 34], "append": [3, 4, 8, 11, 12, 14, 19, 23, 34, 35], "As": [3, 12, 23, 24, 25, 29, 35], "sever": [3, 30, 34, 35], "timetoend": 3, "073524058876411": 3, "0957189420649807": 3, "191437884129961": 3, "becom": [3, 10, 11, 12, 21, 25, 34, 35], "reactiv": [3, 26, 34, 35], "smoothli": [3, 9, 25], "high": [3, 25, 34], "frequenc": 3, "randomli": 3, "track": [3, 26, 31, 34], "8": [3, 4, 5, 7, 8, 9, 11, 12, 25, 32, 34], "cen": 3, "9": [3, 4, 9, 14, 15, 35], "about": [3, 21, 22, 25, 27, 29, 30, 32, 35], "later": [3, 4, 25, 30, 32, 35], "def": [3, 17], "ik": [3, 9, 12, 13, 18, 26, 31, 34], "delta_t": 3, "addobject": [1, 3, 4, 9, 12, 13, 14, 15, 18, 19, 26, 29, 34, 35], "jointstat": [3, 4, 34], "ot": [1, 3, 4, 9, 12, 13, 14, 15, 17, 18, 34, 35], "1e": [3, 4, 9, 11, 13, 15, 18, 25, 35], "cost": [3, 4, 12, 13, 15, 25, 34, 35], "positiondiff": [3, 4, 10, 11, 12, 13, 14, 15, 18, 34, 35], "l_gripper": [3, 4, 5, 6, 9, 11, 13, 18, 35], "eq": [3, 4, 9, 10, 12, 13, 14, 15, 18, 25, 34, 35], "1e1": [3, 4, 9, 13, 18, 25, 35], "constraint": [3, 9, 12, 13, 15, 21, 25, 29, 33, 35], "ret": [3, 4, 7, 9, 13, 18, 35], "nlp_solver": [1, 3, 4, 9, 13, 17, 18, 34, 35], "return": [3, 4, 5, 9, 10, 13, 17, 21, 24, 29, 30, 34, 35], "getpath": [1, 3, 4, 9, 13, 18, 34, 35], "just": [3, 4, 10, 11, 21, 22, 24, 25, 31, 32, 34, 35], "solut": [3, 4, 9, 12, 13, 14, 18, 25, 28, 33], "send": [3, 24, 32], "10": [3, 4, 8, 9, 11, 14, 22, 25, 32, 34, 35], "98": 3, "q_target": [3, 34], "005057": 3, "feasibl": [3, 4, 9, 34], "00789171": 3, "ineq": [3, 4, 9, 10, 12, 13, 14, 18, 25, 34, 35], "00138392": 3, "001435": 3, "0055078": 3, "00038073": 3, "001453": 3, "00485786": 3, "0031066": 3, "000382": 3, "00552496": 3, "00285066": 3, "000871": 3, "00481289": 3, "000176548": 3, "000181": 3, "00416384": 3, "00404598": 3, "001811": 3, "00394648": 3, "00118522": 3, "000637": 3, "00410849": 3, "00429565": 3, "001591": 3, "00454469": 3, "000211266": 3, "000784": 3, "00470588": 3, "00357698": 3, "000942": 3, "00478467": 3, "00148874": 3, "001108": 3, "00457452": 3, "00162474": 3, "001451": 3, "005894": 3, "000439926": 3, "002882": 3, "00540869": 3, "0027726": 3, "001624": 3, "00720508": 3, "00069492": 3, "001267": 3, "0075089": 3, "000505518": 3, "002128": 3, "0078162": 3, "0019024": 3, "001489": 3, "00831903": 3, "00241169": 3, "005757": 3, "0106921": 3, "000467631": 3, "001208": 3, "0115667": 3, "000478951": 3, "reativ": 3, "increas": 3, "agress": 3, "penal": [3, 4, 25, 29], "durat": [3, 25], "cubic": 3, "11": [3, 4, 9, 35], "keep": [3, 5, 22, 25, 31, 34, 35], "idl": 3, "sec": [3, 9], "timecost": [3, 34], "good": [3, 10, 31, 32, 35], "practis": 3, "abort": 3, "execut": [3, 4, 12, 25, 33, 34], "In": [3, 4, 5, 9, 10, 12, 21, 22, 24, 25, 27, 29, 30, 31, 32, 35], "break": [3, 5, 6, 7, 22, 34, 35], "loop": [3, 21, 29, 30, 31, 35], "til": 3, "endoftim": 3, "rais": 3, "getkeypress": [1, 3, 5, 6, 34], "ord": [3, 5, 6, 7], "movement": [3, 4], "grippermov": [1, 3, 5, 34], "_left": [3, 5, 6, 9, 34], "width": [3, 5, 7, 10, 11, 23, 24, 34, 35], "gripperdon": [1, 3, 5, 9, 34], "075": [3, 34], "properli": [3, 5, 10, 22, 24, 29, 35], "been": [3, 9, 24, 25], "far": [3, 11, 25, 29, 31, 35], "give": [3, 7, 25, 28, 29, 32, 35], "idea": 3, "exist": [3, 5], "framework": 4, "special": [4, 20, 21, 22, 23, 25, 35], "case": [4, 5, 6, 12, 21, 24, 25, 29, 35], "over": [4, 9, 13, 21, 25, 30, 33, 35], "singl": [4, 10, 12, 13, 21, 25, 29, 34, 35], "rather": [4, 12, 18, 20, 21, 22, 23, 25, 31, 35], "than": [4, 12, 18, 20, 21, 22, 25, 30, 35], "realiz": [4, 29, 30, 31, 33], "rough": [4, 26, 32], "fine": [4, 25, 31, 34], "linear": [4, 9, 17, 20, 25, 35], "mathemat": [4, 10, 17, 21, 25, 33, 34, 35], "program": [4, 10, 17, 21, 25, 33, 34, 35], "25": [4, 9, 14, 32], "06": [4, 31], "005": [4, 7, 8, 9], "setcontact": [1, 4, 7, 8, 9, 11, 34], "list": [4, 10, 11, 22, 23, 25, 33, 34, 35], "constructor": 4, "declar": [4, 10, 22, 24, 25, 35], "scale": [4, 10, 12, 13, 25, 26, 34, 35], "explain": [4, 12, 19, 22, 25, 28, 29, 32, 35], "argument": [4, 13, 24, 25, 29, 33, 34, 35], "signatur": [4, 17, 35], "interv": [4, 12, 21, 25, 29, 33, 35], "subset": [4, 25, 34, 35], "irrelev": 4, "symbol": [4, 10, 25, 33, 35], "see": [4, 5, 8, 10, 21, 25, 29, 30, 31, 32, 34, 35], "whether": [4, 5, 10, 23, 25, 35], "sum": [4, 10, 11, 12, 25, 34, 35], "squar": [4, 10, 12, 25, 34, 35], "multipli": [4, 25], "offset": [4, 8, 35], "substract": [4, 26], "befor": [4, 12, 24, 25, 29, 30, 31, 34, 35], "pleas": [4, 28, 32, 35], "detail": [4, 21, 25, 26, 34, 35], "solver": [4, 9, 10, 17, 24, 25, 29, 34, 35], "000823": 4, "00414146": 4, "00188382": 4, "augmentedlagrangian": [4, 9], "bound": [4, 9, 25, 34, 35], "ye": [4, 25, 35], "mu": [4, 9], "nu": [4, 9], "mulb": [4, 9], "newton": [4, 9, 17, 25, 34, 35], "initi": [4, 9, 12, 21, 22, 24, 25, 29, 34, 35], "16": [4, 9], "0447": 4, "alpha": [4, 9, 35], "beta": [4, 9], "delta": [4, 9, 35], "55808": 4, "accept": [4, 9], "686083": 4, "144223": 4, "0170221": 4, "0221449": 4, "00418093": 4, "stop": [1, 4, 7, 9, 34], "absmax": [4, 9], "lt": [4, 5, 9], "option": [4, 5, 9, 10, 12, 24, 25, 34, 35], "stoptoler": [4, 9, 13, 18, 34, 35], "00414937": 4, "h": [4, 8, 9, 10, 23, 24, 25, 28, 35], "00951471": 4, "373024": 4, "deltaconverg": [4, 9], "00437027": 4, "00240133": 4, "00413537": 4, "stoppingcriterion": [4, 9], "01": [4, 5, 7, 9, 19, 27, 28, 31, 34, 35], "displai": [4, 5, 7, 12, 13, 18, 22, 24, 25, 30, 34, 35], "overlai": [4, 8, 35], "sequenc": [4, 9, 13, 21, 25, 29, 33, 35], "len": [4, 7, 13, 35], "ndarrai": [4, 34], "gt": [4, 5], "destroi": [4, 5, 10, 11, 34], "Then": [4, 10, 12, 18, 22, 25, 28, 29, 30, 31, 35], "clever": 4, "realist": [4, 32], "accumulatedcollis": [4, 9, 10, 11, 13, 14, 18, 34, 35], "jointlimit": [4, 9, 10, 13, 14, 18, 34, 35], "scalarproductxx": [4, 10, 15, 34, 35], "scalarproductxz": [4, 10, 12, 34], "l_palm": 4, "scalarproduct": [4, 10, 29, 35], "connect": [4, 5, 23, 35], "finger": [4, 10, 19, 29], "orthogon": [4, 10, 31, 35], "ax": [4, 8, 10, 35], "oppos": [4, 34], "plane": [4, 10, 35], "could": [4, 5, 21, 29, 32, 33, 35], "flag": [4, 10, 11], "els": [4, 24, 35], "infeas": [4, 35], "001353": 4, "00552548": 4, "00124449": 4, "reus": 4, "instanc": [4, 12, 21, 25, 27, 29, 35], "ok": [4, 10, 32, 35], "aspect": 4, "chang": [4, 5, 7, 10, 11, 12, 21, 22, 25, 28, 29, 30, 34, 35], "resolv": [4, 32], "p0": 4, "13": [4, 9, 12, 35], "updaterootobject": [1, 4, 34], "root": [4, 21, 22, 34, 35], "001635": 4, "00352417": 4, "00216173": 4, "006638": 4, "0207398": 4, "00141503": 4, "006179": 4, "00694048": 4, "00205847": 4, "004424": 4, "0152197": 4, "000563407": 4, "008229": 4, "0104266": 4, "00210566": 4, "008263": 4, "0165911": 4, "00175033": 4, "009852": 4, "019162": 4, "0395863": 4, "005472": 4, "0100858": 4, "00146084": 4, "00514": 4, "00327878": 4, "000313999": 4, "007166": 4, "030142": 4, "00111338": 4, "249048": 4, "722": 4, "0802649": 4, "102041": 4, "051558": 4, "61": 4, "0779214": 4, "93279": 4, "018069": 4, "30": [4, 7, 11, 15, 22, 35], "0117585": 4, "000335161": 4, "008438": 4, "14": [4, 9, 12], "0114653": 4, "000106237": 4, "005415": 4, "0221542": 4, "000198337": 4, "078182": 4, "94": [4, 5], "0645244": 4, "116509": 4, "017363": 4, "28": [4, 9], "0795235": 4, "000762834": 4, "127013": 4, "216": 4, "114508": 4, "481591": 4, "021431": 4, "0178241": 4, "000106574": 4, "018806": 4, "0130349": 4, "00024334": 4, "exploit": 4, "null": [4, 8, 35], "space": [4, 5, 10, 12, 25, 26, 34, 35], "proper": [4, 32, 35], "possibl": [4, 21, 29, 32, 33, 35], "pick": [4, 25, 29, 33], "best": [4, 12, 14, 22, 23, 25, 35], "scalarproductxi": [4, 10, 34], "15": [4, 9, 12, 13, 18, 22, 31, 32, 35], "orient": [4, 10, 21, 22, 25, 29, 31, 35], "score": 4, "argmin": [4, 35], "none": [4, 23, 24, 34, 35], "resolut": [4, 34], "interpol": [4, 9, 34], "desir": [4, 21, 31, 35], "pre": [4, 11, 29, 35], "common": [4, 9, 35], "pattern": [4, 9], "simplifi": [4, 32, 33, 35], "way1": [4, 9], "way2": 4, "way3": 4, "way4": 4, "18": [4, 5, 9], "addcontrolobject": [1, 4, 9, 13, 18, 34, 35], "1e0": [4, 14, 25], "003266": 4, "39494": 4, "000305648": 4, "35382383": 4, "05464486": 4, "41770589": 4, "0833263": 4, "05951381": 4, "17630166": 4, "49971152": 4, "29434065": 4, "3758991": 4, "40467003": 4, "73241762": 4, "02310692": 4, "33740027": 4, "49945799": 4, "44111823": 4, "06340917": 4, "31723911": 4, "1024485": 4, "12222711": 4, "20326576": 4, "49926996": 4, "43343189": 4, "36084256": 4, "2768184": 4, "74048984": 4, "12188603": 4, "34753359": 4, "49916996": 4, "valu": [4, 8, 10, 12, 22, 23, 24, 35], "stepsperphas": [4, 34], "discret": [4, 21, 24, 25], "form": [4, 21, 22, 35], "k_order": [4, 34], "maxim": [4, 25], "tupl": [4, 12, 25, 34, 35], "take": [4, 23, 25, 33, 34, 35], "finit": [4, 25, 35], "our": [4, 5, 7, 12, 29, 30, 35], "sub": [4, 10, 21, 23, 25, 32, 35], "sampl": [4, 18, 31, 34], "why": [4, 29, 35], "consecut": [4, 12, 21, 25], "hold": [1, 4, 5, 6, 24, 25, 29, 33, 34, 35], "sqr": 4, "acceler": [4, 12, 21, 24, 25, 26, 32, 34, 35], "across": [4, 10, 23, 35], "factor": [4, 23, 25, 35], "sqrt": [4, 25, 35], "somehow": 4, "control": [4, 19, 21, 24, 25, 26, 34, 35], "approxim": [4, 12, 24, 25, 35], "independ": [4, 17], "choic": [4, 24, 25], "zig": 4, "zag": 4, "smooth": [4, 25, 30, 31, 33, 34, 35], "19": [4, 14], "happen": [4, 25], "weight": [4, 35], "017709": 4, "51987": 4, "00176075": 4, "40": [4, 25, 29], "constrain": [4, 9, 12, 18, 25, 29, 34], "zero": [4, 8, 9, 10, 11, 12, 21, 22, 25, 29, 34, 35], "042404": 4, "5162": 4, "000765251": 4, "notic": [4, 22, 35], "new": [4, 22, 25, 28, 29, 30, 31, 34, 35], "last": [4, 5, 25, 31, 34, 35], "without": [4, 5, 11, 25, 29, 34, 35], "plot": 4, "trajectori": [4, 21, 25, 35], "21": [4, 35], "pyplot": [4, 8], "plt": [4, 8], "22": [4, 5, 35], "equal": [5, 10, 12, 21, 23, 25, 29, 34, 35], "franka": 5, "realsens": 5, "cautiou": 5, "45": [5, 19], "maintain": [5, 35], "own": [5, 16, 21, 25, 28, 35], "camerawrist": [5, 6], "By": [5, 25, 29, 34], "pass": [5, 10, 13, 18, 25, 35], "system": [5, 21, 22, 25, 27, 32, 35], "know": [5, 8, 24, 28, 34, 35], "tri": [5, 22, 35], "userealrobot": [5, 6], "38": 5, "TO": 5, "stack9": 5, "usr": [5, 28], "bin": [5, 22, 25, 33, 35], "pyobject_cal": 5, "stack8": 5, "0x50b8a8": 5, "stack7": 5, "_pyobject_maketpcal": 5, "stack6": 5, "pycfunction_cal": 5, "stack5": 5, "mtoussai": [5, 11, 27], "cpython": 5, "x86_64": 5, "linux": [5, 32], "gnu": 5, "0xbc6af": 5, "0x7f9a446ad6af": 5, "stack4": 5, "0x3bb9e": 5, "0x7f9a4462cb9": 5, "stack3": 5, "amp": 5, "bool": [5, 23, 34, 35], "stack2": 5, "std": [5, 20], "__shared_count": 5, "__gnu_cxx": 5, "_lock_polici": 5, "frankathread": 5, "alloc": 5, "int": [5, 21, 25, 34], "unsign": 5, "var": 5, "ctrlcmdmsg": 5, "ctrlstatemsg": 5, "_sp_alloc_shared_tag": 5, "stack1": 5, "init": 5, "const": [5, 25, 35], "stack0": 5, "logtoken": 5, "warn": [5, 11], "70": 5, "fail": [5, 19], "error": [5, 10, 21, 22, 24, 35], "msg": 5, "356": 5, "extern": [5, 11, 28, 34, 35], "correspond": [5, 12, 35], "were": [5, 11, 21, 25, 32, 35], "get_t": [1, 5, 34], "112": 5, "shut": 5, "pointcloud": [5, 34], "pixel": [5, 8, 24, 30, 35], "getimagedepthpcl": [1, 5, 6, 8, 34], "setpointcloud": [1, 5, 6, 8, 34], "kin": [5, 10, 22, 25, 35], "191": 5, "alreadi": [5, 24, 31, 35], "modif": 5, "gldraw": 5, "1668": 5, "draw": [5, 30], "mesh": [5, 10, 22, 25, 34, 35], "0x47f29": 5, "0x7f9a44638f29": 5, "char": 5, "arraydoubl": 5, "getimageanddepth": [1, 5, 7, 8, 34], "cameraview": [1, 5, 10, 11, 24, 34], "updateconfigur": 5, "ensure_x": 5, "calc_x_from_par": 5, "_state_x_isgood": 5, "runtimeerror": 5, "traceback": 5, "most": [5, 10, 25, 29, 32, 35], "recent": 5, "cell": [5, 8, 12, 19], "line": [5, 22, 25, 28, 35], "slow": [5, 7, 15], "speed": [5, 24, 34], "fast": [5, 25, 31], "08": [5, 15], "botthreadedsim": 5, "56": 5, "simthread": 5, "148": 5, "q_current": 5, "damp": [5, 34], "d": [5, 9, 10, 11, 12, 14, 17, 19, 21, 22, 23, 26, 35], "gain": [5, 19], "abl": [5, 28, 29, 35], "hand": [5, 10, 12, 22, 24, 25, 29, 35], "continu": [5, 22, 29, 31, 33, 35], "86": [5, 9], "turn": [5, 23, 35], "off": [5, 35], "freeli": [5, 21, 35], "107": 5, "stiffli": 5, "constant": [5, 12, 25, 29, 31, 33], "111": 5, "kinestet": 5, "teach": [5, 27, 35], "But": [5, 11, 21, 22, 25, 29, 32, 35], "autonom": 5, "compliant": [5, 34], "impos": [5, 12, 25, 29], "along": [5, 21, 29, 35], "task": [5, 25, 27, 29, 34, 35], "dimens": [5, 12, 21, 35], "setcompli": [1, 5, 6, 34], "get_tauextern": [1, 5, 6, 34], "pseudoinv": [5, 6], "linalg": [5, 6, 11], "pinv": [5, 6], "nan": 5, "328": 5, "exactli": [6, 11, 21, 24, 25, 33, 35], "botop1": 6, "instead": [6, 10, 11, 25, 29, 31, 34, 35], "params_fil": [1, 6, 34], "pcl": [6, 8, 11], "gripperopen": [6, 9], "hit": [7, 22, 35], "cv2": 7, "cv": 7, "cap": 7, "videocaptur": 7, "captur": 7, "read": [7, 14, 21, 22, 23, 24, 25, 28, 35], "come": [7, 22, 25, 35], "cvtcolor": 7, "color_bgr2grai": 7, "result": [7, 12, 15, 21, 22, 25, 29, 34, 35], "imshow": [7, 8], "waitkei": 7, "0xff": 7, "releas": 7, "destroyallwindow": 7, "o": [7, 8, 11, 35], "_exit": [7, 11], "pandast": [7, 8, 11, 13, 18, 35], "obj": [7, 8, 21], "setpos": [1, 7, 8, 34], "setmass": [1, 7, 8, 9, 19, 34], "fxypxi": [7, 8, 24], "getcamerafxypxi": [1, 7, 8, 34], "camerafram": [7, 8], "tau": [7, 10, 22, 25, 34, 35], "sensor": [7, 24, 34], "100hz": 7, "render": [7, 21, 28, 34], "color_bgr2rgb": 7, "central": 7, "addit": [7, 24, 25, 29, 34, 35], "r_grippercamera": 7, "addattribut": [1, 7, 34], "focallength": [7, 10, 11, 24, 34], "895": 7, "640": [7, 11, 34], "height": [7, 10, 11, 24, 34, 35], "360": [7, 34], "_": [7, 8, 33, 35], "cell_typ": 8, "markdown": 8, "metadata": 8, "vision": [8, 27], "execution_count": 8, "91746f55": 8, "11c2": 8, "4591": 8, "a337": 8, "4155376e7596": 8, "output": [8, 22, 35], "sy": [1, 8, 11, 12, 14, 15, 17, 19, 34, 35], "osn": 8, "expandus": [8, 35], "build": [8, 11, 12, 14, 15, 17, 19, 21, 29, 30, 31], "ryn": 8, "npn": 8, "timen": 8, "f18925ed": 8, "mycamera": 8, "55da8f34": 8, "1bd73706": 8, "2f9b": 8, "4c4d": 8, "93bd": 8, "cdba581408b7": 8, "fig": [8, 35], "figur": [8, 29, 32, 35], "figsiz": 8, "subplot": 8, "matshow": 8, "ce65b01b": 8, "9811": 8, "496c": 8, "9774": 8, "1589d5455deb": 8, "slide": [8, 25, 27, 31, 32, 35], "learnedn": 8, "hat": [8, 35], "frac": [8, 10, 35], "wheren": 8, "andn": 8, "426eb3b6": 8, "shapen": 8, "cc08f354": 8, "0e4d": 8, "475b": 8, "8af5": 8, "ebff63533142": 8, "fx": 8, "fy": 8, "px": 8, "ctmp": 8, "continuen": 8, "sign": [8, 25, 35], "flipe": 8, "downn": 8, "zn": 8, "tn": 8, "tmp": 8, "pc": 8, "str": [8, 34], "255": 8, "1a9d2d8a": 8, "07ae": 8, "4dc3": 8, "afa5": 8, "3c90ac7d2b8": 8, "c2": [8, 34], "pclframe": 8, "delfram": [1, 8, 10, 11, 34], "truthn": 8, "view_recopymesh": [1, 8, 34], "6e222a0a": 8, "72179b41": 8, "cfdb8d55": 8, "botn": 8, "60ecc8d4": 8, "kernelspec": 8, "display_nam": 8, "ipykernel": 8, "languag": [8, 22, 26, 35], "language_info": 8, "codemirror_mod": 8, "ipython": 8, "file_extens": 8, "mimetyp": 8, "text": [8, 10, 12, 22, 25, 28, 32, 35], "nbconvert_export": 8, "pygments_lex": 8, "ipython3": 8, "nbformat": 8, "nbformat_minor": 8, "waypoint": [9, 34, 35], "rigidli": [9, 22, 35], "6d": 9, "endeff": [9, 21, 25], "conveni": [9, 21, 25, 35], "pipelin": [9, 22, 30, 31, 35], "hard": [9, 34, 35], "transit": [9, 25], "through": [9, 28], "broken": [9, 34], "again": [9, 21, 25, 29, 31, 35], "fall": [9, 29, 30], "angulardamp": 9, "defaultfrict": 9, "101": 9, "lgp": 9, "camerafocu": 9, "stoptim": 9, "300": 9, "stopsol": 9, "opt": [9, 13], "maxstep": [9, 34], "boundednewton": 9, "025": 9, "675": 9, "way0": 9, "setrelativepos": [1, 9, 34], "90": [9, 10, 11, 22, 35], "setconfig": [1, 9, 13, 18, 34, 35], "settim": [1, 9, 13, 15, 18, 25, 34, 35], "posediff": [9, 10, 34, 35], "setproblem": [1, 9, 13, 17, 18, 34, 35], "setopt": [1, 9, 13, 18, 34, 35], "93": 9, "1593": 9, "69": 9, "6169": 9, "47": 9, "7566": 9, "1096": 9, "4588": 9, "02281": 9, "0943": 9, "170104": 9, "57494": 9, "0579509": 9, "52862": 9, "0238862": 9, "52229": 9, "016744": 9, "37426": 9, "000145596": 9, "elta": 9, "94215": 9, "24621": 9, "750159": 9, "00314": 9, "5031": 9, "10763": 9, "34517": 9, "0250832": 9, "33636": 9, "0132012": 9, "33499": 9, "00671988": 9, "33466": 9, "20162": 9, "211307": 9, "219168": 9, "53258": 9, "0376555": 9, "37467": 9, "00825317": 9, "37395": 9, "36729": 9, "00768814": 9, "0459086": 9, "37595": 9, "125": 9, "00476621": 9, "3742": 9, "gripperclosegrasp": [1, 9, 34], "end": [9, 10, 12, 21, 25, 29, 33, 34, 35], "07": 9, "gripperclos": [1, 9, 34], "proxim": [10, 34], "accumul": 10, "measur": [10, 25], "penetr": [10, 11, 25, 29, 34, 35], "pair": [10, 11, 23, 25, 29, 35], "geometr": [10, 25, 33], "wit": 10, "pr2": [10, 12, 14], "kitchen": [10, 12, 14, 22, 35], "scalar": [10, 12, 25, 29, 35], "coll": 10, "computecollis": [1, 10, 11, 34], "proxi": 10, "automat": [10, 21, 22, 25, 33, 35], "redo": [10, 12], "selectjointsbytag": [1, 10, 34], "inform": [10, 21, 22, 25, 29, 34, 35], "getcollis": [1, 10, 11, 34], "report": [1, 10, 21, 22, 25, 34, 35], "detect": [10, 11], "swift": [10, 34], "deactiv": [10, 11, 21], "nuissanc": 10, "default": [10, 23, 25, 29, 34, 35], "activatecollisionpair": 10, "deactivatecollisionpair": 10, "modifi": [10, 12, 23, 25, 29, 35], "todo": [10, 11, 12, 14, 16, 19, 21, 24, 34], "gjk": [10, 21], "algorithm": [10, 11, 21, 35], "dist": 10, "coll_wrist_r": 10, "_10": 10, "becaus": [10, 25], "typic": [10, 12, 21, 22, 23, 24, 25, 29, 34, 35], "put": [10, 11, 12], "inequ": [10, 12, 25, 26, 34, 35], "geometri": 10, "easili": [10, 21, 35], "request": 10, "help": [10, 25, 31, 32, 34, 35], "choos": [10, 25, 29, 31, 35], "entri": [10, 25, 33, 34, 35], "affect": 10, "arml": 10, "attach": [1, 10, 21, 22, 24, 25, 28, 34, 35], "head": [10, 11], "associ": [10, 11, 21, 24, 34, 35], "head_tilt_link": [10, 11], "arg": [10, 11, 15, 34], "180": [10, 11], "iv": 10, "imageview": [10, 11], "addsensor": [1, 10, 11, 34], "frameattach": [10, 11, 34], "600": [10, 11], "400": [10, 11], "computeimageanddepth": [10, 11], "head_pan_joint": [10, 11], "updateconfig": [10, 11], "reassign": [10, 11], "remov": [10, 11, 12, 14, 22, 25, 29, 34, 35], "assum": [10, 21, 25, 30, 34, 35], "x_1": [10, 25, 35], "x_t": [10, 25], "x_i": [10, 35], "mathbb": [10, 21, 25, 35], "phi": [10, 21, 25, 34, 35], "map": [10, 12, 25, 27, 34, 35], "mapsto": [10, 35], "x_0": [10, 35], "x_2": [10, 35], "x_k": 10, "access": [10, 11, 12, 24, 28, 30, 34, 35], "via": [10, 11, 22, 25, 28, 35], "blob": [10, 12, 25], "master": [10, 16, 22, 25, 30, 35], "featuresymbol": [10, 25, 34, 35], "respect": [10, 23, 35], "o1": [10, 35], "o2": [10, 35], "positionrel": [10, 12, 29, 34, 35], "4d": [10, 35], "nbsphinx": 10, "math": [10, 21, 35], "footnot": [10, 35], "There": [10, 22, 25, 28, 29, 35], "invari": [10, 25, 35], "si": 10, "gn": 10, "quaterniondiff": [10, 34, 35], "quaternionrel": [10, 34, 35], "poserel": [10, 34, 35], "vectorxdiff": [10, 34, 35], "vectorxrel": [10, 34, 35], "seend": [10, 35], "vectori": [10, 34, 35], "product": [10, 12, 25, 29, 35], "fo": [10, 35], "gazeat": [10, 34, 35], "2d": [10, 35], "xy": [10, 25, 35], "angularvel": [10, 34, 35], "angular": [10, 25, 35], "noth": [10, 25, 35], "collid": [10, 21, 29, 35], "limit": [10, 21, 24, 25, 35], "qitself": [10, 13, 14, 15, 29, 34, 35], "abovebox": [10, 34, 35], "insid": [10, 34, 35], "insidebox": [10, 34, 35], "standingabov": [10, 34, 35], "fs_": [10, 35], "drive": [10, 34, 35], "redefin": [10, 12, 34, 35], "texttt": [10, 35], "cdot": [10, 35], "dim": [10, 12, 35], "oder": [10, 35], "x_3": [10, 35], "equiv": [10, 25, 35], "handr": 10, "left": [10, 12, 29, 33, 35], "10centimet": 10, "sai": [10, 32, 35], "align": [10, 25, 31, 35], "much": [10, 18, 25, 32, 35], "robust": [10, 22, 35], "gradient": [10, 35], "optimum": [10, 35], "meant": [10, 20, 28], "indic": [10, 21, 25, 30, 34, 35], "rho_k": 10, "pi_k": 10, "subseteq": [10, 25], "phi_1": 10, "phi_k": 10, "x_n": [10, 35], "begin": [10, 25, 35], "min_": [10, 25, 35], "sum_": 10, "x_": [10, 25, 35], "mathopforall_": 10, "le": [10, 25, 35], "quad": [10, 25, 34, 35], "mini": [11, 35], "watchfil": [1, 11, 34, 35], "command": [11, 22, 24, 25, 29, 31, 34, 35], "editor": [11, 22, 25, 34, 35], "being": [11, 25, 35], "redisplai": 11, "whenev": [11, 22, 25, 34, 35], "save": [11, 22, 34, 35], "trivial": [11, 23, 25, 28, 34, 35], "reload": [11, 22, 34, 35], "coupl": [11, 25], "those": [11, 22, 25, 30, 35], "setraipath": [1, 11, 34], "simpl": [11, 22, 25, 28, 29, 30, 32, 35], "bit": [11, 29, 35], "sin": [11, 35], "configurationview": 11, "setconfigur": [11, 12], "broadphas": [11, 21, 34], "bring": [11, 21, 30], "evalfeatur": 11, "r_grippercent": 11, "l_grippercent": 11, "vel": [11, 34], "inv": 11, "ey": [11, 17], "belowmargin": [11, 34], "integ": 11, "contribut": [11, 35], "topolog": [11, 34], "distant": 11, "broad": 11, "cannot": [11, 24, 25, 35], "dure": [11, 25, 27, 29, 30, 32], "recreat": [11, 29], "fresh": [11, 28], "realli": [11, 21, 25, 28, 29, 34, 35], "approach": [11, 29, 35], "nvisii": 11, "export": [11, 22, 35], "vimg": 11, "vseg": 11, "segmentationview": 11, "vpcl": 11, "pointcloudview": 11, "kinect": 11, "endeffkinect": 11, "480": 11, "580": 11, "50": 11, "selectsensor": [1, 11, 34], "seg": 11, "computesegment": 11, "computepointcloud": 11, "segment": [11, 30], "head_tilt_joint": 11, "panda_clean": 11, "encod": [11, 22, 25, 35], "utf": 11, "fil": 11, "safe_load": 11, "doc": [12, 25, 28, 30, 34], "At": 12, "bottom": [12, 33, 35], "concept": [12, 21, 25, 27], "lock": [12, 14], "simplic": [12, 35], "goal": [12, 18, 27, 29, 30, 32, 34], "pr2l": [12, 14], "yellow": [12, 35], "komo_ik": 12, "getreport": [1, 12, 14, 15, 34], "retriev": [12, 31, 35], "anoth": [12, 22, 23, 25, 29, 33, 35], "locat": [12, 22, 25, 35], "iter": [12, 25, 30, 31, 35], "reoptim": 12, "nois": [12, 24], "novel": [12, 35], "pr2r": [12, 14], "20cm": 12, "straight": [12, 24], "front": [12, 35], "vectorzdiff": [12, 34], "scalarproductzz": [12, 34], "redund": [12, 22, 25, 35], "pointer": [12, 25], "either": [12, 22, 29, 31, 33, 35], "term": [12, 25, 32, 34, 35], "15th": 12, "overal": [12, 22, 35], "keyword": [12, 23, 35], "tell": [12, 24, 35], "linearli": [12, 35], "conf": 12, "feat": [12, 25], "avoid": [12, 25, 29, 31], "especi": [12, 25], "Or": [12, 21, 30], "natur": [12, 25, 35], "esp": [12, 24, 25, 31, 35], "posdiff": 12, "posrel": 12, "aim": [12, 21, 25], "rescal": 12, "aris": [12, 35], "signific": 12, "impact": 12, "converg": [12, 35], "behavior": [12, 27, 32], "guid": [12, 22, 25, 35], "treat": [12, 35], "penalti": [12, 25, 35], "squaredpenalti": [12, 34], "made": [12, 28, 34, 35], "reason": [12, 21, 25, 29, 35], "effici": [12, 25, 35], "auglag": 12, "precis": [12, 21, 25, 34, 35], "cylind": [12, 29, 34], "l_gripper_l_finger_joint": 12, "03": [12, 27, 29, 35], "similarli": [13, 22, 24, 35], "confus": [13, 35], "simpli": [13, 18, 20, 21, 22, 28, 35], "plai": [13, 18, 26, 29, 32, 35], "boxr": [13, 18, 35], "boxl": [13, 18, 35], "view_plai": [1, 13, 14, 15, 34], "moveautotim": [1, 13, 18, 34], "perhap": [14, 25, 32, 35], "item1": 14, "sink1": 14, "52": 14, "color": [14, 19, 22, 23, 26, 34, 35], "item2": 14, "trai": 14, "stove1": 14, "42": 14, "touch": [14, 25, 26, 33, 34], "obj1": [14, 29], "komo_path": 14, "1e2": [14, 15], "endeffworkspac": 14, "my": [14, 29], "out": [14, 21, 23, 24, 25, 29, 35], "analyz": [14, 25], "model2": 15, "setmodel": [15, 25], "add_qcontrolobject": [15, 29], "addquaternionnorm": [1, 15, 34], "addmodeswitch": [1, 15, 34], "stabl": [15, 25, 34], "vectorz": [15, 34], "up": [15, 21, 22, 25, 28, 32, 33, 34, 35], "place": [15, 25, 27, 33, 35], "checkgradi": 15, "miss": [15, 24], "getconstraintviol": [1, 15, 34], "getcost": [1, 15, 34], "topboxgrasp": [15, 34], "box2": 15, "downup": [15, 34], "poseeq": [15, 34], "target2": 15, "setskeleton": 15, "reportproblem": [1, 15, 34], "download": 16, "consolid": 16, "clean": [16, 22, 25, 35], "variou": [17, 21, 22, 25, 35], "sqrpot": 17, "nlp_factori": [1, 17, 34], "setdimens": [1, 17, 34], "setbound": [1, 17, 34], "setfeaturetyp": [1, 17, 34], "setevalcallback": [1, 17, 34], "setsolv": [1, 17, 34], "nlp_solverid": [1, 17, 34], "getlog_x": 17, "getlog_cost": 17, "rrt": [18, 34], "easier": 18, "qt": 18, "jointli": 18, "bi": 18, "pathfind": [1, 18, 34], "sometim": [19, 22, 25, 31, 35], "low": 19, "level": [19, 21, 25, 32, 35], "reinforc": [19, 32], "multi": [19, 21], "bodi": [19, 21, 35], "friction": 19, "graviti": [19, 34], "compens": 19, "bullet": [19, 21, 24, 32, 34], "comment": [19, 23, 25], "mk": 19, "getstat": [1, 19, 24, 34], "multipl": [19, 21, 22, 29, 31, 34, 35], "setstat": [1, 19, 21, 24, 34], "concern": [20, 25, 33, 35], "inherit": 20, "algebra": [20, 35], "lapack": 20, "eigen": 20, "well": [20, 25, 29, 34, 35], "concis": [20, 35], "closer": 20, "matlab": 20, "sheet": 20, "focuss": 20, "synopsi": 21, "similar": [21, 25, 35], "graphic": 21, "further": [21, 23, 25, 29, 35], "angl": [21, 22, 25, 35], "togeth": [21, 32], "represent": [21, 25, 27, 34, 35], "appli": [21, 24, 30], "numer": [21, 24, 25], "quantiti": [21, 25], "nearest": 21, "involv": [21, 31, 35], "under": [21, 35], "newtonian": 21, "although": 21, "semant": [21, 25, 34, 35], "perform": [21, 28, 35], "opengl": [21, 24, 28], "format": [21, 22, 23, 35], "collada": [21, 22, 35], "rigid": [21, 22, 34, 35], "se": [21, 35], "mai": [21, 22, 23, 25, 32, 35], "write": [21, 34, 35], "nabla_x": 21, "role": 21, "tool": [21, 22, 25, 32, 35], "urdf2rai": [21, 22, 25, 35], "requir": [21, 22, 23, 25, 35], "fix": [21, 22, 25, 29, 35], "selet": 21, "quirk": 21, "ignor": [21, 35], "interestingli": 21, "extract": [21, 35], "consist": [21, 25, 35], "potenti": [21, 22, 25, 26, 27, 35], "fcl": [21, 34], "lower": [21, 25, 29], "ccd": 21, "trigger": [21, 29, 34], "f_accumulatedcolls": 21, "explicitli": [21, 24, 25, 29, 35], "updat": [21, 22, 24, 29, 30, 31, 34, 35], "ensureproxi": 21, "ompl": 21, "relat": [21, 25, 35], "recurs": 21, "collect": [21, 35], "filter": [21, 30], "cont": 21, "properti": [21, 22, 34, 35], "upward": [21, 35], "supp": 21, "matric": [21, 35], "engergi": 21, "residu": [21, 31], "equat": [21, 25, 35], "absolut": [21, 22, 34, 35], "propag": 21, "Such": [21, 25], "therebi": [21, 25, 35], "classic": 21, "whatev": 21, "altern": [21, 25, 28, 29, 35], "reffram": 21, "everli": [22, 35], "node": [22, 23, 35], "attribut": [22, 23, 24, 33, 34, 35], "previous": [22, 35], "omit": [22, 35], "taken": [22, 35], "stem": [22, 35], "mass": [22, 35], "joint1_pr": [22, 35], "joint1": [22, 35], "arm1": [22, 35], "arm2": [22, 35], "eff": [22, 35], "joint2": [22, 35], "b": [22, 23, 26, 35], "joint3": [22, 35], "001": [22, 35], "length": [22, 24, 25, 29, 35], "radiu": [22, 29, 35], "inerti": [22, 35], "4th": [22, 35], "meter": [22, 24, 35], "degress": [22, 35], "short": [22, 35], "arm3": [22, 35], "retrospect": [22, 35], "implicitli": [22, 35], "joint2_pr": [22, 35], "chile": [22, 35], "underli": [22, 35], "cmake": [22, 25, 35], "otherwis": [22, 24, 25, 35], "somefil": [22, 35], "equival": [22, 35], "repeatedli": [22, 34, 35], "prune": [22, 35], "enter": [22, 35], "enforc": [22, 26, 34, 35], "littl": [22, 29, 30, 31, 35], "catch": [22, 35], "syntax": [22, 33, 35], "crash": [22, 32, 35], "convert": [22, 24, 25, 30, 35], "convers": [22, 35], "partial": [22, 25, 35], "fiddl": [22, 25, 35], "correct": [22, 25, 35], "hole": [22, 25, 35], "meshlab": [22, 25, 35], "compress": [22, 25, 35], "ply": [22, 25, 35], "hubo": [22, 25, 35], "howto": [22, 25, 35], "sh": [22, 25, 35], "manag": [22, 34, 35], "bremenkitchen": [22, 35], "unreal": [22, 35], "json": [22, 23, 35], "gltf": [22, 35], "augment": [22, 35], "extra": [22, 35], "p1": [22, 35], "p2": [22, 35], "p3": [22, 35], "q2": [22, 35], "q3": [22, 35], "intuit": [22, 35], "human": [22, 35], "bracket": [22, 35], "interpret": [22, 35], "turtl": [22, 35], "translat": [22, 25, 33], "_radians_": [22, 35], "_degrees_": [22, 35], "roll": [22, 35], "pitch": [22, 35], "yaw": [22, 35], "euler": [22, 35], "libri": [22, 35], "enum": [22, 25, 35], "jointtyp": [22, 34, 35], "avail": [22, 25, 35], "hingei": [22, 34, 35], "hingez": [22, 34, 35], "transx": [22, 34, 35], "transi": [22, 34, 35], "transz": [22, 34, 35], "transxi": [22, 34, 35], "trans3": [22, 34, 35], "transxyphi": [22, 34, 35], "univers": [22, 28, 34, 35], "quatbal": [22, 34, 35], "phitransxi": [22, 34, 35], "xball": [22, 34, 35], "seem": [22, 25, 35], "mark": [22, 35], "separ": [22, 23, 24, 28, 35], "sit": [22, 35], "dictionari": [23, 35], "mix": 23, "hierarch": [23, 35], "ideal": [23, 25, 31, 32], "xml": 23, "kind": [23, 25, 32], "logic": [23, 33, 35], "clarifi": 23, "hopefulli": 23, "self": [23, 34], "explanatori": 23, "boolean": [23, 35], "vertex": [23, 35], "edg": [23, 35], "hyperedg": [23, 35], "subgraph": [23, 35], "blue": [23, 35], "red": [23, 30, 31, 35], "string": [23, 34, 35], "mt": [23, 35], "except": [23, 25, 35], "mod": [23, 35], "txt": [23, 28, 34, 35], "filetoken": [23, 35], "1234": [23, 35], "doubl": [23, 25, 35], "arr": [23, 25, 29, 34, 35], "deprec": [23, 35], "pars": [23, 35], "b0": [23, 35], "b1": [23, 35], "b2": [23, 35], "b3": [23, 35], "hallo": [23, 35], "filenam": [23, 34, 35], "org": [23, 25, 30, 35], "delet": [23, 35], "tag": [23, 34, 35], "otherstr": [23, 35], "newattribut": [23, 35], "example_includ": [23, 35], "strang": [23, 35], "parentgraph": [23, 35], "knowledg": [23, 35], "adverseri": 24, "imp": [24, 31], "callback": [24, 31], "perturb": [24, 31], "signal": [24, 30], "distinguish": [24, 25], "govern": 24, "law": 24, "push": [24, 27, 29, 34], "u_mod": [24, 34], "u_control": [24, 34], "receiv": [24, 25], "until": [24, 25, 33, 34, 35], "reach": [24, 29, 31], "zrang": [24, 34], "expos": [24, 25, 35], "post": [24, 25], "systemat": 24, "disir": 24, "exact": [24, 35], "visit": 24, "infact": 24, "slighli": 24, "hidden": 24, "instanti": [24, 25], "restorest": 24, "fact": [24, 25], "must": [24, 30, 32, 35], "arbitrari": [24, 25, 35], "acut": 24, "somewher": [24, 28, 35], "percept": [24, 27, 29, 31], "x3": 24, "four": [24, 35], "focal": [24, 35], "unit": [24, 31, 35], "center": [24, 29, 30, 31, 35], "ealier": 25, "influenc": 25, "experi": 25, "think": [25, 29, 30, 35], "implicit": [25, 35], "particular": [25, 30, 32, 33, 35], "velocit": 25, "concecut": 25, "dull": 25, "ineffici": 25, "inher": [25, 29], "higher": 25, "jerk": 25, "concret": 25, "One": [25, 35], "past": 25, "thrid": 25, "subject": 25, "deriv": 25, "technic": [25, 35], "convent": [25, 29, 35], "consid": [25, 29, 33, 34, 35], "od": 25, "word": [25, 35], "rho": [25, 35], "phi_": [25, 35], "textbf": [25, 35], "analog": [25, 28, 29, 35], "addition": [25, 29], "phi_j": 25, "With": [25, 35], "shortest": 25, "skip": [25, 35], "certain": [25, 35], "cope": 25, "leaf": 25, "tablet": 25, "abstract": [25, 35], "virtual": [25, 27, 32, 35], "mathematicalprogram": 25, "mathematicalprogram_factor": 25, "behind": [25, 28], "necessarili": [25, 34], "thought": [25, 35], "plug": 25, "replac": [25, 31], "nlopt": [25, 34], "ipopt": [25, 34], "cere": [25, 34], "spars": [25, 35], "computation": 25, "casevia": 25, "individu": [25, 34], "network": 25, "cliqu": 25, "spare": 25, "easi": 25, "watch": [25, 32], "folder": [25, 28], "sandbox": 25, "tutorialbas": 25, "grain": 25, "undo": 25, "setsquaredqaccvelhom": 25, "smoothest": 25, "harder": 25, "correl": 25, "better": [25, 29, 31, 35], "condit": 25, "hessian": [25, 34, 35], "fs_positiondiff": 25, "fs_quaterniondiff": [25, 29], "setslow": 25, "ot_eq": 25, "ot_so": 25, "reduc": 25, "struct": 25, "stringa": [25, 34], "input": 25, "objectivetyp": [25, 34], "noarr": 25, "deltafromstep": [25, 34], "deltatostep": [25, 34], "seri": [25, 27, 29], "fs_posit": 25, "subtract": [25, 35], "endeffector": 25, "pmatrix": 25, "effect": [25, 29, 31, 33, 35], "third": [25, 31], "small": [25, 31, 32, 35], "section": [25, 30, 32, 35], "fourth": 25, "rare": 25, "refin": 25, "ptr": 25, "principl": [25, 35], "larg": [25, 35], "predefin": 25, "featuresylbol": 25, "uniqu": 25, "complic": 25, "cours": [25, 26, 28, 29, 30, 31, 32, 35], "modulo": 25, "flip": [25, 35], "account": [25, 35], "coverag": 25, "apart": 25, "among": [25, 35], "fs_qitself": 25, "itself": [25, 35], "setqaccvelhom": 25, "prefer": [25, 35], "fs_qlimit": 25, "2n": 25, "slack": 25, "met": 25, "violat": 25, "group": [25, 28, 35], "fs_accumulatedcollis": 25, "fs_distanc": 25, "margin": [25, 29, 34], "cm": 25, "placement": 25, "liter": [25, 33, 35], "addswitch": 25, "creation": 25, "setupconfigur": 25, "mechan": [25, 35], "enabl": [25, 30, 35], "exchang": 25, "addcontact": 25, "blueprint": 25, "enumer": [25, 35], "conv_time2step": 25, "conv_step2tim": 25, "purpos": [25, 35], "distinct": 25, "scheme": 25, "decid": 25, "settimeoptim": 25, "0th": 25, "evolv": 25, "newtoneul": 25, "applic": [25, 35], "schedul": 25, "adapt": [25, 35], "evolut": 25, "arxiv": 25, "tech": 25, "ab": [25, 35], "1407": 25, "0414": 25, "docu": [25, 34], "mainten": 25, "bind": [25, 34], "ipynb": [25, 29], "reintegr": 26, "familiar": 26, "explor": [26, 33], "tricki": 26, "background": [26, 35], "lift": [26, 34], "drop": [26, 30, 35], "hop": 26, "throw": 26, "bonu": [26, 30], "lesson": 26, "integr": [27, 35], "plan": [27, 32, 35], "mobil": [27, 35], "navig": 27, "major": 27, "spend": 27, "supervis": 27, "instructor": 27, "session": [27, 30, 32], "leverag": 27, "perceiv": 27, "student": 27, "expect": 27, "offlin": [27, 32], "homework": 27, "though": 27, "team": [27, 32], "challeng": 27, "www": [27, 32, 35], "de": [27, 35], "labcours": 27, "pdf": [27, 32], "04": [27, 30], "instruct": [27, 28], "readm": 28, "delivar": 28, "course3": [28, 29], "eg": 28, "qtcreator": 28, "pycharm": 28, "brows": 28, "debug": [28, 31, 34], "pull": [28, 29, 30, 31], "futur": 28, "gitlab": 28, "organ": [28, 32], "fork": 28, "subfold": 28, "makefil": 28, "too": [28, 32], "difficult": 28, "submodul": [28, 29, 30, 31], "pybind": 28, "checkout": 28, "branch": [28, 35], "cmakelist": 28, "deliver": 28, "isi": 28, "unfamiliar": 28, "io": [28, 30], "parallel": 28, "develop": [28, 30, 31], "member": [28, 34], "least": [28, 35], "commit": 28, "hardli": 28, "plain": [28, 31], "_simul": 28, "Be": [28, 29], "walk": 28, "j4": [29, 30, 31], "demonstr": [29, 32, 35], "minimalist": [29, 32, 35], "immedi": [29, 34], "fulfil": [29, 35], "apriori": 29, "fs_scalarproductxz": 29, "zoom": 29, "combin": [29, 30, 35], "holist": 29, "paircollis": 29, "impress": 29, "neglect": 29, "fair": 29, "awai": 29, "even": [29, 35], "optima": 29, "obstacl": 29, "r_finger1": 29, "r_finger2": 29, "ingredi": 29, "myobj": 29, "shortcut": [29, 31], "realworld": [29, 31], "swept": [29, 31], "corner": 29, "primit": 29, "determin": [29, 33, 35], "sscvx": [29, 34], "hull": [29, 34], "sweep": 29, "understood": 29, "care": [29, 34], "l": 29, "compon": [29, 35], "grippercent": 29, "greater": 29, "live": [29, 32, 35], "readi": 29, "minim": [29, 31, 35], "weak": 29, "repeat": [29, 31], "subscrib": 30, "fun": 30, "tutroal": 30, "readthedoc": 30, "en": 30, "latest": 30, "py_tutori": 30, "html": 30, "tracker": 30, "redish": 30, "binari": 30, "mask": 30, "contour": 30, "identifi": 30, "yield": 30, "averag": [30, 34], "significantli": 30, "fit": 30, "blur": 30, "discuss": [30, 32, 35], "largest": 30, "less": [30, 35], "foreground": 30, "cheat": 31, "stochast": 31, "failur": 31, "sp": 31, "pseudo": 31, "stack": [31, 35], "toward": [31, 35], "occlud": 31, "occlus": 31, "enough": [31, 32], "reliabl": [31, 34], "success": 31, "opengripp": [1, 31, 34], "robustli": 31, "endless": 31, "long": 31, "column": [31, 35], "15cm": 31, "suffic": 31, "cf": 31, "email": 32, "latex": 32, "brief": [32, 35], "prepar": 32, "statement": 32, "eventu": [32, 35], "workplan": 32, "achiev": 32, "intend": 32, "effort": 32, "mention": [32, 35], "split": 32, "max": [32, 34], "minut": 32, "spotlight": 32, "video": 32, "min": 32, "demo": 32, "briefli": 32, "softwar": 32, "talk": [32, 35], "mayb": 32, "fanci": 32, "persist": [32, 33], "explan": [32, 35], "interrupt": 32, "titl": 32, "clip": 32, "possibli": 32, "x5": 32, "cut": 32, "caption": 32, "youtub": 32, "1qymi": 32, "qon9m": 32, "sink": 32, "submit": 32, "confer": 32, "super": 32, "bad": 32, "davinci": 32, "kdenliv": 32, "keyfram": 33, "insight": [33, 35], "lgpplayer": 33, "folfil": 33, "action": 33, "pddl": 33, "conffil": 33, "skeletonsolv": 33, "mathematicalproblem": 33, "sktfile": 33, "predic": 33, "produc": 33, "src_skeletonsolv": 33, "ex": 33, "block1": 33, "stable_": 33, "block2": 33, "stableon_": 33, "block3": 33, "block4": 33, "block5": 33, "box1": 33, "repetit": 33, "five": [33, 35], "concurr": 33, "workshop": 33, "stick": 33, "intellig": 35, "intro": 35, "craig": 35, "addison": 35, "weslei": 35, "york": 35, "1989": 35, "3rd": 35, "2006": 35, "steven": 35, "laval": 35, "cambridg": 35, "onlin": 35, "uiuc": 35, "edu": 35, "videolectur": 35, "oussama": 35, "khatib": 35, "net": 35, "oussama_khatib": 35, "focu": 35, "oliv": 35, "brock": 35, "menu": 35, "stefan": 35, "schaal": 35, "clmc": 35, "usc": 35, "teachingintroductiontoroboticssyllabu": 35, "theori": 35, "analyt": 35, "pid": 35, "chapter": 35, "chri": 35, "atkeson": 35, "cmu": 35, "cga": 35, "kdc": 35, "book": 35, "ewhitman1": 35, "pptx": 35, "af": 35, "academ": 35, "16311": 35, "bug": 35, "holonom": 35, "springer": 35, "handbook": 35, "bruno": 35, "siciliano": 35, "1007": 35, "978": 35, "319": 35, "32552": 35, "seciton": 35, "found": 35, "speak": 35, "clearli": 35, "simplif": 35, "secshap": 35, "landmark": 35, "cross": 35, "appendix": 35, "apptransform": 35, "cc": 35, "commonli": 35, "r_0": 35, "theta": 35, "underlin": 35, "never": 35, "sequenti": 35, "radian": 35, "doesn": 35, "figtransform": 35, "q_": 35, "circ": 35, "to2": 35, "to3": 35, "compos": 35, "concaten": 35, "ask": 35, "backward": 35, "somewhat": 35, "ill": 35, "situat": 35, "surpris": 35, "covari": 35, "contra": 35, "variant": 35, "children": 35, "ground": 35, "q_1": 35, "q_2": 35, "q_3": 35, "hspace": 35, "0pt": 35, "textrm": 35, "5pt": 35, "q_i": 35, "abbrevi": 35, "d_i": 35, "cccc": 35, "prismat": 35, "cylindr": 35, "spheric": 35, "lie": 35, "manifold": 35, "strict": 35, "pi": 35, "q_j": 35, "denavit": 35, "hartenberg": 35, "conceptu": 35, "cleaner": 35, "becam": 35, "stream": 35, "uncov": 35, "issu": 35, "perspect": 35, "textbook": 35, "seckinemat": 35, "t_i": 35, "r_i": 35, "_x": 35, "textsf": 35, "vec": 35, "construct": 35, "_i": 35, "e_x": 35, "e_i": 35, "e_z": 35, "basi": 35, "tensor": 35, "framec": 35, "dot": 35, "recal": 35, "auto": 35, "express": 35, "simpler": 35, "cover": 35, "p_j": 35, "a_j": 35, "Its": 35, "skew": 35, "obviou": 35, "eqquatvel": 35, "ang": 35, "rewrit": 35, "label": 35, "eqquatr": 35, "wise": 35, "written": 35, "insert": 35, "unusu": 35, "notion": 35, "trickier": 35, "eqquatjac": 35, "summar": 35, "x_j": 35, "r_j": 35, "eqquatjoint1": 35, "e_k": 35, "variat": 35, "induc": 35, "divis": 35, "necessari": 35, "annot": 35, "lazili": 35, "demand": 35, "syntact": 35, "sugar": 35, "rm": 35, "diag": 35, "relev": 35, "fuse": 35, "WITH": 35, "q_t": 35, "q_0": 35, "q_k": 35, "overload": [34, 35], "tabfeatur": 35, "invert": 35, "address": 35, "eqiknlp": 35, "operatornam": 35, "_q": 35, "regular": 35, "satisfi": 35, "2_w": 35, "recommend": 35, "beyond": 35, "sort": 35, "rich": 35, "educ": 35, "secnlp": 35, "f_1": 35, "r_1": 35, "h_1": 35, "g_1": 35, "h_2": 35, "vdot": 35, "b_l": 35, "b_u": 35, "bf": 35, "orang": 35, "pgik": 35, "controlobject": 35, "mpc": [34, 35], "lagrangian": 35, "strongli": 35, "tackl": 35, "eqsoft": 35, "2_c": 35, "norm": 35, "metric": 35, "undesir": 35, "investig": 35, "infti": 35, "canon": 35, "gauss": 35, "nabla_": 35, "approx": 35, "rewritten": 35, "sharp": 35, "eqik": 35, "woodburi": 35, "rh": 35, "jump": 35, "proport": 35, "due": 35, "lucki": 35, "stepsiz": 35, "sens": 35, "heurist": 35, "infinitesim": 35, "loos": 35, "drift": 35, "nullspac": 35, "det": 35, "rank": 35, "stretch": 35, "extend": 35, "soft": 35, "trade": 35, "restrict": 35, "ourselv": 35, "ones": 35, "raw": 35, "times3": 35, "orthonorm": 35, "r_2": 35, "transpos": 35, "unconstrain": 35, "thumb": 35, "rodrigu": 35, "formula": 35, "symmetr": 35, "ccc": 35, "w_3": 35, "w_2": 35, "w_1": 35, "eqrodriguez": 35, "exp": 35, "exponenti": 35, "element": 35, "diagon": 35, "outer": 35, "eqdotr": 35, "denot": 35, "context": 35, "negat": 35, "eqquat": 35, "_0": 35, "ij": 35, "comparison": 35, "tr": 35, "r_3": 35, "31": 35, "32": 35, "analogi": 35, "lh": 35, "iff": 35, "e_0": 35, "e_3": 35, "w_i": 35, "wasn": 35, "j_": 35, "expand": 35, "rx": 35, "ordinari": 35, "t_1": 35, "t_2": 35, "v_1": 35, "v_2": 35, "t_": 35, "rigor": 35, "a_b": 35, "regard": 35, "ato": 35, "convinc": 35, "yourself": 35, "boldsymbol": 35, "e_1": 35, "e_n": 35, "p_": 35, "nolimits_i": 35, "p_i": 35, "b_1": 35, "b_n": 35, "w_n": 35, "b_i": 35, "w_": 35, "sum_j": 35, "w_j": 35, "ji": 35, "sum_i": 35, "b_j": 35, "rightarrow": 35, "d_g": 35, "d_h": 35, "d_r": 35, "sampler": 35, "matter": 35, "functnio": 35, "uint": 35, "objectivetypea": 35, "featuretyp": 35, "bounds_lo": 35, "bounds_up": 35, "void": 35, "getinitializationsampl": [1, 34, 35], "previousoptima": [34, 35], "getfhessian": [1, 34, 35], "throughout": 35, "anytyp": 35, "extens": 35, "parser": 35, "implic": 35, "url": 35, "embrac": 35, "ref": 35, "refgraph": 35, "extrins": 35, "u_x": 35, "u_i": 35, "u_d": 35, "diagram": 35, "drawn": 35, "paper": 35, "consequ": 35, "count": 35, "readabl": 35, "eqxtou": 35, "f_x": 35, "c_x": 35, "f_y": 35, "c_y": 35, "intrins": [34, 35], "vertic": 35, "tan": 35, "cartesian": 35, "u_z": 35, "cal": 35, "lambda": 35, "bold": 35, "kr": 35, "subsum": 35, "fulli": 35, "_p": 35, "compar": 35, "decompos": 35, "rq": 35, "decomposit": 35, "agument": 35, "_t": 35, "argword": [1, 34], "get_q": [1, 34], "get_qdot": [1, 34], "gripperpo": [1, 34], "setcontrollerwritedata": [1, 34], "addconfigurationcopi": [1, 34], "equationofmot": [1, 34], "getdofid": [1, 34], "getframedimens": [1, 34], "getjointdimens": [1, 34], "makeobjectsconvex": [1, 34], "makeobjectsfre": [1, 34], "selectjoint": [1, 34], "setjointstateslic": [1, 34], "sortfram": [1, 34], "stepdynam": [1, 34], "view_playvideo": [1, 34], "controlmod": [1, 34], "setord": [1, 34], "setscal": [1, 34], "settarget": [1, 34], "getattribut": [1, 34], "getmeshpoint": [1, 34], "getmeshtriangl": [1, 34], "getrelativeposit": [1, 34], "getrelativequaternion": [1, 34], "getsiz": [1, 34], "setmeshaslin": [1, 34], "setpar": [1, 34], "setrelativequaternion": [1, 34], "unlink": [1, 34], "imptyp": [1, 34], "addinteraction_elasticbounc": [1, 34], "addtimeoptim": [1, 34], "clearobject": [1, 34], "getforceinteract": [1, 34], "getpathfram": [1, 34], "getpathtau": [1, 34], "getpath_qal": [1, 34], "gett": [1, 34], "initorg": [1, 34], "initphasewithdofspath": [1, 34], "initrandom": [1, 34], "initwithconst": [1, 34], "initwithpath_qorg": [1, 34], "initwithwaypoint": [1, 34], "getbound": [1, 34], "getdimens": [1, 34], "getfeaturetyp": [1, 34], "testcallingevalcallback": [1, 34], "getopt": [1, 34], "gettrace_j": [1, 34], "gettrace_cost": [1, 34], "gettrace_phi": [1, 34], "gettrace_x": [1, 34], "settrac": [1, 34], "nlp_solveropt": [1, 34], "dict": [1, 34], "set_damp": [1, 34], "set_maxstep": [1, 34], "set_muinc": [1, 34], "set_muinit": [1, 34], "set_mulbdec": [1, 34], "set_mulbinit": [1, 34], "set_mumax": [1, 34], "set_stepdec": [1, 34], "set_stepinc": [1, 34], "set_stopev": [1, 34], "set_stopftoler": [1, 34], "set_stopgtoler": [1, 34], "set_stoptoler": [1, 34], "set_verbos": [1, 34], "set_wolf": [1, 34], "setexplicitcollisionpair": [1, 34], "addimp": [1, 34], "closegripp": [1, 34], "getgripperisgrasp": [1, 34], "getgripperwidth": [1, 34], "getgroundtruthposit": [1, 34], "getgroundtruthrotationmatrix": [1, 34], "getgroundtruths": [1, 34], "getscreenshot": [1, 34], "gettimetomov": [1, 34], "loadteleopcallback": [1, 34], "pushconfigurationtosimul": [1, 34], "setmoveto": [1, 34], "simulationengin": [1, 34], "solverreturn": [1, 34], "getstartgoalpath": [1, 34], "_right": 34, "_sequenc": 34, "_path": 34, "sensornam": 34, "globalcoordin": 34, "freq": 34, "torqu": 34, "nonsens": 34, "leftright": 34, "objnam": 34, "overwritectrltim": 34, "ctrltime": 34, "maxvel": 34, "maxacc": 34, "chosen": 34, "acc": 34, "steer": 34, "goe": 34, "arg0": 34, "waittim": 34, "forkeypress": 34, "fortimetoend": 34, "nameprefix": 34, "content": 34, "shapetyp": 34, "arg1": 34, "frame1": 34, "frame2": 34, "adopt": 34, "revers": 34, "rycameraview": 34, "offscreen": 34, "deep": 34, "framenam": 34, "qdot": 34, "0078125": 34, "dedic": 34, "kwarg": 34, "float64": 34, "remak": 34, "jointnam": 34, "notthos": 34, "jointgroup": 34, "resort": 34, "accord": 34, "topologi": 34, "dynamicnois": 34, "uint8": 34, "delai": 34, "savevideopath": 34, "launch": 34, "listent": 34, "inod": 34, "vectorydiff": 34, "vectoryrel": 34, "vectorzrel": 34, "scalarproductyx": 34, "scalarproductyi": 34, "scalarproductyz": 34, "paircollision_negscalar": 34, "paircollision_vector": 34, "paircollision_norm": 34, "paircollision_p1": 34, "paircollision_p2": 34, "contactconstraint": 34, "energi": 34, "transacceler": 34, "transveloc": 34, "arg2": 34, "dtype": 34, "depthnois": 34, "rgbnois": 34, "adversarialdropp": 34, "objectimpuls": 34, "nopenetr": 34, "transyphi": 34, "elast": 34, "sticki": 34, "newmod": 34, "skeletonsymbol": 34, "firstswitch": 34, "arra": 34, "t_phase": 34, "dofid": 34, "autoresamplepath": 34, "waypointstepsperphas": 34, "enablecollis": 34, "durationperphas": 34, "nonlinear": 34, "b_": 34, "lo": 34, "plu": 34, "uniform": 34, "callabl": 34, "portfolio": 34, "stopftoler": 34, "stopgtoler": 34, "stopev": 34, "stepinc": 34, "stepdec": 34, "wolf": 34, "muinit": 34, "muinc": 34, "mumax": 34, "mulbinit": 34, "mulbdec": 34, "arg3": 34, "resampleiniti": 34, "gradientdesc": 34, "rprop": 34, "lbfg": 34, "augmentedlag": 34, "logbarri": 34, "singlesquaredpenalti": 34, "ineqb": 34, "ineqp": 34, "collisionpair": 34, "sscylind": 34, "ssboxelip": 34, "sdf": 34, "restingon": 34, "positioneq": 34, "stablerelpos": 34, "stablepos": 34, "stableon": 34, "dynamicon": 34, "dynamictran": 34, "quasistat": 34, "quasistaticon": 34, "stablezero": 34, "contactstick": 34, "contactcomplementari": 34, "bounc": 34, "magic": 34, "magictran": 34, "pushandplac": 34, "topboxplac": 34, "dampmot": 34, "alignbyint": 34, "makefre": 34, "forcebal": 34, "relposi": 34, "touchboxnormalx": 34, "touchboxnormali": 34, "touchboxnormalz": 34, "boxgraspx": 34, "boxgraspi": 34, "boxgraspz": 34, "stableyphi": 34, "stableonx": 34, "stableoni": 34, "orthoabsheight": 34, "gripperframenam": 34, "float32": 34, "frameveloc": 34, "jointveloc": 34, "genreat": 34, "framest": 34, "date": 34}, "objects": {"robotic": [[34, 0, 0, "-", "ry"]], "robotic.ry": [[34, 1, 1, "", "ArgWord"], [34, 1, 1, "", "BotOp"], [34, 1, 1, "", "Config"], [34, 1, 1, "", "ControlMode"], [34, 1, 1, "", "FS"], [34, 1, 1, "", "Feature"], [34, 1, 1, "", "Frame"], [34, 1, 1, "", "ImpType"], [34, 1, 1, "", "JT"], [34, 1, 1, "", "KOMO"], [34, 1, 1, "", "NLP"], [34, 1, 1, "", "NLP_Factory"], [34, 1, 1, "", "NLP_Solver"], [34, 1, 1, "", "NLP_SolverID"], [34, 1, 1, "", "NLP_SolverOptions"], [34, 1, 1, "", "OT"], [34, 1, 1, "", "PathFinder"], [34, 1, 1, "", "ST"], [34, 1, 1, "", "SY"], [34, 1, 1, "", "Simulation"], [34, 1, 1, "", "SimulationEngine"], [34, 1, 1, "", "SolverReturn"], [34, 4, 1, "", "compiled"], [34, 4, 1, "", "getStartGoalPath"], [34, 4, 1, "", "params_add"], [34, 4, 1, "", "params_file"], [34, 4, 1, "", "params_print"], [34, 4, 1, "", "raiPath"], [34, 4, 1, "", "setRaiPath"]], "robotic.ry.ArgWord": [[34, 2, 1, "", "name"]], "robotic.ry.BotOp": [[34, 3, 1, "", "getCameraFxypxy"], [34, 3, 1, "", "getImageAndDepth"], [34, 3, 1, "", "getImageDepthPcl"], [34, 3, 1, "", "getKeyPressed"], [34, 3, 1, "", "getTimeToEnd"], [34, 3, 1, "", "get_q"], [34, 3, 1, "", "get_qDot"], [34, 3, 1, "", "get_qHome"], [34, 3, 1, "", "get_t"], [34, 3, 1, "", "get_tauExternal"], [34, 3, 1, "", "gripperClose"], [34, 3, 1, "", "gripperCloseGrasp"], [34, 3, 1, "", "gripperDone"], [34, 3, 1, "", "gripperMove"], [34, 3, 1, "", "gripperPos"], [34, 3, 1, "", "hold"], [34, 3, 1, "", "home"], [34, 3, 1, "", "move"], [34, 3, 1, "", "moveAutoTimed"], [34, 3, 1, "", "moveTo"], [34, 3, 1, "", "setCompliance"], [34, 3, 1, "", "setControllerWriteData"], [34, 3, 1, "", "stop"], [34, 3, 1, "", "sync"], [34, 3, 1, "", "wait"]], "robotic.ry.Config": [[34, 3, 1, "", "addConfigurationCopy"], [34, 3, 1, "", "addFile"], [34, 3, 1, "", "addFrame"], [34, 3, 1, "", "addObject"], [34, 3, 1, "", "attach"], [34, 3, 1, "", "cameraView"], [34, 3, 1, "", "clear"], [34, 3, 1, "", "computeCollisions"], [34, 3, 1, "", "copy"], [34, 3, 1, "", "delFrame"], [34, 3, 1, "", "equationOfMotion"], [34, 3, 1, "", "eval"], [34, 3, 1, "", "feature"], [34, 3, 1, "", "frame"], [34, 3, 1, "", "frames"], [34, 3, 1, "", "getCollisions"], [34, 3, 1, "", "getDofIDs"], [34, 3, 1, "", "getFrame"], [34, 3, 1, "", "getFrameDimension"], [34, 3, 1, "", "getFrameNames"], [34, 3, 1, "", "getFrameState"], [34, 3, 1, "", "getJointDimension"], [34, 3, 1, "", "getJointNames"], [34, 3, 1, "", "getJointState"], [34, 3, 1, "", "makeObjectsConvex"], [34, 3, 1, "", "makeObjectsFree"], [34, 3, 1, "", "report"], [34, 3, 1, "", "selectJoints"], [34, 3, 1, "", "selectJointsByTag"], [34, 3, 1, "", "setFrameState"], [34, 3, 1, "", "setJointState"], [34, 3, 1, "", "setJointStateSlice"], [34, 3, 1, "", "simulation"], [34, 3, 1, "", "sortFrames"], [34, 3, 1, "", "stepDynamics"], [34, 3, 1, "", "view"], [34, 3, 1, "", "view_close"], [34, 3, 1, "", "view_getScreenshot"], [34, 3, 1, "", "view_playVideo"], [34, 3, 1, "", "view_recopyMeshes"], [34, 3, 1, "", "watchFile"]], "robotic.ry.ControlMode": [[34, 2, 1, "", "name"]], "robotic.ry.FS": [[34, 2, 1, "", "name"]], "robotic.ry.Feature": [[34, 3, 1, "", "description"], [34, 3, 1, "", "eval"], [34, 3, 1, "", "setOrder"], [34, 3, 1, "", "setScale"], [34, 3, 1, "", "setTarget"]], "robotic.ry.Frame": [[34, 3, 1, "", "addAttribute"], [34, 3, 1, "", "addAttributes"], [34, 3, 1, "", "getAttributes"], [34, 3, 1, "", "getJointState"], [34, 3, 1, "", "getMeshPoints"], [34, 3, 1, "", "getMeshTriangles"], [34, 3, 1, "", "getPosition"], [34, 3, 1, "", "getQuaternion"], [34, 3, 1, "", "getRelativePosition"], [34, 3, 1, "", "getRelativeQuaternion"], [34, 3, 1, "", "getRotationMatrix"], [34, 3, 1, "", "getSize"], [34, 3, 1, "", "info"], [34, 3, 1, "", "setColor"], [34, 3, 1, "", "setContact"], [34, 3, 1, "", "setJoint"], [34, 3, 1, "", "setJointState"], [34, 3, 1, "", "setMass"], [34, 3, 1, "", "setMeshAsLines"], [34, 3, 1, "", "setParent"], [34, 3, 1, "", "setPointCloud"], [34, 3, 1, "", "setPose"], [34, 3, 1, "", "setPosition"], [34, 3, 1, "", "setQuaternion"], [34, 3, 1, "", "setRelativePose"], [34, 3, 1, "", "setRelativePosition"], [34, 3, 1, "", "setRelativeQuaternion"], [34, 3, 1, "", "setShape"], [34, 3, 1, "", "unLink"]], "robotic.ry.ImpType": [[34, 2, 1, "", "name"]], "robotic.ry.JT": [[34, 2, 1, "", "name"]], "robotic.ry.KOMO": [[34, 3, 1, "", "addControlObjective"], [34, 3, 1, "", "addInteraction_elasticBounce"], [34, 3, 1, "", "addModeSwitch"], [34, 3, 1, "", "addObjective"], [34, 3, 1, "", "addQuaternionNorms"], [34, 3, 1, "", "addTimeOptimization"], [34, 3, 1, "", "clearObjectives"], [34, 3, 1, "", "getConstraintViolations"], [34, 3, 1, "", "getCosts"], [34, 3, 1, "", "getForceInteractions"], [34, 3, 1, "", "getFrameState"], [34, 3, 1, "", "getPath"], [34, 3, 1, "", "getPathFrames"], [34, 3, 1, "", "getPathTau"], [34, 3, 1, "", "getPath_qAll"], [34, 3, 1, "", "getReport"], [34, 3, 1, "", "getT"], [34, 3, 1, "", "initOrg"], [34, 3, 1, "", "initPhaseWithDofsPath"], [34, 3, 1, "", "initRandom"], [34, 3, 1, "", "initWithConstant"], [34, 3, 1, "", "initWithPath_qOrg"], [34, 3, 1, "", "initWithWaypoints"], [34, 3, 1, "", "nlp"], [34, 3, 1, "", "reportProblem"], [34, 3, 1, "", "setConfig"], [34, 3, 1, "", "setTiming"], [34, 3, 1, "", "updateRootObjects"], [34, 3, 1, "", "view"], [34, 3, 1, "", "view_close"], [34, 3, 1, "", "view_play"]], "robotic.ry.NLP": [[34, 3, 1, "", "evaluate"], [34, 3, 1, "", "getBounds"], [34, 3, 1, "", "getDimension"], [34, 3, 1, "", "getFHessian"], [34, 3, 1, "", "getFeatureTypes"], [34, 3, 1, "", "getInitializationSample"], [34, 3, 1, "", "report"]], "robotic.ry.NLP_Factory": [[34, 3, 1, "", "setBounds"], [34, 3, 1, "", "setDimension"], [34, 3, 1, "", "setEvalCallback"], [34, 3, 1, "", "setFeatureTypes"], [34, 3, 1, "", "testCallingEvalCallback"]], "robotic.ry.NLP_Solver": [[34, 3, 1, "", "getOptions"], [34, 3, 1, "", "getTrace_J"], [34, 3, 1, "", "getTrace_costs"], [34, 3, 1, "", "getTrace_phi"], [34, 3, 1, "", "getTrace_x"], [34, 3, 1, "", "setOptions"], [34, 3, 1, "", "setProblem"], [34, 3, 1, "", "setSolver"], [34, 3, 1, "", "setTracing"], [34, 3, 1, "", "solve"]], "robotic.ry.NLP_SolverID": [[34, 2, 1, "", "name"]], "robotic.ry.NLP_SolverOptions": [[34, 3, 1, "", "dict"], [34, 3, 1, "", "set_damping"], [34, 3, 1, "", "set_maxStep"], [34, 3, 1, "", "set_muInc"], [34, 3, 1, "", "set_muInit"], [34, 3, 1, "", "set_muLBDec"], [34, 3, 1, "", "set_muLBInit"], [34, 3, 1, "", "set_muMax"], [34, 3, 1, "", "set_stepDec"], [34, 3, 1, "", "set_stepInc"], [34, 3, 1, "", "set_stopEvals"], [34, 3, 1, "", "set_stopFTolerance"], [34, 3, 1, "", "set_stopGTolerance"], [34, 3, 1, "", "set_stopTolerance"], [34, 3, 1, "", "set_verbose"], [34, 3, 1, "", "set_wolfe"]], "robotic.ry.OT": [[34, 2, 1, "", "name"]], "robotic.ry.PathFinder": [[34, 3, 1, "", "setExplicitCollisionPairs"], [34, 3, 1, "", "setProblem"], [34, 3, 1, "", "solve"], [34, 3, 1, "", "step"]], "robotic.ry.ST": [[34, 2, 1, "", "name"]], "robotic.ry.SY": [[34, 2, 1, "", "name"]], "robotic.ry.Simulation": [[34, 3, 1, "", "addImp"], [34, 3, 1, "", "addSensor"], [34, 3, 1, "", "closeGripper"], [34, 3, 1, "", "depthData2pointCloud"], [34, 3, 1, "", "getGripperIsGrasping"], [34, 3, 1, "", "getGripperWidth"], [34, 3, 1, "", "getGroundTruthPosition"], [34, 3, 1, "", "getGroundTruthRotationMatrix"], [34, 3, 1, "", "getGroundTruthSize"], [34, 3, 1, "", "getImageAndDepth"], [34, 3, 1, "", "getScreenshot"], [34, 3, 1, "", "getState"], [34, 3, 1, "", "getTimeToMove"], [34, 3, 1, "", "get_q"], [34, 3, 1, "", "get_qDot"], [34, 3, 1, "", "loadTeleopCallbacks"], [34, 3, 1, "", "openGripper"], [34, 3, 1, "", "pushConfigurationToSimulator"], [34, 3, 1, "", "selectSensor"], [34, 3, 1, "", "setMoveto"], [34, 3, 1, "", "setState"], [34, 3, 1, "", "step"]], "robotic.ry.SimulationEngine": [[34, 2, 1, "", "name"]], "robotic.ry.SolverReturn": [[34, 3, 1, "", "dict"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:property", "3": "py:method", "4": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "property", "Python property"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"]}, "titleterms": {"get": [0, 21, 24, 35], "start": [0, 5, 6, 35], "quick": 0, "instal": 0, "avanc": 0, "info": 0, "tutori": [0, 16, 25], "notebook": 0, "welcom": 1, "robot": [1, 3, 5, 6, 7, 11, 22, 35], "cours": [1, 27], "repo": 1, "content": 1, "indic": 1, "tabl": 1, "configur": [2, 10, 11, 16, 21, 22, 28, 35], "ad": [2, 21], "frame": [2, 7, 11, 21, 35], "load": [2, 11, 25], "exist": 2, "featur": [2, 10, 12, 21, 25, 29, 35], "comput": [2, 21], "geometr": 2, "properti": 2, "joint": [2, 21, 22, 35], "state": [2, 21, 24], "view": [2, 10], "interact": [2, 29], "releas": 2, "object": [2, 10, 29], "oper": [3, 29], "botop": [3, 16], "interfac": [3, 19, 35], "komo": [4, 16, 21, 25], "motion": [4, 5, 29], "optim": [4, 12, 13, 14, 17, 25, 29], "minim": 4, "ik": [4, 29, 35], "exampl": [4, 7, 9, 10, 13, 18, 33], "more": [4, 10, 11, 12, 16, 25], "constraint": 4, "box": [4, 31], "grasp": [4, 9, 11, 31], "waypoint": 4, "path": [4, 10, 13, 14, 18, 25, 29], "real": [5, 6, 25, 29], "first": [5, 7, 25], "camera": [5, 7, 10, 35], "pcl": 5, "gripper": [5, 24], "advanc": [5, 6, 10, 11, 15, 29], "complianc": [5, 6], "forc": [5, 6, 25], "torqu": [5, 6], "feedback": [5, 6], "grap": 7, "imag": [7, 24, 35], "from": [7, 21, 22, 35], "webcam": 7, "2": [7, 25, 29], "convert": 7, "simul": [7, 19, 21, 24, 27, 28], "rgb": [7, 24], "d": [7, 29], "point": 7, "cloud": 7, "3": [7, 30], "us": [7, 22, 29, 35], "multipl": [7, 11], "attach": [7, 11], "differ": 7, "sim": 9, "push": 9, "code": [10, 28, 35], "collis": [10, 11, 21, 29], "over": 10, "tupl": 10, "veloc": [10, 25, 29], "acceler": [10, 29], "need": 10, "test": [10, 25], "import": [11, 22, 35], "edit": [11, 21, 22, 35], "manipul": 11, "predefin": 11, "model": 11, "singl": 11, "how": [11, 25], "fake": 11, "enabl": 11, "disabl": 11, "queri": 11, "report": 11, "render": 11, "yaml": [11, 35], "dict": 11, "represent": 11, "invers": [12, 35], "kinemat": [12, 25, 35], "merg": [12, 14], "demo": 12, "explan": 12, "switch": [15, 25], "skeleton": [15, 33], "same": 15, "again": 15, "onli": [15, 25], "keyfram": 15, "1st": 16, "round": 16, "basic": [16, 28, 29], "depth": [16, 24, 35], "nlp": [17, 35], "formul": 17, "solv": [17, 25], "find": 18, "direct": 19, "arrai": 20, "c": [21, 24, 28, 29, 31], "tor": [21, 24], "copi": 21, "clear": 21, "set": 21, "select": 21, "activ": 21, "anyth": 21, "you": [21, 25], "might": 21, "want": 21, "structur": 21, "function": 21, "creat": 21, "other": 21, "class": 21, "viewer": 21, "etc": 21, "g": [22, 23], "file": [22, 23, 35], "describ": [22, 35], "kinedit": [22, 35], "urdf": [22, 25, 35], "notat": [22, 35], "specifi": [22, 35], "transform": [22, 35], "type": [22, 35], "graph": [23, 35], "step": [24, 25], "physic": 24, "open": 24, "close": 24, "grip": 24, "restart": 24, "previou": 24, "helper": [24, 25], "depthdata2pointcloud": 24, "learn": [25, 33], "k": [25, 35], "order": 25, "markov": 25, "No": 25, "dynam": [25, 35], "do": 25, "problem": 25, "what": [25, 33], "i": [25, 33], "formal": [25, 35], "ar": 25, "main": 25, "defin": 25, "roughli": 25, "doe": 25, "spec": 25, "can": 25, "an": [25, 35], "practic": 25, "lesson": 25, "1": [25, 28], "plai": 25, "around": 25, "rai": [25, 34, 35], "addobject": 25, "method": 25, "languag": 25, "core": 25, "vari": 25, "decis": 25, "variabl": 25, "per": 25, "time": 25, "slice": 25, "contact": 25, "summari": 25, "few": 25, "fundament": 25, "rest": 25, "phase": 25, "link": 25, "document": 25, "old": 26, "materi": [26, 35], "lab": 27, "simlab": [28, 29, 30, 31, 32], "exercis": [28, 29, 30, 31], "setup": 28, "b": [28, 29, 30, 31], "git": 28, "rough": 28, "familiar": 28, "explor": 29, "enforc": 29, "touch": 29, "e": 29, "tricki": 29, "inequ": 29, "scale": 29, "target": 29, "f": 29, "reactiv": 29, "space": 29, "control": 29, "opencv": 30, "color": 30, "base": 30, "track": 30, "background": 30, "substract": 30, "4": 31, "lift": 31, "drop": 31, "hop": 31, "ball": 31, "throw": 31, "bonu": 31, "project": 32, "propos": 32, "final": 32, "present": 32, "detail": 32, "about": 33, "lgp": 33, "python": 34, "api": 34, "lectur": 35, "script": 35, "introduct": 35, "refer": 35, "scene": 35, "descript": 35, "coordin": 35, "composit": 35, "tree": 35, "forest": 35, "parameter": 35, "vector": 35, "forward": 35, "jacobian": 35, "rotat": 35, "translat": 35, "quaternion": 35, "implement": 35, "engin": 35, "build": 35, "classic": 35, "deriv": 35, "pseudo": 35, "solut": 35, "On": 35, "fly": 35, "singular": 35, "placehold": 35, "3d": 35, "static": 35, "A": 35, "note": 35, "affin": 35, "style": 35, "world": 35, "homogen": 35, "matrix": 35, "p": 35, "calibr": 35, "estim": 35, "r": 35, "t": 35, "data": 35, "shape": 35}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"Getting Started": [[0, "getting-started"]], "Quick install": [[0, "quick-install"]], "Avanced info": [[0, "avanced-info"]], "Installing the tutorial notebooks": [[0, "installing-the-tutorial-notebooks"]], "Welcome to the Robotics Course Repo": [[1, "welcome-to-the-robotics-course-repo"]], "Contents:": [[1, null]], "Indices and tables": [[1, "indices-and-tables"]], "Configurations": [[2, "Configurations"]], "Adding frames to a configuration": [[2, "Adding-frames-to-a-configuration"]], "Loading existing configurations": [[2, "Loading-existing-configurations"]], "Features: computing geometric properties": [[2, "Features:-computing-geometric-properties"]], "Joint and Frame State": [[2, "Joint-and-Frame-State"]], "View interaction and releasing objects": [[2, "View-interaction-and-releasing-objects"]], "Robot Operation (BotOp) interface": [[3, "Robot-Operation-(BotOp)-interface"]], "KOMO: Motion Optimization": [[4, "KOMO:-Motion-Optimization"]], "Minimal IK example": [[4, "Minimal-IK-example"]], "Example for more constraints: box grasping IK": [[4, "Example-for-more-constraints:-box-grasping-IK"]], "Waypoints example": [[4, "Waypoints-example"]], "Path example": [[4, "Path-example"]], "Starting with a real robot": [[5, "Starting-with-a-real-robot"], [6, "Starting-with-a-real-robot"]], "First robot motion, camera & pcl, and gripper motion": [[5, "First-robot-motion,-camera-&-pcl,-and-gripper-motion"]], "Advanced: Compliance & Force/Torque feedback": [[5, "Advanced:-Compliance-&-Force/Torque-feedback"], [6, "Advanced:-Compliance-&-Force/Torque-feedback"]], "First example to grap images from a webcam": [[7, "First-example-to-grap-images-from-a-webcam"]], "2. Example to convert simulated RGB-D images into point clouds": [[7, "2.-Example-to-convert-simulated-RGB-D-images-into-point-clouds"]], "3. example to use multiple camera attached to different robot frames": [[7, "3.-example-to-use-multiple-camera-attached-to-different-robot-frames"]], "Example for grasping in Sim": [[9, "Example-for-grasping-in-Sim"]], "Example for pushing in sim": [[9, "Example-for-pushing-in-sim"]], "Features": [[10, "Features"], [10, "id1"]], "Code example for collision features": [[10, "Code-example-for-collision-features"]], "Advanced: Features over configuration tuples (path configurations, velocity/acceleration features)": [[10, "Advanced:-Features-over-configuration-tuples-(path-configurations,-velocity/acceleration-features)"]], "Camera views (needs more testing)": [[10, "Camera-views-(needs-more-testing)"]], "Examples": [[10, "Examples"]], "Objectives": [[10, "Objectives"]], "Importing, Editing & Manipulating Configurations": [[11, "Importing,-Editing-&-Manipulating-Configurations"]], "Editing": [[11, "Editing"]], "Predefined robot models": [[11, "Predefined-robot-models"]], "Loading multiple models in a single configuration": [[11, "Loading-multiple-models-in-a-single-configuration"]], "How to attach frames - faking grasps": [[11, "How-to-attach-frames---faking-grasps"]], "How to enable/disable collisions": [[11, "How-to-enable/disable-collisions"], [11, "id1"]], "More on collisions: Disable/enable, query, report": [[11, "More-on-collisions:-Disable/enable,-query,-report"]], "Rendering configurations": [[11, "Rendering-configurations"]], "Advanced: YAML and dict representations": [[11, "Advanced:-YAML-and-dict-representations"]], "Inverse Kinematics as Optimization (to be merged)": [[12, "Inverse-Kinematics-as-Optimization-(to-be-merged)"]], "Demo of features in Inverse Kinematics": [[12, "Demo-of-features-in-Inverse-Kinematics"]], "More explanations": [[12, "More-explanations"]], "Path optimization example": [[13, "Path-optimization-example"]], "Path Optimization (to be merged)": [[14, "Path-Optimization-(to-be-merged)"]], "Advanced: Switches & Skeletons": [[15, "Advanced:-Switches-&-Skeletons"]], "Same again, but only the keyframes:": [[15, "Same-again,-but-only-the-keyframes:"]], "Skeletons": [[15, "Skeletons"]], "Tutorials": [[16, "tutorials"]], "1st Round: Basics on Configurations, BotOp & KOMO": [[16, "st-round-basics-on-configurations-botop-komo"]], "More in depth": [[16, "more-in-depth"]], "Optimization (NLP formulation and solving)": [[17, "Optimization-(NLP-formulation-and-solving)"]], "Path finding example": [[18, "Path-finding-example"]], "Direct simulation interface": [[19, "Direct-simulation-interface"]], "Array": [[20, "array"]], ".g-files to describe robot configurations": [[22, "g-files-to-describe-robot-configurations"]], "Editing using kinEdit": [[22, "editing-using-kinedit"], [35, "editing-using-kinedit"]], "Import from URDF": [[22, "import-from-urdf"], [35, "import-from-urdf"]], "Notation to specify transformations": [[22, "notation-to-specify-transformations"], [35, "notation-to-specify-transformations"]], "Joint types": [[22, "joint-types"], [35, "joint-types"]], "Graph and .g-files": [[23, "graph-and-g-files"]], "Learning KOMO (K-Order Markov Optimization)": [[25, "learning-komo-k-order-markov-optimization"]], "No dynamics? No velocities? How do you solve for dynamic problems?": [[25, "no-dynamics-no-velocities-how-do-you-solve-for-dynamic-problems"]], "What is KOMO?": [[25, "what-is-komo"]], "What is KOMO \u2013 formally?": [[25, "what-is-komo-formally"]], "What are the main steps to define a KOMO problem?": [[25, "what-are-the-main-steps-to-define-a-komo-problem"]], "Roughly, what does KOMO do with these specs?": [[25, "roughly-what-does-komo-do-with-these-specs"]], "Can KOMO only optimize paths?": [[25, "can-komo-only-optimize-paths"]], "Can I load an URDF?": [[25, "can-i-load-an-urdf"]], "First practical steps": [[25, "first-practical-steps"]], "Lesson 1: play around with $RAI/test/KOMO/tutorial": [[25, "lesson-1-play-around-with-rai-test-komo-tutorial"]], "Lesson 2: Learn the addObjective method and the \u201cLanguage of Features\u201d": [[25, "lesson-2-learn-the-addobjective-method-and-the-language-of-features"]], "Features are at the core": [[25, "features-are-at-the-core"]], "Varying decision variables per time slice: kinematic switches & force contacts": [[25, "varying-decision-variables-per-time-slice-kinematic-switches-force-contacts"]], "Summary: there are only a few fundamental methods in KOMO, the rest are helpers": [[25, "summary-there-are-only-a-few-fundamental-methods-in-komo-the-rest-are-helpers"]], "Steps, phase, real time, and time optimization": [[25, "steps-phase-real-time-and-time-optimization"]], "LINKS to more documentation": [[25, "links-to-more-documentation"]], "Old Material": [[26, "old-material"]], "Lab Course in Simulation": [[27, "lab-course-in-simulation"]], "SimLab Exercise 1 - Basic Setup": [[28, "simlab-exercise-1-basic-setup"]], "a) Code Setup": [[28, "a-code-setup"]], "b) Git Setup": [[28, "b-git-setup"]], "c) Rough familiarity with Simulation and Configuration": [[28, "c-rough-familiarity-with-simulation-and-configuration"]], "SimLab Exercise 2 - Motion": [[29, "simlab-exercise-2-motion"]], "a) Basic IK": [[29, "a-basic-ik"]], "b) Path Optimization & velocity/acceleration objectives": [[29, "b-path-optimization-velocity-acceleration-objectives"]], "c) Explore collision features, and enforce touch": [[29, "c-explore-collision-features-and-enforce-touch"]], "d) Interacting with \u201creal\u201d objects": [[29, "d-interacting-with-real-objects"]], "e) Advanced: Tricky use of inequalities, scaling, and target": [[29, "e-advanced-tricky-use-of-inequalities-scaling-and-target"]], "f) Advanced: Reactive Operational Space Control": [[29, "f-advanced-reactive-operational-space-control"]], "SimLab Exercise 3 - OpenCV": [[30, "simlab-exercise-3-opencv"]], "a) OpenCV - color-based tracking": [[30, "a-opencv-color-based-tracking"]], "b) OpenCV - background substraction": [[30, "b-opencv-background-substraction"]], "SimLab Exercise 4 - Grasp": [[31, "simlab-exercise-4-grasp"]], "a) Grasp, lift & drop a hopping ball": [[31, "a-grasp-lift-drop-a-hopping-ball"]], "b) Throw the ball": [[31, "b-throw-the-ball"]], "c) Bonus: \u2026and for a box": [[31, "c-bonus-and-for-a-box"]], "SimLab - Project Proposal and Final Presentation": [[32, "simlab-project-proposal-and-final-presentation"]], "Project Proposal": [[32, "project-proposal"]], "Presentation Details": [[32, "presentation-details"]], "Learning about Skeletons & LGP": [[33, "learning-about-skeletons-lgp"]], "What is LGP?": [[33, "what-is-lgp"]], "Example Skeletons": [[33, "example-skeletons"]], "Configuration": [[21, "configuration"]], "C\u2019tor": [[21, "c-tor"], [24, "c-tor"]], "Adding frames to the configuration": [[21, "adding-frames-to-the-configuration"]], "Copy, clear": [[21, "copy-clear"]], "Joint state: get/set, and selecting active joints": [[21, "joint-state-get-set-and-selecting-active-joints"]], "Frame state": [[21, "frame-state"]], "Features: Anything you might want to compute from Configurations": [[21, "features-anything-you-might-want-to-compute-from-configurations"]], "Structural edits": [[21, "structural-edits"]], "Collision computations": [[21, "collision-computations"]], "Functions to create other classes (KOMO, Simulation, viewer, etc)": [[21, "functions-to-create-other-classes-komo-simulation-viewer-etc"]], "Simulation": [[24, "simulation"]], "Stepping physics": [[24, "stepping-physics"]], "Opening & closing the gripper, and gripping state": [[24, "opening-closing-the-gripper-and-gripping-state"]], "Getting simulated RGB and depth images": [[24, "getting-simulated-rgb-and-depth-images"]], "Simulation states: restarting the simulation in previous states": [[24, "simulation-states-restarting-the-simulation-in-previous-states"]], "Helper: depthData2pointCloud": [[24, "helper-depthdata2pointcloud"]], "rai python API": [[34, "module-robotic.ry"]], "Lecture Script": [[35, "lecture-script"]], "Introduction": [[35, "introduction"]], "Reference material": [[35, "reference-material"]], "Coding Getting Started": [[35, "coding-getting-started"]], "Scene & Robot Description": [[35, "scene-robot-description"]], "Transformations": [[35, "transformations"], [35, "id1"]], "Coordinates and Composition of Transformations": [[35, "coordinates-and-composition-of-transformations"]], "Scene Tree or Forest": [[35, "scene-tree-or-forest"]], "Kinematics": [[35, "kinematics"]], "Robots as Parameterized Trees": [[35, "robots-as-parameterized-trees"]], "Configuration & Joint Vector": [[35, "configuration-joint-vector"]], "Forward Kinematics": [[35, "forward-kinematics"]], "Jacobians": [[35, "jacobians"]], "Rotational Joint": [[35, "rotational-joint"]], "Translational Joint": [[35, "translational-joint"]], "Quaternion Joint": [[35, "quaternion-joint"]], "Implementing a Kinematic Engine": [[35, "implementing-a-kinematic-engine"]], "Features in rai": [[35, "features-in-rai"]], "Inverse Kinematics": [[35, "inverse-kinematics"]], "Building an NLP from features": [[35, "building-an-nlp-from-features"]], "Classical Derivation of Pseudo-Inverse Jacobian Solution": [[35, "classical-derivation-of-pseudo-inverse-jacobian-solution"]], "Pseudo-inverse Jacobian.": [[35, "pseudo-inverse-jacobian"]], "On the fly IK.": [[35, "on-the-fly-ik"]], "Singularity.": [[35, "singularity"]], "Placeholder": [[35, "placeholder"], [35, "id4"]], "3D Transformations, Rotations, Quaternions": [[35, "d-transformations-rotations-quaternions"]], "Rotations": [[35, "rotations"]], "Static transformations": [[35, "static-transformations"]], "Dynamic transformations": [[35, "dynamic-transformations"]], "A note on affine coordinate frames": [[35, "a-note-on-affine-coordinate-frames"]], "RAI references": [[35, "rai-references"]], "NLP interface": [[35, "nlp-interface"]], "Kinematic Features": [[35, "kinematic-features"]], "Graph-Yaml Files": [[35, "graph-yaml-files"]], "yaml-style files to describe robot configurations": [[35, "yaml-style-files-to-describe-robot-configurations"]], "Cameras": [[35, "cameras"]], "Image, Camera, & World Coordinates": [[35, "image-camera-world-coordinates"]], "Homogeneous coordinates & Camera Matrix P": [[35, "homogeneous-coordinates-camera-matrix-p"]], "Calibration as Estimating P,K,R,t from Depth Data": [[35, "calibration-as-estimating-p-k-r-t-from-depth-data"]], "Shapes": [[35, "shapes"]], "Kinematics formally": [[35, "kinematics-formally"]]}, "indexentries": {"argword (class in robotic.ry)": [[34, "robotic.ry.ArgWord"]], "botop (class in robotic.ry)": [[34, "robotic.ry.BotOp"]], "config (class in robotic.ry)": [[34, "robotic.ry.Config"]], "controlmode (class in robotic.ry)": [[34, "robotic.ry.ControlMode"]], "fs (class in robotic.ry)": [[34, "robotic.ry.FS"]], "feature (class in robotic.ry)": [[34, "robotic.ry.Feature"]], "frame (class in robotic.ry)": [[34, "robotic.ry.Frame"]], "imptype (class in robotic.ry)": [[34, "robotic.ry.ImpType"]], "jt (class in robotic.ry)": [[34, "robotic.ry.JT"]], "komo (class in robotic.ry)": [[34, "robotic.ry.KOMO"]], "nlp (class in robotic.ry)": [[34, "robotic.ry.NLP"]], "nlp_factory (class in robotic.ry)": [[34, "robotic.ry.NLP_Factory"]], "nlp_solver (class in robotic.ry)": [[34, "robotic.ry.NLP_Solver"]], "nlp_solverid (class in robotic.ry)": [[34, "robotic.ry.NLP_SolverID"]], "nlp_solveroptions (class in robotic.ry)": [[34, "robotic.ry.NLP_SolverOptions"]], "ot (class in robotic.ry)": [[34, "robotic.ry.OT"]], "pathfinder (class in robotic.ry)": [[34, "robotic.ry.PathFinder"]], "st (class in robotic.ry)": [[34, "robotic.ry.ST"]], "sy (class in robotic.ry)": [[34, "robotic.ry.SY"]], "simulation (class in robotic.ry)": [[34, "robotic.ry.Simulation"]], "simulationengine (class in robotic.ry)": [[34, "robotic.ry.SimulationEngine"]], "solverreturn (class in robotic.ry)": [[34, "robotic.ry.SolverReturn"]], "addattribute() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.addAttribute"]], "addattributes() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.addAttributes"]], "addconfigurationcopy() (robotic.ry.config method)": [[34, "robotic.ry.Config.addConfigurationCopy"]], "addcontrolobjective() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.addControlObjective"]], "addfile() (robotic.ry.config method)": [[34, "robotic.ry.Config.addFile"]], "addframe() (robotic.ry.config method)": [[34, "robotic.ry.Config.addFrame"]], "addimp() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.addImp"]], "addinteraction_elasticbounce() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.addInteraction_elasticBounce"]], "addmodeswitch() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.addModeSwitch"]], "addobject() (robotic.ry.config method)": [[34, "robotic.ry.Config.addObject"]], "addobjective() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.addObjective"]], "addquaternionnorms() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.addQuaternionNorms"]], "addsensor() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.addSensor"]], "addtimeoptimization() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.addTimeOptimization"]], "attach() (robotic.ry.config method)": [[34, "robotic.ry.Config.attach"]], "cameraview() (robotic.ry.config method)": [[34, "robotic.ry.Config.cameraView"]], "clear() (robotic.ry.config method)": [[34, "robotic.ry.Config.clear"]], "clearobjectives() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.clearObjectives"]], "closegripper() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.closeGripper"]], "compiled() (in module robotic.ry)": [[34, "robotic.ry.compiled"]], "computecollisions() (robotic.ry.config method)": [[34, "robotic.ry.Config.computeCollisions"]], "copy() (robotic.ry.config method)": [[34, "robotic.ry.Config.copy"]], "delframe() (robotic.ry.config method)": [[34, "robotic.ry.Config.delFrame"]], "depthdata2pointcloud() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.depthData2pointCloud"]], "description() (robotic.ry.feature method)": [[34, "robotic.ry.Feature.description"]], "dict() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.dict"]], "dict() (robotic.ry.solverreturn method)": [[34, "robotic.ry.SolverReturn.dict"]], "equationofmotion() (robotic.ry.config method)": [[34, "robotic.ry.Config.equationOfMotion"]], "eval() (robotic.ry.config method)": [[34, "robotic.ry.Config.eval"]], "eval() (robotic.ry.feature method)": [[34, "robotic.ry.Feature.eval"]], "evaluate() (robotic.ry.nlp method)": [[34, "robotic.ry.NLP.evaluate"]], "feature() (robotic.ry.config method)": [[34, "robotic.ry.Config.feature"]], "frame() (robotic.ry.config method)": [[34, "robotic.ry.Config.frame"]], "frames() (robotic.ry.config method)": [[34, "robotic.ry.Config.frames"]], "getattributes() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.getAttributes"]], "getbounds() (robotic.ry.nlp method)": [[34, "robotic.ry.NLP.getBounds"]], "getcamerafxypxy() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.getCameraFxypxy"]], "getcollisions() (robotic.ry.config method)": [[34, "robotic.ry.Config.getCollisions"]], "getconstraintviolations() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.getConstraintViolations"]], "getcosts() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.getCosts"]], "getdimension() (robotic.ry.nlp method)": [[34, "robotic.ry.NLP.getDimension"]], "getdofids() (robotic.ry.config method)": [[34, "robotic.ry.Config.getDofIDs"]], "getfhessian() (robotic.ry.nlp method)": [[34, "robotic.ry.NLP.getFHessian"]], "getfeaturetypes() (robotic.ry.nlp method)": [[34, "robotic.ry.NLP.getFeatureTypes"]], "getforceinteractions() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.getForceInteractions"]], "getframe() (robotic.ry.config method)": [[34, "robotic.ry.Config.getFrame"]], "getframedimension() (robotic.ry.config method)": [[34, "robotic.ry.Config.getFrameDimension"]], "getframenames() (robotic.ry.config method)": [[34, "robotic.ry.Config.getFrameNames"]], "getframestate() (robotic.ry.config method)": [[34, "robotic.ry.Config.getFrameState"]], "getframestate() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.getFrameState"]], "getgripperisgrasping() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.getGripperIsGrasping"]], "getgripperwidth() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.getGripperWidth"]], "getgroundtruthposition() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.getGroundTruthPosition"]], "getgroundtruthrotationmatrix() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.getGroundTruthRotationMatrix"]], "getgroundtruthsize() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.getGroundTruthSize"]], "getimageanddepth() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.getImageAndDepth"]], "getimageanddepth() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.getImageAndDepth"]], "getimagedepthpcl() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.getImageDepthPcl"]], "getinitializationsample() (robotic.ry.nlp method)": [[34, "robotic.ry.NLP.getInitializationSample"]], "getjointdimension() (robotic.ry.config method)": [[34, "robotic.ry.Config.getJointDimension"]], "getjointnames() (robotic.ry.config method)": [[34, "robotic.ry.Config.getJointNames"]], "getjointstate() (robotic.ry.config method)": [[34, "robotic.ry.Config.getJointState"]], "getjointstate() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.getJointState"]], "getkeypressed() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.getKeyPressed"]], "getmeshpoints() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.getMeshPoints"]], "getmeshtriangles() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.getMeshTriangles"]], "getoptions() (robotic.ry.nlp_solver method)": [[34, "robotic.ry.NLP_Solver.getOptions"]], "getpath() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.getPath"]], "getpathframes() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.getPathFrames"]], "getpathtau() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.getPathTau"]], "getpath_qall() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.getPath_qAll"]], "getposition() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.getPosition"]], "getquaternion() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.getQuaternion"]], "getrelativeposition() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.getRelativePosition"]], "getrelativequaternion() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.getRelativeQuaternion"]], "getreport() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.getReport"]], "getrotationmatrix() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.getRotationMatrix"]], "getscreenshot() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.getScreenshot"]], "getsize() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.getSize"]], "getstartgoalpath() (in module robotic.ry)": [[34, "robotic.ry.getStartGoalPath"]], "getstate() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.getState"]], "gett() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.getT"]], "gettimetoend() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.getTimeToEnd"]], "gettimetomove() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.getTimeToMove"]], "gettrace_j() (robotic.ry.nlp_solver method)": [[34, "robotic.ry.NLP_Solver.getTrace_J"]], "gettrace_costs() (robotic.ry.nlp_solver method)": [[34, "robotic.ry.NLP_Solver.getTrace_costs"]], "gettrace_phi() (robotic.ry.nlp_solver method)": [[34, "robotic.ry.NLP_Solver.getTrace_phi"]], "gettrace_x() (robotic.ry.nlp_solver method)": [[34, "robotic.ry.NLP_Solver.getTrace_x"]], "get_q() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.get_q"]], "get_q() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.get_q"]], "get_qdot() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.get_qDot"]], "get_qdot() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.get_qDot"]], "get_qhome() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.get_qHome"]], "get_t() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.get_t"]], "get_tauexternal() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.get_tauExternal"]], "gripperclose() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.gripperClose"]], "gripperclosegrasp() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.gripperCloseGrasp"]], "gripperdone() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.gripperDone"]], "grippermove() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.gripperMove"]], "gripperpos() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.gripperPos"]], "hold() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.hold"]], "home() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.home"]], "info() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.info"]], "initorg() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.initOrg"]], "initphasewithdofspath() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.initPhaseWithDofsPath"]], "initrandom() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.initRandom"]], "initwithconstant() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.initWithConstant"]], "initwithpath_qorg() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.initWithPath_qOrg"]], "initwithwaypoints() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.initWithWaypoints"]], "loadteleopcallbacks() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.loadTeleopCallbacks"]], "makeobjectsconvex() (robotic.ry.config method)": [[34, "robotic.ry.Config.makeObjectsConvex"]], "makeobjectsfree() (robotic.ry.config method)": [[34, "robotic.ry.Config.makeObjectsFree"]], "module": [[34, "module-robotic.ry"]], "move() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.move"]], "moveautotimed() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.moveAutoTimed"]], "moveto() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.moveTo"]], "name (robotic.ry.argword property)": [[34, "robotic.ry.ArgWord.name"]], "name (robotic.ry.controlmode property)": [[34, "robotic.ry.ControlMode.name"]], "name (robotic.ry.fs property)": [[34, "robotic.ry.FS.name"]], "name (robotic.ry.imptype property)": [[34, "robotic.ry.ImpType.name"]], "name (robotic.ry.jt property)": [[34, "robotic.ry.JT.name"]], "name (robotic.ry.nlp_solverid property)": [[34, "robotic.ry.NLP_SolverID.name"]], "name (robotic.ry.ot property)": [[34, "robotic.ry.OT.name"]], "name (robotic.ry.st property)": [[34, "robotic.ry.ST.name"]], "name (robotic.ry.sy property)": [[34, "robotic.ry.SY.name"]], "name (robotic.ry.simulationengine property)": [[34, "robotic.ry.SimulationEngine.name"]], "nlp() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.nlp"]], "opengripper() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.openGripper"]], "params_add() (in module robotic.ry)": [[34, "robotic.ry.params_add"]], "params_file() (in module robotic.ry)": [[34, "robotic.ry.params_file"]], "params_print() (in module robotic.ry)": [[34, "robotic.ry.params_print"]], "pushconfigurationtosimulator() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.pushConfigurationToSimulator"]], "raipath() (in module robotic.ry)": [[34, "robotic.ry.raiPath"]], "report() (robotic.ry.config method)": [[34, "robotic.ry.Config.report"]], "report() (robotic.ry.nlp method)": [[34, "robotic.ry.NLP.report"]], "reportproblem() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.reportProblem"]], "robotic.ry": [[34, "module-robotic.ry"]], "selectjoints() (robotic.ry.config method)": [[34, "robotic.ry.Config.selectJoints"]], "selectjointsbytag() (robotic.ry.config method)": [[34, "robotic.ry.Config.selectJointsByTag"]], "selectsensor() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.selectSensor"]], "setbounds() (robotic.ry.nlp_factory method)": [[34, "robotic.ry.NLP_Factory.setBounds"]], "setcolor() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setColor"]], "setcompliance() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.setCompliance"]], "setconfig() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.setConfig"]], "setcontact() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setContact"]], "setcontrollerwritedata() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.setControllerWriteData"]], "setdimension() (robotic.ry.nlp_factory method)": [[34, "robotic.ry.NLP_Factory.setDimension"]], "setevalcallback() (robotic.ry.nlp_factory method)": [[34, "robotic.ry.NLP_Factory.setEvalCallback"]], "setexplicitcollisionpairs() (robotic.ry.pathfinder method)": [[34, "robotic.ry.PathFinder.setExplicitCollisionPairs"]], "setfeaturetypes() (robotic.ry.nlp_factory method)": [[34, "robotic.ry.NLP_Factory.setFeatureTypes"]], "setframestate() (robotic.ry.config method)": [[34, "robotic.ry.Config.setFrameState"]], "setjoint() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setJoint"]], "setjointstate() (robotic.ry.config method)": [[34, "robotic.ry.Config.setJointState"]], "setjointstate() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setJointState"]], "setjointstateslice() (robotic.ry.config method)": [[34, "robotic.ry.Config.setJointStateSlice"]], "setmass() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setMass"]], "setmeshaslines() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setMeshAsLines"]], "setmoveto() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.setMoveto"]], "setoptions() (robotic.ry.nlp_solver method)": [[34, "robotic.ry.NLP_Solver.setOptions"]], "setorder() (robotic.ry.feature method)": [[34, "robotic.ry.Feature.setOrder"]], "setparent() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setParent"]], "setpointcloud() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setPointCloud"]], "setpose() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setPose"]], "setposition() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setPosition"]], "setproblem() (robotic.ry.nlp_solver method)": [[34, "robotic.ry.NLP_Solver.setProblem"]], "setproblem() (robotic.ry.pathfinder method)": [[34, "robotic.ry.PathFinder.setProblem"]], "setquaternion() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setQuaternion"]], "setraipath() (in module robotic.ry)": [[34, "robotic.ry.setRaiPath"]], "setrelativepose() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setRelativePose"]], "setrelativeposition() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setRelativePosition"]], "setrelativequaternion() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setRelativeQuaternion"]], "setscale() (robotic.ry.feature method)": [[34, "robotic.ry.Feature.setScale"]], "setshape() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.setShape"]], "setsolver() (robotic.ry.nlp_solver method)": [[34, "robotic.ry.NLP_Solver.setSolver"]], "setstate() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.setState"]], "settarget() (robotic.ry.feature method)": [[34, "robotic.ry.Feature.setTarget"]], "settiming() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.setTiming"]], "settracing() (robotic.ry.nlp_solver method)": [[34, "robotic.ry.NLP_Solver.setTracing"]], "set_damping() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_damping"]], "set_maxstep() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_maxStep"]], "set_muinc() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_muInc"]], "set_muinit() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_muInit"]], "set_mulbdec() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_muLBDec"]], "set_mulbinit() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_muLBInit"]], "set_mumax() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_muMax"]], "set_stepdec() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_stepDec"]], "set_stepinc() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_stepInc"]], "set_stopevals() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_stopEvals"]], "set_stopftolerance() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_stopFTolerance"]], "set_stopgtolerance() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_stopGTolerance"]], "set_stoptolerance() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_stopTolerance"]], "set_verbose() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_verbose"]], "set_wolfe() (robotic.ry.nlp_solveroptions method)": [[34, "robotic.ry.NLP_SolverOptions.set_wolfe"]], "simulation() (robotic.ry.config method)": [[34, "robotic.ry.Config.simulation"]], "solve() (robotic.ry.nlp_solver method)": [[34, "robotic.ry.NLP_Solver.solve"]], "solve() (robotic.ry.pathfinder method)": [[34, "robotic.ry.PathFinder.solve"]], "sortframes() (robotic.ry.config method)": [[34, "robotic.ry.Config.sortFrames"]], "step() (robotic.ry.pathfinder method)": [[34, "robotic.ry.PathFinder.step"]], "step() (robotic.ry.simulation method)": [[34, "robotic.ry.Simulation.step"]], "stepdynamics() (robotic.ry.config method)": [[34, "robotic.ry.Config.stepDynamics"]], "stop() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.stop"]], "sync() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.sync"]], "testcallingevalcallback() (robotic.ry.nlp_factory method)": [[34, "robotic.ry.NLP_Factory.testCallingEvalCallback"]], "unlink() (robotic.ry.frame method)": [[34, "robotic.ry.Frame.unLink"]], "updaterootobjects() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.updateRootObjects"]], "view() (robotic.ry.config method)": [[34, "robotic.ry.Config.view"]], "view() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.view"]], "view_close() (robotic.ry.config method)": [[34, "robotic.ry.Config.view_close"]], "view_close() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.view_close"]], "view_getscreenshot() (robotic.ry.config method)": [[34, "robotic.ry.Config.view_getScreenshot"]], "view_play() (robotic.ry.komo method)": [[34, "robotic.ry.KOMO.view_play"]], "view_playvideo() (robotic.ry.config method)": [[34, "robotic.ry.Config.view_playVideo"]], "view_recopymeshes() (robotic.ry.config method)": [[34, "robotic.ry.Config.view_recopyMeshes"]], "wait() (robotic.ry.botop method)": [[34, "robotic.ry.BotOp.wait"]], "watchfile() (robotic.ry.config method)": [[34, "robotic.ry.Config.watchFile"]]}}) \ No newline at end of file diff --git a/docs/source/conf.py b/docs/source/conf.py index 4083e51..a68073e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -17,10 +17,8 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # -import os import sys -sys.path.insert(0, os.path.abspath('../../../botop/build')) - +print('=================', sys.version, sys.path) # -- General configuration ------------------------------------------------ diff --git a/docs/source/getting_started.md b/docs/source/getting_started.md index f678011..84d9d41 100644 --- a/docs/source/getting_started.md +++ b/docs/source/getting_started.md @@ -43,8 +43,9 @@ A standard test is ## Installing the tutorial notebooks - git clone cd - rai-python/notebooks jupyter-notebook . + git clone https://github.com/MarcToussaint/rai-python.git + cd rai-python/notebooks + jupyter-notebook . If you don't have jupyter installed yet: diff --git a/docs/source/getting_started.rst b/docs/source/getting_started.rst index 8795dfa..219d08b 100644 --- a/docs/source/getting_started.rst +++ b/docs/source/getting_started.rst @@ -53,8 +53,9 @@ Installing the tutorial notebooks :: - git clone cd - rai-python/notebooks jupyter-notebook . + git clone https://github.com/MarcToussaint/rai-python.git + cd rai-python/notebooks + jupyter-notebook . If you don’t have jupyter installed yet: diff --git a/docs/source/notebooks/1d-real.ipynb b/docs/source/notebooks/1d-real.ipynb new file mode 100644 index 0000000..65ba04c --- /dev/null +++ b/docs/source/notebooks/1d-real.ipynb @@ -0,0 +1,619 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "59a99259", + "metadata": {}, + "source": [ + "# Starting with a real robot\n", + "\n", + "The BotOp interface should work equally for a simulated and real robot. Note that currently only a locally compiled robotic package supports connecting to a Franka robot and Realsense camera. Here some first cautious steps to get started with a real robot." + ] + }, + { + "cell_type": "markdown", + "id": "fee0684d", + "metadata": {}, + "source": [ + "## First robot motion, camera & pcl, and gripper motion" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "eca938ab", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "compile time: Sep 23 2023 18:22:45\n" + ] + } + ], + "source": [ + "from robotic import ry\n", + "import numpy as np\n", + "import time\n", + "print(ry.compiled())" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "950397d7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-- ry.cpp:operator():99(0) python,\n", + "message: \"Hello, the local 'rai.cfg' was loaded\",\n", + "botsim/verbose: 1,\n", + "physx/motorKp: 10000,\n", + "physx/motorKd: 1000\n" + ] + } + ], + "source": [ + "#in case you switch to simulation\n", + "ry.params_add({'botsim/verbose': 1., 'physx/motorKp': 10000., 'physx/motorKd': 1000.})\n", + "ry.params_print()" + ] + }, + { + "cell_type": "markdown", + "id": "e3280d7b", + "metadata": {}, + "source": [ + "First, also for a real robot we first load the configuration and maintain our own workspace configuration." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "33f75e77", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C = ry.Config()\n", + "C.addFile(ry.raiPath('../rai-robotModels/scenarios/pandaSingle.g'))\n", + "pcl = C.addFrame('pcl', 'cameraWrist')\n", + "C.view(False, 'this is your workspace data structure C -- NOT THE SIMULTATION')" + ] + }, + { + "cell_type": "markdown", + "id": "f0a194da", + "metadata": {}, + "source": [ + "Now we start botop with real=True. By passing the model configuration C, the system knows which and how many robots there should be an tries to connect with them." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f1119ecc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-- bot.cpp:BotOp:38(0) CONNECTING TO FRANKAS..\n", + "STACK9 /usr/bin/python3(PyObject_Call\n", + "STACK8 /usr/bin/python3() [0x50b8a8]\n", + "STACK7 /usr/bin/python3(_PyObject_MakeTpCall\n", + "STACK6 /usr/bin/python3(PyCFunction_Call\n", + "STACK5 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0xbc6af) [0x7f9a446ad6af]\n", + "STACK4 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0x3bb9e) [0x7f9a4462cb9e]\n", + "STACK3 BotOp::BotOp(rai::Configuration&, bool)\n", + "STACK2 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, int, rai::Array, Var&, Var&>(FrankaThread*&, std::_Sp_alloc_shared_tag >, int&&, rai::Array&&, Var&, Var&)\n", + "STACK1 FrankaThread::init(unsigned int, rai::Array const&)\n", + "STACK0 rai::LogToken::~LogToken()\n", + "-- WARNING:bot.cpp:BotOp:70(-1) Starting the real robot failed! Error msg: franka.cpp:init:356(-2) not implemented with this compiler options: usually this means that the implementation needs an external library and a corresponding compiler option - see the source code\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "== ERROR:franka.cpp:init:356(-2) not implemented with this compiler options: usually this means that the implementation needs an external library and a corresponding compiler option - see the source code\n" + ] + } + ], + "source": [ + "# True = real robot!!\n", + "bot = ry.BotOp(C, useRealRobot=True)" + ] + }, + { + "cell_type": "markdown", + "id": "570afef1", + "metadata": {}, + "source": [ + "If that failed, you could `ry.params_print()` to see which global parameters were used and whether you should change them." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "bafdead7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-- bot.cpp:~BotOp:112(0) shutting down BotOp...\n" + ] + } + ], + "source": [ + "if bot.get_t()==0: #if the above failed, use a sim...\n", + " del bot\n", + " bot = ry.BotOp(C, useRealRobot=False)" + ] + }, + { + "cell_type": "markdown", + "id": "b7d17dd0", + "metadata": {}, + "source": [ + "A first **motion**:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "df4ea390", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "first motion done\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "q = bot.get_qHome()\n", + "q[1] = q[1] + .2\n", + "\n", + "bot.moveTo(q)\n", + "bot.wait(C)\n", + "print('first motion done')\n", + "\n", + "bot.moveTo(bot.get_qHome())\n", + "bot.wait(C)" + ] + }, + { + "cell_type": "markdown", + "id": "a845b0fb", + "metadata": {}, + "source": [ + "Grabbing a **camera image & pcl**, adding the pcl to the workspace C:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1b2144a8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-- WARNING:kin.cpp:addFrame:191(-1) frame already exists! returning existing without modifications!\n", + "-- frame.cpp:glDraw:1668(1) trying to draw empty mesh (shape type:pointCloud)\n", + "STACK9 /usr/bin/python3(PyCFunction_Call\n", + "STACK8 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0xbc6af) [0x7f9a446ad6af]\n", + "STACK7 /home/mtoussai/.local/lib/python3.8/site-packages/robotic/ry.cpython-38-x86_64-linux-gnu.so(+0x47f29) [0x7f9a44638f29]\n", + "STACK6 BotOp::getImageDepthPcl(rai::Array&, rai::Array&, rai::ArrayDouble&, char const*, bool)\n", + "STACK5 rai::Simulation::getImageAndDepth(rai::Array&, rai::Array&)\n", + "STACK4 rai::CameraView::updateConfiguration(rai::Configuration const&)\n", + "STACK3 rai::Configuration::getFrameState(rai::Array const&) const\n", + "STACK2 rai::Frame::ensure_X()\n", + "STACK1 rai::Frame::calc_X_from_parent()\n", + "STACK0 rai::LogToken::~LogToken()\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "== ERROR:frame.cpp:calc_X_from_parent:94(-2) CHECK failed: 'parent->_state_X_isGood' -- \n" + ] + }, + { + "ename": "RuntimeError", + "evalue": "frame.cpp:calc_X_from_parent:94(-2) CHECK failed: 'parent->_state_X_isGood' -- ", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[7], line 6\u001b[0m\n\u001b[1;32m 3\u001b[0m bot\u001b[38;5;241m.\u001b[39msync(C)\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m bot\u001b[38;5;241m.\u001b[39mgetKeyPressed()\u001b[38;5;241m!=\u001b[39m\u001b[38;5;28mord\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mq\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[0;32m----> 6\u001b[0m image, depth, points \u001b[38;5;241m=\u001b[39m \u001b[43mbot\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetImageDepthPcl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcameraWrist\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m pcl\u001b[38;5;241m.\u001b[39msetPointCloud(points, image)\n\u001b[1;32m 8\u001b[0m pcl\u001b[38;5;241m.\u001b[39msetColor([\u001b[38;5;241m1\u001b[39m,\u001b[38;5;241m0\u001b[39m,\u001b[38;5;241m0\u001b[39m])\n", + "\u001b[0;31mRuntimeError\u001b[0m: frame.cpp:calc_X_from_parent:94(-2) CHECK failed: 'parent->_state_X_isGood' -- " + ] + } + ], + "source": [ + "pcl = C.addFrame('pcl', 'cameraWrist')\n", + "pcl.setShape(ry.ST.pointCloud, [2]) # the size here is pixel size for display\n", + "bot.sync(C)\n", + "\n", + "while bot.getKeyPressed()!=ord('q'):\n", + " image, depth, points = bot.getImageDepthPcl(\"cameraWrist\")\n", + " pcl.setPointCloud(points, image)\n", + " pcl.setColor([1,0,0])\n", + " bot.sync(C, .1)" + ] + }, + { + "cell_type": "markdown", + "id": "e0563891", + "metadata": {}, + "source": [ + "Closing & opening the **gripper**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79a8549c", + "metadata": {}, + "outputs": [], + "source": [ + "#slow close\n", + "bot.gripperMove(ry._left, width=.01, speed=.2)\n", + "\n", + "while not bot.gripperDone(ry._left):\n", + " bot.sync(C)\n", + "\n", + "#fast open\n", + "bot.gripperMove(ry._left, width=.08, speed=1.)\n", + "\n", + "while not bot.gripperDone(ry._left):\n", + " bot.sync(C)" + ] + }, + { + "cell_type": "markdown", + "id": "0f41998c", + "metadata": {}, + "source": [ + "Always shut down the robot properly by destroying the handle:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "10443e09", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-- bot.cpp:~BotOp:112(0) shutting down BotOp...\n", + "-- simulation.cpp:~BotThreadedSim:56(0) shutting down SimThread\n", + "-- simulation.cpp:~Simulation:148(0) shutting down Simulation\n" + ] + } + ], + "source": [ + "del bot\n", + "del C" + ] + }, + { + "cell_type": "markdown", + "id": "c1278498", + "metadata": {}, + "source": [ + "## Advanced: Compliance & Force/Torque feedback" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "6e82d8f8", + "metadata": {}, + "outputs": [], + "source": [ + "from robotic import ry\n", + "import numpy as np\n", + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "aa1a93be", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C = ry.Config()\n", + "C.addFile(ry.raiPath('scenarios/pandaSingle.g'))\n", + "C.view(False, 'this is your workspace data structure C -- NOT THE SIMULTATION')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5844a69c", + "metadata": {}, + "outputs": [], + "source": [ + "# True = real robot!!\n", + "bot = ry.BotOp(C, False)" + ] + }, + { + "cell_type": "markdown", + "id": "fba6e622", + "metadata": {}, + "source": [ + "After opening the robot, it is floating (=setting the reference always to q_current) but damped (with D-gains). You should be able to move the robot now!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "18468cf5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "86" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C.view(True, 'Try moving the robot by hand!\\n-- press any key to continue --')" + ] + }, + { + "cell_type": "markdown", + "id": "63ee0298", + "metadata": {}, + "source": [ + "We can also turn off the damping, which makes the robot move more freely:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "953b9f3f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "107" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bot.hold(floating=True, damping=False)\n", + "C.view(True, 'Try moving the robot by hand!\\n-- press any key to continue --')" + ] + }, + { + "cell_type": "markdown", + "id": "f79a4d54", + "metadata": {}, + "source": [ + "Now let's hold stiffly around a constant reference:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5d51abbd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "111" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bot.hold(floating=False, damping=True)\n", + "C.view(True, 'Try moving the robot by hand!\\n-- press any key to continue --')" + ] + }, + { + "cell_type": "markdown", + "id": "3e838508", + "metadata": {}, + "source": [ + "The `hold` methods above might be useful for kinestetic teaching or so (you can always keep C sync'ed and compute any features while moving the robot).\n", + "\n", + "But for autonomous compliant manipulation we want to follow a reference and impose compliance in following this reference *along some task space dimensions only*. I.e., a task space compliance." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "86cad3be", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + " direct: [nan] pseudoInv: [nan]\n", + "-- bot.cpp:setCompliance:328(0) clearing compliance\n" + ] + } + ], + "source": [ + "bot.moveTo(bot.get_qHome(), 1.)\n", + "bot.wait(C)\n", + "\n", + "while True:\n", + " bot.sync(C, .1)\n", + " if bot.getKeyPressed()==ord('q'):\n", + " break\n", + " y, J = C.eval(ry.FS.position, [\"l_gripper\"], [[1,0,0]])\n", + " bot.setCompliance(J, 1.)\n", + " print(' direct:', J @ bot.get_tauExternal(),\n", + " ' pseudoInv:', np.linalg.pinv(J.T) @ bot.get_tauExternal())\n", + "\n", + "bot.setCompliance([], 0.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "549b1e19", + "metadata": {}, + "outputs": [], + "source": [ + "bot.home(C)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "248e8726", + "metadata": {}, + "outputs": [], + "source": [ + "del bot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41dbc4e8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/source/notebooks/botop3-vision-toBeMerged.ipynb b/docs/source/notebooks/botop3-vision-toBeMerged.ipynb index e795d4a..0f9e962 100644 --- a/docs/source/notebooks/botop3-vision-toBeMerged.ipynb +++ b/docs/source/notebooks/botop3-vision-toBeMerged.ipynb @@ -16,7 +16,7 @@ "source": [ "#import sys, os\n", "#sys.path.append(os.path.expanduser('~/git/botop/build'))\n", - "#import libry as ry\n", + "#from robotic import ry\n", "from robotic import ry\n", "import numpy as np\n", "import time\n", diff --git a/docs/source/notebooks/core3-configurations.ipynb b/docs/source/notebooks/core3-configurations.ipynb index d4fcbb5..dd5d338 100644 --- a/docs/source/notebooks/core3-configurations.ipynb +++ b/docs/source/notebooks/core3-configurations.ipynb @@ -124,7 +124,7 @@ "source": [ "import sys\n", "sys.path.append('../build')\n", - "import libry as ry\n", + "from robotic import ry\n", "import numpy as np\n", "import time" ] @@ -194,7 +194,7 @@ "source": [ "import sys\n", "sys.path.append('../build')\n", - "import libry as ry\n", + "from robotic import ry\n", "import numpy as np\n", "import time" ] @@ -327,7 +327,7 @@ "source": [ "import sys\n", "sys.path.append('../build')\n", - "import libry as ry\n", + "from robotic import ry\n", "import numpy as np\n", "import time" ] @@ -460,7 +460,7 @@ "source": [ "import sys\n", "sys.path.append('../build')\n", - "import libry as ry\n", + "from robotic import ry\n", "import numpy as np\n", "import time" ] diff --git a/docs/source/notebooks/komo1-IK-toBeMerged.ipynb b/docs/source/notebooks/komo1-IK-toBeMerged.ipynb index 1c7e25e..d1366a9 100644 --- a/docs/source/notebooks/komo1-IK-toBeMerged.ipynb +++ b/docs/source/notebooks/komo1-IK-toBeMerged.ipynb @@ -29,7 +29,7 @@ "import sys\n", "sys.path.append('../build') #rai/lib')\n", "import numpy as np\n", - "import libry as ry" + "from robotic import ry" ] }, { diff --git a/docs/source/notebooks/komo2-PathOptimization-toBeMerged.ipynb b/docs/source/notebooks/komo2-PathOptimization-toBeMerged.ipynb index 8ea7b68..4c4f5a5 100644 --- a/docs/source/notebooks/komo2-PathOptimization-toBeMerged.ipynb +++ b/docs/source/notebooks/komo2-PathOptimization-toBeMerged.ipynb @@ -25,7 +25,7 @@ "import sys\n", "sys.path.append('../build')\n", "import numpy as np\n", - "import libry as ry\n", + "from robotic import ry\n", "\n", "C = ry.Config()\n", "D = C.view()\n", diff --git a/docs/source/notebooks/komo3-switches-skeletons.ipynb b/docs/source/notebooks/komo3-switches-skeletons.ipynb index a21d81c..31de38a 100644 --- a/docs/source/notebooks/komo3-switches-skeletons.ipynb +++ b/docs/source/notebooks/komo3-switches-skeletons.ipynb @@ -16,7 +16,7 @@ "import sys\n", "sys.path += ['../../lib', '../../build', '../../../build']\n", "import numpy as np\n", - "import libry as ry" + "from robotic import ry" ] }, { @@ -204,7 +204,7 @@ "import sys\n", "sys.path += ['../../lib', '../../build', '../../../build']\n", "import numpy as np\n", - "import libry as ry" + "from robotic import ry" ] }, { diff --git a/docs/source/notebooks/notebooks.rst b/docs/source/notebooks/notebooks.rst index dac0f78..3d3e126 100644 --- a/docs/source/notebooks/notebooks.rst +++ b/docs/source/notebooks/notebooks.rst @@ -17,6 +17,8 @@ All tutorials are jupyter notebooks, downloadable from https://github.com/MarcTo More in depth ============= +These need consolidation, cleaning, and merging with the 'old material'. + .. toctree:: :glob: :maxdepth: 1 diff --git a/docs/source/notebooks/opt1-basics.ipynb b/docs/source/notebooks/opt1-basics.ipynb index 2591566..b51c933 100644 --- a/docs/source/notebooks/opt1-basics.ipynb +++ b/docs/source/notebooks/opt1-basics.ipynb @@ -18,7 +18,7 @@ "import sys\n", "sys.path += ['../../lib', '../../build', '../../../build']\n", "import numpy as np\n", - "import libry as ry" + "from robotic import ry" ] }, { diff --git a/docs/source/notebooks/sim1-physics.ipynb b/docs/source/notebooks/sim1-physics.ipynb index 7755557..5b1bb3b 100644 --- a/docs/source/notebooks/sim1-physics.ipynb +++ b/docs/source/notebooks/sim1-physics.ipynb @@ -20,7 +20,7 @@ "import sys\n", "sys.path.append('../build')\n", "import numpy as np\n", - "import libry as ry\n", + "from robotic import ry\n", "from time import sleep" ] }, diff --git a/docs/source/old/_Configuration.rst b/docs/source/old/_Configuration.rst index 1c3d3fd..4c33b7a 100644 --- a/docs/source/old/_Configuration.rst +++ b/docs/source/old/_Configuration.rst @@ -149,7 +149,7 @@ in configurations. C'tor ===== -.. automethod:: libry.Config.__init__ +.. automethod:: ry.Config.__init__ Adding frames to the configuration =================================== @@ -157,66 +157,66 @@ Adding frames to the configuration A configuration is often initialized by reading it from a file. See :ref:`refConfigurationFile` for details on these files. -.. automethod:: libry.Config.addFile +.. automethod:: ry.Config.addFile Alternatively, a configuration can also be build up within the code by adding more and more frames. See :ref:`refFrame` on how to specify the properties of frames. -.. automethod:: libry.Config.addFrame -.. automethod:: libry.Config.delFrame -.. automethod:: libry.Config.getFrame +.. automethod:: ry.Config.addFrame +.. automethod:: ry.Config.delFrame +.. automethod:: ry.Config.getFrame Copy, clear =========== -.. automethod:: libry.Config.copy -.. automethod:: libry.Config.clear +.. automethod:: ry.Config.copy +.. automethod:: ry.Config.clear Joint state: get/set, and selecting active joints ================================================= -.. automethod:: libry.Config.setJointState -.. automethod:: libry.Config.getJointNames -.. automethod:: libry.Config.getJointDimension -.. automethod:: libry.Config.getJointState +.. automethod:: ry.Config.setJointState +.. automethod:: ry.Config.getJointNames +.. automethod:: ry.Config.getJointDimension +.. automethod:: ry.Config.getJointState -.. automethod:: libry.Config.selectJoints -.. automethod:: libry.Config.selectJointsByTag +.. automethod:: ry.Config.selectJoints +.. automethod:: ry.Config.selectJointsByTag Frame state =========== -.. automethod:: libry.Config.setFrameState -.. automethod:: libry.Config.getFrameNames +.. automethod:: ry.Config.setFrameState +.. automethod:: ry.Config.getFrameNames Features: Anything you might want to compute from Configurations ================================================================ -.. automethod:: libry.Config.feature -.. automethod:: libry.Config.evalFeature +.. automethod:: ry.Config.feature +.. automethod:: ry.Config.evalFeature Structural edits ================ -.. automethod:: libry.Config.attach -.. automethod:: libry.Config.sortFrames -.. automethod:: libry.Config.edit +.. automethod:: ry.Config.attach +.. automethod:: ry.Config.sortFrames +.. automethod:: ry.Config.edit Collision computations ====================== -.. automethod:: libry.Config.computeCollisions -.. automethod:: libry.Config.getCollisions +.. automethod:: ry.Config.computeCollisions +.. automethod:: ry.Config.getCollisions Functions to create other classes (KOMO, Simulation, viewer, etc) ========================================================================= -.. automethod:: libry.Config.komo_IK -.. automethod:: libry.Config.komo_CGO -.. automethod:: libry.Config.komo_path -.. libry.Config.bullet -.. libry.Config.physx -.. automethod:: libry.Config.simulation +.. automethod:: ry.Config.komo_IK +.. automethod:: ry.Config.komo_CGO +.. automethod:: ry.Config.komo_path +.. ry.Config.bullet +.. ry.Config.physx +.. automethod:: ry.Config.simulation diff --git a/docs/source/old/_Simulation.rst b/docs/source/old/_Simulation.rst index c86aa29..4fbf68f 100644 --- a/docs/source/old/_Simulation.rst +++ b/docs/source/old/_Simulation.rst @@ -18,7 +18,7 @@ initializes it. The current choices for ``engine`` are PhysX, Bullet, and just kinematic (no physics engine). ``verbose=1`` will open a display. -.. automethod:: libry.Simulation.__init__ +.. automethod:: ry.Simulation.__init__ Stepping physics ================ @@ -36,14 +36,14 @@ perturbations. ``u_mode`` can be ``none`` for not sending control signals (in which case ``u_control`` can be ``[]``). Otherwise ``u_control`` needs to contain joint positions, velocities or accelerations for all DOFs. -.. automethod:: libry.Simulation.step +.. automethod:: ry.Simulation.step As the robot is explicitly controlled, the joint state should be clear to the user. Still, for completeness two methods return the current joint positions and velocities: -.. automethod:: libry.Simulation.get_q -.. automethod:: libry.Simulation.get_qDot +.. automethod:: ry.Simulation.get_q +.. automethod:: ry.Simulation.get_qDot Opening & closing the gripper, and gripping state @@ -57,14 +57,14 @@ separate methods to command grippers and also read out their state. The open/close methods need the name of the gripper. The speed/width/force are not yet implemented. -.. automethod:: libry.Simulation.get_q -.. automethod:: libry.Simulation.get_qDot +.. automethod:: ry.Simulation.get_q +.. automethod:: ry.Simulation.get_qDot The gripper width can always be queried. And typical grippers also tell you if they have an object in hand: -.. automethod:: libry.Simulation.getGripperWidth -.. automethod:: libry.Simulation.getGripperIsGrasping +.. automethod:: ry.Simulation.getGripperWidth +.. automethod:: ry.Simulation.getGripperIsGrasping Getting simulated RGB and depth images ====================================== @@ -79,8 +79,8 @@ grabs RGB and depth from opengl, and properly transforms depth values to have values in meters. Optionally, imps can post-process these images to add noise and systematic errors. -.. automethod:: libry.Simulation.getImageAndDepth -.. automethod:: libry.Simulation.addSensor +.. automethod:: ry.Simulation.getImageAndDepth +.. automethod:: ry.Simulation.addSensor Simulation states: restarting the simulation in previous states =============================================================== @@ -94,9 +94,9 @@ re-instantiate (``getState`` and ``restoreState``) is the exact poses and velocities of all frames of the scene. (TODO: Also discrete facts, such as which grippers hold objects, must be stored.) The ``setState`` method allows you to directly set arbitrary pose and velocity states. -.. automethod:: libry.Simulation.getState -.. automethod:: libry.Simulation.restoreState -.. automethod:: libry.Simulation.setState +.. automethod:: ry.Simulation.getState +.. automethod:: ry.Simulation.restoreState +.. automethod:: ry.Simulation.setState Helper: depthData2pointCloud ============================ @@ -108,4 +108,4 @@ argument ``fxypxy`` need to be four numbers: the focal length (in pixel/meters units!) in x and y direction, and the image center (in pixel units) in x and y direction. -.. automethod:: libry.Simulation.depthData2pointCloud +.. automethod:: ry.Simulation.depthData2pointCloud diff --git a/docs/source/rai.rst b/docs/source/rai.rst index f2ed318..907e8af 100644 --- a/docs/source/rai.rst +++ b/docs/source/rai.rst @@ -2,5 +2,5 @@ rai python API ============== -.. automodule:: ry +.. automodule:: robotic.ry :members: diff --git a/docs/source/script/script.rst b/docs/source/script/script.rst index 1cfb22d..7fe17b3 100644 --- a/docs/source/script/script.rst +++ b/docs/source/script/script.rst @@ -1960,7 +1960,7 @@ Specifically, you specify a transform by chaining: Joint types ~~~~~~~~~~~ -The ``libry.JT`` enum (in python; or rai::JointType in C++) lists all +The ``ry.JT`` enum (in python; or rai::JointType in C++) lists all available joint type. Currently these are: ::