📚 Documentation & Tutorials

Complete guides and documentation for all Crobotic Solutions products

🚀 Getting Started with Arm API 2

arm_api2 is a ROS 2-based API that provides unified control interface for robot manipulators. This guide will help you get started quickly.

Prerequisites

  • Docker installed on your system
  • Basic knowledge of ROS 2
  • Supported robot manipulator (physical or simulation)

Quick Start

# Clone the repository
git clone git@github.com:CroboticSolutions/docker_files.git

# Navigate to arm_api2 directory
cd ./docker_files/ros2/humble/arm_api2

# Pull and run Docker container
./pull_and_run_docker.sh

# Start robot simulation
<robot_name>_sim

🎯 What you'll achieve

After following this guide, you'll be able to control any supported robot manipulator using the same API interface, regardless of the manufacturer.

📦 Installation

Docker Installation (Recommended)

The easiest way to get started is using our pre-configured Docker containers:

# Clone the repository
git clone git@github.com:CroboticSolutions/docker_files.git
cd docker_files/ros2/humble/arm_api2

# Make the script executable
chmod +x pull_and_run_docker.sh

# Run the setup
./pull_and_run_docker.sh

Manual Installation

For advanced users who prefer manual installation:

# Install ROS 2 Humble
sudo apt update
sudo apt install ros-humble-desktop

# Clone arm_api2 repository
git clone git@github.com:CroboticSolutions/arm_api2.git
cd arm_api2

# Build the workspace
colcon build --symlink-install

# Source the workspace
source install/setup.bash

⚠️ Important Note

[Add specific system requirements and dependencies here]

🎯 Basic Usage

Starting the API

# [Add actual launch commands for different robots]
ros2 launch arm_api2 [robot_specific_launch_file]

Python Example

#!/usr/bin/env python3
# [Replace with actual arm_api2 Python examples]

import rclpy
from arm_api2 import [ActualClassName]

def main():
    rclpy.init()
    
    # Initialize robot arm
    robot = [ActualClassName]()
    
    # [Add actual API method calls]
    # robot.actual_method_name()
    
    rclpy.shutdown()

if __name__ == '__main__':
    main()

C++ Example

// [Replace with actual arm_api2 C++ examples]
#include "arm_api2/[actual_header_file].hpp"

int main(int argc, char** argv) {
    rclcpp::init(argc, argv);
    
    // [Add actual C++ implementation]
    
    rclcpp::shutdown();
    return 0;
}

⚡ Advanced Features

📝 Content Needed

Please provide documentation for:

  • Advanced control modes available in arm_api2
  • Real-time control capabilities
  • Force/torque control features
  • Trajectory planning options
  • Safety features and limitations

🔧 Troubleshooting

Common Issues

❌ [Common Issue 1]

Problem: [Description of problem]

Solution:

  • [Step 1 to resolve]
  • [Step 2 to resolve]
  • [Step 3 to resolve]

❌ [Common Issue 2]

Problem: [Description of problem]

Solution:

# [Add actual troubleshooting commands]

Getting Help

🐛 GitHub Issues

Report bugs and request features

Open Issue
📧 Email Support

Direct technical support

Contact Us
💬 Community

Join our discussions

[Community Link]

🤖 Supported Robots

🔵

Universal Robots

UR3, UR5, UR10, UR16

[Update Status]
[List actual supported features]
🟠

Franka Emika

Panda, FR3

[Update Status]
[List actual supported features]
🟡

KUKA

[Specify supported models]

[Update Status]
[List actual supported features]

[Other Robots]

[Add other supported robots]

[Update Status]
[Timeline or features]

🔵 Universal Robots Setup

📝 Content Needed

Please provide:

  • Specific UR software version requirements
  • Network configuration steps
  • URCap requirements (if any)
  • Configuration file examples
  • Launch command examples

🟠 Franka Emika Setup

📝 Content Needed

Please provide:

  • Franka robot requirements
  • Real-time kernel necessity
  • libfranka version requirements
  • Configuration steps
  • Launch procedures

🟡 KUKA Setup

📝 Content Needed

Please provide:

  • Supported KUKA models
  • KRC version requirements
  • Network setup procedures
  • Configuration examples
  • Current limitations

📚 API Reference

📝 Content Needed

Please provide actual API documentation including:

  • Main class names and their purposes
  • Method signatures with parameters
  • Return types and values
  • Error handling and exceptions
  • Usage examples for each method

[MainAPIClass]

[Description of main class]

Methods:
[method_name]([parameters]) -> [return_type]

[Method description]

Parameters:
  • [param_name]: [description]

💡 Code Examples

📝 Content Needed

Please provide real code examples for:

  • Basic robot movement
  • Pick and place operations
  • Trajectory execution
  • Force control (if supported)
  • Error handling

[Example 1 Title]

# [Replace with actual working example]
# This should be a real, tested code example

[Example 2 Title]

# [Replace with actual working example]
# This should be a real, tested code example

🤝 Contributing

We welcome contributions to arm_api2! Here's how you can help:

Development Setup

# Fork the repository on GitHub
git clone https://github.com/YOUR_USERNAME/arm_api2.git
cd arm_api2

# [Add actual development setup steps]

# Run tests
[actual test command]

Contribution Guidelines

📝 Content Needed

Please provide:

  • Coding standards and style guides
  • Testing requirements
  • Pull request process
  • Code review guidelines
  • Areas where help is needed