forked from anki/vector-python-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path07_dock_with_cube.py
More file actions
executable file
·62 lines (47 loc) · 2.05 KB
/
07_dock_with_cube.py
File metadata and controls
executable file
·62 lines (47 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/env python3
# Copyright (c) 2018 Anki, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License in the file LICENSE.txt or at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Tell Vector to drive up to a seen cube.
This example demonstrates Vector driving to and docking with a cube, without
picking it up. Vector will line his arm hooks up with the cube so that they are
inserted into the cube's corners.
You must place a cube in front of Vector so that he can see it.
"""
import anki_vector
from anki_vector.util import degrees
def main():
args = anki_vector.util.parse_command_args()
docking_result = None
with anki_vector.Robot(args.serial) as robot:
robot.behavior.drive_off_charger()
# If necessary, move Vector's Head and Lift down
robot.behavior.set_head_angle(degrees(-5.0))
robot.behavior.set_lift_height(0.0)
print("Connecting to a cube...")
robot.world.connect_cube()
if robot.world.connected_light_cube:
print("Begin cube docking...")
dock_response = robot.behavior.dock_with_cube(
robot.world.connected_light_cube,
num_retries=3)
if dock_response:
docking_result = dock_response.result
robot.world.disconnect_cube()
if docking_result:
if docking_result.code != anki_vector.messaging.protocol.ActionResult.ACTION_RESULT_SUCCESS:
print("Cube docking failed with code {0} ({1})".format(str(docking_result).rstrip('\n\r'), docking_result.code))
else:
print("Cube docking failed.")
if __name__ == "__main__":
main()