No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

so_arm_100_hardware repository

so_arm_100_hardware

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/brukg/so_arm_100_hardware.git
VCS Type git
VCS Version main
Last Updated 2025-05-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
so_arm_100_hardware 0.1.1

README

SO-ARM100 Hardware Interface

Overview

The so_arm_100_hardware package provides a ROS 2 Control hardware interface plugin for the SO-ARM100 low-cost 5DoF robotic manipulator. This interface supports both direct serial communication with the physical robot and simulation via ROS topics.

Features

  • ROS 2 Control hardware interface implementation
  • Configurable communication modes:
    • Direct serial communication with the robot
    • ROS topic-based communication for simulation
  • Position control interface for all joints
  • Thread-safe feedback handling
  • Lifecycle-managed node implementation

Package Details

  • Name: so_arm_100_hardware
  • Version: 0.0.0
  • Description: ROS2 Control Hardware Interface for SO-ARM100 low-cost 5DoF robotic manipulator
  • Maintainer: Bruk Gebregziabher (bruk@signalbotics.com)
  • License: Apache-2.0

Dependencies

  • rclcpp
  • hardware_interface
  • pluginlib
  • rclcpp_lifecycle
  • sensor_msgs

Communication Interface

The hardware interface communicates using the following ROS topics:

  • Command Topic: command (sensor_msgs/msg/JointState)
    • Publishes joint position commands to the robot
  • Feedback Topic: feedback (sensor_msgs/msg/JointState)
    • Subscribes to joint state feedback from the robot

Hardware Interface Details

The SOARM100Interface class implements:

  • State and command interfaces for position control
  • Lifecycle management (init, activate, deactivate)
  • Read and write methods for communication
  • Thread-safe feedback handling using mutex
  • Asynchronous ROS communication using a dedicated executor thread

Installation

  1. Clone the package into your ROS 2 workspace:
   cd ~/ros2_ws/src
   git clone git@github.com:brukg/so_arm_100_hardware.git
   
  1. Install dependencies:
   cd ~/ros2_ws
   rosdep install --from-paths src --ignore-src -r -y
   
  1. Build the package:
   colcon build --packages-select so_arm_100_hardware
   
  1. Source the workspace:
   source install/setup.bash
   

Usage

Configuration

Create a ROS 2 Control configuration file (YAML) that includes the hardware interface:

so_arm_100:
  hardware_interface:
    use_serial: true  # Set to true for real robot, false for simulation
    serial_port: "/dev/ttyUSB0"  # Serial port for real robot
    serial_baudrate: 1000000  # Serial baudrate

Serial Communication Mode

When using serial communication (use_serial: true):

  1. Ensure the robot is connected to the specified serial port
  2. Grant serial port access permissions:
sudo usermod -a -G dialout $USER  # Log out and back in after this

  1. Verify the serial port and baudrate settings match your robot’s configuration

Topic Communication Mode

When using topic communication (use_serial: false):

  • Commands are published to the “command” topic
  • Feedback is received from the “feedback” topic

File truncated at 100 lines see the full file