Skip to content

Commit 7c7dd0e

Browse files
Update README.md
1 parent be731c2 commit 7c7dd0e

1 file changed

Lines changed: 25 additions & 38 deletions

File tree

README.md

Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ A high-performance ROS2 bridge server that forwards ROS2 topic content over WebS
88

99
## Overview
1010

11-
`pj_ros_bridge` enables clients to subscribe to ROS2 topics and receive aggregated messages at 50 Hz without needing a full ROS2/DDS installation. This is particularly useful for visualization tools like PlotJuggler, remote monitoring applications, and lightweight clients that need access to ROS2 data.
11+
`plotjuggler_ros_bridge` enables clients to subscribe to ROS2 topics and receive aggregated messages at 50 Hz without needing a full ROS2/DDS installation. This is particularly useful for visualization tools like PlotJuggler, remote monitoring applications, and lightweight clients that need access to ROS2 data.
1212

1313
### Key Features
1414

@@ -49,7 +49,7 @@ mkdir -p ~/ws_plotjuggler/src
4949
cd ~/ws_plotjuggler/src
5050

5151
# 2. Clone the repository
52-
git clone <repository_url> pj_ros_bridge
52+
git clone <repository_url> plotjuggler_ros_bridge
5353

5454
# 3. Install system dependencies
5555
sudo apt install libzstd-dev
@@ -59,7 +59,7 @@ source /opt/ros/humble/setup.bash
5959

6060
# 5. Build the package
6161
cd ~/ws_plotjuggler
62-
colcon build --packages-select pj_ros_bridge --cmake-args -DCMAKE_BUILD_TYPE=Release
62+
colcon build --packages-select plotjuggler_ros_bridge --cmake-args -DCMAKE_BUILD_TYPE=Release
6363

6464
# 6. Source the workspace
6565
source install/setup.bash
@@ -69,7 +69,7 @@ source install/setup.bash
6969

7070
```bash
7171
# Run all unit tests (150 tests)
72-
colcon test --packages-select pj_ros_bridge
72+
colcon test --packages-select plotjuggler_ros_bridge
7373

7474
# View test results
7575
colcon test-result --verbose
@@ -84,7 +84,7 @@ colcon test-result --verbose
8484
```bash
8585
source /opt/ros/humble/setup.bash
8686
source ~/ws_plotjuggler/install/setup.bash
87-
ros2 run pj_ros_bridge pj_ros_bridge_node
87+
ros2 run plotjuggler_ros_bridge plotjuggler_ros_bridge_node
8888
```
8989

9090
Default configuration:
@@ -95,7 +95,7 @@ Default configuration:
9595
#### Custom Configuration
9696

9797
```bash
98-
ros2 run pj_ros_bridge pj_ros_bridge_node --ros-args \
98+
ros2 run plotjuggler_ros_bridge plotjuggler_ros_bridge_node --ros-args \
9999
-p port:=9090 \
100100
-p publish_rate:=30.0 \
101101
-p session_timeout:=15.0
@@ -120,10 +120,10 @@ ros2 bag play /path/to/sample.mcap --loop
120120
# Terminal 2: Run server
121121
source /opt/ros/humble/setup.bash
122122
source ~/ws_plotjuggler/install/setup.bash
123-
ros2 run pj_ros_bridge pj_ros_bridge_node
123+
ros2 run plotjuggler_ros_bridge plotjuggler_ros_bridge_node
124124

125125
# Terminal 3: Run Python test client
126-
cd ~/ws_plotjuggler/src/pj_ros_bridge
126+
cd ~/ws_plotjuggler/src/plotjuggler_ros_bridge
127127
python3 tests/integration/test_client.py --subscribe /topic1 /topic2
128128
```
129129

@@ -138,15 +138,15 @@ For the full API protocol documentation (commands, responses, binary wire format
138138
Another process is using the port. Either kill the conflicting process or use a custom port:
139139

140140
```bash
141-
ros2 run pj_ros_bridge pj_ros_bridge_node --ros-args -p port:=9090
141+
ros2 run plotjuggler_ros_bridge plotjuggler_ros_bridge_node --ros-args -p port:=9090
142142
```
143143

144144
### Client receives no data
145145

146-
1. Verify server is running: `ps aux | grep pj_ros_bridge`
146+
1. Verify server is running: `ps aux | grep plotjuggler_ros_bridge`
147147
2. Check topics are being published: `ros2 topic list`
148148
3. Verify heartbeat is being sent (required every 1 second)
149-
4. Check server logs: `ros2 run pj_ros_bridge pj_ros_bridge_node --ros-args --log-level debug`
149+
4. Check server logs: `ros2 run plotjuggler_ros_bridge plotjuggler_ros_bridge_node --ros-args --log-level debug`
150150

151151
### "Failed to get schema for topic" error
152152

@@ -161,77 +161,64 @@ ros2 interface show <package_name>/msg/<MessageType>
161161
The client stopped sending heartbeats. Ensure the client sends a heartbeat every 1 second. The default timeout is 10 seconds. Increase if needed:
162162

163163
```bash
164-
ros2 run pj_ros_bridge pj_ros_bridge_node --ros-args -p session_timeout:=20.0
164+
ros2 run plotjuggler_ros_bridge plotjuggler_ros_bridge_node --ros-args -p session_timeout:=20.0
165165
```
166166

167167
## License
168168

169-
**pj_ros_bridge** is licensed under the **GNU Affero General Public License v3.0 (AGPL-3.0)**.
169+
**plotjuggler_ros_bridge** is licensed under the **GNU Affero General Public License v3.0 (AGPL-3.0)**.
170170

171171
Copyright (C) 2026 Davide Faconti
172172

173173
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
174174

175175
See the [LICENSE](LICENSE) file for the full license text.
176176

177-
### License FAQ
177+
-----
178178

179-
#### Can I use this software commercially?
179+
## License FAQ
180+
181+
### Can I use this software commercially?
180182

181183
**Yes, absolutely.** The AGPL does not restrict commercial use. You can:
182-
- Use pj_ros_bridge in commercial products and services
184+
- Use plotjuggler_ros_bridge in commercial products and services
183185
- Charge customers for services that use this software
184186
- Deploy it in production environments for profit
185187

186188
The AGPL only requires that if you **distribute modified versions** (or provide them as a network service), you must share those modifications under the same license.
187189

188-
#### Does using pj_ros_bridge affect my proprietary software?
190+
### Does using plotjuggler_ros_bridge affect my proprietary software?
189191

190-
**No, it does not.** Because pj_ros_bridge is a **standalone application** that communicates via inter-process communication (WebSocket), it does not impose license restrictions on:
192+
**No, it does not.** Because plotjuggler_ros_bridge is a **standalone application** that communicates via inter-process communication (WebSocket), it does not impose license restrictions on:
191193
- Your ROS2 nodes and packages
192194
- Client applications connecting to the bridge
193195
- Other software running on the same system
194196
- Proprietary code that publishes to or subscribes from ROS2 topics
195197

196-
The AGPL "copyleft" provisions only apply to pj_ros_bridge itself and any modifications you make to it.
198+
The AGPL "copyleft" provisions only apply to plotjuggler_ros_bridge itself and any modifications you make to it.
197199

198-
#### When do I need to share my code?
200+
### When do I need to share my code?
199201

200-
You must share modifications to pj_ros_bridge only if you:
202+
You must share modifications to plotjuggler_ros_bridge only if you:
201203

202204
1. **Distribute** modified versions to others (e.g., shipping a modified binary), OR
203205
2. **Provide the modified software as a network service** to external users
204206

205207
You do **NOT** need to share code if you:
206-
- Use pj_ros_bridge unmodified (even commercially)
208+
- Use plotjuggler_ros_bridge unmodified (even commercially)
207209
- Modify it for internal use only within your organization
208210
- Connect proprietary clients or ROS2 nodes to the bridge
209211

210-
#### What if I modify pj_ros_bridge for internal use?
211-
212-
**No obligations.** Internal modifications that are not distributed or provided as a service to external parties do not trigger any AGPL requirements. You can keep your internal improvements private.
213-
214212
#### What about the AGPL "network" clause?
215213

216214
The AGPL's network provision states that users who interact with the software over a network should have access to the source code. However, this only applies if you:
217215

218216
1. **Modify** the software, AND
219217
2. **Provide it as a service** to external users
220218

221-
If you're using the **unmodified** version, there are no source code disclosure obligations, even if accessed over a network.
222-
223-
#### Why AGPL instead of a more permissive license?
224-
225-
The AGPL ensures that improvements to pj_ros_bridge benefit the entire community. If someone builds upon this work and shares it with others, those improvements remain open source. This creates a sustainable ecosystem where everyone contributes back.
226-
227-
For users who simply want to use the bridge (even commercially), the AGPL functions like any permissive license.
228-
229219
#### I'm still concerned about licensing. What should I do?
230220

231-
If you're using pj_ros_bridge **unmodified**, you have nothing to worry about - there are zero licensing obligations.
232-
233-
If you're planning to **modify and redistribute** it, the AGPL simply requires you to share those modifications. This is a reasonable trade-off that helps the open source community grow.
234-
221+
If you're using plotjuggler_ros_bridge **unmodified**, you have nothing to worry about - there are zero licensing obligations.
235222
If still concerned, contact me for alternative licensing options.
236223

237224
## References

0 commit comments

Comments
 (0)