Skip to content

Commit 8da02b1

Browse files
committed
Generate and install config from pydantic
1 parent d224a16 commit 8da02b1

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# A default yaml will be autogenerated in this directory at build time
2+
# from pydantic defaults; should not be version controlled
3+
default.yaml

kiss_slam/ros/src/kiss_slam_ros/kiss_slam_ros/kiss_slam_node.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@
2020
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2121
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2222
# SOFTWARE.
23+
import os
24+
2325
import numpy as np
2426
import rclpy
27+
from ament_index_python.packages import get_package_share_directory
2528
from kiss_slam_ros.conversions import (
2629
build_map,
2730
build_odometry,
@@ -52,7 +55,13 @@ def __init__(self):
5255
"""Create parameters, subscriptions, publishers, and set up SLAM"""
5356
super().__init__("kiss_slam_node")
5457

55-
# TODO an argument to set the SLAM config, with a sensible default value
58+
points_topic_desc = ParameterDescriptor(
59+
description="Path to yaml file to use as KISS-SLAM config."
60+
)
61+
share_dir = get_package_share_directory("kiss_slam_ros")
62+
default_slam_config = os.path.join(share_dir, "config", "default.yaml")
63+
self.declare_parameter("slam_config", default_slam_config, points_topic_desc)
64+
self.slam_config = self.get_parameter("slam_config").value
5665

5766
points_topic_desc = ParameterDescriptor(
5867
description="What topic to listen on for PointCloud2 messages."
@@ -88,7 +97,7 @@ def __init__(self):
8897
self.map_publisher = self.create_publisher(OccupancyGrid, "map", 10)
8998
self.tf_broadcaster = TransformBroadcaster(self)
9099

91-
self.slam_config = load_config(None)
100+
self.slam_config = load_config(self.slam_config)
92101
self.slam = KissSLAM(self.slam_config)
93102
self.mapper = OccupancyGridMapper(self.slam_config.occupancy_mapper)
94103
self.ref_ground_alignment = None

kiss_slam/ros/src/kiss_slam_ros/setup.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,20 @@
2222
# SOFTWARE.
2323
from setuptools import find_packages, setup
2424

25+
from kiss_slam.config.config import write_config
26+
2527
package_name = "kiss_slam_ros"
2628

29+
write_config(filename="config/default.yaml")
30+
2731
setup(
2832
name=package_name,
2933
version="0.0.0",
3034
packages=find_packages(exclude=["test"]),
3135
data_files=[
3236
("share/ament_index/resource_index/packages", ["resource/" + package_name]),
3337
("share/" + package_name, ["package.xml"]),
38+
("share/" + package_name + "/config", ["config/default.yaml"]),
3439
],
3540
install_requires=["setuptools"],
3641
zip_safe=True,

0 commit comments

Comments
 (0)