bluer-ugv 7.579.1__py3-none-any.whl → 7.607.1__py3-none-any.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.
- bluer_ugv/.abcli/swallow/git/rm_keys.sh +9 -11
- bluer_ugv/README/swallow/digital/algo/__init__.py +3 -14
- bluer_ugv/README/swallow/digital/algo/driving.py +5 -0
- bluer_ugv/README/swallow/digital/algo/tracking.py +41 -0
- bluer_ugv/__init__.py +1 -1
- bluer_ugv/swallow/__main__.py +9 -2
- bluer_ugv/swallow/debug.py +8 -4
- bluer_ugv/swallow/session/classical/camera/generic.py +10 -3
- bluer_ugv/swallow/session/classical/camera/tracking.py +18 -3
- bluer_ugv/swallow/targeting.py +11 -4
- {bluer_ugv-7.579.1.dist-info → bluer_ugv-7.607.1.dist-info}/METADATA +2 -2
- {bluer_ugv-7.579.1.dist-info → bluer_ugv-7.607.1.dist-info}/RECORD +15 -13
- {bluer_ugv-7.579.1.dist-info → bluer_ugv-7.607.1.dist-info}/WHEEL +0 -0
- {bluer_ugv-7.579.1.dist-info → bluer_ugv-7.607.1.dist-info}/licenses/LICENSE +0 -0
- {bluer_ugv-7.579.1.dist-info → bluer_ugv-7.607.1.dist-info}/top_level.txt +0 -0
|
@@ -9,21 +9,19 @@ function bluer_ugv_swallow_git_rm_keys() {
|
|
|
9
9
|
return 1
|
|
10
10
|
fi
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
sudo rm -v ~/.ssh/$BLUER_AI_GIT_SSH_KEY_NAME
|
|
12
|
+
sudo rm -v ~/.ssh/$BLUER_AI_GIT_SSH_KEY_NAME
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
sudo rm -v ~/.ssh/$BLUER_AI_GIT_SSH_KEY_NAME.pub
|
|
14
|
+
sudo rm -v ~/.ssh/$BLUER_AI_GIT_SSH_KEY_NAME.pub
|
|
17
15
|
|
|
18
|
-
local
|
|
19
|
-
for
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
local repo_name
|
|
17
|
+
for repo_name in bluer-ai $(bluer_ai_plugins list_of_external \
|
|
18
|
+
--delim space \
|
|
19
|
+
--log 0 \
|
|
20
|
+
--repo_names 1); do
|
|
21
|
+
bluer_ai_git \
|
|
22
22
|
$repo_name \
|
|
23
|
+
set_remote \
|
|
23
24
|
dryrun=$do_dryrun,https
|
|
24
25
|
[[ $? -ne 0 ]] && return 1
|
|
25
|
-
|
|
26
|
-
git pull
|
|
27
|
-
[[ $? -ne 0 ]] && return 1
|
|
28
26
|
done
|
|
29
27
|
}
|
|
@@ -2,27 +2,16 @@ from bluer_objects.README.items import ImageItems
|
|
|
2
2
|
|
|
3
3
|
from bluer_ugv.README.consts import algo_docs
|
|
4
4
|
from bluer_ugv.README.swallow.consts import swallow_assets2
|
|
5
|
-
from bluer_ugv.README.swallow.digital.algo import navigation, yolo
|
|
5
|
+
from bluer_ugv.README.swallow.digital.algo import driving, navigation, tracking, yolo
|
|
6
6
|
|
|
7
7
|
docs = (
|
|
8
8
|
[
|
|
9
9
|
{
|
|
10
10
|
"path": "../docs/swallow/digital/algo",
|
|
11
11
|
},
|
|
12
|
-
{
|
|
13
|
-
"path": "../docs/swallow/digital/algo/driving.md",
|
|
14
|
-
},
|
|
15
12
|
]
|
|
13
|
+
+ driving.docs
|
|
16
14
|
+ navigation.docs
|
|
17
|
-
+
|
|
18
|
-
{
|
|
19
|
-
"path": "../docs/swallow/digital/algo/tracking",
|
|
20
|
-
"items": ImageItems(
|
|
21
|
-
{
|
|
22
|
-
f"{swallow_assets2}/target-selection.png": f"{algo_docs}/socket.md",
|
|
23
|
-
}
|
|
24
|
-
),
|
|
25
|
-
}
|
|
26
|
-
]
|
|
15
|
+
+ tracking.docs
|
|
27
16
|
+ yolo.docs
|
|
28
17
|
)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from bluer_objects.README.items import ImageItems
|
|
2
|
+
from bluer_objects.README.consts import assets
|
|
3
|
+
from bluer_objects.README.consts import assets_url
|
|
4
|
+
|
|
5
|
+
from bluer_ugv.README.consts import algo_docs
|
|
6
|
+
from bluer_ugv.README.swallow.consts import swallow_assets2
|
|
7
|
+
|
|
8
|
+
tracker_assets2 = assets_url(
|
|
9
|
+
"tracker",
|
|
10
|
+
volume=2,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
docs = [
|
|
14
|
+
{
|
|
15
|
+
"path": "../docs/swallow/digital/algo/tracking",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"path": "../docs/swallow/digital/algo/tracking/validations",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "../docs/swallow/digital/algo/tracking/validations/one.md",
|
|
22
|
+
"items": ImageItems(
|
|
23
|
+
{
|
|
24
|
+
f"{swallow_assets2}/target-selection.png": f"{algo_docs}/socket.md",
|
|
25
|
+
}
|
|
26
|
+
),
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"path": "../docs/swallow/digital/algo/tracking/validations/two.md",
|
|
30
|
+
"items": ImageItems(
|
|
31
|
+
{
|
|
32
|
+
f"{tracker_assets2}/validations/two/socket-3.png": f"{algo_docs}/socket.md",
|
|
33
|
+
"{}/{}/{}.gif".format(
|
|
34
|
+
assets,
|
|
35
|
+
"swallow-debug-2025-12-11-17-23-59-6bhm5n",
|
|
36
|
+
"swallow-debug-2025-12-11-17-23-59-6bhm5n",
|
|
37
|
+
): "",
|
|
38
|
+
}
|
|
39
|
+
),
|
|
40
|
+
},
|
|
41
|
+
]
|
bluer_ugv/__init__.py
CHANGED
bluer_ugv/swallow/__main__.py
CHANGED
|
@@ -4,8 +4,8 @@ from blueness import module
|
|
|
4
4
|
from blueness.argparse.generic import sys_exit
|
|
5
5
|
|
|
6
6
|
from bluer_ugv import NAME
|
|
7
|
-
from bluer_ugv.swallow.targeting import select_target
|
|
8
|
-
from bluer_ugv.swallow.debug import debug
|
|
7
|
+
from bluer_ugv.swallow.targeting import select_target, DEFAULT_TARGETING_PORT
|
|
8
|
+
from bluer_ugv.swallow.debug import debug, DEFAULT_DEBUG_PORT
|
|
9
9
|
from bluer_ugv.logger import logger
|
|
10
10
|
|
|
11
11
|
NAME = module.name(__file__, NAME)
|
|
@@ -42,6 +42,11 @@ parser.add_argument(
|
|
|
42
42
|
default=1,
|
|
43
43
|
help="0 | 1",
|
|
44
44
|
)
|
|
45
|
+
parser.add_argument(
|
|
46
|
+
"--port",
|
|
47
|
+
type=int,
|
|
48
|
+
default=-1,
|
|
49
|
+
)
|
|
45
50
|
args = parser.parse_args()
|
|
46
51
|
|
|
47
52
|
success = False
|
|
@@ -50,11 +55,13 @@ if args.task == "debug":
|
|
|
50
55
|
object_name=args.object_name,
|
|
51
56
|
generate_gif=args.generate_gif == 1,
|
|
52
57
|
save_images=args.save_images == 1,
|
|
58
|
+
port=DEFAULT_DEBUG_PORT if args.port == -1 else args.port,
|
|
53
59
|
)
|
|
54
60
|
elif args.task == "select_target":
|
|
55
61
|
success = select_target(
|
|
56
62
|
host=args.host,
|
|
57
63
|
loop=args.loop == 1,
|
|
64
|
+
port=DEFAULT_TARGETING_PORT if args.port == -1 else args.port,
|
|
58
65
|
)
|
|
59
66
|
else:
|
|
60
67
|
success = None
|
bluer_ugv/swallow/debug.py
CHANGED
|
@@ -8,7 +8,7 @@ from bluer_objects import file
|
|
|
8
8
|
from bluer_objects import objects
|
|
9
9
|
from bluer_objects.logger.stitch import stitch_images
|
|
10
10
|
from bluer_objects.graphics.gif import generate_animated_gif
|
|
11
|
-
from bluer_algo.socket.connection import SocketConnection
|
|
11
|
+
from bluer_algo.socket.connection import SocketConnection, DEFAULT_PORT
|
|
12
12
|
from bluer_algo.socket.message import SocketMessage
|
|
13
13
|
|
|
14
14
|
from bluer_ugv import NAME
|
|
@@ -17,24 +17,28 @@ from bluer_ugv.logger import logger
|
|
|
17
17
|
|
|
18
18
|
NAME = module.name(__file__, NAME)
|
|
19
19
|
|
|
20
|
+
DEFAULT_DEBUG_PORT = DEFAULT_PORT
|
|
21
|
+
|
|
20
22
|
|
|
21
23
|
def debug(
|
|
22
24
|
object_name: str,
|
|
23
25
|
generate_gif: bool = True,
|
|
24
26
|
save_images: bool = True,
|
|
27
|
+
port: int = DEFAULT_DEBUG_PORT,
|
|
25
28
|
) -> bool:
|
|
26
29
|
logger.info(
|
|
27
|
-
"{}.debug -{}{}> {}".format(
|
|
30
|
+
"{}.debug -{}{}{}> {}".format(
|
|
28
31
|
NAME,
|
|
32
|
+
f"port={port}-",
|
|
29
33
|
"images-" if save_images else "",
|
|
30
34
|
"gif-" if generate_gif else "",
|
|
31
35
|
object_name,
|
|
32
36
|
)
|
|
33
37
|
)
|
|
34
38
|
|
|
35
|
-
socket = SocketConnection.listen_on()
|
|
39
|
+
socket = SocketConnection.listen_on(port=port)
|
|
36
40
|
|
|
37
|
-
title = "debug..."
|
|
41
|
+
title = f"debug: port={port} -> {object_name} ..."
|
|
38
42
|
|
|
39
43
|
cv2.namedWindow(title)
|
|
40
44
|
logger.info("Ctrl+C to exit...")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
|
|
3
|
-
from bluer_algo.socket.connection import SocketConnection, DEV_HOST
|
|
3
|
+
from bluer_algo.socket.connection import SocketConnection, DEV_HOST, DEFAULT_PORT
|
|
4
4
|
from bluer_sbc.imager.camera import instance as camera
|
|
5
5
|
|
|
6
6
|
from bluer_ugv.swallow.session.classical.keyboard.classes import ClassicalKeyboard
|
|
@@ -29,8 +29,15 @@ class ClassicalCamera:
|
|
|
29
29
|
def cleanup(self):
|
|
30
30
|
camera.close(log=True)
|
|
31
31
|
|
|
32
|
-
def send_debug_data(
|
|
33
|
-
|
|
32
|
+
def send_debug_data(
|
|
33
|
+
self,
|
|
34
|
+
data: Any,
|
|
35
|
+
port: int = DEFAULT_PORT,
|
|
36
|
+
) -> bool:
|
|
37
|
+
socket = SocketConnection.connect_to(
|
|
38
|
+
target_host=DEV_HOST,
|
|
39
|
+
port=port,
|
|
40
|
+
)
|
|
34
41
|
return socket.send_data(data)
|
|
35
42
|
|
|
36
43
|
# multi-threaded support
|
|
@@ -2,9 +2,9 @@ from typing import Tuple
|
|
|
2
2
|
import numpy as np
|
|
3
3
|
|
|
4
4
|
from bluer_options.timer import Timer
|
|
5
|
-
from bluer_options import string
|
|
6
5
|
from bluer_algo.tracker.classes.target import Target
|
|
7
6
|
from bluer_algo.tracker.classes.camshift import CamShiftTracker
|
|
7
|
+
from bluer_algo.socket.message import SocketMessage
|
|
8
8
|
from bluer_sbc.imager.camera import instance as camera
|
|
9
9
|
|
|
10
10
|
from bluer_ugv import env
|
|
@@ -14,6 +14,7 @@ from bluer_ugv.swallow.session.classical.keyboard.classes import ClassicalKeyboa
|
|
|
14
14
|
from bluer_ugv.swallow.session.classical.leds import ClassicalLeds
|
|
15
15
|
from bluer_ugv.swallow.session.classical.setpoint.classes import ClassicalSetPoint
|
|
16
16
|
from bluer_ugv.swallow.session.classical.mode import OperationMode
|
|
17
|
+
from bluer_ugv.swallow.targeting import DEFAULT_TARGETING_PORT
|
|
17
18
|
from bluer_ugv.logger import logger
|
|
18
19
|
|
|
19
20
|
|
|
@@ -56,6 +57,7 @@ class ClassicalTrackingCamera(ClassicalCamera):
|
|
|
56
57
|
success, self.track_window = Target.select(
|
|
57
58
|
np.flip(image, axis=2),
|
|
58
59
|
local=False,
|
|
60
|
+
port=DEFAULT_TARGETING_PORT,
|
|
59
61
|
)
|
|
60
62
|
self.leds.set_all(False)
|
|
61
63
|
if not success:
|
|
@@ -100,10 +102,23 @@ class ClassicalTrackingCamera(ClassicalCamera):
|
|
|
100
102
|
if not success:
|
|
101
103
|
return success
|
|
102
104
|
|
|
103
|
-
|
|
105
|
+
debug_mode = self.keyboard.get("debug_mode", False)
|
|
106
|
+
_, self.track_window, output_image = self.tracker.track(
|
|
104
107
|
frame=image,
|
|
105
108
|
track_window=self.track_window,
|
|
109
|
+
log=debug_mode,
|
|
106
110
|
)
|
|
111
|
+
logger.info(f"🎯 {self.track_window}")
|
|
112
|
+
|
|
113
|
+
if debug_mode:
|
|
114
|
+
if not self.send_debug_data(
|
|
115
|
+
SocketMessage(
|
|
116
|
+
{
|
|
117
|
+
"image": output_image,
|
|
118
|
+
}
|
|
119
|
+
)
|
|
120
|
+
):
|
|
121
|
+
logger.warning("failed to send debug data.")
|
|
107
122
|
|
|
108
123
|
x, _, w, _ = self.track_window
|
|
109
124
|
if x + w // 2 > image.shape[1] * 2 / 3:
|
|
@@ -122,5 +137,5 @@ class ClassicalTrackingCamera(ClassicalCamera):
|
|
|
122
137
|
return True
|
|
123
138
|
|
|
124
139
|
def update_training(self) -> bool:
|
|
125
|
-
self.
|
|
140
|
+
self.keyboard.set("mode", OperationMode.NONE)
|
|
126
141
|
return self.select_target()
|
bluer_ugv/swallow/targeting.py
CHANGED
|
@@ -11,34 +11,41 @@ from bluer_ugv.logger import logger
|
|
|
11
11
|
|
|
12
12
|
NAME = module.name(__file__, NAME)
|
|
13
13
|
|
|
14
|
+
DEFAULT_TARGETING_PORT = 8002
|
|
15
|
+
|
|
14
16
|
|
|
15
17
|
def select_target(
|
|
16
18
|
host: str,
|
|
17
19
|
loop: bool = True,
|
|
20
|
+
port: int = DEFAULT_TARGETING_PORT,
|
|
18
21
|
) -> bool:
|
|
19
22
|
logger.info(
|
|
20
|
-
"{}.select_target on {}{}".format(
|
|
23
|
+
"{}.select_target on {} port={}{}".format(
|
|
21
24
|
NAME,
|
|
22
25
|
host,
|
|
26
|
+
port,
|
|
23
27
|
" on a loop." if loop else "",
|
|
24
28
|
)
|
|
25
29
|
)
|
|
26
30
|
|
|
27
31
|
try:
|
|
28
32
|
while loop:
|
|
29
|
-
socket = SocketConnection.listen_on()
|
|
33
|
+
socket = SocketConnection.listen_on(port=port)
|
|
30
34
|
success, image = socket.receive_data(np.ndarray)
|
|
31
35
|
if not success:
|
|
32
36
|
return success
|
|
33
37
|
|
|
34
38
|
success, track_window = Target.select(
|
|
35
39
|
image,
|
|
36
|
-
title=f"select target
|
|
40
|
+
title=f"select the target for {host} port={port}...",
|
|
37
41
|
)
|
|
38
42
|
if not success:
|
|
39
43
|
return success
|
|
40
44
|
|
|
41
|
-
socket = SocketConnection.connect_to(
|
|
45
|
+
socket = SocketConnection.connect_to(
|
|
46
|
+
host,
|
|
47
|
+
port=port,
|
|
48
|
+
)
|
|
42
49
|
if not socket.send_data(track_window):
|
|
43
50
|
return False
|
|
44
51
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_ugv
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.607.1
|
|
4
4
|
Summary: 🐬 AI x UGV.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-ugv
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -64,7 +64,7 @@ pip install bluer_ugv
|
|
|
64
64
|
|
|
65
65
|
[](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml) [](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml) [](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml) [](https://pypi.org/project/bluer-ugv/) [](https://pypistats.org/packages/bluer-ugv)
|
|
66
66
|
|
|
67
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.
|
|
67
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.607.1`](https://github.com/kamangir/bluer-ugv).
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
bluer_ugv/__init__.py,sha256=
|
|
1
|
+
bluer_ugv/__init__.py,sha256=1Aqi5v2UFFgvlOXOP6a1ycYk-u9v3bIcNZ854A9zGE0,288
|
|
2
2
|
bluer_ugv/__main__.py,sha256=77TquqyMca7qHk0XtCixGVyzfW3_9ywnl5oXEPERlls,374
|
|
3
3
|
bluer_ugv/config.env,sha256=I718Cfy1GaGqVI80vb7iYsoJ0P7SKLW8USaBYb2sub4,1055
|
|
4
4
|
bluer_ugv/env.py,sha256=oEJiyKf1cCJ9kgZqgwnWemT0U_cO2RmCN3MRSS2vitY,1875
|
|
@@ -29,7 +29,7 @@ bluer_ugv/.abcli/swallow/dataset/upload.sh,sha256=KM33QM4rIQpltbd_V49wPWear9Wi8c
|
|
|
29
29
|
bluer_ugv/.abcli/swallow/env/cp.sh,sha256=vWBlG9n4Q6m_lBWcot9nyN6kc7-uil5skCjfJWHCfrY,168
|
|
30
30
|
bluer_ugv/.abcli/swallow/env/list.sh,sha256=pT-hRS0ZfmogAfAMfm-hh0raGoUAnl66U5VuqgyeIwE,173
|
|
31
31
|
bluer_ugv/.abcli/swallow/env/set.sh,sha256=ed6NCkhYK9LNhSYU_iJUNYXuyQFzmH9mydQ5agihhvA,817
|
|
32
|
-
bluer_ugv/.abcli/swallow/git/rm_keys.sh,sha256=
|
|
32
|
+
bluer_ugv/.abcli/swallow/git/rm_keys.sh,sha256=jc2Pz4lsgcGvpPZ8bZB16Iz-2oVUBiJsXhj9NptaNvo,684
|
|
33
33
|
bluer_ugv/.abcli/swallow/keyboard/test.sh,sha256=B04AO-Er3_utzULPziyKD0aybuN2bry7h9wrQBEJ0tA,218
|
|
34
34
|
bluer_ugv/.abcli/swallow/ultrasonic/review.sh,sha256=XoKwUliTcH-yTHrIo1cc9RSxL3tYQsBfWf1XOJ6YtOI,717
|
|
35
35
|
bluer_ugv/.abcli/swallow/ultrasonic/test.sh,sha256=WRq4jnm2lv6q7fAw-_6Xg7DD8kgki48t8ilwXA-SsBM,582
|
|
@@ -95,8 +95,10 @@ bluer_ugv/README/swallow/analog.py,sha256=NmFEukeKepYRtIc0UT_F96uRKKukFM585UA6ml
|
|
|
95
95
|
bluer_ugv/README/swallow/consts.py,sha256=VKu8qhDqLiGICErKpW-FMUtHGDM0P28teR8eKM8gFc4,376
|
|
96
96
|
bluer_ugv/README/swallow/items.py,sha256=rNuxpfs300AABgKUc_lF7sbB6EjBd-ijkISlg6LDD9w,1527
|
|
97
97
|
bluer_ugv/README/swallow/digital/__init__.py,sha256=KTM0h2x5fzGeBSPOdD-Cp1PnP3eff703S5Yx5d34awc,262
|
|
98
|
-
bluer_ugv/README/swallow/digital/algo/__init__.py,sha256=
|
|
98
|
+
bluer_ugv/README/swallow/digital/algo/__init__.py,sha256=uj-B69s-EP4NcmY3W_HK8MBtWPCQchlI_KxUtp6NZLE,417
|
|
99
|
+
bluer_ugv/README/swallow/digital/algo/driving.py,sha256=kr-uGXePnizPAb6ceajC9ToZHsh1iwGBMGw0hzgZIJI,83
|
|
99
100
|
bluer_ugv/README/swallow/digital/algo/navigation.py,sha256=Hg_tkGYnE8qbM37Go4KlAaO-sNAtOBmaNZlPda45BCc,1780
|
|
101
|
+
bluer_ugv/README/swallow/digital/algo/tracking.py,sha256=0VmaqWWXQs8PzLL0tIAAkqNVPkVyZIAD9IbpKOCVmuY,1191
|
|
100
102
|
bluer_ugv/README/swallow/digital/algo/yolo.py,sha256=NlDISZ9LOUmMAzdEYzVYOrIwbDGdM8euMURlBOGACUk,930
|
|
101
103
|
bluer_ugv/README/swallow/digital/design/__init__.py,sha256=VP_oK0MQ5yPl_FfbY9mLWNTvdi1amsau5Jkjse6a_Es,1991
|
|
102
104
|
bluer_ugv/README/swallow/digital/design/mechanical.py,sha256=OwgMrFIpRA-RR9CwurXaif09GCd6_i3zGuAfkH0jtsM,983
|
|
@@ -157,9 +159,9 @@ bluer_ugv/help/swallow/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
|
157
159
|
bluer_ugv/help/swallow/video/functions.py,sha256=Ek0wrBUCNXSbBGIgMwD-8GUuULvSzL4zDv4lD8SGe6I,939
|
|
158
160
|
bluer_ugv/help/swallow/video/playlist.py,sha256=Wg09FONWjuKOFYxDD7Ni3OjrSf8cnadscth0xU1NjfI,1663
|
|
159
161
|
bluer_ugv/swallow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
160
|
-
bluer_ugv/swallow/__main__.py,sha256=
|
|
161
|
-
bluer_ugv/swallow/debug.py,sha256=
|
|
162
|
-
bluer_ugv/swallow/targeting.py,sha256=
|
|
162
|
+
bluer_ugv/swallow/__main__.py,sha256=uvdolPN8Vl8Mow75JZ7VUwgYGhKaN7ewIZ34z-INLjk,1448
|
|
163
|
+
bluer_ugv/swallow/debug.py,sha256=lyf6RqTAbBgN1Ob35g2iLQeGoTD_U5T2vIejJqiGY7E,2654
|
|
164
|
+
bluer_ugv/swallow/targeting.py,sha256=upxGlNVm5uf2jGT_N_SerIWc2olgRtzglaW6IQYtHzM,1486
|
|
163
165
|
bluer_ugv/swallow/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
164
166
|
bluer_ugv/swallow/dataset/__main__.py,sha256=X_dDss9zJgSmNQg0EtXbxenVdXkN-dZg3XVaVentOL0,1584
|
|
165
167
|
bluer_ugv/swallow/dataset/combination.py,sha256=FcfTpR-xwPR7Tcu_5lwBL1dkjZ3IBw72sDv1XlLpca0,3902
|
|
@@ -174,9 +176,9 @@ bluer_ugv/swallow/session/classical/position.py,sha256=gNeNzNpUG8zkDrcwibxaYStPN
|
|
|
174
176
|
bluer_ugv/swallow/session/classical/push_button.py,sha256=s8sPart_dECjLK-gfsJi0UorRYcFYf3ofLqjmG8PoA8,2397
|
|
175
177
|
bluer_ugv/swallow/session/classical/session.py,sha256=zdP5pUy6u35BBptkQM8kn1w1P-bduFWQNiSju3ftlaM,5858
|
|
176
178
|
bluer_ugv/swallow/session/classical/camera/__init__.py,sha256=2GchuT19_Ns0uYRS5aUMz4pBwbK3y5XoFxoAlAnJKh8,464
|
|
177
|
-
bluer_ugv/swallow/session/classical/camera/generic.py,sha256=
|
|
179
|
+
bluer_ugv/swallow/session/classical/camera/generic.py,sha256=tW7bQMzmBi9MV28cTlKlDhFdtnB-9mkpBzjaWzEJNec,1220
|
|
178
180
|
bluer_ugv/swallow/session/classical/camera/navigation.py,sha256=HoeTlifGEfnedb6o8P-O0TcP1bNDRJ0M7vWupQh1pL4,6790
|
|
179
|
-
bluer_ugv/swallow/session/classical/camera/tracking.py,sha256=
|
|
181
|
+
bluer_ugv/swallow/session/classical/camera/tracking.py,sha256=Iy-IiyzWeDWPYerhnQIZ-o2NwL2tmdvieR0PXY0nT-A,4204
|
|
180
182
|
bluer_ugv/swallow/session/classical/camera/void.py,sha256=IJkJQgTgVucTYagFIwKEchNf3Vcjl99EdCdSdvKaeJo,216
|
|
181
183
|
bluer_ugv/swallow/session/classical/camera/yolo.py,sha256=i-lEsLpqlmm1v3sa5azQYk7LCgU9Me5y28-LSPurc7g,6412
|
|
182
184
|
bluer_ugv/swallow/session/classical/keyboard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -211,8 +213,8 @@ bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py,sha256=bVcG8V0P6Sl
|
|
|
211
213
|
bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py,sha256=_iQmec2VSq-ORkTVpXSNJg08hrSz2M1O8LzNZEtoT9U,959
|
|
212
214
|
bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py,sha256=En-J8BRTiR8k9p2CBbW0cOUuw8nctD5DOXDm5uhCNO4,3987
|
|
213
215
|
bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py,sha256=yj2MY_Jo1FzeXnR_JoFAXsb9eHEVhicDiHEsUa8z03U,1525
|
|
214
|
-
bluer_ugv-7.
|
|
215
|
-
bluer_ugv-7.
|
|
216
|
-
bluer_ugv-7.
|
|
217
|
-
bluer_ugv-7.
|
|
218
|
-
bluer_ugv-7.
|
|
216
|
+
bluer_ugv-7.607.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
|
|
217
|
+
bluer_ugv-7.607.1.dist-info/METADATA,sha256=PI1d_BksrrVTGGjZfptKjg0jWGUQU3_M6EuyFFsKkik,5579
|
|
218
|
+
bluer_ugv-7.607.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
219
|
+
bluer_ugv-7.607.1.dist-info/top_level.txt,sha256=_MlDhFvIPpher9Zs7xyJTHgO2xJJTbfR1dzncz3LQnk,10
|
|
220
|
+
bluer_ugv-7.607.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|