Skip to main content

A comprehensive Robot Framework library for ROS2 operations

Project description

Robot Framework ROS2 Library

A comprehensive Robot Framework library for testing and automating ROS2 applications.

Test Animation

Features

Core ROS2 Operations

  • Topic Operations: List topics, get topic info, echo messages, publish messages, wait for topics
  • Service Operations: List services, call services, get service info, wait for services
  • Node Operations: List nodes, get node info, wait for nodes
  • Parameter Operations: List, get, set parameters, check parameter existence
  • Launch Operations: Launch files and packages, find launch files, manage launch processes
  • Run Operations: Run nodes directly, run with remapping, find executables, manage node processes

Native ROS2 Python Node Operations (NEW!)

  • Native Topic Operations: Direct publishing/subscribing using ROS2 Python nodes
  • Native Service Operations: Direct service calls using ROS2 Python service clients
  • Native Parameter Operations: Direct parameter access using ROS2 Python parameter clients
  • Native TF2 Operations: Direct transform operations using ROS2 Python TF2
  • Message Storage: Automatic message buffering and retrieval
  • Real-time Communication: Low-latency, high-performance ROS2 communication

Advanced Features

  • Process Management: Start, monitor, and terminate ROS2 processes
  • Discovery: Find launch files and executables in packages
  • Remapping: Topic and service remapping for node execution
  • Timeout Support: Configurable timeouts for all operations
  • Hybrid Mode: Automatic fallback from native to CLI operations when needed

Installation

pip install -e .

Quick Start

Basic Usage

*** Settings ***
Library    ROS2ClientLibrary    use_native_node=True

*** Test Cases ***
Test Basic ROS2 Operations
    # List available topics
    ${topics}=    List Topics
    Log    Available topics: ${topics}
    
    # Check if a specific topic exists
    ${exists}=    Topic Exists    /chatter
    Should Be True    ${exists}
    
    # Get topic information
    ${info}=    Get Topic Info    /chatter
    Log    Topic info: ${info}

Test Native ROS2 Operations
    # Subscribe to a topic using native ROS2 node
    ${success}=    Native Subscribe Topic    /chatter    std_msgs/msg/String
    Should Be True    ${success}
    
    # Publish a message using native ROS2 node
    ${success}=    Native Publish String    /chatter    "Hello World!"
    Should Be True    ${success}
    
    # Wait for and get the message
    ${message}=    Native Wait For Message    /chatter    timeout=5.0
    Should Not Be None    ${message}
    Log    Received: ${message}[data]

Launch and Run Operations

*** Settings ***
Library    ROS2ClientLibrary

*** Test Cases ***
Test Launch File
    # Launch a ROS2 launch file
    ${process}=    Launch Package    demo_nodes_cpp    talker_listener.launch.py
    Should Not Be Equal    ${process}    ${None}
    
    # Wait for topics to appear
    ${available}=    Wait For Topic    /chatter    timeout=10.0
    Should Be True    ${available}
    
    # Echo some messages
    ${messages}=    Echo Topic    /chatter    count=3
    
    # Clean up
    ${terminated}=    Terminate Launch Process    ${process}
    Should Be True    ${terminated}

Test Run Node
    # Run a node directly
    ${process}=    Run Node    demo_nodes_cpp    talker
    Should Not Be Equal    ${process}    ${None}
    
    # Wait for the node to start
    Sleep    2s
    
    # Check if process is running
    ${running}=    Is Process Running    ${process}
    Should Be True    ${running}
    
    # Terminate the process
    ${terminated}=    Terminate Node Process    ${process}
    Should Be True    ${terminated}

Running Examples

# Run the basic test
robot examples/basics/ros2_basic_test.robot

# Run the Nav2 monitoring test
robot examples/medium/nav2_simple_monitoring_test.robot

Tested with Navigation2

This library has been extensively tested with Navigation2 applications. For testing and validation purposes, we used the following repository:

Test Repository: navigation2_ignition_gazebo_turtlebot3

Test Coverage

The library has been validated with:

  • Basic Navigation: Point-to-point navigation tasks
  • Obstacle Avoidance: Dynamic obstacle detection and avoidance
  • Path Planning: Global and local path planning algorithms
  • Recovery Behaviors: Navigation recovery and error handling
  • Multi-robot Scenarios: Testing with multiple robot instances

Note: While extensively tested with this specific repository, the library is designed to work with any ROS2 project and can be used with any ROS2-based robotic system, including custom robots, different navigation stacks, and various simulation environments.

Test Results

Here's an example of the test output and monitoring capabilities:

Test Report

Documentation

See the docs/ directory for comprehensive documentation and examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ros2_robotframework-0.1.0.tar.gz (3.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ros2_robotframework-0.1.0-py3-none-any.whl (43.1 kB view details)

Uploaded Python 3

File details

Details for the file ros2_robotframework-0.1.0.tar.gz.

File metadata

  • Download URL: ros2_robotframework-0.1.0.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ros2_robotframework-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d3cdf37e3a25af49f7fa5578d5461de5717cee3cd125dcf00e06569c5b40344a
MD5 1184db260fc6daf137ae64f8146e845b
BLAKE2b-256 bb080cae4ee77a367b9a8a9a43c9cc8baac45d848b4949082277886040010e91

See more details on using hashes here.

Provenance

The following attestation bundles were made for ros2_robotframework-0.1.0.tar.gz:

Publisher: release.yml on bekirbostanci/ros2_robotframework

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ros2_robotframework-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ros2_robotframework-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 83ea31ff1a5fb66cc6c6e7287d4df36cff48619fa9473517169ced4416b347e9
MD5 92b254422645d896edcdcdc7b3caab1f
BLAKE2b-256 30cbfe51b6fb7880bbf5f01d28a48d7e29a2099a5ea92483059c1c2a22b6effe

See more details on using hashes here.

Provenance

The following attestation bundles were made for ros2_robotframework-0.1.0-py3-none-any.whl:

Publisher: release.yml on bekirbostanci/ros2_robotframework

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page