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
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

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