Skip to main content

Padbot W3

Synced from the repository

This page mirrors the auki_robotics_padbot_w3 README (branch develop). The repository is the source of truth.

Demonstrating posemesh domain map deployment and REST-based navigation on Padbot W3 robots

Overview​

This project demonstrates how to integrate and deploy posemesh domain maps on the Padbot W3 robot. The system provides a complete solution for autonomous robot navigation using spatial domain data, enabling the W3 to understand its environment and navigate intelligently within defined domains using REST APIs.

Key Features​

πŸ€– Robot Integration​

  • Padbot W3 Support: Full compatibility with the W3 robot model
  • SLAM Integration (REST API): Real-time Simultaneous Localization and Mapping via REST
  • Autonomous Navigation: Intelligent pathfinding using domain maps
  • Pose Tracking: Continuous robot position and orientation monitoring

πŸ—ΊοΈ Posemesh Domain Integration​

  • Domain Authentication: Secure access to posemesh spatial domains
  • Map Download: Automatic retrieval of domain-specific maps (STCM format)
  • Navmesh Generation: Dynamic navigation mesh creation for pathfinding
  • Raycast Support: Spatial querying for obstacle detection and avoidance

πŸ“± React Native GUI​

  • Cross-Platform: Android and iOS support
  • Real-time Monitoring: Live robot status and battery monitoring
  • Configuration Management: Easy setup and credential management
  • Connection Status: Visual feedback for robot and domain connectivity

πŸ”§ Advanced Features​

  • Home Dock Management: Automatic home position setting and navigation
  • Patrol Points: Configurable waypoint-based navigation
  • Battery Monitoring: Real-time battery status tracking
  • Logging System: Comprehensive debug and error logging

Architecture​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ React Native β”‚ β”‚ REST API β”‚ β”‚ Padbot W3 β”‚
β”‚ GUI │◄──►│ Integration │◄──►│ Robot β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚ β”‚
β–Ό β–Ό β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Domain Utils β”‚ β”‚ SLAM Utils β”‚ β”‚ Hardware β”‚
β”‚ (Posemesh) β”‚ β”‚ (REST) β”‚ β”‚ (W3) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚
β–Ό β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Posemesh API β”‚ β”‚ Domain Maps β”‚
β”‚ (Auth β”‚ β”‚ (STCM Format) β”‚
β”‚ & Maps) β”‚ β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Prerequisites​

Hardware Requirements​

  • Padbot W3 robot
  • Android device or emulator for GUI
  • Network connectivity for domain access

Software Requirements​

  • Node.js (>= 18)
  • React Native CLI
  • Android Studio (for Android development)
  • Java Development Kit (JDK)
  • Posemesh Account with domain access

Dependencies​

  • React Native 0.78.0
  • React 19.0.0

Installation & Setup​

1. Clone the Repository​

git clone <repository-url>
cd auki_padbot_w3

2. Install Dependencies​

cd RobotGUI
npm install

3. Android Setup​

# Navigate to Android directory
cd android

# Install Gradle dependencies
./gradlew clean
./gradlew build

4. Configuration​

Edit RobotGUI/android/app/src/auki_padbot_w3/assets/config.yaml:

# Default configuration
email: "your-email@example.com"
domain_id: "your-domain-id"
slam_ip: "127.0.0.1" # W3 Robot IP address
slam_port: 1448
timeout_ms: 1000

domain:
map_endpoint: "https://dsc.auki.network/spatial/crosssection"
raycast_endpoint: "https://dsc.auki.network/spatial/raycast"
navmesh_endpoint: "https://dsc.auki.network/spatial/restricttonavmesh"

5. Build and Run​

# Start Metro bundler
npm start

# Run on Android device/emulator
npm run android

Usage​

Initial Setup​

  1. Launch the App: Start the React Native application
  2. Configure Credentials: Enter your posemesh email, password, and domain ID
  3. Test Connection: Verify robot and domain connectivity
  4. Set Home Position: Configure the robot's home dock location

Robot Control​

  • Connect: Establish connection with the Padbot W3 robot
  • Download Map: Retrieve domain-specific spatial map
  • Set Pose: Initialize robot position and orientation
  • Navigate: Execute autonomous navigation commands

Domain Integration​

  • Authentication: Secure access to posemesh domains
  • Map Retrieval: Download STCM format domain maps
  • Navmesh Generation: Create navigation meshes for pathfinding
  • Pose Reporting: Continuous position updates to domain

Further information can be found at https://github.com/aukilabs/auki_robotics_map_utils

API Reference​

Domain Utils Module​

// Authentication
authenticate(email: string, password: string, domainId: string): Promise<AuthResult>

// Map Operations
downloadMap(): Promise<MapResult>
getNavmeshCoord(coordinates: CoordMap): Promise<NavmeshResult>

// Pose Management
writeRobotPose(poseData: string, method: string, dataId?: string): Promise<PoseResult>

SLAM Utils Module (REST)​

// Connection Management
checkConnection(): Promise<ConnectionStatus>
connectToRobot(ip: string, port: number): Promise<ConnectionResult>

// Navigation
navigateHome(x: number, y: number, yaw: number): Promise<NavigationResult>
setHomeDock(x: number, y: number, z: number, yaw: number, pitch: number, roll: number): Promise<HomeDockResult>

Configuration Options​

Robot Settings​

  • IP Address: Robot network address (default: 127.0.0.1)
  • Port: SLAM service port (default: 1448)
  • Timeout: Connection timeout in milliseconds

Domain Settings​

  • Map Endpoint: Domain map download URL
  • Raycast Endpoint: Spatial query service URL
  • Navmesh Endpoint: Navigation mesh generation URL
  • Patrol Points: Configurable waypoint coordinates
  • Speed Settings: Different speeds for various operations
  • Home Dock: Robot charging station position

Troubleshooting​

Common Issues​

Connection Problems​

# Check robot network connectivity
ping 127.0.0.1

# Verify SLAM service is running
telnet 127.0.0.1 1448

Authentication Errors​

  • Verify posemesh credentials
  • Check domain ID validity
  • Ensure network connectivity to posemesh services

Build Issues​

# Clean and rebuild
cd android
./gradlew clean
./gradlew build

# Clear React Native cache
npx react-native start --reset-cache

Debug Logging​

Enable debug logging by checking the logs in:

  • debug_log.txt - General application logs
  • logcat.txt - Android system logs

Development​

Project Structure​

auki_padbot_w3/
└── RobotGUI/ # React Native application
β”œβ”€β”€ android/ # Android-specific code and native modules
β”œβ”€β”€ src/
β”‚ β”œβ”€β”€ auki_padbot_w3/
β”‚ β”‚ β”œβ”€β”€ assets/ # Images, config, and static files
β”‚ β”‚ β”œβ”€β”€ components/ # Reusable UI components
β”‚ β”‚ β”œβ”€β”€ screens/ # Application screens
β”‚ β”‚ β”œβ”€β”€ utils/ # Utility functions
β”‚ β”‚ └── app/ # App entry point
β”‚ └── ...
β”œβ”€β”€ package.json
└── ...

Adding New Features​

  1. Native Modules: Add Android/Kotlin modules in android/app/src/main/java/
  2. React Components: Create new components in src/auki_padbot_w3/components/
  3. Screens: Add new screens in src/auki_padbot_w3/screens/
  4. Configuration: Update config.yaml for new settings

Contributing​

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

Support​

For technical support or questions:


Auki Labs - Share your vision.