Skip to content

Commit e88c085

Browse files
committed
marker.launch.py added
1 parent 09a50db commit e88c085

File tree

5 files changed

+103
-13
lines changed

5 files changed

+103
-13
lines changed

.vscode/settings.json

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"./src/stingray/src/stingray_utils",
1414
"./src/stingray/src/stingray_core/src/stingray_core_interfaces",
1515
"./src/stingray/src/stingray_missions",
16+
"./src/marker_finder",
1617
],
1718
"files.associations": {
1819
"cctype": "cpp",
+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
from pathlib import Path
2+
3+
from ament_index_python import get_package_share_directory
4+
5+
from launch import LaunchDescription
6+
from launch.actions import DeclareLaunchArgument
7+
from launch.actions import IncludeLaunchDescription
8+
from launch.launch_description_sources import PythonLaunchDescriptionSource
9+
from launch.substitutions import LaunchConfiguration
10+
from launch_ros.actions import Node
11+
12+
13+
def generate_launch_description():
14+
15+
calibration_config_dir = Path(get_package_share_directory('welt_cam')) / "configs"
16+
camera_calibration_path = calibration_config_dir / "bottom_camera.yaml"
17+
18+
# bottom camera
19+
camera_topic_arg = DeclareLaunchArgument(
20+
"camera_bottom_topic_name", default_value='/stingray/topics/camera_bottom'
21+
)
22+
camera_path_arg = DeclareLaunchArgument(
23+
"camera_bottom_path", default_value='/dev/video0'
24+
)
25+
camera_calibration_path_arg = DeclareLaunchArgument(
26+
"camera_bottom_calibration_path", default_value=str(camera_calibration_path)
27+
)
28+
box_topic_arg = DeclareLaunchArgument(
29+
"box_topic_name", default_value='/stingray/topics/marker_box'
30+
)
31+
debug_arg = DeclareLaunchArgument(
32+
"debug", default_value='True'
33+
)
34+
debug_topic_arg = DeclareLaunchArgument(
35+
"debug_image_name", default_value='/stingray/topics/marker_debug_image'
36+
)
37+
kernel_arg = DeclareLaunchArgument(
38+
"kernel", default_value='5'
39+
)
40+
sigma_arg = DeclareLaunchArgument(
41+
"sigma", default_value='3'
42+
)
43+
closure_arg = DeclareLaunchArgument(
44+
"closure", default_value='10'
45+
)
46+
light_arg = DeclareLaunchArgument(
47+
"light", default_value='0.6'
48+
)
49+
grayness_arg = DeclareLaunchArgument(
50+
"grayness", default_value='0.1'
51+
)
52+
53+
# load ros config
54+
return LaunchDescription([
55+
camera_topic_arg,
56+
camera_path_arg,
57+
camera_calibration_path_arg,
58+
box_topic_arg,
59+
debug_arg,
60+
debug_topic_arg,
61+
kernel_arg,
62+
sigma_arg,
63+
closure_arg,
64+
light_arg,
65+
grayness_arg,
66+
# bottom camera
67+
Node(
68+
package='marker_finder',
69+
executable='marker_detector',
70+
name='marker_finder_node',
71+
remappings=[
72+
('/image_raw', LaunchConfiguration("camera_bottom_topic")),
73+
],
74+
parameters=[
75+
{'video_device': LaunchConfiguration("camera_bottom_path")},
76+
{'params-file': LaunchConfiguration("camera_bottom_calibration_path")},
77+
# {'image_width': 640},
78+
# {'image_height': 480},
79+
# {'camera_name': 'camera'},
80+
],
81+
respawn=True,
82+
respawn_delay=1,
83+
),
84+
])

src/marker_finder/marker_finder/marker_detector.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,32 @@
2020
class MarkerDetector(Node):
2121
def __init__(self):
2222
super().__init__("marker_finder")
23-
self.declare_parameter("~image_topic_name")
24-
self.declare_parameter("~box_topic_name")
25-
self.declare_parameter("~debug")
26-
self.declare_parameter("~debug_image_name")
27-
self.declare_parameter("~kernel")
28-
self.declare_parameter("~sigma")
29-
self.declare_parameter("~closure")
30-
self.declare_parameter("~light")
31-
self.declare_parameter("~grayness")
23+
self.declare_parameter("camera_bottom_topic_name")
24+
self.declare_parameter("box_topic_name")
25+
self.declare_parameter("debug")
26+
self.declare_parameter("debug_image_name")
27+
self.declare_parameter("kernel")
28+
self.declare_parameter("sigma")
29+
self.declare_parameter("closure")
30+
self.declare_parameter("light")
31+
self.declare_parameter("grayness")
3232

3333
self.image_sub = self.create_subscription(Image,
34-
self.get_parameter("~image_topic_name").get_parameter_value().string_value,
34+
self.get_parameter("image_topic_name").get_parameter_value().string_value,
3535
self.image_callback,
3636
1)
3737
self.box_topic = self.create_publisher(ObjectsArray,
38-
self.get_parameter("~box_topic_name").get_parameter_value().string_value,
38+
self.get_parameter("box_topic_name").get_parameter_value().string_value,
3939
1)
4040

4141
self.service = self.create_service(detector_toggle_srv,
4242
"marker_detection_switch",
4343
self.enable_detector)
4444
self.detection_enabled = False
4545

46-
if self.get_parameter("~debug").get_parameter_value().bool_value:
46+
if self.get_parameter("debug").get_parameter_value().bool_value:
4747
self.image_pub = self.create_publisher(Image,
48-
self.get_parameter("~debug_image_name").get_parameter_value().string_value,
48+
self.get_parameter("debug_image_name").get_parameter_value().string_value,
4949
1)
5050

5151

src/marker_finder/package.xml

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
<maintainer email="[email protected]">super_ubuntu22</maintainer>
88
<license>TODO: License declaration</license>
99

10+
<exec_depend>ros2launch</exec_depend>
11+
1012
<test_depend>ament_copyright</test_depend>
1113
<test_depend>ament_flake8</test_depend>
1214
<test_depend>ament_pep257</test_depend>

src/marker_finder/setup.py

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from setuptools import find_packages, setup
2+
import os
3+
from glob import glob
24

35
package_name = 'marker_finder'
46

@@ -10,6 +12,7 @@
1012
('share/ament_index/resource_index/packages',
1113
['resource/' + package_name]),
1214
('share/' + package_name, ['package.xml']),
15+
(os.path.join('share', package_name), glob('launch/*.launch.py'))
1316
],
1417
install_requires=['setuptools'],
1518
zip_safe=True,

0 commit comments

Comments
 (0)