![]() |
so_arm_100_hardware package from so_arm_100_hardware reposo_arm_100_hardware |
Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache-2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/brukg/so_arm_100_hardware.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-04-17 |
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) |
Package Description
Additional Links
Maintainers
- Bruk Gebregziabher
Authors
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
- Clone the package into your ROS 2 workspace:
cd ~/ros2_ws/src
git clone git@github.com:brukg/so_arm_100_hardware.git
- Install dependencies:
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
- Build the package:
colcon build --packages-select so_arm_100_hardware
- 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
):
- Ensure the robot is connected to the specified serial port
- Grant serial port access permissions:
sudo usermod -a -G dialout $USER # Log out and back in after this
- 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
- Both topics use the
sensor_msgs/JointState
message type
Development and Testing
The hardware interface includes serial communication code that can be enabled for direct hardware control. By default, it operates using ROS topics for command and feedback.
Troubleshooting
Serial Communication Issues
- Check serial port permissions
- Verify the correct port is specified in the config
- Ensure the baudrate matches the robot’s settings
- Check serial cable connections
Topic Communication Issues
- Verify topics are being published/subscribed:
ros2 topic list
ros2 topic echo /command
ros2 topic echo /feedback
- Check for any error messages in the logs:
ros2 run rqt_console rqt_console
Contributing
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
License
This package is licensed under the Apache License 2.0. See the LICENSE file for details.
Related Packages
- so_100_arm: Main robot package
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
hardware_interface | |
pluginlib | |
rclcpp | |
std_msgs | |
rclcpp_lifecycle | |
std_srvs |
System Dependencies
Name |
---|
yaml-cpp |