Skip to main content

Lynx - quick start

Lynx is a compact and robust Unmanned Ground Vehicle (UGV) platform designed for seamless operation in both indoor and outdoor environments. Featuring an IP54/66-rated, rugged alloy chassis, Lynx withstands harsh conditions while measuring just 54 cm in width—allowing it to navigate tight spaces and standard doorways effortlessly. Its modular design includes a hot-swappable battery system and a customizable user compartment, allowing users to tailor the robot to their specific needs without overcomplicating the setup. Lynx facilitates the integration of LIDARs, 3D cameras, manipulators, and other components through its T-slot mounting rail, accessible power ports, and extensive communication interfaces. Supported by open-source ROS 2 driver and a comprehensive suite of software examples, Lynx simplifies the development process for your product or research project.

How to get it?

If you don't have Lynx yet, you can get it from the online store.

Looking for a manual?
DIFFERENT STEPS

Instructions found in this guide do not account for installing a robotic arm on top of your Lynx platform. Please follow the Manipulator chapter instead, since it contains additional steps regarding your safety.

Quick Demo

Before the first use

We know that you would really like to read the Quick Demo section now, but your safety is the most important thing.

A brief safety information

  1. Please read the Safety instructions first.
  2. If you are not sure how something works, please read the Lynx manual.
  3. Please remember that the mechanical Emergency Button is available on the robot as well as software one in the WebUI (on the screen) and the Gamepad, but in some cases, you may not be able to use them quickly enough to stop the robot before causing damage.
  4. A detailed description of the safety features is available in the Safety section.

Here is a very basic demo that allows you to use your Lynx for the first time without coding:

Rotate the two-position Main Switch to the ON position. Push the Power Button for 1 second, a red light on the Power Button, and the LED panels on the Bumpers (called Bumper Lights) will light up. Wait for Wi-Fi to come up:

LOGIN CREDENTIALS

SSID: Lynx_<serial_number>

PASS: husarion

Controlling Lynx using the included Gamepad will work as soon as the wireless USB receiver is plugged into the robot. To get access to the WebUI check the WebUI installation guide.

Connecting Lynx to Your Wi-Fi Network

Connect to Lynx's Built-in Computer using SSH:

user@mylaptop:~$
ssh husarion@10.15.20.2

The default password for user husarion is also husarion.

When you are connected to your robot, you should open ~/panther_rutx11/config.json file.

husarion@10.15.20.2:~$
nano panther_rutx11/config.json

Edit the section named wifi_client filling in your SSID and matching password. If you want to connect to multiple networks duplicate whole block, Lynx will try to connect to them in given order. If you want to connect to open network leave password field empty:

    "wifi_client":[
{
"ssid":"YourProtectedNetwork",
"password":"YourPassword"
},
{
"ssid":"YourOpenNetwork",
"password":""
}

]
WI-FI BAND

By default Lynx uses 2.4 GHz WiFi for uplink, if you want to use 5 GHz change value of key "wifi_client_radio":0 to "wifi_client_radio":1

Save by pressing Ctrl+O and exit by Ctrl+X. To apply new settings, execute python script by command:

husarion@10.15.20.2:~$
panther_rutx11/setup_wifi.py

When Lynx connects to our network, the message Success will be shown.

WI-FI RANGE

Wi-Fi must be within range of Lynx. For more information, head to Network Section

Remote Access

OPTION 1: In a Local Network

Use a SSH connection at your PC that is connected to the hotspot provided by Lynx:

user@mylaptop:~$
ssh husarion@10.15.20.2

The default password for user husarion is also husarion.

OPTION 2: Over The Internet (VPN)

If LAN access is not enough, you can access your Lynx over the Internet from anywhere in the world with Husarnet. First, you should connect Lynx to your internal Wi-Fi network, as described in the previous paragraph: Connecting Lynx to Your Wi-Fi Network

Once your Lynx is connected to your network, you can proceed to configure Husarnet. A full guide on how to do this is here.

Lynx ROS Packages

At this stage, your Lynx should be up and running, with a remote connection (either LAN or VPN) established from your laptop. Lynx is equipped with preinstalled ROS packages within Docker containers, which are set to launch automatically upon boot. For more information on Lynx's ROS system, please refer to Software Guide.

ROS nodes running in the containers are accessible at the host operating system level.

Check available ROS topics:

husarion@10.15.20.2:~$
ros2 topic list

The complete architecture of the Lynx ROS 2 software is detailed in the Lynx ROS 2 API documentation.

RUNNING ROS NODES NATIVELY

You can run Lynx's ROS packages natively on your Lynx's host OS, by removing Docker containers, cloning, and building the panther_ros repository. However, it is recommended to use Docker images for this purpose.

Updating Basic Docker Images for Lynx

Lynx ROS packages are frequently updated to improve Lynx performance or include new features. To update them to the latest version, first, check the latest stable Docker image version at husarion/panther. An example tag could be: humble.

Then access your Lynx's terminal and edit the main compose file:

husarion@10.15.20.2:~$
nano ~/compose.yaml

Update the Docker tag:

lynx_ros:
image: husarion/panther:<newest-stable-tag> # example tag: humble

Restart the Docker containers to apply the changes:

husarion@10.15.20.2:~$
docker compose up -d --force-recreate

Reference Projects

Now you know how to access Lynx's ROS nodes from the Linux terminal.

Running ROS natively is fine for relatively small projects. For more complex ones, the full dockerized setup is a better approach.

warning

Next demos start Lynx's Docker containers in different configurations, so remember to stop the basic setup at first:

husarion@10.15.20.2:/home/husarion$
docker compose down