Skip to content

Commit 350f99c

Browse files
Add exception handling to the generators to print a nicer error message in the case of self-generated Unsupported* exceptions (#192)
1 parent 3c50e5d commit 350f99c

File tree

6 files changed

+106
-34
lines changed

6 files changed

+106
-34
lines changed

clearpath_generator_common/clearpath_generator_common/bash/generate_bash

+15-3
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,26 @@
3232
# modification, is not permitted without the express permission
3333
# of Clearpath Robotics.
3434

35+
from clearpath_config.common.types.exception import (
36+
UnsupportedAccessoryException,
37+
UnsupportedMiddlewareException,
38+
UnsupportedPlatformException,
39+
)
3540
from clearpath_generator_common.common import BaseGenerator
3641
from clearpath_generator_common.bash.generator import BashGenerator
3742

3843

3944
def main():
40-
setup_path = BaseGenerator.get_args()
41-
bg = BashGenerator(setup_path)
42-
bg.generate()
45+
try:
46+
setup_path = BaseGenerator.get_args()
47+
bg = BashGenerator(setup_path)
48+
bg.generate()
49+
except UnsupportedAccessoryException as err:
50+
print(f'[ERROR] Unable to generate bash: {err}')
51+
except UnsupportedMiddlewareException as err:
52+
print(f'[ERROR] Unable to generate bash: {err}')
53+
except UnsupportedPlatformException as err:
54+
print(f'[ERROR] Unable to generate bash: {err}')
4355

4456

4557
if __name__ == '__main__':

clearpath_generator_common/clearpath_generator_common/description/generate_description

+15-3
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,26 @@
3232
# modification, is not permitted without the express permission
3333
# of Clearpath Robotics.
3434

35+
from clearpath_config.common.types.exception import (
36+
UnsupportedAccessoryException,
37+
UnsupportedMiddlewareException,
38+
UnsupportedPlatformException,
39+
)
3540
from clearpath_generator_common.common import BaseGenerator
3641
from clearpath_generator_common.description.generator import DescriptionGenerator
3742

3843

3944
def main():
40-
setup_path = BaseGenerator.get_args()
41-
dg = DescriptionGenerator(setup_path)
42-
dg.generate()
45+
try:
46+
setup_path = BaseGenerator.get_args()
47+
dg = DescriptionGenerator(setup_path)
48+
dg.generate()
49+
except UnsupportedAccessoryException as err:
50+
print(f'[ERROR] Unable to generate description: {err}')
51+
except UnsupportedMiddlewareException as err:
52+
print(f'[ERROR] Unable to generate description: {err}')
53+
except UnsupportedPlatformException as err:
54+
print(f'[ERROR] Unable to generate description: {err}')
4355

4456

4557
if __name__ == '__main__':

clearpath_generator_common/clearpath_generator_common/discovery_server/generate_discovery_server

+15-3
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,26 @@
3232
# modification, is not permitted without the express permission
3333
# of Clearpath Robotics.
3434

35+
from clearpath_config.common.types.exception import (
36+
UnsupportedAccessoryException,
37+
UnsupportedMiddlewareException,
38+
UnsupportedPlatformException,
39+
)
3540
from clearpath_generator_common.common import BaseGenerator
3641
from clearpath_generator_common.discovery_server.generator import DiscoveryServerGenerator
3742

3843

3944
def main():
40-
setup_path = BaseGenerator.get_args()
41-
dsg = DiscoveryServerGenerator(setup_path)
42-
dsg.generate()
45+
try:
46+
setup_path = BaseGenerator.get_args()
47+
dsg = DiscoveryServerGenerator(setup_path)
48+
dsg.generate()
49+
except UnsupportedAccessoryException as err:
50+
print(f'[ERROR] Unable to generate discovery server: {err}')
51+
except UnsupportedMiddlewareException as err:
52+
print(f'[ERROR] Unable to generate discovery server: {err}')
53+
except UnsupportedPlatformException as err:
54+
print(f'[ERROR] Unable to generate discovery server: {err}')
4355

4456

4557
if __name__ == '__main__':

clearpath_generator_common/clearpath_generator_common/semantic_description/generate_semantic_description

+31-19
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@
3333
# of Clearpath Robotics.
3434
import os
3535

36+
from clearpath_config.common.types.exception import (
37+
UnsupportedAccessoryException,
38+
UnsupportedMiddlewareException,
39+
UnsupportedPlatformException,
40+
)
3641
from clearpath_generator_common.common import BaseGenerator
3742
from clearpath_generator_common.semantic_description.generator import SemanticDescriptionGenerator
3843
from ros2run.api import get_executable_path, run_executable
@@ -41,25 +46,32 @@ PACKAGE = '<package><name>clearpath_generator_common</name></package>\n'
4146

4247

4348
def main():
44-
setup_path = BaseGenerator.get_args()
45-
sdg = SemanticDescriptionGenerator(setup_path)
46-
sdg.generate()
47-
# Create pseudo package
48-
with open(os.path.join(setup_path, 'package.xml'), 'w+') as f:
49-
f.write(PACKAGE)
50-
# Update collision matrix
51-
path = get_executable_path(
52-
executable_name='moveit_collision_updater',
53-
package_name='clearpath_generator_common'
54-
)
55-
argv = [
56-
'--urdf', os.path.join(setup_path, 'robot.urdf.xacro'),
57-
'--srdf', os.path.join(setup_path, 'robot.srdf.xacro'),
58-
'--output', os.path.join(setup_path, 'robot.srdf')
59-
]
60-
run_executable(path=path, argv=argv)
61-
# Delete pseudo package
62-
os.remove(os.path.join(setup_path, 'package.xml'))
49+
try:
50+
setup_path = BaseGenerator.get_args()
51+
sdg = SemanticDescriptionGenerator(setup_path)
52+
sdg.generate()
53+
# Create pseudo package
54+
with open(os.path.join(setup_path, 'package.xml'), 'w+') as f:
55+
f.write(PACKAGE)
56+
# Update collision matrix
57+
path = get_executable_path(
58+
executable_name='moveit_collision_updater',
59+
package_name='clearpath_generator_common'
60+
)
61+
argv = [
62+
'--urdf', os.path.join(setup_path, 'robot.urdf.xacro'),
63+
'--srdf', os.path.join(setup_path, 'robot.srdf.xacro'),
64+
'--output', os.path.join(setup_path, 'robot.srdf')
65+
]
66+
run_executable(path=path, argv=argv)
67+
# Delete pseudo package
68+
os.remove(os.path.join(setup_path, 'package.xml'))
69+
except UnsupportedAccessoryException as err:
70+
print(f'[ERROR] Unable to generate semantic description: {err}')
71+
except UnsupportedMiddlewareException as err:
72+
print(f'[ERROR] Unable to generate semantic description: {err}')
73+
except UnsupportedPlatformException as err:
74+
print(f'[ERROR] Unable to generate semantic description: {err}')
6375

6476

6577
if __name__ == '__main__':

clearpath_generator_common/clearpath_generator_common/vcan/generate_vcan

+15-3
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,26 @@
3232
# modification, is not permitted without the express permission
3333
# of Clearpath Robotics.
3434

35+
from clearpath_config.common.types.exception import (
36+
UnsupportedAccessoryException,
37+
UnsupportedMiddlewareException,
38+
UnsupportedPlatformException,
39+
)
3540
from clearpath_generator_common.common import BaseGenerator
3641
from clearpath_generator_common.vcan.generator import VirtualCANGenerator
3742

3843

3944
def main():
40-
setup_path = BaseGenerator.get_args()
41-
dsg = VirtualCANGenerator(setup_path)
42-
dsg.generate()
45+
try:
46+
setup_path = BaseGenerator.get_args()
47+
dsg = VirtualCANGenerator(setup_path)
48+
dsg.generate()
49+
except UnsupportedAccessoryException as err:
50+
print(f'[ERROR] Unable to generate vcan: {err}')
51+
except UnsupportedMiddlewareException as err:
52+
print(f'[ERROR] Unable to generate vcan: {err}')
53+
except UnsupportedPlatformException as err:
54+
print(f'[ERROR] Unable to generate vcan: {err}')
4355

4456

4557
if __name__ == '__main__':

clearpath_generator_common/clearpath_generator_common/zenoh_router/generate_zenoh_router

+15-3
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,26 @@
3232
# modification, is not permitted without the express permission
3333
# of Clearpath Robotics.
3434

35+
from clearpath_config.common.types.exception import (
36+
UnsupportedAccessoryException,
37+
UnsupportedMiddlewareException,
38+
UnsupportedPlatformException,
39+
)
3540
from clearpath_generator_common.common import BaseGenerator
3641
from clearpath_generator_common.zenoh_router.generator import ZenohRouterGenerator
3742

3843

3944
def main():
40-
setup_path = BaseGenerator.get_args()
41-
dsg = ZenohRouterGenerator(setup_path)
42-
dsg.generate()
45+
try:
46+
setup_path = BaseGenerator.get_args()
47+
dsg = ZenohRouterGenerator(setup_path)
48+
dsg.generate()
49+
except UnsupportedAccessoryException as err:
50+
print(f'[ERROR] Unable to generate zenoh router: {err}')
51+
except UnsupportedMiddlewareException as err:
52+
print(f'[ERROR] Unable to generate zenoh router: {err}')
53+
except UnsupportedPlatformException as err:
54+
print(f'[ERROR] Unable to generate zenoh router: {err}')
4355

4456

4557
if __name__ == '__main__':

0 commit comments

Comments
 (0)