A professional, production-ready ROS2 package suite for the XArm 1s robotic manipulator. This workspace provides complete URDF/XACRO descriptions, MoveIt2 motion planning, ros2_control integration, and a high-level task execution system for both simulation and hardware control.
Notion Docs : https://www.notion.so/imsharma/2b66d122f3df80a9891efba5d7bc67e3?v=2bd6d122f3df80be930a000c2d0d9a55
XArm 1s in action with MoveIt2 motion planning and task execution!
- β Complete Robot Description: 5-DOF arm + 2-DOF gripper with accurate kinematics
- β MoveIt2 Integration: Full motion planning with collision detection and path planning
- β Task Execution System: High-level action server for pick-and-place operations
- β Alexa Voice Control: Voice-controlled robot operations via Amazon Alexa integration
- β ROS2 Control Integration: Full ros2_control support for simulation and hardware
- β Gazebo Simulation: Ready-to-use Gazebo Classic integration with physics
- β RViz2 Visualization: Interactive visualization with joint state control
- β Modern Architecture: Python-based launch files, event-driven controller spawning
- β Secure Configuration: Environment-based secrets management for production deployment
- β Well Documented: Comprehensive guides, quickstart tutorials, and examples
- β Production Ready: Tested on ROS2 Humble and Jazzy
- Packages Overview
- Installation
- Quick Start
- Usage
- Robot Specifications
- Documentation
- Contributing
- License
This workspace contains three main packages:
Core robot description package with URDF/XACRO files, ros2_control configuration, and basic visualization/simulation capabilities.
MoveIt2 configuration package providing motion planning, collision detection, and trajectory execution for the XArm 1s.
High-level task execution system with action servers for complex operations like pick-and-place. Includes both string-based and number-based task interfaces, plus Alexa voice control integration for hands-free robot operation.
- ROS2 Humble or Jazzy
- Ubuntu 22.04 (for Humble) or Ubuntu 24.04 (for Jazzy)
- Gazebo Classic (for simulation)
sudo apt update
sudo apt install ros-${ROS_DISTRO}-gazebo-ros2-control \
ros-${ROS_DISTRO}-joint-state-broadcaster \
ros-${ROS_DISTRO}-joint-trajectory-controller \
ros-${ROS_DISTRO}-robot-state-publisher \
ros-${ROS_DISTRO}-joint-state-publisher-gui \
ros-${ROS_DISTRO}-xacro \
ros-${ROS_DISTRO}-gazebo-ros-pkgs \
ros-${ROS_DISTRO}-moveit \
ros-${ROS_DISTRO}-moveit-ros-planning-interface \
ros-${ROS_DISTRO}-moveit-visual-tools# Create workspace
mkdir -p ~/xarm_ws/src
cd ~/xarm_ws/src
# Clone repository
git clone -b moveit-configured https://github.com/Werewolf-Leader/xArm_1s-Description-Package.git .
# Build
cd ~/xarm_ws
colcon build --symlink-install
# Source workspace
source install/setup.bashsource ~/xarm_ws/install/setup.bash
ros2 launch xarm_description display.launch.pyUse the Joint State Publisher GUI to interactively control the robot joints!
source ~/xarm_ws/install/setup.bash
ros2 launch xarm_moveit demo.launch.pyUse the MoveIt2 RViz interface to plan and execute trajectories with collision detection!
source ~/xarm_ws/install/setup.bash
ros2 launch xarm_remote full_system.launch.pyThen send high-level commands:
# Pick and place operation
ros2 action send_goal /xarm_task xarm_remote/action/XarmTask \
"{task_name: 'pick_place', target_position: {x: 0.2, y: 0.1, z: 0.15}}"
# Or use the Python client
ros2 run xarm_remote task_client.pyControl your robot with voice commands! First, configure your Alexa Skill ID:
# Copy environment template
cd ~/xarm_ws/src/xarm_remote
cp .env.example .env
# Edit .env and add your Alexa Skill ID
nano .envThen launch the Alexa interface:
source ~/xarm_ws/install/setup.bash
export ALEXA_SKILL_ID=your-skill-id-here # or set in .env
ros2 launch xarm_remote remote_interface.launch.pySee Alexa Setup Guide for detailed configuration.
Voice Commands:
- "Alexa, ask robot to wake up" - Initialize robot
- "Alexa, ask robot to pick" - Execute pick and place
- "Alexa, ask robot to sleep" - Return to home position
source ~/xarm_ws/install/setup.bash
ros2 launch xarm_description gazebo.launch.pyBasic robot description and visualization:
display.launch.py- RViz2 visualization with joint controlgazebo.launch.py- Gazebo simulation with ros2_controlcontroller.launch.py- Standalone controller manager
See xarm_description README for details.
MoveIt2 motion planning:
demo.launch.py- Complete MoveIt2 demo with RVizmove_group.launch.py- MoveIt2 move_group nodemoveit_rviz.launch.py- RViz with MoveIt2 plugin
High-level task execution and voice control:
full_system.launch.py- Complete system (MoveIt2 + Task Server)full_system_number.launch.py- Number-based task interfaceremote_interface.launch.py- Alexa voice control interfacetask_server.launch.py- Standalone task servertask_client.py- Python client for sending tasks
See xarm_remote README and Alexa Setup Guide for detailed tutorials.
- Degrees of Freedom: 7 (5 arm joints + 2 gripper joints)
- Controller Type: Joint Trajectory Controller
- Control Interfaces: Position, Velocity, Effort
- Workspace: ~300mm reach
- Payload: Lightweight objects
| Joint | Type | Range |
|---|---|---|
| base_to_link1 | Revolute | Β±180Β° |
| link1_to_link2 | Revolute | Β±90Β° |
| link2_to_link3 | Revolute | Β±130Β° |
| linkt_to_link5 | Revolute | Β±130Β° |
| link5_to_gripperbase | Revolute | Β±180Β° |
| gripper_finger1_joint | Revolute | -50Β° to 0Β° |
| gripper_finger2_joint | Revolute | 0Β° to 50Β° |
- xarm_description README - Robot description and basic usage
- xarm_remote README - Complete task system documentation
- Alexa Setup Guide - Voice control configuration
- License - CC BY-NC 4.0
Make sure to source the workspace:
source ~/xarm_ws/install/setup.bashAdd to ~/.bashrc for automatic sourcing:
echo "source ~/xarm_ws/install/setup.bash" >> ~/.bashrcMake sure you've set the ALEXA_SKILL_ID environment variable:
export ALEXA_SKILL_ID=your-skill-id-hereOr create a .env file in src/xarm_remote/ with your Skill ID. See Alexa Setup Guide.
Check the Troubleshooting Section in the package README.
Contributions are welcome! Please open an issue or pull request for:
- Hardware interface implementation
- Additional task types and behaviors
- Performance optimizations
- Additional examples and tutorials
- Bug fixes and improvements
- Documentation enhancements
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0).
- β Free for educational and research use
- β Can be modified and shared with attribution
- β Cannot be used for commercial purposes
See LICENSE for full details.
- Original URDF model: Toshinori Kitamura (2018)
- ROS2 conversion and enhancement: 2025
- Built with ROS2 and ros2_control framework
- Issues: GitHub Issues
- Discussions: GitHub Discussions
If you find this project useful, please give it a star! It helps others discover the project.
Made with β€οΈ for the ROS2 community
