ROS Parser
A Python parser for ROS message definitions and Foxglove message path syntax.
Installation
uv add ros-parser
Parsers
- ros1_msg: Parses ROS1 message definition files (.msg)
- ros2_msg: Parses ROS2 message definition files (.msg)
- message_path: Parses Foxglove message path syntax for data access and filtering
Usage
Parsing ROS2 Messages
from ros_parser import ros2_msg
definition = ros2_msg.parse_message_string("""
float64 x
float64 y
float64 z
""")
for field in definition.fields:
print(f"{field.name}: {field.type}")
Parsing ROS1 Messages
from ros_parser import ros1_msg
definition = ros1_msg.parse_message_string("""
Header header
float64 x
float64 y
float64 z
""")
for field in definition.fields:
print(f"{field.name}: {field.type}")
Parsing Schema with Dependencies
from ros_parser import parse_schema_to_definitions
# Parse a full schema including embedded type definitions
definitions = parse_schema_to_definitions(
"geometry_msgs/msg/Pose",
schema_data
)
Regenerating Standalone Parsers
The project uses Lark to generate standalone parsers from grammar files. If you modify any .lark grammar file, regenerate the parsers:
uv run _generate_standalone.py \
src/ros_parser/ros1_msg/grammar.lark \
src/ros_parser/ros2_msg/grammar.lark \
src/ros_parser/message_path/grammar.lark \
--output-dir src/ros_parser \
--lexer contextual
For more details on the message path syntax, see src/ros_parser/message_path/README.md.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ros_parser-0.9.0.tar.gz
(85.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ros_parser-0.9.0.tar.gz.
File metadata
- Download URL: ros_parser-0.9.0.tar.gz
- Upload date:
- Size: 85.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f99a50445a46e89eeb57cbb0fde776a8e4ab0ca1c41e024975162163ef42f3c
|
|
| MD5 |
d2f4a9e14ce252b849e72a6a4c60b377
|
|
| BLAKE2b-256 |
2dcb0c0eaf0b0ec5781f3161e6166a68c7ab2bf05f70c87f73884ad9e7faa9c7
|
File details
Details for the file ros_parser-0.9.0-py3-none-any.whl.
File metadata
- Download URL: ros_parser-0.9.0-py3-none-any.whl
- Upload date:
- Size: 93.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bf02bb68ef9ad57182824756a6f565a6056188c0a3933590fd7551beee0ece9
|
|
| MD5 |
4b065f72479863f85fc946a77743ffc1
|
|
| BLAKE2b-256 |
a495f7fba402ff30ed65d86227ba76f56d375ac3e4522cd20b9712bae372f2e5
|