This project implements a 3+1 DOF robotic arm (3 revolute arm joints + 1 gripper actuation controlling both fingers) that can be controlled using voice commands via Amazon Alexa Developer Test Console as well as ROS2 actions. The system is built on ROS2 and MoveIt2, and supports both Python and C++ MoveIt APIs, depending on the ROS2 distribution.
The project is designed to be modular and extensible, making it suitable for learning, experimentation, and further research in robot manipulation, motion planning, and voice-based human–robot interaction.
- 3+1 DOF robotic arm with synchronized gripper actuation
- Motion planning and execution using MoveIt2
- Voice-based control using Amazon Alexa
- ROS 2 Action–based task execution via a dedicated Task Server
- Supports both simulation and extension to real hardware
-
ROS 2
- Humble: C++ MoveIt APIs
- Iron and newer: Python MoveIt APIs
-
MoveIt 2
-
Python and C++
-
URDF / SRDF for robot modeling and semantic description
-
Amazon Alexa Developer Console (custom skill)
-
ROS 2 Actions for task execution
Voice commands are processed via a custom Alexa skill. The skill backend communicates with ROS 2 and triggers predefined manipulation tasks.
Note: The Alexa Skill ID is intentionally replaced with a placeholder in the code. You must create your own skill using the Amazon Alexa Developer Console and insert your Skill ID manually.
A dedicated Task Server exposes a ROS 2 action interface that allows commanding the arm directly using ROS tools.
Example tasks are mapped using an integer-based interface:
task_number: 0task_number: 1task_number: 2
Each task corresponds to a predefined arm or gripper motion.
cd ~/<your_ws>/
git clone https://github.com/naitikpahwa18/moveit_arm.gitCreate a custom skill using the Amazon Alexa Developer Console, then edit the following file:
Replace:
skill_id = "YOUR_ALEXA_SKILL_ID_HERE"cd ~/<your_ws>
colcon build. install/setup.bashros2 launch manipulator_bringup simulated_robot.launch.py- Use the Alexa Developer Console test interface
- Invoke your skill and issue supported voice commands
- The commands are translated into ROS 2 tasks and executed by MoveIt
Send a task goal directly to the Task Server:
ros2 action send_goal /task_server manipulator_msgs/action/ManipulatorTask "task_number: 0"Replace 0 with 1 or 2 to trigger different tasks.
MoveitArm.mp4
manipulator_ws/
├── manipulator_description/ # URDF, SRDF, meshes
├── manipulator_bringup/ # Launch files
├── manipulator_controller/ # Controllers and configs
├── manipulator_remote/ # Alexa interface and remote control
├── manipulator_task_server/ # ROS 2 action server
└── manipulator_msgs/ # Custom messages and actions