hyper-ros-control
v1.0.0
Published
ROS 2 control plugin for Hyper terminal - connect, browse topics/nodes/services, publish/call
Maintainers
Readme
hyper-ros-control
A Hyper terminal plugin for ROS/ROS 2 robot control.
Browse topics, nodes and services, publish messages and call services — all from a sidebar inside your terminal, with multi-robot SSH support.

Features
- 🤖 Multi-robot support — switch between Local, Jetson (Robot) and RPi with one click
- 🔌 SSH connection management — connect via VPN or direct IP with password modal
- 📋 Browse topics / nodes / services — live sidebar list with tab switching
- 📤 Topic publisher — auto-detects message type, custom payload, preview command
- 📞 Service caller — auto-detects service type, custom args, preview command
- 🔍 Topic echo & info — run directly in terminal with one click
- ⚡ Source shortcuts —
src ROSandsrc WSbuttons for quick environment setup - 🎨 Clean breadcrumb toolbar — live status dot, user@host info, connect/disconnect
- ⚙️ GUI config editor — edit robot connections without touching JSON
Prerequisites
- Hyper terminal (v3+)
- ROS or ROS 2 installed on target machine
sshpassfor password-based SSH connections
Install sshpass
# Ubuntu / Debian
sudo apt install sshpass
# macOS
brew install sshpassInstallation
hyper install hyper-ros-controlRestart Hyper after installation.
Configuration
On first run, a default config is created at:
~/.config/hyper-ros-control/config.jsonYou can edit it manually or use ROS Control → Configure Connections… from the menu bar.
Full config example
{
"defaults": {
"jetsonTarget": "vpn"
},
"robots": {
"jetson": {
"username": "nvidia",
"host_ip": "192.168.0.60",
"host_vpn": "10.8.0.2",
"ros_flavor": "ros2",
"ros_setup": "source /opt/ros/humble/setup.bash",
"workspace": "~/workspace/my_ws",
"ws_setup": ""
},
"rpi": {
"username": "pi",
"host_ip": "192.168.0.55",
"host_vpn": "",
"ros_flavor": "ros2",
"ros_setup": "source /opt/ros/humble/setup.bash",
"workspace": "~/workspace/my_ws",
"ws_setup": ""
},
"local": {
"ros_flavor": "ros2",
"ros_setup": "source /opt/ros/humble/setup.bash",
"workspace": "~/workspace/my_ws",
"ws_setup": ""
}
}
}Config fields
| Field | Description | Example |
|---|---|---|
| username | SSH username | "nvidia" |
| host_ip | Direct IP address | "192.168.0.60" |
| host_vpn | VPN IP address | "10.8.0.2" |
| ros_flavor | ROS version | "ros1" or "ros2" |
| ros_setup | Source ROS command | "source /opt/ros/humble/setup.bash" |
| workspace | Path to colcon/catkin workspace | "~/workspace/my_ws" |
| ws_setup | Custom workspace source (overrides auto) | "source ~/ws/install/setup.bash" |
Usage
Connecting to a robot
- Click Robot or PLC in the breadcrumb toolbar
- Select VPN or IP target
- Click Connect
- Enter SSH password in the modal
- Sidebar populates with topics, nodes and services
Browsing topics / nodes / services
- Switch tabs with Topics / Nodes / Services buttons in the sidebar
- Click any item to select it
- Use action buttons below the list:
| Button | Description |
|---|---|
| Info | Prints detailed info in terminal |
| Echo | Starts ros2 topic echo in terminal (topics only) |
| Publish | Opens publisher modal (topics only) |
| Call | Opens service caller modal (services only) |
Publishing a topic
- Select a topic → click Publish
- Message type is auto-detected (or type manually)
- Edit payload JSON
- Click Publish — command runs in terminal
Calling a service
- Select a service → click Call
- Service type is auto-detected (or type manually)
- Edit arguments
- Click Call — command runs in terminal
Sourcing ROS environment
| Button | Action |
|---|---|
| src ROS | Runs ros_setup command from config |
| src WS | Runs ws_setup or auto-generates from workspace path |
Menu
Access ROS Control in the Hyper menu bar:
- Configure Connections… — opens GUI config editor
Troubleshooting
| Problem | Solution |
|---|---|
| Sidebar empty after connecting | Make sure ros_setup is correct and ROS is running. Try src ROS first. |
| sshpass is not installed error | Run sudo apt install sshpass |
| SSH asks for password in terminal | Make sure sshpass is installed and in your $PATH |
| Wrong host is used | Check VPN/IP toggle and verify host_vpn / host_ip in config |
License
MIT
