Shakila Praveen Rathnayake

shakilar.com
~/ projects / slam-teleop
Robotics & Mobile Development View Code

SLAM-Teleop: Real-time ROS2 SLAM on Android

A specialized Android app for mobile robots providing precise joystick teleoperation and real-time visual SLAM mapping via native WebSocket and Rosbridge.

AndroidReact NativeExpoROS2WebSocketJavaScript

SLAM-Teleop is a specialized remote controller Android app designed for mobile robots, focusing on real-time SLAM (Simultaneous Localization and Mapping).

It provides a unified interface that combines precise joystick teleoperation with a live visual SLAM map, allowing operators to navigate and map simultaneously with ease. By rendering the robot’s occupancy grid and pose directly on the handheld device, slam-teleop eliminates the need for bulky laptop-based ground control stations (like Rviz) for routine mapping tasks.

The application leverages a direct native WebSocket connection to the ROS2 stack, ensuring low-latency telemetry and smooth control response without the overhead of heavy client libraries.

Features

Setup

  1. Install Dependencies

    npm install
  2. Start the Server

    npx expo start
  3. Run on Phone

    • Install Expo Go from the App Store / Play Store
    • Scan the QR Code
    • Enter your Robot’s IP (default: 192.168.1.8) and click “Connect”

How It Works

This app communicates directly with rosbridge_server using the Rosbridge v2 JSON protocol over WebSocket:

// Advertise topic
{ op: 'advertise', topic: '/cmd_vel', type: 'geometry_msgs/Twist' }

// Publish velocity
{ op: 'publish', topic: '/cmd_vel', msg: { linear: {x: 0.5, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.2} } }

No external libraries needed - just native WebSocket API built into React Native.

Robot Setup

Ensure rosbridge_server is running on your robot:

ros2 launch rosbridge_server rosbridge_websocket_launch.xml

Troubleshooting

Back to projects