franky-control 1.1.0__cp38-cp38-manylinux_2_34_x86_64.whl → 1.1.1__cp38-cp38-manylinux_2_34_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- franky/_franky.cpython-38-x86_64-linux-gnu.so +0 -0
- {franky_control-1.1.0.dist-info → franky_control-1.1.1.dist-info}/METADATA +188 -126
- {franky_control-1.1.0.dist-info → franky_control-1.1.1.dist-info}/RECORD +11 -11
- franky_control.libs/{libPocoFoundation-13a5b20e.so.95 → libPocoFoundation-44d67b9f.so.95} +0 -0
- franky_control.libs/{libPocoNet-8bb0f68b.so.95 → libPocoNet-3bdfeb79.so.95} +0 -0
- franky_control.libs/libfranka-e5e9247f.so.0.15.0 +0 -0
- franky_control.libs/{libpinocchio_default-5f84cd5d.so.3.1.0 → libpinocchio_default-def973fb.so.3.1.0} +0 -0
- franky_control.libs/{libpinocchio_parsers-a0b97441.so.3.1.0 → libpinocchio_parsers-d98f9e85.so.3.1.0} +0 -0
- {franky_control-1.1.0.dist-info → franky_control-1.1.1.dist-info}/LICENSE +0 -0
- {franky_control-1.1.0.dist-info → franky_control-1.1.1.dist-info}/WHEEL +0 -0
- {franky_control-1.1.0.dist-info → franky_control-1.1.1.dist-info}/top_level.txt +0 -0
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: franky-control
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.1
|
4
4
|
Summary: High-level control library for Franka robots.
|
5
5
|
Home-page: https://github.com/TimSchneider42/franky
|
6
6
|
Author: Tim Schneider
|
@@ -97,6 +97,7 @@ otherwise, follow the [setup instructions](#setup) first.
|
|
97
97
|
|
98
98
|
Now we are already ready to go!
|
99
99
|
Unlock the brakes in the web interface, activate FCI, and start coding:
|
100
|
+
|
100
101
|
```python
|
101
102
|
from franky import *
|
102
103
|
|
@@ -196,37 +197,7 @@ pip install numpy
|
|
196
197
|
pip install --no-index --find-links=./dist franky-control
|
197
198
|
```
|
198
199
|
|
199
|
-
|
200
|
-
transformation calculations and [pybind11](https://github.com/pybind/pybind11) for the Python bindings.
|
201
|
-
As the Franka is sensitive to acceleration discontinuities, it requires jerk-constrained motion generation, for which
|
202
|
-
Franky uses the [Ruckig](https://ruckig.com) community version for Online Trajectory Generation (OTG).
|
203
|
-
|
204
|
-
After installing the dependencies (the exact versions can be found [here](#-development)), you can build and install
|
205
|
-
Franky via
|
206
|
-
|
207
|
-
```bash
|
208
|
-
git clone --recurse-submodules git@github.com:timschneider42/franky.git
|
209
|
-
cd franky
|
210
|
-
mkdir -p build
|
211
|
-
cd build
|
212
|
-
cmake -DCMAKE_BUILD_TYPE=Release ..
|
213
|
-
make
|
214
|
-
make install
|
215
|
-
```
|
216
|
-
|
217
|
-
To use Franky, you can also include it as a subproject in your parent CMake via `add_subdirectory(franky)` and then
|
218
|
-
`target_link_libraries(<target> franky)`.
|
219
|
-
|
220
|
-
If you need only the Python module, you can install Franky via
|
221
|
-
|
222
|
-
```bash
|
223
|
-
pip install .
|
224
|
-
```
|
225
|
-
|
226
|
-
Make sure that the built library `_franky.cpython-3**-****-linux-gnu.so` is in the Python path, e.g. by adjusting
|
227
|
-
`PYTHONPATH` accordingly.
|
228
|
-
|
229
|
-
#### Using Docker
|
200
|
+
### Using Docker
|
230
201
|
|
231
202
|
To use Franky within Docker we provide a [Dockerfile](docker/run/Dockerfile) and
|
232
203
|
accompanying [docker-compose](docker-compose.yml) file.
|
@@ -252,16 +223,6 @@ docker compose run franky-run bash
|
|
252
223
|
The container requires access to the host machines network *and* elevated user rights to allow the docker user to set RT
|
253
224
|
capabilities of the processes run from within it.
|
254
225
|
|
255
|
-
#### Building Franky with Docker
|
256
|
-
|
257
|
-
For building Franky and its wheels, we provide another Docker container that can also be launched using docker-compose:
|
258
|
-
|
259
|
-
```bash
|
260
|
-
docker compose build franky-build
|
261
|
-
docker compose run --rm franky-build run-tests # To run the tests
|
262
|
-
docker compose run --rm franky-build build-wheels # To build wheels for all supported python versions
|
263
|
-
```
|
264
|
-
|
265
226
|
### Can I use CUDA jointly with Franky?
|
266
227
|
|
267
228
|
Yes. However, you need to set `IGNORE_PREEMPT_RT_PRESENCE=1` during the installation and all subsequent updates of the CUDA drivers on the real-time kernel.
|
@@ -288,6 +249,48 @@ Alternatively, if you are a cowboy and do not care about security, you can also
|
|
288
249
|
bash <(wget -qO- https://raw.githubusercontent.com/timschneider42/franky/master/tools/install_cuda_realtime.bash)
|
289
250
|
```
|
290
251
|
|
252
|
+
### Building Franky
|
253
|
+
|
254
|
+
Franky is based on [libfranka](https://github.com/frankaemika/libfranka), [Eigen](https://eigen.tuxfamily.org) for
|
255
|
+
transformation calculations and [pybind11](https://github.com/pybind/pybind11) for the Python bindings.
|
256
|
+
As the Franka is sensitive to acceleration discontinuities, it requires jerk-constrained motion generation, for which
|
257
|
+
Franky uses the [Ruckig](https://ruckig.com) community version for Online Trajectory Generation (OTG).
|
258
|
+
|
259
|
+
After installing the dependencies (the exact versions can be found [here](#-development)), you can build and install
|
260
|
+
Franky via
|
261
|
+
|
262
|
+
```bash
|
263
|
+
git clone --recurse-submodules git@github.com:timschneider42/franky.git
|
264
|
+
cd franky
|
265
|
+
mkdir -p build
|
266
|
+
cd build
|
267
|
+
cmake -DCMAKE_BUILD_TYPE=Release ..
|
268
|
+
make
|
269
|
+
make install
|
270
|
+
```
|
271
|
+
|
272
|
+
To use Franky, you can also include it as a subproject in your parent CMake via `add_subdirectory(franky)` and then
|
273
|
+
`target_link_libraries(<target> franky)`.
|
274
|
+
|
275
|
+
If you need only the Python module, you can install Franky via
|
276
|
+
|
277
|
+
```bash
|
278
|
+
pip install .
|
279
|
+
```
|
280
|
+
|
281
|
+
Make sure that the built library `_franky.cpython-3**-****-linux-gnu.so` is in the Python path, e.g. by adjusting
|
282
|
+
`PYTHONPATH` accordingly.
|
283
|
+
|
284
|
+
#### Building Franky with Docker
|
285
|
+
|
286
|
+
For building Franky and its wheels, we provide another Docker container that can also be launched using docker-compose:
|
287
|
+
|
288
|
+
```bash
|
289
|
+
docker compose build franky-build
|
290
|
+
docker compose run --rm franky-build run-tests # To run the tests
|
291
|
+
docker compose run --rm franky-build build-wheels # To build wheels for all supported python versions
|
292
|
+
```
|
293
|
+
|
291
294
|
## 📚 Tutorial
|
292
295
|
|
293
296
|
Franky comes with both a C++ and Python API that differ only regarding real-time capability.
|
@@ -368,7 +371,9 @@ robot.recover_from_errors()
|
|
368
371
|
robot.relative_dynamics_factor = 0.05
|
369
372
|
|
370
373
|
# Alternatively, you can define each constraint individually
|
371
|
-
robot.relative_dynamics_factor = RelativeDynamicsFactor(
|
374
|
+
robot.relative_dynamics_factor = RelativeDynamicsFactor(
|
375
|
+
velocity=0.1, acceleration=0.05, jerk=0.1
|
376
|
+
)
|
372
377
|
|
373
378
|
# Or, for more finegrained access, set individual limits
|
374
379
|
robot.translation_velocity_limit.set(3.0)
|
@@ -436,7 +441,8 @@ ee_pose_kin = robot.model.pose(Frame.EndEffector, q, f_t_ee, ee_t_k)
|
|
436
441
|
# Get the jacobian of the current robot state
|
437
442
|
jacobian = robot.model.body_jacobian(Frame.EndEffector, state)
|
438
443
|
|
439
|
-
# Alternatively, just get the URDF as string and do the kinematics computation yourself (only
|
444
|
+
# Alternatively, just get the URDF as string and do the kinematics computation yourself (only
|
445
|
+
# for libfranka >= 0.15.0)
|
440
446
|
urdf_model = robot.model_urdf
|
441
447
|
```
|
442
448
|
|
@@ -464,28 +470,37 @@ from franky import *
|
|
464
470
|
# A point-to-point motion in the joint space
|
465
471
|
m_jp1 = JointMotion([-0.3, 0.1, 0.3, -1.4, 0.1, 1.8, 0.7])
|
466
472
|
|
467
|
-
# A motion in joint space with multiple waypoints
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
])
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
473
|
+
# A motion in joint space with multiple waypoints. The robot will stop at each of these
|
474
|
+
# waypoints. If you want the robot to move continuously, you have to specify a target velocity
|
475
|
+
# at every waypoint as shown in the example following this one.
|
476
|
+
m_jp2 = JointWaypointMotion(
|
477
|
+
[
|
478
|
+
JointWaypoint([-0.3, 0.1, 0.3, -1.4, 0.1, 1.8, 0.7]),
|
479
|
+
JointWaypoint([0.0, 0.3, 0.3, -1.5, -0.2, 1.5, 0.8]),
|
480
|
+
JointWaypoint([0.1, 0.4, 0.3, -1.4, -0.3, 1.7, 0.9]),
|
481
|
+
]
|
482
|
+
)
|
483
|
+
|
484
|
+
# Intermediate waypoints also permit to specify target velocities. The default target velocity
|
485
|
+
# is 0, meaning that the robot will stop at every waypoint.
|
486
|
+
m_jp3 = JointWaypointMotion(
|
487
|
+
[
|
488
|
+
JointWaypoint([-0.3, 0.1, 0.3, -1.4, 0.1, 1.8, 0.7]),
|
489
|
+
JointWaypoint(
|
490
|
+
JointState(
|
491
|
+
position=[0.0, 0.3, 0.3, -1.5, -0.2, 1.5, 0.8],
|
492
|
+
velocity=[0.1, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0],
|
493
|
+
)
|
494
|
+
),
|
495
|
+
JointWaypoint([0.1, 0.4, 0.3, -1.4, -0.3, 1.7, 0.9]),
|
496
|
+
]
|
497
|
+
)
|
498
|
+
|
499
|
+
# Stop the robot in joint position control mode. The difference of JointStopMotion to other
|
500
|
+
# stop-motions such as CartesianStopMotion is that JointStopMotion stops the robot in joint
|
501
|
+
# position control mode while CartesianStopMotion stops it in cartesian pose control mode. The
|
502
|
+
# difference becomes relevant when asynchronous move commands are being sent or reactions are
|
503
|
+
# being used(see below).
|
489
504
|
m_jp4 = JointStopMotion()
|
490
505
|
```
|
491
506
|
|
@@ -495,18 +510,30 @@ m_jp4 = JointStopMotion()
|
|
495
510
|
from franky import *
|
496
511
|
|
497
512
|
# Accelerate to the given joint velocity and hold it. After 1000ms stop the robot again.
|
498
|
-
m_jv1 = JointVelocityMotion(
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
#
|
503
|
-
#
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
513
|
+
m_jv1 = JointVelocityMotion(
|
514
|
+
[0.1, 0.3, -0.1, 0.0, 0.1, -0.2, 0.4], duration=Duration(1000)
|
515
|
+
)
|
516
|
+
|
517
|
+
# Joint velocity motions also support waypoints. Unlike in joint position control, a joint
|
518
|
+
# velocity waypoint is a target velocity to be reached. This particular example first
|
519
|
+
# accelerates the joints, holds the velocity for 1s, then reverses direction for 2s, reverses
|
520
|
+
# direction again for 1s, and finally stops. It is important not to forget to stop the robot
|
521
|
+
# at the end of such a sequence, as it will otherwise throw an error.
|
522
|
+
m_jv2 = JointVelocityWaypointMotion(
|
523
|
+
[
|
524
|
+
JointVelocityWaypoint(
|
525
|
+
[0.1, 0.3, -0.1, 0.0, 0.1, -0.2, 0.4], hold_target_duration=Duration(1000)
|
526
|
+
),
|
527
|
+
JointVelocityWaypoint(
|
528
|
+
[-0.1, -0.3, 0.1, -0.0, -0.1, 0.2, -0.4],
|
529
|
+
hold_target_duration=Duration(2000),
|
530
|
+
),
|
531
|
+
JointVelocityWaypoint(
|
532
|
+
[0.1, 0.3, -0.1, 0.0, 0.1, -0.2, 0.4], hold_target_duration=Duration(1000)
|
533
|
+
),
|
534
|
+
JointVelocityWaypoint([0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]),
|
535
|
+
]
|
536
|
+
)
|
510
537
|
|
511
538
|
# Stop the robot in joint velocity control mode.
|
512
539
|
m_jv3 = JointVelocityStopMotion()
|
@@ -524,29 +551,44 @@ quat = Rotation.from_euler("xyz", [0, 0, math.pi / 2]).as_quat()
|
|
524
551
|
m_cp1 = CartesianMotion(Affine([0.4, -0.2, 0.3], quat))
|
525
552
|
|
526
553
|
# With target elbow angle (otherwise, the Franka firmware will choose by itself)
|
527
|
-
m_cp2 = CartesianMotion(
|
554
|
+
m_cp2 = CartesianMotion(
|
555
|
+
RobotPose(Affine([0.4, -0.2, 0.3], quat), elbow_state=ElbowState(0.3))
|
556
|
+
)
|
528
557
|
|
529
558
|
# A linear motion in cartesian space relative to the initial position
|
530
|
-
# (Note that this motion is relative both in position and orientation. Hence, when the robot's
|
531
|
-
# differently, it will move in a different direction)
|
559
|
+
# (Note that this motion is relative both in position and orientation. Hence, when the robot's
|
560
|
+
# end-effector is oriented differently, it will move in a different direction)
|
532
561
|
m_cp3 = CartesianMotion(Affine([0.2, 0.0, 0.0]), ReferenceType.Relative)
|
533
562
|
|
534
|
-
# Generalization of CartesianMotion that allows for multiple waypoints
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
563
|
+
# Generalization of CartesianMotion that allows for multiple waypoints. The robot will stop at
|
564
|
+
# each of these waypoints. If you want the robot to move continuously, you have to specify a
|
565
|
+
# target velocity at every waypoint as shown in the example following this one.
|
566
|
+
m_cp4 = CartesianWaypointMotion(
|
567
|
+
[
|
568
|
+
CartesianWaypoint(
|
569
|
+
RobotPose(Affine([0.4, -0.2, 0.3], quat), elbow_state=ElbowState(0.3))
|
570
|
+
),
|
571
|
+
# The following waypoint is relative to the prior one and 50% slower
|
572
|
+
CartesianWaypoint(
|
573
|
+
Affine([0.2, 0.0, 0.0]),
|
574
|
+
ReferenceType.Relative,
|
575
|
+
RelativeDynamicsFactor(0.5, 1.0, 1.0),
|
576
|
+
),
|
577
|
+
]
|
578
|
+
)
|
579
|
+
|
580
|
+
# Cartesian waypoints permit to specify target velocities
|
581
|
+
m_cp5 = CartesianWaypointMotion(
|
582
|
+
[
|
583
|
+
CartesianWaypoint(Affine([0.5, -0.2, 0.3], quat)),
|
584
|
+
CartesianWaypoint(
|
585
|
+
CartesianState(
|
586
|
+
pose=Affine([0.4, -0.1, 0.3], quat), velocity=Twist([-0.01, 0.01, 0.0])
|
587
|
+
)
|
588
|
+
),
|
589
|
+
CartesianWaypoint(Affine([0.3, 0.0, 0.3], quat)),
|
590
|
+
]
|
591
|
+
)
|
550
592
|
|
551
593
|
# Stop the robot in cartesian position control mode.
|
552
594
|
m_cp6 = CartesianStopMotion()
|
@@ -557,22 +599,37 @@ m_cp6 = CartesianStopMotion()
|
|
557
599
|
```python
|
558
600
|
from franky import *
|
559
601
|
|
560
|
-
# A cartesian velocity motion with linear (first argument) and angular (second argument)
|
602
|
+
# A cartesian velocity motion with linear (first argument) and angular (second argument)
|
603
|
+
# components
|
561
604
|
m_cv1 = CartesianVelocityMotion(Twist([0.2, -0.1, 0.1], [0.1, -0.1, 0.2]))
|
562
605
|
|
563
606
|
# With target elbow velocity
|
564
|
-
m_cv2 = CartesianVelocityMotion(
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
# velocity
|
569
|
-
#
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
607
|
+
m_cv2 = CartesianVelocityMotion(
|
608
|
+
RobotVelocity(Twist([0.2, -0.1, 0.1], [0.1, -0.1, 0.2]), elbow_velocity=-0.2)
|
609
|
+
)
|
610
|
+
|
611
|
+
# Cartesian velocity motions also support multiple waypoints. Unlike in cartesian position
|
612
|
+
# control, a cartesian velocity waypoint is a target velocity to be reached. This particular
|
613
|
+
# example first accelerates the end-effector, holds the velocity for 1s, then reverses
|
614
|
+
# direction for 2s, reverses direction again for 1s, and finally stops. It is important not to
|
615
|
+
# forget to stop the robot at the end of such a sequence, as it will otherwise throw an error.
|
616
|
+
m_cv4 = CartesianVelocityWaypointMotion(
|
617
|
+
[
|
618
|
+
CartesianVelocityWaypoint(
|
619
|
+
Twist([0.2, -0.1, 0.1], [0.1, -0.1, 0.2]),
|
620
|
+
hold_target_duration=Duration(1000),
|
621
|
+
),
|
622
|
+
CartesianVelocityWaypoint(
|
623
|
+
Twist([-0.2, 0.1, -0.1], [-0.1, 0.1, -0.2]),
|
624
|
+
hold_target_duration=Duration(2000),
|
625
|
+
),
|
626
|
+
CartesianVelocityWaypoint(
|
627
|
+
Twist([0.2, -0.1, 0.1], [0.1, -0.1, 0.2]),
|
628
|
+
hold_target_duration=Duration(1000),
|
629
|
+
),
|
630
|
+
CartesianVelocityWaypoint(Twist()),
|
631
|
+
]
|
632
|
+
)
|
576
633
|
|
577
634
|
# Stop the robot in cartesian velocity control mode.
|
578
635
|
m_cv6 = CartesianVelocityStopMotion()
|
@@ -601,14 +658,15 @@ The real robot can be moved by applying a motion to the robot using `move`:
|
|
601
658
|
```python
|
602
659
|
# Before moving the robot, set an appropriate dynamics factor. We start small:
|
603
660
|
robot.relative_dynamics_factor = 0.05
|
604
|
-
# or alternatively, to control the scaling of velocity, acceleration, and jerk limits
|
661
|
+
# or alternatively, to control the scaling of velocity, acceleration, and jerk limits
|
662
|
+
# separately:
|
605
663
|
robot.relative_dynamics_factor = RelativeDynamicsFactor(0.05, 0.1, 0.15)
|
606
664
|
# If these values are set too high, you will see discontinuity errors
|
607
665
|
|
608
666
|
robot.move(m_jp1)
|
609
667
|
|
610
|
-
# We can also set a relative dynamics factor in the move command. It will be multiplied with
|
611
|
-
# dynamics factors (robot and motion if present).
|
668
|
+
# We can also set a relative dynamics factor in the move command. It will be multiplied with
|
669
|
+
# the other relative dynamics factors (robot and motion if present).
|
612
670
|
robot.move(m_jp2, relative_dynamics_factor=0.8)
|
613
671
|
```
|
614
672
|
|
@@ -623,7 +681,8 @@ def cb(
|
|
623
681
|
time_step: Duration,
|
624
682
|
rel_time: Duration,
|
625
683
|
abs_time: Duration,
|
626
|
-
control_signal: JointPositions
|
684
|
+
control_signal: JointPositions,
|
685
|
+
):
|
627
686
|
print(f"At time {abs_time}, the target joint positions were {control_signal.q}")
|
628
687
|
|
629
688
|
|
@@ -648,9 +707,10 @@ from franky import CartesianMotion, Affine, ReferenceType, Measure, Reaction
|
|
648
707
|
|
649
708
|
motion = CartesianMotion(Affine([0.0, 0.0, 0.1]), ReferenceType.Relative) # Move down 10cm
|
650
709
|
|
651
|
-
# It is important that the reaction motion uses the same control mode as the original motion.
|
652
|
-
# a JointMotion as a reaction motion to a CartesianMotion.
|
653
|
-
|
710
|
+
# It is important that the reaction motion uses the same control mode as the original motion.
|
711
|
+
# Hence, we cannot register a JointMotion as a reaction motion to a CartesianMotion.
|
712
|
+
# Move up for 1cm
|
713
|
+
reaction_motion = CartesianMotion(Affine([0.0, 0.0, 0.01]), ReferenceType.Relative)
|
654
714
|
|
655
715
|
# Trigger reaction if the Z force is greater than 30N
|
656
716
|
reaction = Reaction(Measure.FORCE_Z > 30.0, reaction_motion)
|
@@ -713,7 +773,8 @@ them.
|
|
713
773
|
In C++ you can additionally use lambdas to define more complex behaviours:
|
714
774
|
|
715
775
|
```c++
|
716
|
-
auto motion = CartesianMotion(
|
776
|
+
auto motion = CartesianMotion(
|
777
|
+
RobotPose(Affine({0.0, 0.0, 0.2}), 0.0), ReferenceType::Relative);
|
717
778
|
|
718
779
|
// Stop motion if force is over 10N
|
719
780
|
auto stop_motion = StopMotion<franka::CartesianPose>()
|
@@ -758,8 +819,8 @@ motion1 = CartesianMotion(Affine([0.2, 0.0, 0.0]), ReferenceType.Relative)
|
|
758
819
|
robot.move(motion1, asynchronous=True)
|
759
820
|
|
760
821
|
time.sleep(0.5)
|
761
|
-
# Note that similar to reactions, when preempting active motions with new motions, the
|
762
|
-
# Hence, we cannot use, e.g., a JointMotion here.
|
822
|
+
# Note that similar to reactions, when preempting active motions with new motions, the
|
823
|
+
# control mode cannot change. Hence, we cannot use, e.g., a JointMotion here.
|
763
824
|
motion2 = CartesianMotion(Affine([0.2, 0.0, 0.0]), ReferenceType.Relative)
|
764
825
|
robot.move(motion2, asynchronous=True)
|
765
826
|
```
|
@@ -870,15 +931,16 @@ import franky
|
|
870
931
|
with franky.RobotWebSession("172.16.0.2", "username", "password") as robot_web_session:
|
871
932
|
# First take control
|
872
933
|
try:
|
873
|
-
# Try taking control. The session currently holding control has to release it in order
|
874
|
-
# control. In the web interface, a notification will show
|
875
|
-
#
|
934
|
+
# Try taking control. The session currently holding control has to release it in order
|
935
|
+
# for this session to gain control. In the web interface, a notification will show
|
936
|
+
# prompting the user to release control. If the other session is another
|
937
|
+
# franky.RobotWebSession, then the `release_control` method can be called on the other
|
876
938
|
# session to release control.
|
877
939
|
robot_web_session.take_control(wait_timeout=10.0)
|
878
940
|
except franky.TakeControlTimeoutError:
|
879
|
-
# If nothing happens for 10s, we try to take control forcefully. This is particularly
|
880
|
-
# holding control is dead. Taking control by force requires the
|
881
|
-
# the robot's wrist.
|
941
|
+
# If nothing happens for 10s, we try to take control forcefully. This is particularly
|
942
|
+
# useful if the session holding control is dead. Taking control by force requires the
|
943
|
+
# user to manually push the blue button close to the robot's wrist.
|
882
944
|
robot_web_session.take_control(wait_timeout=30.0, force=True)
|
883
945
|
|
884
946
|
# Unlock the brakes
|
@@ -1,26 +1,26 @@
|
|
1
1
|
franky/__init__.py,sha256=57BsmUytdeqMrhHglwvxMS6CgpAEVPw0KJge8_UTzEA,378
|
2
|
-
franky/_franky.cpython-38-x86_64-linux-gnu.so,sha256=
|
2
|
+
franky/_franky.cpython-38-x86_64-linux-gnu.so,sha256=ma1dPQVos-S7VtmVPwIQjbHXm0WAAeMl_5f327vUc5U,3049137
|
3
3
|
franky/_franky.pyi,sha256=odBnBaM2qGN4mUa8WvFN5SL9aszPgDTsZj5Jb9UkFHk,60047
|
4
4
|
franky/motion.py,sha256=TWsx2Ba9iYG9e-OxpuYZlVn1wdzKS-Zvz6ayHT_HYXQ,354
|
5
5
|
franky/reaction.py,sha256=cBuHAMek9yH-9Zmwfa0dzz2t5G_1SQEWXNdW7mhhCI8,1519
|
6
6
|
franky/robot.py,sha256=NaTNh4PaJshbz44eibvLCMt6O_Ak7TRVjhUR6AGay9A,236
|
7
7
|
franky/robot_web_session.py,sha256=rYpnUe4b8xj5JjCYxNRZ0uYz8lL2qfxKglcImFDw24Y,9070
|
8
|
-
franky_control.libs/libPocoFoundation-
|
9
|
-
franky_control.libs/libPocoNet-
|
8
|
+
franky_control.libs/libPocoFoundation-44d67b9f.so.95,sha256=6sSpoT5WNjvmbsEdjYvp5uu8nhEx-elAH67Gw8I2twA,3269633
|
9
|
+
franky_control.libs/libPocoNet-3bdfeb79.so.95,sha256=_ZbdxzOFhIIiSHA79e8yKNyCjfGVFbzYFvHqaKnqoFc,2482737
|
10
10
|
franky_control.libs/libboost_filesystem-0bf67256.so.1.75.0,sha256=MV-QRMY_pZ0zReU4H4AbcpyZ_sc6yZ6QR6QdDxF84Qc,139961
|
11
11
|
franky_control.libs/libboost_serialization-67da18f6.so.1.75.0,sha256=Wjn9rKqoXLrVK29NShhm_evaRsbhTFvvGydi8gwr5hs,319177
|
12
12
|
franky_control.libs/libconsole_bridge-acce180d.so.1.0,sha256=-iSKX9xNyLCSSrducf7rDx6hXzdU5v7xQqZDulppIP8,22769
|
13
13
|
franky_control.libs/libfmt-677b7a5c.so.8.1.1,sha256=rN3uzEn_limS_u6DV-BxdTEbs2GrhlicD_OjyAlKYpA,140649
|
14
|
-
franky_control.libs/libfranka-e5e9247f.so.0.15.0,sha256=
|
15
|
-
franky_control.libs/libpinocchio_default-
|
16
|
-
franky_control.libs/libpinocchio_parsers-
|
14
|
+
franky_control.libs/libfranka-e5e9247f.so.0.15.0,sha256=rJDob_PoDQHpC78J-rhR67oqlhmlTnS2Red0bClsi2I,973497
|
15
|
+
franky_control.libs/libpinocchio_default-def973fb.so.3.1.0,sha256=cMnEW8NgbxqYEpdZH0Ymp-B5SEKzGiKq4GA0BcZ-JV4,9668545
|
16
|
+
franky_control.libs/libpinocchio_parsers-d98f9e85.so.3.1.0,sha256=HbwrdisSDbC2mXCz1NVhACUIaXconvI3i-BN1W9qJuE,707441
|
17
17
|
franky_control.libs/libtinyxml-69e5f0dd.so.0.2.6.2,sha256=V45jOzaljaUrtOAYBS20QBFHn0qPFHTEcWxdcOBoJNA,118121
|
18
18
|
franky_control.libs/liburdfdom_model-9ec0392f.so.1.0,sha256=Kwlq8DuENLdEX5URKcwUC06sl9rxUYoRjGx3EI-uRiY,146081
|
19
19
|
franky_control.libs/liburdfdom_model_state-01125232.so.1.0,sha256=LNMEG27nv_6BYvelpjXjr0YsBl-6IsGQfg3uG0DvTQQ,20857
|
20
20
|
franky_control.libs/liburdfdom_sensor-011819fa.so.1.0,sha256=LzFH_sfeyWcV042TmgSEXTQL1c0teyYg3veA8sTn_EM,20857
|
21
21
|
franky_control.libs/liburdfdom_world-4d53bc81.so.1.0,sha256=IziPhPYdFfZTgKDOnUMGLYSCsZRxYfC1rEKWjvzrpb4,146081
|
22
|
-
franky_control-1.1.
|
23
|
-
franky_control-1.1.
|
24
|
-
franky_control-1.1.
|
25
|
-
franky_control-1.1.
|
26
|
-
franky_control-1.1.
|
22
|
+
franky_control-1.1.1.dist-info/LICENSE,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
|
23
|
+
franky_control-1.1.1.dist-info/METADATA,sha256=krU979EyVmkb6rZBCIm_sLRAurodnpVmyAJLOVGZXXU,40968
|
24
|
+
franky_control-1.1.1.dist-info/WHEEL,sha256=L3HW8fVbXzdi0Qbq6Dl6IkkMSshhqlUpffoAzAKCWvI,111
|
25
|
+
franky_control-1.1.1.dist-info/top_level.txt,sha256=LdDKRvHTODs6ll6Ow5b-gmWqt4NJffHxL83MRTCv_Ag,22
|
26
|
+
franky_control-1.1.1.dist-info/RECORD,,
|
index 895c157..e558fd6 100755
|
|
Binary file
|
index eaf603c..0af4094 100755
|
|
Binary file
|
Binary file
|
index 6eca8dc..014f7ef 100755
|
|
Binary file
|
index 6c418d2..0987339 100755
|
|
Binary file
|
File without changes
|
File without changes
|
File without changes
|