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β
- Launch the App: Start the React Native application
- Configure Credentials: Enter your posemesh email, password, and domain ID
- Test Connection: Verify robot and domain connectivity
- 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
Navigation Settingsβ
- 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 logslogcat.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β
- Native Modules: Add Android/Kotlin modules in
android/app/src/main/java/ - React Components: Create new components in
src/auki_padbot_w3/components/ - Screens: Add new screens in
src/auki_padbot_w3/screens/ - Configuration: Update
config.yamlfor new settings
Contributingβ
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
Supportβ
For technical support or questions:
- Email: robotics@aukilabs.com
- Issues: Report bugs and feature requests through the project repository
Auki Labs - Share your vision.