Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 57 additions & 6 deletions server/CMakeLists.txt → CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.5)
project(parameter_server VERSION 1.0.1)
project(persist_parameter_server VERSION 1.0.1)

# Set Release build if no build type was specified
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
Expand Down Expand Up @@ -33,9 +33,11 @@ find_package(rmw REQUIRED)
find_package(Boost REQUIRED COMPONENTS program_options filesystem)
find_package(yaml_cpp_vendor REQUIRED)

option(CLIENT_TEST_DEMO "Build client test demo" OFF)

add_executable(server
src/parameter_server.cpp
src/main.cpp
server/src/parameter_server.cpp
server/src/main.cpp
)

# yaml-cpp updates CMake thing significantly on v0.8.0 or later.
Expand Down Expand Up @@ -69,16 +71,65 @@ endif()

target_include_directories(server
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/server/include>
)

install(TARGETS server DESTINATION lib/${PROJECT_NAME})

# Install launch files.
install(DIRECTORY
launch
param
server/launch
server/param
DESTINATION share/${PROJECT_NAME}/
)

# Build client test demo
if (CLIENT_TEST_DEMO)
add_executable(client_default
test/src/test_default.cpp
test/src/persist_parameter_client.cpp
)

target_link_libraries(client_default
PUBLIC
rclcpp::rclcpp
rclcpp_components::component
rcutils::rcutils
${std_msgs_TARGETS}
${std_srvs_TARGETS}
)

target_include_directories(client_default
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/test/include>
)

add_executable(client_with_node_options
test/src/test_with_node_options.cpp
test/src/persist_parameter_client.cpp
)

target_link_libraries(client_with_node_options
PUBLIC
rclcpp::rclcpp
rclcpp_components::component
rcutils::rcutils
${std_msgs_TARGETS}
${std_srvs_TARGETS}
)

target_include_directories(client_with_node_options
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/test/include>
)

install(TARGETS client_default client_with_node_options DESTINATION lib/${PROJECT_NAME})

# Install launch files.
install(DIRECTORY
test/launch
DESTINATION share/${PROJECT_NAME}/
)
endif()

ament_package()
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ parameter server has the following scope for persistent parameter. since paramet
| Persistent Parameter File | YES | parameter server dedicated argument to specify the file to load as parameters. in addition, all of the persistent parameters will be stored into this file during shutdown.<br> e.g) --file-path /tmp/parameter_server.yaml |
| Parameter Arguments | NO | e.g) --ros-args -p persistent.some_int:=42<br>some_int cannot be registered as persistent parameter, since this cannot be notified via **/parameter_events** to parameter server. |
| Parameter File Arguments | NO | e.g) --ros-args --params-file ./parameters_via_cli.yaml<br>same with parameter arguments, cannot be registered as persistent parameter, since these cannot be notified via **/parameter_events** to parameter server. |
| Launch Parameter | NO | e.g) ros2 launch parameter_server parameter_server.launch.py<br>same with parameter arguments, cannot be registered as persistent parameter, since these cannot be notified via **/parameter_events** to parameter server. |
| Launch Parameter | NO | e.g) ros2 launch persist_parameter_server parameter_server.launch.py<br>same with parameter arguments, cannot be registered as persistent parameter, since these cannot be notified via **/parameter_events** to parameter server. |

### Configurable Options

Expand Down Expand Up @@ -193,21 +193,21 @@ apt install libyaml-cpp-dev libboost-program-options-dev libboost-filesystem-dev

Install local colcon workspace,

```console
$ cd <colcon_workspace>/src
$ git clone https://github.com/fujitatomoya/ros2_persist_parameter_server
$ cd <colcon_workspace>
$ colcon build --symlink-install --packages-select parameter_server ros2_persistent_parameter_server_test
$ source install/local_setup.bash
```bash
# cd <colcon_workspace>/src
# git clone https://github.com/fujitatomoya/ros2_persist_parameter_server
# cd <colcon_workspace>
# colcon build --symlink-install --packages-select persist_parameter_server --cmake-args -D CLIENT_TEST_DEMO=ON
# source install/local_setup.bash
```

### Run

1. start parameter server.

```console
$ cp <colcon_workspace>/src/ros2_persist_parameter_server/server/param/parameter_server.yaml /tmp/
$ ros2 run parameter_server server
```bash
# cp <colcon_workspace>/src/ros2_persist_parameter_server/server/param/parameter_server.yaml /tmp/
# ros2 run persist_parameter_server server
[INFO] [parameter_server]: Parameter Server node named: '/parameter_server' started and ready, and serving '9' parameters already!
...<snip>
```
Expand All @@ -227,8 +227,8 @@ $ source install/local_setup.bash

3. restart parameter server.

```console
$ ros2 run parameter_server server
```bash
# ros2 run persist_parameter_server server
[INFO] [parameter_server]: Parameter Server node named: '/parameter_server' started and ready, and serving '9' parameters already!
...<snip>
```
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ RUN apt-get update \
# Build and source colcon workspace
RUN cd $COLCON_WS \
&& source /opt/ros/$ROS_DISTRO/setup.bash \
&& colcon build --symlink-install --packages-select parameter_server
&& colcon build --symlink-install --packages-select persist_parameter_server

# Add source environment in .bashrc
RUN echo -n -e "\n" >> /root/.bashrc
Expand Down
2 changes: 1 addition & 1 deletion k8s/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ spec:
image: tomoyafujita/ros2_param_server:rolling
command: ["/bin/bash", "-c"]
args:
- "source /opt/ros/rolling/setup.bash && source /root/colcon_ws/install/setup.bash && ros2 run parameter_server server --file-path /etc/config/parameter_server.yaml"
- "source /opt/ros/rolling/setup.bash && source /root/colcon_ws/install/setup.bash && ros2 run persist_parameter_server server --file-path /etc/config/parameter_server.yaml"
resources:
requests:
memory: "128Mi"
Expand Down
2 changes: 1 addition & 1 deletion k8s/parameters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ data:
/parameter_server:
ros__parameters:
# This file is expected to be used as following,
# > ros2 run parameter_server server --file-path /tmp/parameter_server.yaml
# > ros2 run persist_parameter_server server --file-path /tmp/parameter_server.yaml
#
# Not persistent parameter.
# These just will be loaded as normal parameters.
Expand Down
2 changes: 1 addition & 1 deletion server/package.xml → package.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format2.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>parameter_server</name>
<name>persist_parameter_server</name>
<version>1.0.1</version>
<description>
ros2 parameter server that other nodes can write/read parameters including persistent parameters.
Expand Down
4 changes: 2 additions & 2 deletions presentation/jp/ros2_parameter_server.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion presentation/jp/ros2_parameter_server.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Comment Here

```console
$ docker run -it tomoyafujita/ros2_param_server:rolling /bin/bash
root@bf4d904e3800:~/colcon_ws# ros2 run parameter_server server
root@bf4d904e3800:~/colcon_ws# ros2 run persist_parameter_server server
```

- Kubernetes
Expand Down
4 changes: 2 additions & 2 deletions presentation/ros2_parameter_server.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion presentation/ros2_parameter_server.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Comment Here

```console
$ docker run -it tomoyafujita/ros2_param_server:rolling /bin/bash
root@bf4d904e3800:~/colcon_ws# ros2 run parameter_server server
root@bf4d904e3800:~/colcon_ws# ros2 run persist_parameter_server server
```

- Kubernetes
Expand Down
2 changes: 1 addition & 1 deletion scripts/build-verification.sh
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ function build_parameter_server () {
echo "[${FUNCNAME[0]}]: build ROS 2 parameter server."
source /opt/ros/${ROS_DISTRO}/setup.bash
cd ${COLCON_WORKSPACE}
colcon build --symlink-install --packages-select parameter_server ros2_persistent_parameter_server_test
colcon build --symlink-install --packages-select persist_parameter_server --cmake-args -D CLIENT_TEST_DEMO=ON
}

function test_parameter_server () {
Expand Down
2 changes: 1 addition & 1 deletion server/launch/parameter_server.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def generate_launch_description():
return LaunchDescription(
[
launch_ros.actions.Node(
package="parameter_server",
package="persist_parameter_server",
executable="server",
output="screen",
# respawn in 5.0 seconds
Expand Down
2 changes: 1 addition & 1 deletion server/param/parameter_server.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**:
ros__parameters:
# This file is expected to be used as following,
# > ros2 run parameter_server server --file-path /tmp/parameter_server.yaml
# > ros2 run persist_parameter_server server --file-path /tmp/parameter_server.yaml
#
# Not persistent parameter.
# These just will be loaded as normal parameters.
Expand Down
2 changes: 1 addition & 1 deletion server/param/parameters_via_cli.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**:
ros__parameters:
# This file is expected to be used
# > ros2 run parameter_server server --ros-args --params-file <path_to>/parameters_via_cli.yaml
# > ros2 run persist_parameter_server server --ros-args --params-file <path_to>/parameters_via_cli.yaml
#
# all of the parameters here cannot be registered as persistent parameter,
# since these are set internally with library and not able to detect via /parameter_events topic.
Expand Down
2 changes: 1 addition & 1 deletion server/param/parameters_via_launch.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**:
ros__parameters:
# This file is expected to be used with ros2 launch
# > ros2 launch parameter_server parameter_server.launch.py
# > ros2 launch persist_parameter_server parameter_server.launch.py
#
# all of the parameters here cannot be registered as persistent parameter,
# since these are set internally with library and not able to detect via /parameter_events topic.
Expand Down
79 changes: 0 additions & 79 deletions test/CMakeLists.txt

This file was deleted.

2 changes: 1 addition & 1 deletion test/launch/test.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def generate_launch_description():
allow_dynamic_typing_arg,
ExecuteProcess(
cmd=[
'ros2', 'run', 'parameter_server', 'server',
'ros2', 'run', 'persist_parameter_server', 'server',
'--file-path', '/tmp/test/parameter_server.yaml',
'--allow-dynamic-typing', LaunchConfiguration(
'allow_dynamic_typing')
Expand Down
32 changes: 0 additions & 32 deletions test/package.xml

This file was deleted.

10 changes: 5 additions & 5 deletions test/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@

signal.signal(signal.SIGINT, signal.SIG_DFL)
sleep_time = 3
launchServerCmd = ['ros2', 'launch', 'ros2_persistent_parameter_server_test', 'test.launch.py']
launchServerCmd = ['ros2', 'launch', 'persist_parameter_server', 'test.launch.py']
launchClientCmd = ['ros2', 'run',
'ros2_persistent_parameter_server_test', 'client_default']
'persist_parameter_server', 'client_default']

launchServerCmdWithNodeOptions = [
'ros2', 'launch', 'ros2_persistent_parameter_server_test', 'test.launch.py', 'allow_dynamic_typing:=true']
'ros2', 'launch', 'persist_parameter_server', 'test.launch.py', 'allow_dynamic_typing:=true']
launchClientCmdWithNodeOptions = [
'ros2', 'run', 'ros2_persistent_parameter_server_test', 'client_with_node_options']
'ros2', 'run', 'persist_parameter_server', 'client_with_node_options']

if shutil.which('ros2') is None:
print("source <colcon_ws>/install/setup.bash...then retry.")
Expand All @@ -34,7 +34,7 @@ def kill_server():
for process in psutil.process_iter():
if process.name() == program_name:
path = psutil.Process(process.pid)
if "install/parameter_server/lib/parameter_server" or "parameter_server/server" in path.exe():
if "install/persist_parameter_server/lib/persist_parameter_server" or "persist_parameter_server/server" in path.exe():
os.kill(int(process.pid), signal.SIGINT)
print("parameter server is killed successfully")
break
Expand Down