Repo symbol

so_arm_100_hardware repository

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

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository

Repo symbol

so_arm_100_hardware repository