# VizMini2: RViz, teleop and ROS 2 tools on your Android phone or tablet

**URL:** <https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822>\
**Category:** Projects\
**Tags:** ros2, android, rviz, fastdds, teleoperation\
**Created:** [October 13, 2026, 3:04pm UTC](https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822 "2026-10-13T15:04:54Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Juancams](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/juancams/32/14298_2.png) [@Juancams](https://discourse.openrobotics.org/u/Juancams)\
**Post date:** [October 13, 2026, 3:04pm UTC](https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822/1 "2026-10-13T15:04:54Z")

</div>

Hi everyone,

I’d like to introduce **VizMini2** , an Android app to view, drive and inspect ROS 2 robots from your phone or tablet. This is the first time I’m sharing it outside my own circle, so any comments, criticism or ideas are more than welcome.

![01_dashboard](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/b/e/be7924b686610e3c4bfa46ae4df2bb913431e0f8.gif)

## Why I built it

Very often I just wanted to take a quick look at the robot: check whether the laser is publishing, see where it thinks it is on the map, move it a little or call a service. And for that I had to get the laptop out and open RViz, rqt and a couple of terminals. Walking behind the robot with a laptop in your hands isn’t very comfortable either. I wanted those tools in my pocket, talking directly to the robot, without installing anything on it.

On top of that, many robots come with a built-in tablet to show their status or offer a few controls, and that almost always means running a server on the robot and building a custom web page. With VizMini2 you can build that screen on the tablet itself, with dashboards, views and buttons the way you want them, without writing a single line of code.

## How it works

- **Your phone or tablet is just another DDS participant on the network.** It talks directly to your nodes, with no rosbridge or any other bridge, and nothing to install on the robot.
- Right now it works with **Fast DDS**. Later on I’d like to support other middlewares too, such as Cyclone DDS or Zenoh.
- All you need is the same network and the same `ROS_DOMAIN_ID`. If your Wi-Fi blocks multicast, you can enter the robot’s IPs (like `ROS_STATIC_PEERS`) or use a Discovery Server, which also works over 4G or a VPN.
- **Your robot’s data never leaves your network:** it goes straight between your device and the robot, without passing through any server.

## What it can do

![02_rviz_3d](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/8/a/8ae4d5702b0fb4b5b5763c3633f2f0f070568d41.gif)

**View**

- RViz-like 3D view with 18 displays: Grid, TF, Axes, RobotModel (with STL/Collada meshes), Map, LaserScan, PointCloud2 (up to 500,000 points), Odometry, Path, Pose, PoseArray, Marker, MarkerArray, Range… Each display has its own QoS.
- Live cameras (`Image` and `CompressedImage`).
- TF tree and node graph.
- Dashboards: several tabs together on one screen.

 ![03_visualize](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/2/f/2fe318a1a05b5f306bfe4f45fe88583228e724be.jpeg)

**Drive and act**

- Teleop with one or two on-screen joysticks, or a Bluetooth/USB gamepad, with a STOP button always at hand. It stops on its own if the network or the gamepad is lost.
- Nav2 goals and initial pose straight from the map (Goal / Pose).
- Your own buttons: publish to a topic, call a service or send a goal to an action, with its feedback and result.

 ![04_drive_and_act](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/9/b/9b3af49e40bccda58a0d7ff89bec1a3d269829dd.jpeg)

**Inspect and record**

- Nodes and parameters (read and change them), topics with echo, rate and plots, services, actions and lifecycle nodes.
- Diagnostics and `/rosout`.
- **MCAP** bag recording that opens in `ros2 bag` and Foxglove, plus playback on the device itself.

 ![05_inspect_and_record](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/8/8/88edcb3c5ae48a9357d73e4b7c19dcf1e375e3a2.jpeg)

**Save and share**

- Robot profiles (the connection and all your tabs) synced with your account, so you have them on any phone or tablet. They can also be shared as a file or a QR code.

Here’s a one-minute video going through almost everything:

[![](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/6/d/6d1bfa8795058936241764d23b34f8ebf42228ec.jpeg "VizMini2: RViz, teleop and ROS 2 tools on Android (1-minute overview)") ](https://www.youtube.com/watch?v=dTtA0QNFMIg)

## Try it without a robot

The app comes with a **demo that needs no account** : a simulated robot that runs entirely inside your phone or tablet, with a map, laser, camera, TF, diagnostics, parameters, services, an action and a lifecycle node. That way you can try every screen before connecting it to anything. All the pictures and videos in this post were recorded with that demo.

## Download and documentation

- **APK** (Android 8.0 or newer): [https://drive.google.com/file/d/1SRu2hZaSW09ijFyoXaq9aNKBH1zeVI3F/view?usp=sharing](https://drive.google.com/file/d/1SRu2hZaSW09ijFyoXaq9aNKBH1zeVI3F/view?usp=sharing)  
It isn’t on Google Play yet, so you’ll need to allow installing apps from your browser or file manager. It will be on Google Play in a few weeks (see below for how you can help me get there).
- **iOS:** no version for now. Distributing iPhone apps outside the App Store isn’t straightforward, and publishing on the store has a fairly high yearly cost. If I see there’s interest and the project gets some support, I’ll go for an iOS version.
- **Documentation** (in English and Spanish), with every screen explained, videos and tutorials (connecting your robot, Nav2, dashboards, recording a bag…): [VizMini2 — VizMini2 documentation](https://juancams.github.io/vizmini2/)

The app is free. It shows a small ad banner at the very bottom, which helps me keep it going, and if you’d like to give me a hand you can also support the project on [GitHub Sponsors](https://github.com/sponsors/Juancams).

## Help me get it on Google Play

To publish a new app, Google requires at least 12 people to test it for 14 days before it can be opened to everyone. If you have an Android phone or tablet and would like to help:

1. Join the testers group: [https://groups.google.com/g/vizmini2-testers](https://groups.google.com/g/vizmini2-testers)
2. Accept the test: [https://play.google.com/apps/testing/com.juancams.vizmini2](https://play.google.com/apps/testing/com.juancams.vizmini2)
3. Install VizMini2 from Google Play and keep it installed for those two weeks. If you already have the APK, uninstall it first: it’s the same app, but the Google Play one updates itself. Your cloud profiles are kept.

The test link will work as soon as Google approves it, in a few days. Many thanks to everyone who joins!

## Current status: not everything is enabled (yet)

To connect to your real robots you need an account (email, Google, Microsoft or GitHub); the demo doesn’t need one. The account is used to sync your profiles and to open up features step by step.

Right now, **new accounts can use the 3D view (RViz), the camera and teleop with real robots**. Everything else (buttons, services, actions, parameters, lifecycle, bags, dashboards…) is already in the app and can be fully tried in the demo, but I’ll be enabling it gradually. I’d rather do it this way so I can polish each part with your help before opening it up to everyone.

That said, if you want to use everything with your robot right away, email me at [jc.manzanares.serrano@gmail.com](mailto:jc.manzanares.serrano@gmail.com?subject=VizMini2%3A%20full%20access) with your account’s email and I’ll enable the rest of the features for you. If you also tell me what you’re going to use it for (which robot, what kind of project…), it’ll really help me know what to improve first.

## Requirements and known limitations

- **Services, actions, parameters and lifecycle need Fast DDS** (`rmw_fastrtps_cpp`) on the robot. Topics also work with other DDS implementations.
- It ships with the most common ROS 2 Jazzy interfaces (`sensor_msgs`, `geometry_msgs`, `nav_msgs`, `nav2_msgs`, `visualization_msgs`, `std_srvs`, `example_interfaces`…). Other types can be added by hand.
- Robot model meshes need a small mesh server on the robot (STL or Collada).
- Many Wi-Fi networks drop multicast: if your topics don’t show up, use the robot’s IPs or a Discovery Server.

## Can you help?

This is a project I work on in my spare time, and your feedback is what will help me improve it the most. I’m especially interested in:

- **Bugs** , especially with robots, networks or Android versions I don’t have.
- **What you miss** : RViz displays, message types, tools…
- **Which features you’d like me to enable first.**

You can reply in this thread, email me at [jc.manzanares.serrano@gmail.com](mailto:jc.manzanares.serrano@gmail.com?subject=VizMini2) or use the app itself (Home → Contact and bug reports), which fills in the app version, Android version and device model for you.

Thanks for reading, and for giving it a try!

Juan Carlos

---

<div class="post-metadata">

**Author:** ![peci1](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/peci1/32/10145_2.png) [@peci1](https://discourse.openrobotics.org/u/peci1)\
**Post date:** [October 13, 2026, 4:23pm UTC](https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822/2 "2026-10-13T16:23:57Z")

</div>

This looks really great! Do I get it right that the source code is not public? Installing random .apks from closed-source apps is not something security-aware people would do…

---

<div class="post-metadata">

**Author:** ![Juancams](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/juancams/32/14298_2.png) [@Juancams](https://discourse.openrobotics.org/u/Juancams)\
**Post date:** [October 13, 2026, 5:02pm UTC](https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822/3 "2026-10-13T17:02:56Z")

</div>

I totally understand why you’re hesitant to trust an `.apk` file! But in the end, it was the only way to share my project with everyone.

There’s also the option of becoming a tester and downloading the app from the Play Store, which would help me make it publicly available. I’d be incredibly grateful!

Otherwise, I’m sorry to say we’ll have to wait two or three weeks because the Play Store, despite verifying that the app is safe, requires a couple of people to test it and make sure it doesn’t have any problems.

And of course, thank you so much for your support! ^^ ^^

---

<div class="post-metadata">

**Author:** ![peci1](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/peci1/32/10145_2.png) [@peci1](https://discourse.openrobotics.org/u/peci1)\
**Post date:** [October 13, 2026, 7:21pm UTC](https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822/4 "2026-10-13T19:21:04Z")

</div>

Yes, but somebody might want to build the apk locally before installing it.

---

<div class="post-metadata">

**Author:** ![Juancams](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/juancams/32/14298_2.png) [@Juancams](https://discourse.openrobotics.org/u/Juancams)\
**Post date:** [October 14, 2026, 6:12am UTC](https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822/5 "2026-10-14T06:12:20Z")

</div>

If anyone wants to compile the APK, they can always contact me, but for now, there are no plans to release the code.

---

<div class="post-metadata">

**Author:** ![christian](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/christian/32/14876_2.png) [@christian](https://discourse.openrobotics.org/u/christian)\
**Post date:** [October 14, 2026, 7:05am UTC](https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822/6 "2026-10-14T07:05:23Z")

</div>

Requiring an account for a ROS visualiser puts me off somehow. Why do you require an account? Is this not communicating over the local network like any other ROS node?

---

<div class="post-metadata">

**Author:** ![Juancams](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/juancams/32/14298_2.png) [@Juancams](https://discourse.openrobotics.org/u/Juancams)\
**Post date:** [October 14, 2026, 7:30am UTC](https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822/7 "2026-10-14T07:30:59Z")

</div>

One of the main reasons is the ability to have configuration profiles in the cloud and share them across your different devices. When this eventually supports Linux, you could design the entire visual layout and simply switch to Android to have it up and running. Plus, there are sure to be many other features emerging that take advantage of having an account.

---

<div class="post-metadata">

**Author:** ![christian](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/christian/32/14876_2.png) [@christian](https://discourse.openrobotics.org/u/christian)\
**Post date:** [October 14, 2026, 8:18am UTC](https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822/8 "2026-10-14T08:18:43Z")

</div>

Well, will there be an option to use the software without an account, in case someone does not need these features?

---

<div class="post-metadata">

**Author:** ![Juancams](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/juancams/32/14298_2.png) [@Juancams](https://discourse.openrobotics.org/u/Juancams)\
**Post date:** [October 14, 2026, 8:26am UTC](https://discourse.openrobotics.org/t/vizmini2-rviz-teleop-and-ros-2-tools-on-your-android-phone-or-tablet/58822/9 "2026-10-14T08:26:23Z")

</div>

I hadn’t really considered that, since I didn’t see a reason not to require an account, but I can certainly look into adding the option to use the app without one in future versions. Thanks a lot for the advice!
