Skip to content
Abhirup Das edited this page Aug 1, 2025 · 13 revisions

Arm_Robot Wiki

Welcome to the Arm_Robot Wiki! This educational robotic arm is designed to teach ROS (Robot Operating System) concepts. It interfaces with a Raspberry Pi via the PCA9685 servo HAT to control a physical robotic arm.

📘 Table of Contents


📖 Overview

The Arm_Robot project provides a hands-on, practical approach to learning ROS by allowing users to control a real robotic arm through software.

✨ Features

  • ROS Integration: Real-time robot control using standard ROS tools and nodes.
  • Cross-language Support: Source code available in Python and C++.
  • Hardware Control: Uses the PCA9685 servo controller via Raspberry Pi GPIO.

🧰 Requirements

  • Raspberry Pi (3B+ or newer recommended)
  • PCA9685 Servo HAT
  • ROS Noetic (or Melodic, if applicable)
  • Python 3.8+
  • C++11 compatible compiler
  • Internet access to install dependencies

⚙️ Installation

1. Clone the Repository

git clone https://github.com/GUT-Aachen/Arm_Robot.git
cd Arm_Robot

2. Install Dependencies and Set Up Hardware

Ensure your Raspberry Pi is connected, and then run:

python3 setup.py

This script will configure the servo controller and prepare your system for running the robot.


🚀 Usage

1. Launch the Simulated Arm Interface with MoveIt

roslaunch arm_robot_moveit full_arm_robot_sim.launch

2. Launch the Real Arm Interface with MoveIt

roslaunch arm_robot_moveit real_arm_robot.launch

Wait a few seconds for RViz to launch with the robot model loaded.

3. Run the Synchronization Script

In another terminal (with the same ROS environment sourced):

rosrun arm_robot_moveit sync_plan.py

This script sends planned joint movements to the physical robot based on your MoveIt planning interface. After this you can run ROS Nodes forward or backward kinematics based MoveIt Planning Interface.


📝 Notes & Tips

  • Set the robot base height to 40mm for correct pose planning.
  • Avoid using the IkFast plugin for planning as it is not supported.
  • Ensure your servo power supply is stable, typically between 5-6V.
  • If running into errors, check the connection between the Raspberry Pi and the servo HAT.
  • Wiring flow goes from base motor to gripper motor -> base motor wire goes in the 0th pin of the servo Hat and the final gripper motor wire goes in the 4th pin. Please keep in mind the wiring pattern and the gnd, v++, and pwm pins.

🤝 Contributing

We welcome contributions from students, educators, and developers interested in educational robotics!

How to Contribute

  1. Fork the repository
  2. Create a branch for your feature or fix:
    git checkout -b feature-name
  3. Make your changes and commit:
    git commit -m "Add new feature"
  4. Push to your fork:
    git push origin feature-name
  5. Open a Pull Request on GitHub.

Contribution Guidelines

  • Follow ROS and Python/C++ best practices.
  • Include comments and documentation for any new features.
  • Test your changes on hardware if possible.

📄 License

This project is licensed under the MIT License.