Panther - outdoor AMR
This is a manual. Would you need a quick start guide instead?
- Panther v1.2
- Panther v1.0 - v1.06
Overview


Autonomous, mobile robot (AMR) platform dedicated for outdoor environment. Compliant with IP54 or IP66 rate of protection. Depending on the use-case it can be equipped with a robot arm, LIDAR, RGB-D camera, GPS, UWB and other additional equipment. It can be used in various areas of application such as agriculture, construction, inspection and many more.
This is a manual. Would you need a quick start guide instead?
Before the first use
We know that you would really like to Quick start with Panther now, but your safety is the most important thing.
A brief safety information
- Please read the Safety instructions first.
- If you are not sure how something works, please read the manual.
- Please remember that the Emergency buttons are available on the robot (a mechanical one) and in the WebUI (on the screen) but in some cases you may not be able to use them quickly enough to stop the robot before causing damage.
- The detailed description of the safety features are available in the Safety section.
Hardware guide
Specification
Basic parameters (with WH01 wheels option and a single battery)
Name | Value | Name | Value |
---|---|---|---|
length | 805 mm | width | 840 mm |
platform height | 290 mm | weight | 55 kg |
overall height | 365 mm | protection index | IP54 / IP66 |
wheelbase | 440 mm | operating temperature | -20°C to 50°C |
track of wheels | 695 mm | storage temperature | -20°C to 50°C |
maximum ground clearance | 155 mm | charging temperature | 0°C to 45°C |
minimum ground clearance | 139 mm | battery type | Li-Ion 36V |
Traction parameters (with WH01 wheels)
Name | Value | Name | Value |
---|---|---|---|
max speed | 2 m/s | maximum carrying capacity | 80 kg |
hill climb grade | 96% (44°) | nominal shaft torque | 34.5 Nm |
climb grade with 50kg cargo | 90% (42°) | maximum shaft torque | 60 Nm |
climb grade with 80kg cargo | 60% (31°) | nominal total traction force | 725 N |
hill grade traversal | 80% (39°) | maximum total traction force | 1511 N |
Great traction, large ramp angles and high stability are ensured by the low center of gravity, located very close to the center of the robot. Details can be found in the attached files:
Panther v1.0 - v1.06 Origin point and center of mass
[Panther v1.2 Origin point and center of mass - Soon...]
You can find more information about mass distribution and moments of inertia in the URDF simulation repository (https://github.com/husarion/panther_description).
International Protection Rating
The platform is offered in two variants of the protection class. The basic variant is dedicated for moderate indoor and outdoor conditions with a rating of IP54. The upgraded variant is dedicated for extremely demanding work environment with a rating of IP66. Sales details such as price, lead time and other conditions are available in the store. More details also in Panther options document.
Specification of given ratings:
Class | Solid | Fluid |
---|---|---|
IP54 | dust protected | protection against splashes of water from any direction |
IP66 | dust-tight | protection against strong water jets (100 l / min) poured on the housing from any side |
Components
Component | Quantity | Description |
---|---|---|
Built-in Computer | 1 | Raspberry Pi 4B with Broadcom BCM2711 processor, quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz and 4GB LPDDR4 RAM. Used to manage all the basic functions of a mobile platform. |
User Computer* | 1 | Intel NUC10i7FNKN or Lenovo ThinkStation P360 Tiny with Nvidia T1000 graphics card. See Computer options for details. |
Router | 1 | Teltonika RUTX11 - Dual-band (2.4 GHz/5 GHz), Access Point / Client Mode, 4G LTE CAT 6, Bluetooth 4.0 LE, GNSS (GPS, GLONASS, BeiDou, Galileo and QZSS) - This multifunctional device ensures reliable external wireless communication and Ethernet link between internal components of the robot system. More details. |
Antenna | 2 | Dual-band (2.4 GHz/5 GHz) placed on the rear of the robot. See all Panther options. |
IMU (Inertial Measurement Unit) | 1 | PhidgetSpatial 3/3/3 Basic (3-axis compass, a 3-axis gyroscope, and a 3-axis accelerometer) More details. |
Front and rear lights | 2 | Signal lighting made of 46 pcs. APA102C LED chips built into an aluminum profile on the robot's bumpers. |
Brushless Motor with planetary gearbox | 4 | 80PMB800K.80RBL-100 - Drive implemented on 4 durable motors 473 watts of power (900 W instantaneous power) each and planetary gears with a maximum torque of 60Nm allows the robot to move at a speed of 2 m/s even uphill with a slope of 40% with a load of 50 kg. |
Additional kits** | Together with the robot, you can get an integrated lidar, depth camera, manipulator and more. See all Panther options |
*By default, there is only up to one User Computer in the robot. For detailed information please check System installation and read more about Panther options.
**Most of external modules are attached to the profiles on the top of the platform. More details.
Communication
available as standard
- Ethernet
- USB
- Wi-Fi (2.4GHz & 5GHz)
possible to extend
- LTE
- GPS
- CAN
- RS232
- RS485
See all at Panther options.
Block diagram
Graphic representation of Panther components and connections between them. A full, more detailed version of the block diagram can be found in Docs and links chapter.
- Panther v1.2
- Panther v1.0 - v1.06


Rear panel description
- Panther v1.2
- Panther v1.0 - v1.06
On the Rear Panel of the robot there are:
- Power controls for the robot - two-position Battery Switch and Power Button,
- USB connection dedicated to the Gamepad,
- Emergency Button,
- And the robot's charging socket.


Battery Switch
The Battery Switch is used to cut off the battery voltage from the robot electrical circuits. Use this switch for the long-time storage and for shipping. In case of the robot malfunction, setting the Battery Switch to the OFF position will turn off the robot immediately, without waiting for the operating system shutdown.
Battery Switch position | Knob position | Power state |
---|---|---|
OFF | left | Battery disconnected |
ON | right | Battery connected |
Cutting off the computer's power using the Battery Switch may cause data loss.
Cutting off power by putting Battery Switch to the OFF position is NOT the same as taking out the battery. When it is necessary to interfere with the internal components of the robot, it is important to remove the battery from the robot first!
Power button and Status LED
Power Button action is triggered with press and hold the button for 1 second.
Battery Switch position | Robot status | Power Button action |
---|---|---|
OFF | Powered OFF | No action |
ON | Powered OFF | Power ON |
ON | Powered ON | Initialize shutdown |
The Power Button is equipped with a LED which indicates the robot status:
LED state | Status of the robot |
---|---|
ON | Powered on |
Blinking | Shutting down |
OFF | Powered off |
Emergency button
The Emergency Button is connected directly to the Emergency Management Unit and it is one of the inputs triggering E-stop signal. Pushing it runs several actions on the robot. There is a possibility to program the behavior of the platform in emergency situations, however the default actions are:
activate E-stop signal and latch it,
actively brake the robot using motors,
toggle a SPDT relay (external E-stop output).
You can read more about E-stop in chapter Safety.
USB for Gamepad
There is an EDAC 690-W04-260-014 connector, which provide a direct USB connection to the Built-in Computer. It is dedicated to connecting the Logitech F710 Pad with a modified waterproof USB receiver, but the port can be used to connect any USB 2.0 device to the computer. Information on how to use the Gamepad with the robot can be found in the chapter Controlling Panther robot.
Charging Socket
There is a Weipu SP2112/S7 connector on the surface of the robot mounted with a waterproof cap. The necessary details on charging can be found in the chapter Charging.
The robot is equipped with a three-position Main switch and Emergency Button.
Main switch position | Name of position | LED state | Power state |
---|---|---|---|
left | Off | Off | Turned off |
center | Stage 1 | On | The robot turned on except the motors |
right | Stage 2 | On | The robot fully ready for operation |
Pushing the Emergency Button completely cuts off the power to the device.
Cutting off the computer's power may cause data loss.
Battery & charging
- Panther v1.2
- Panther v1.0 - v1.06
Battery
The Panther power supply comes in a couple of options of easy-swapable battery packs. While purhasing the platform you can choose the basic 720Wh battery (BAT01) or the doubled version of 1440Wh (BAT02). Read more about Panther's options.
The battery packs are made of Lithium-Ion cells, with a rated voltage of 36V and 20Ah or 40Ah capacity, which gives the Panther enough energy to move around in demanding terrain and perform calculations for about 3.5 hours in standard version and 7 hours in doubled version. Moving the robot in a friendly terrain allows for a significant extension of the robot's working time up to 8 hours (standby time up to 40 hours) for the basic variant. You can check more specific information about Panther power consumption calculated for basic version of the battery.
When the battery level is low, the bumper light displays this status through two distinct animations that are shown periodically. If the battery level drops below 40% (36 volts), the bumper light displays an animation of two orange stripes moving towards the center. If the battery level drops below 10% (33 volts), an animation consisting of two red stripes moving towards the center is displayed.
For more information about the bumper lights and signal lights, please see the Panther LEDs and Bumpers and signal lights sections respectively.
Battery parameter | Value for BAT01 | Value for BAT02 |
---|---|---|
Battery capacity | 720 Wh | 1440 Wh |
Runtime | 3.5 h - 8 h | 7 h - 16 h |
Standby time | 40 h | 80 h |
Total output power | 1.0 kW | 2.0 kW |
Maximum peak power | 1.8 kW | 3.2 kW |
Battery swap
To remove, insert or replace the batteries, you require access to the User Compartment. You will learn how to do it in the chapter User Compartment
The battery is attached to the inner walls of the robot with DIN 912 M5x12 bolts (4 mm Allen key). After removing the bolts (2 pcs for BAT01 and 4 pcs for BAT02) holding the Battery in place, slide the Battery out of the electrical connector by sliding the package towards the front of the robot by approximately 10 mm. After that, the battery can be lifted by the handle located on its upper surface.
There are retaining pins sticking out of the Battery, be careful not to damage the seal on the surface of the robot. A heavy battery can also damage electronics and wires placed on the User Shelf if not lowered carefully. After lowering (1) the battery to the bottom of the User Compartment, slide it towards the right side (2) of the robot and then along this wall to the rear (3) of the robot. The locating pins should finally position the battery, which will slide smoothly into the power socket. The bolts holding the batteries in place should be tightened to a torque of 4Nm. The steps described above are marked in the figure below.


The Panther is equipped with a set of battery cells in Lithium-Ion technology with a rated voltage of 36V and 20Ah, which gives it 720Wh of energy to use for calculations and move around in demanding terrain for about 3.5 hours. Moving the robot in a friendly terrain allows for a significant extension of the robot's working time up to 8 hours (standby time up to 40 hours). You can check more specific information about Panther power consumption here.
When the battery level is low, the bumper light displays this status through two distinct animations that are shown periodically. If the battery level drops below 40% (36 volts), the bumper light displays an animation of two orange stripes moving towards the center. If the battery level drops below 10% (33 volts), an animation consisting of two red stripes moving towards the center is displayed.
For more information about the bumper lights and signal lights, please see the Panther LEDs and Bumpers and signal lights sections respectively.
To meet the user's needs, the robot is equipped with 9 high-power electrical connectors that are able to provide a total of 505W of power to the user's devices. The supply voltages available on the user Power panel are 5V with a total current limitation up to 15A (3x female XT60), 12V limited to 20A (3x female XT60) and 19V limited to 10A (3x female XT60).
The layout of the connectors can be found in the chapter User Compartment.
One of 19V output is used by NUC and one of 12V output is used by router.
Name | Value |
---|---|
Battery capacity | 720Wh |
Runtime | 3.5 h |
Total output power | 1 kW |
Maximum peak power | 1.8 kW |
Max power for user use* | 5V@15A, 12V@20A, 19V@10A |
Total power for user use* | 360W |
*Each of the voltage sources has an independent overcurrent switch, but the total power consumed by the devices plugged into the Power panel cannot exceed 360W.
Charging Panther
- Panther v1.2
- Panther v1.0 - v1.06
In the set with the robot, we provide a dedicated charger, which can charge the robot to 80% in 4 hours, and to 100% in 7 hours. Dedicated charger can be connected directly to the robot's charging connector on its housing. There are two types of chargers available. For BAT01 (single battery) and BAT02 (double battery) options. On the top of the chargers there are LED indicators. If all of them are green that means the battery is fully charged or not connected. When at least one LED is red that means the battery is charging.
Parameter name | Single charger (for BAT01) | Dual charger (for BAT02) |
---|---|---|
Input voltage range | 100-240 V AC | 100-240 V AC |
Input voltage frequency | 50 - 60 Hz | 50 - 60 Hz |
Max input current | 2.5A | 5A |
Max output voltage | 42V | 42V at two channels |
Max output current | 5A | 2x 5A |
Charging robot with BAT01 option | yes | yes |
Charging robot with BAT02 option | no | yes |
It is highly recommended not to use the robot during the charging process! When the charger is connected to the robot, the robot should be turned off.
Please do not leave charger connected to the robot after the charging process is completed (green LED(s)).
In the set with the robot, we provide a dedicated 42V @ 5A charger, which the robot will charge to 80% in 4 hours, and to 100% in 7 hours. The mains-operated charger is connected directly to the robot's charging connector on its housing.
It is highly recommended not to use the robot during the charging process! When the charger is connected to the robot, the robot should be turned off completely.
Please do not leave charger connected to the robot after the charging process is completed (the red LED and charger fan will turn off).
Mounting rails
Sensors, constructions and payload can be attached to the profiles on top of the robot. The profiles used are aluminum V-slot 2020 profiles. The best way to attach the elements to them is to use mounting elements dedicated to this type of profiles, such as T-nuts, fittings and angles.


These profiles are fixed to the robot with four ISO 7379 M6x30 shoulder screws with DIN 986 M6 nyloc nuts.


To enable access to user space, top rails can be pivoted by removing 2x shoulder screw M6x30 and 2x DIN 986 M6 nyloc nut in either to the front or back. Maximum opening angle is 160 degrees with built-in stop.


For more useful information in the field of mechanics, please see the document Panther Overall Dimensions and chapter CAD models.
The presence of railings has no effect on the water and dust resistance of the robot.
Bumpers and signal lights
The robot's bumpers are made of a profile with the same cross-section as the railings. They are 0.5 meters wide and, in addition to buffer shock and reducing potential damage when the robot collides with an obstacle at high speed, additional sensors can be mounted on them. By default, the signaling lighting is mounted on each bumper in the form of an aluminum profiles with 46 programmable RGB LEDs.
These lights may be widely used - to indicate the status of the robot, the direction of movement or the intention to change direction, warn about low battery or other detected errors, signal the status of the charging process or even for illuminate the area in front of the robot. More details regarding lights and their control is available in Panther LEDs section.
User Compartment
- Panther v1.2
- Panther v1.0 - v1.06
The robot's volume has been divided into five parts. The central space, called User Compartment, is dedicated to the user's components and electronics. The user's computer (for example Intel NUC in PC02 option), RUTX11 router, as well as the robot's battery are located here.
Access to the User Compartment
To access the User Compartment, pivot the top rails by removing 2x ISO 7379 M6x30 shoulder screws with DIN 986 M6 nyloc nuts. Then unscrew Cover fastened with 8x (IP54) or 18x (IP66) bolts DIN912 M5x12.


To ensure the tightness of the robot, make sure that there are no foreign objects on the seal when assembling the skin element and tighten the bolts with a torque of 4 - 5 Nm.
User Shelf
Volume of this space is approximately 13.6 liters (3.6 US gallons) with BAT01 option or 10.0 liters (2.6 US gallons) with BAT02 option. This part of the robot has the same water and dust tightness class as the robot. At the bottom of this volume there is an easily removable User Shelf to which devices located in this space are attached, excluding the battery.


The usable space above the shelf is 150 mm high. Top surface of the BAT01 battery module is 72.5 mm above the shelf. The usable space above this battery is 77.5 mm high. There is no usable space above the battery when the BAT02 is mounted.
To remove the User Shelf, loosen the DIN912 M5x12 bolts located around its perimeter and move the Shelf towards the back of the robot, then lift it up. When planning to place components on the shelf, keep clearance around heads of the mounting bolts to allow the shelf to be pushed back into place later. Usually 4 out of 6 bolts are enough to fix the Shelf properly.
On the front and rear wall of this compartment, above the User Shelf, there are connectors that provide power and allow to communicate with the robot.
User Power Panel
The front panel distributing electric power for user applications:


To meet the user's needs, the robot is equipped with 10 high-current electrical connectors that are able to provide up to 780W of electrical power to the user's devices. The supply voltages available on the User Power Panel are:
- 5V limited to 15A (3x female XT60),
- 12V limited to 25A (3x female XT60),
- 19V limited to 10A (3x female XT60).
- Aux Power which is battery voltage (32-42V) rated at 10A max. This output is disabled by default. Aux Power can be enabled and disabled separately from Built-in Computer via ROS (Service
/panther/hardware/aux_power_enable
). See Panther ROS section for more details.
- The total power from 5V, 12V and 19V outputs is limited to 320W of power.
- One 19V output is used by an optional user computer and one 12V output is used by a router.
These coaxial antenna cables are only present with the ANT01 option. In the ANT02 option, these wires are absent. Read more about Panther's options.
Communication Panel
On the rear panel there are sockets for connecting the battery and communication with the robot - as standard it is an Ethernet and USB connector for the internal SBC and the User Safety Interface (USI) connected to the Emergency Management Unit:


The robot's volume has been divided into three parts. The central space with volume of approximately 14.5 liters (3.8 gallons) is dedicated for the user's components and electronics, as well as the robot's battery. This part of the robot has the same water and dust tightness class as the robot. By default, there is the Intel NUC on-board computer and the RUTX11 router responsible for both the communication of the robot with the inner world and the connection of computers and sensors within the robot.


Above this shelf, two user panels has been led to this space. A panel distributing electric power for the user:


The supply voltages available on the User Power Panel are:
- 5V limited to 15A (3x female XT60),
- 12V limited to 25A (3x female XT60),
- 19V limited to 10A (3x female XT60).
And a panel for communication with the rest of the robot (as standard it is an Ethernet connector to the internal SBC):


The front and rear spaces are occupied by motors and built-in electronics. For these spaces it is usually not needed to access by the user. Opening these spaces is mainly used for service work.
Access to the user space
To access the components inside the user space, pivot the top rails by removing 2x shoulder screw and 2x nyloc nut. Then unscrew the Cover (18x DIN912 M5x12).


Service spaces
- Panther v1.2
- Panther v1.0 - v1.06
The four remaining spaces around the User Compartment are intended for the internal components of the robot and some elements of the additional option sets. In this case, the relevant information can be found in the description of the given option.
For these spaces it is usually not needed to access by the user. Opening these spaces is mainly used for service work.
Access to the front and rear service spaces
The front and rear spaces are occupied by motors and built-in electronics.
To access the components in service space, pivot the top rails by removing 2x ISO 7379 M6x30 shoulder screws with DIN 986 M6 nyloc nuts. Then unscrew Front (with the Husarion logo) or Rear (with buttons) Deck. Each is fastened with 15x DIN912 M5x12.


Under the Front Deck you will find things like standard power converters (5V, 12V, 19V), distribution of higher voltages for the user, high voltage converter (24V / 48V) connection, front motor controller, fan connection. Under the Rear Deck you will find things like battery connector, Built-in Computer with its microSD card, LED panels driver, Power Board, Charging Socket line and Rear Panel buttons connections, rear motor driver, antennas connection.


Access to the side service spaces
The structural elements located on the sides of the robot - Stringers - also contain subassemblies.
To access these spaces, it is necessary to remove the wheels on the relevant side. Read more about removing wheels in side article Wheel swap. Than you need to remove Side cover which is fastened with 12x bolts DIN912 M5x16.
By default, the Right Stringer has a fan used for forced air circulation inside the robot. There are also cable harnesses in both Stringers. For some Panther's options, additional equipment may be installed in these spaces. In such cases, the necessary information can be found in the description of the option in the article Panther's options.
To ensure the tightness of the robot, make sure that there are no foreign objects on the seal when assembling the skin element and tighten the bolts with a torque of 4 - 5 Nm.
To access the components in service space, pivot the top rails by removing 2x shoulder screw and 2x nyloc nut. Then unscrew the front Deck, the one without the buttons (17x DIN912 M5x12).


The bolts must be re-tightened with a torque of 4-5 Nm.
A necessary condition to meet the protection rate for external conditions and the faultless operation of the robot is lack of foreign objects on the seal and correct tightening of all screws fixing the Cover and both Decks!
CAD models
To facilitate the work with the project based on Panther platform, we have prepared CAD models for download in three extension formats:
- Panther v1.2
- Panther v1.0 - v1.06
Software guide
Panther robot is equipped with the Raspberry Pi 4 SBC with custom OS based on Ubuntu 20.04 and contains all components needed to start working with ROS immediately. The microSD card with OS for the Raspberry Pi is included with each Panther robot. The OS contains software drivers for all components and has been modified to make the file system insensitive to sudden power cuts.
ROS API
Panther ROS
- Panther v1.2
- Panther v1.0 - v1.06
Below you can find a description of the nodes that enable the robot to work:
- battery_node (adc_node.py) - publishes battery state read from ADC unit,
- imu_manager (phidgets_imu) - driver for the Phidgets Spatial 3/3/3 IMU sensor. The driver publishes linear acceleration, angular velocities and magnetic field,
- lights_controller_node (controller_node.py) - node responsible for processing animations and publishing frames to be displayed on Panther robot LED panels,
- lights_driver_node (driver_node.py) - node responsible for displaying frames on Panther robot LED panels,
- lights_scheduler_node (scheduler_node.py) - node responsible for scheduling animations displayed on LED panels based on the Husarion Panther robot's system state.
- manager_node (manager_node.py) - node responsible for managing the Husarion Panther robots, controls built-in fan and software shutdown of components,
- panther_driver (driver_node.py) - node responsible for communication with motor controllers and computing inverse and forward kinematics of a robot,
- power_control (power_board_node.py) - node responsible for management of the safety board and the power board,
- system_status_node (system_status_node.py) - publishes status of the built-in computer. Stats include CPU utilization and temperature, as well as disc and RAM usage.
Below are topics and services available in Panther:
Topic | Message type | Node | Description |
---|---|---|---|
/cmd_vel | geometry_msgs/Twist | panther_driver | Robot desired control velocity. |
/joint_states | sensor_msgs/JointState | panther_driver | Robot joints states. |
/panther/battery | sensor_msgs/BatteryState | battery_node | Average values of both batteries if panther has two batteries. In case of single battery values only for the single one. |
/panther/battery_1 | sensor_msgs/BatteryState | battery_node | First battery state. Published if second battery detected. |
/panther/battery_2 | sensor_msgs/BatteryState | battery_node | Second battery state. Published if second battery detected. |
/panther/driver/motor_controllers_state | panther_msgs/DriverState | panther_driver | Motor controllers current, voltage, fault flags, script flags and runtime error flags. |
/panther/hardware/io_state | panther_msgs/IOState | power_control | Publishes state of Panther's built-in computer IO pins |
/panther/hardware/e_stop | std_msgs/Bool | power_control | The current state of the emergency stop. |
/panther/hardware/fan_enabled | std_msgs/Bool | power_control | Feedback if fan is currently turned on. |
/panther/imu/data | sensor_msgs/Imu | imu_manager | Publishes imu data. |
/panther/imu/mag | geometry_msgs/Vector3Stamped | imu_manager | The magnetic orientation vector. |
/panther/lights/controller/queue | panther_msgs/LEDAnimationQueue | lights_controller_node | List with names of animations that are being processed by lights interface |
/panther/lights/driver/front_panel_frame | sensor_msgs/Image | lights_driver_node | An animation frame to be displayed on robot front LED panel |
/panther/lights/driver/rear_panel_frame | sensor_msgs/Image | lights_driver_node | An animation frame to be displayed on robot rear LED panel |
/panther/odom/wheel | nav_msgs/Odometry | panther_driver | Robot odometry calculated from wheels. |
/panther/pose | geometry_msgs/Pose | panther_driver | Robot position. |
/panther/system_status | panther_msgs/SystemStatus | system_status_node | Information about Built-in Computer CPU temperature, utilization and disc and RAM usage. |
/tf | tf2_msgs/TFMessage | panther_driver | Transform between odom_frame and base_link_frame . |
Service | Service type | Node | Description |
---|---|---|---|
/panther/hardware/aux_power_enable | std_srvs/SetBool | power_control | Enable or disable auxiliary power output, e.g. supply to robotic arms. |
/panther/hardware/charger_enable | std_srvs/SetBool | power_control | Enable or disable charger. |
/panther/hardware/digital_power_enable | std_srvs/SetBool | power_control | Enable or disable the internal digital power used to power on, e.g. NUC, Router, etc. |
/panther/hardware/e_stop_reset | std_srvs/Trigger | power_control | Reset emergency stop. |
/panther/hardware/e_stop_trigger | std_srvs/Trigger | power_control | Trigger emergency stop. |
/panther/hardware/fan_enable | std_srvs/SetBool | power_control | Enable or disable internal fan. |
/panther/hardware/motors_enable | std_srvs/SetBool | power_control | Enable or disable motor drivers. |
/panther/lights/controller/set/animation | panther_msgs/SetLEDAnimation | lights_controller_node | Allows setting animation on LED panel based on animation ID. |
/panther/lights/controller/set/image_animation | panther_msgs/SetLEDImageAnimation | lights_controller_node | Allows setting animation based on provided images, available in testing mode. |
/panther/lights/controller/update_animations | std_srvs/Trigger | lights_controller_node | Allows updating user defined animations based on ~user_animations parameter. |
/panther/lights/driver/set/brightness | panther_msgs/SetLEDBrightness | lights_driver_node | Allows setting global LED brightness, value ranges from 0 to 1. |
Below graph represents Panther ROS structure. Some topics and services have been excluded from the graph for the sake of clarity.

Below you can find a description of the nodes that enable the robot to work:
- battery_node (roboteq_republisher_node.py) - node publishing Panther battery state read from motor controllers,
- imu_manager (phidgets_imu) - driver for the Phidgets Spatial 3/3/3 IMU sensor. The driver publishes linear acceleration, angular velocities and magnetic field,
- lights_controller_node (controller_node.py) - node responsible for processing animations and publishing frames to be displayed on Panther robot LED panels,
- lights_driver_node (driver_node.py) - node responsible for displaying frames on Panther robot LED panels,
- lights_scheduler_node (scheduler_node.py) - node responsible for scheduling animations displayed on LED panels based on the Husarion Panther robot's system state.
- panther_driver (driver_node.py) - node responsible for communication with motor controllers and computing inverse and forward kinematics of a robot,
- power_control (relays_node.py) - this node is responsible for power management using relays.
- system_status_node (system_status_node.py) - publishes status of the built-in computer. Stats include CPU utilization and temperature, as well as disc and RAM usage.
Below are topics and services available in Panther:
Topic | Message type | Node | Description |
---|---|---|---|
/cmd_vel | geometry_msgs/Twist | panther_driver | Robot desired control velocity. |
/joint_states | sensor_msgs/JointState | panther_driver | Robot joints states. |
/panther/battery | sensor_msgs/BatteryState | battery_node | Average values of both batteries if panther has two batteries. In case of single battery values only for the single one. |
/panther/driver/motor_controllers_state | panther_msgs/DriverState | panther_driver | Motor controllers current, voltage, fault flags, script flags and runtime error flags. |
/panther/hardware/e_stop | std_msgs/Bool | power_control | The current state of the emergency stop. |
/panther/imu/data | sensor_msgs/Imu | imu_manager | Publishes imu data |
/panther/imu/mag | geometry_msgs/Vector3Stamped | imu_manager | The magnetic orientation vector. |
/panther/lights/controller/queue | panther_msgs/LEDAnimationQueue | lights_controller_node | List with names of animations that are being processed by lights interface |
/panther/lights/driver/front_panel_frame | sensor_msgs/Image | lights_driver_node | An animation frame to be displayed on robot front LED panel |
/panther/lights/driver/rear_panel_frame | sensor_msgs/Image | lights_driver_node | An animation frame to be displayed on robot rear LED panel |
/panther/odom/wheel | nav_msgs/Odometry | panther_driver | Robot odometry calculated from wheels. |
/panther/pose | geometry_msgs/Pose | panther_driver | Robot position. |
/panther/system_status | panther_msgs/SystemStatus | system_status_node | Information about internal computer CPU temperature, utilization and disc and RAM usage. |
/tf | tf2_msgs/TFMessage | panther_driver | Transform between odom_frame and base_link_frame . |
Service | Service type | Node | Description |
---|---|---|---|
/panther/hardware/e_stop_reset | std_srvs/Trigger | power_control | Reset software simulated emergency stop. |
/panther/hardware/e_stop_trigger | std_srvs/Trigger | power_control | Trigger software simulated emergency stop. |
/panther/lights/controller/set/animation | panther_msgs/SetLEDAnimation | lights_controller_node | Allows setting animation on LED panel based on animation ID. |
/panther/lights/controller/set/image_animation | panther_msgs/SetLEDImageAnimation | lights_controller_node | Allows setting animation based on provided images, available in testing mode. |
/panther/lights/controller/update_animations | std_srvs/Trigger | lights_controller_node | Allows updating user defined animations based on ~user_animations parameter. |
/panther/lights/driver/set/brightness | panther_msgs/SetLEDBrightness | lights_driver_node | Allows setting global LED brightness, value ranges from 0 to 1. |
Below graph represents Panther ROS structure. Some topics and services have been excluded from the graph for the sake of clarity.

GPS API
GPS data in NMEA format is forwarded to RPi IP address at port 5000, typically it is 10.15.20.2:5000
.
You can make sure the address is correct by typing http://10.15.20.1 into your browser (Username: admin
, Password: Husarion1
). Navigate to Services -> GPS -> NMEA -> NMEA forwarding -> Hostname and Port
. Remember that you must be connected to the robot's WIFi network. If changes were needed, finish the configuration by pressing save & apply
at the bottom of the screen.
Data frequency is 1Hz and can be interacted ether with GPSD daemon (gpsd -N udp://10.15.20.2:5000
) or directly with ROS package redirecting signal to ROS topic.
It is recommended to use docker image using compose.yaml file:
services:
nmea-gps:
image: husarion/nmea-gps:noetic
container_name: nmea-gps
network_mode: host
environment:
- ROS_MASTER_URI=http://10.15.20.2:11311
command: >
rosrun nmea_navsat_driver nmea_socket_driver
__ns:=panther
_port:=5000
_local_ip:=10.15.20.2
To start the container type:
git clone https://github.com/husarion/nmea-gps-docker.git
cd nmea-gps-docker
docker compose up
You should be able to see data on /panther/fix
topic (rostopic echo /panther/fix
).
Panther LEDs
Panther lights interface was designed to provide informations about robot system state in form of simple animations displayed on LED panels. Animations are placed in the queue and processed in respect with their priority as described below:
- 1 - intterupts and removes from the queue animation with priorites 2 and 3.
- 2 - interrupts animations with priority 3.
- 3 - add adnimation to the end of the queue.
Animations
Default animations supplied by Husarion are listed in the table below.
ID | NAME | PRIORITY | DESCRIPTION |
---|---|---|---|
0 | E_STOP | 3 | red expanding from the center to the edges |
1 | READY | 3 | green expanding from center to the edges |
2 | ERROR | 1 | red, whole panel blinking twice |
3 | MANUAL_ACTION | 3 | blue expanding from the center to the edges |
4 | AUTONOMOUS_ACTION | 3 | orange expanding from center to the edges |
5 | GOAL_ACHIEVED | 2 | purple, whole panel blinking three times |
6 | LOW_BATTERY | 2 | two orange stripes moving towards the center, repeats twice |
7 | CRITICAL_BATTERY | 2 | two red stripes moving towards the center, repeats twice |
8 | BATTERY_STATE | 3 | two stripes moving towards the edges stopping at a point representing battery percentage and filling back to the center, color changes from red to green |
9 | CHARGING_BATTERY | 3 | whole panel blinking with a duty cycle proportional to the battery percentage. Short blinking means low battery, no blinking means full battery. Color changes from red to green |
Default LED behavior
Table below outlines the animations and states of Panther robot that each of them represents.
ANIMATION | ROBOT STATE |
---|---|
E_STOP | robot E-stop triggered, not ready to operate |
READY | robot E-stop released, ready to operate |
LOW_BATTERY | robot battery level below 40%, animation displayed periodically |
CRITICAL_BATTERY | robot battery level below 10%, animation displayed periodically |
BATTERY_STATE | robot current battery level, displayed periodically |
CHARGING_BATTERY | charger is connected and the robot is charging |
Customize LED animations
You can easily customize Panther LED panels by defining new animations based on images. They can be created with simple YAML snippet, such as the one shown below:
# user_animations.yaml
user_animations:
# animation with default image and custom color
- id: 21
name: 'ANIMATION_1'
priority: 2
animation:
both:
type: image_animation
image: $(find panther_lights)/animations/strip01_red.png
duration: 2
repeat: 2
color: 0xffff00
You also have the option to create code-based animations. Detailed information on how to make use of these features, as well as a detailed description of default behavior and customization options for Panther LED panels, can be found in panther_lights documentation.
Display LED animation
To display one of predefined animations use /panther/lights/controller/set/animation
service of type panther_msgs/SetAnimation
. Example:
rosservice call /panther/lights/controller/set/animation "animation:
id: 1
param: 0.0
repeating: false"
Controlling ROS nodes with Docker
The Panther robot uses Docker to launch ROS nodes on the main computer. By default, three Docker containers are launched:
ros_master
- starts the ROS master nodepanther_ros
- starts default Panther nodeswebui-ros-joystick
- starts the WebUI
Docker containers can be controlled (eg. stopped, restarted) and configured (eg. modify restart policy) by logging into the main computer (default ssh husrion@10.15.20.2
pass:husarion
) and using standard Docker commands and parameters. For more information on how to control Docker containers refer to Using Docker images.
Controlling Panther robot
By default, the robot can be controlled using /cmd_vel
topic. Panther will process all messages sent to the topic and provide output velocity to wheels unless E-stop is triggered. Below described are some tools allowing to control Panther robot but any software publishing to /cmd_vel
topic will be valid.
To control Panther robot with /cmd_vel
topic E-stop state have to be reset. It can be done using ROS service or the WebUI.
For safety reasons if some messages are being published to /cmd_vel
while e-stop is triggered it is impossible to reset it.
WebUI
WebUI is a default tool launched when Panther robot starts. It is a simple browser-based interface that can be accessed under 10.15.20.2:8000. It allows handling the Panther robot E-stop and controlling its movement. E-stop state can be changed using the button in the top right corner of the app. When resetting E-stop a pop-up window will ask for confirmation. The RED/GREEN ring around the joystick indicates if the robot is ready to move. Use a joystick to move the robot around. For more information see webui-ros-joystick GitHub page.

To use the Web interface your device have to be connected to Panther's hotspot, see Connecting to Panther's hotspot
Gamepad with Joy2Twist
The ROS Joy2Twist node allows controlling the Panther robot with a gamepad. By default, it can be used with the F710 gamepad, but the node can be configured to work with any gamepad controller. Joy2Twist can be easily applied using Docker. To control Panther with the gamepad hold the LB
button and use the right stick to drive forward/reverse (and left/right when using mecanum wheels) and the left stick to turn the robot. For more information on how to run and use it see the Joy2Twist GitHub page.
teleop_twist_keyboard
A teleop_twist_keyboard ROS package is one of the basic ROS tools that allows to control a robot. It converts keyboard input to velocity commands published to the /cmd_vel
topic. It can be easily installed and applied on any device with ROS. For more information on how to run and use it see teleop_twist_keyboard.
Do not try controlling the robot from different sources at once. It may cause unpredictable behavior.
Operating System image reinstallation
In some cases you will need to restore Panther's system to its default settings:
- in case of accidental damage of the system,
- to update the OS,
- to clear all user changes and restore factory settings.
Find the full instruction here
Network
Overview
Panther is equipped with a RUTX11 router running open-source firmware OpenWRT, which provide following interfaces:
Ethernet
- 1 x WAN 10/100/1000 Mbps (by default configured as a LAN port)
- 3 x LAN 10/100/1000 Mbps
- 3 ports are available for user equipment
Wireless
- Two radios (2.4 GHz and 5 GHz)
- Support for 802.11ac (Wi-Fi 5) with link rate up to 867Mbps, fast roaming with 802.11r
- Works as access point (AP) and/or as a client/station (STA)
- External antennas with 2dBi gain (standard equipment of 'Pth10')
Cellular
- Dual-Sim with fail-over
- LTE (4G) Cat 6
- Two external antennas with 3dBi gain (equipped as an option 'Ant01')
GNSS
- Support for GPS, GLONASS, Galileo and BeiDou
- Integrated into ROS
- 1 Hz refresh rate
- CEP-50 of 2.5m
- External antenna (equipped as an option 'Ant02')
Each form of connectivity can be part of automatic WAN fail-over in order to provide continuous connection to external services. More information is available on manufacturer site. Some RUTX11 configuration scripts are available on our GitHub repository.
Connecting to Panther's hotspot
Panther provides hotspot with default SSID Panther_XXXX
and Panther_5G_XXXX
for 2.4 GHz and 5 GHz band respectively with password husarion
, where XXXX
is unique S/N of your Panther.
Connecting Panther to a Wi-Fi
Panther can be connected Wi-Fi on 2.4GHz or 5GHz band. It will be used as WAN source and be prioritized over cellular connection. Single radio can act simultaneously as AP (access point) and STA (client).
We advise using 2.4GHz radio as an up-link.
By default, Panther scans for available networks and connect to first one provided in configuration file. In case of low signal level or lost of signal, next one on list will chosen (if available). This behavior can be modified by user.
You can find a step-by-step tutorial how to connect your Panther to Wi-Fi in Panther - quick start.
Due to limitation of Wi-Fi chipset, it is not possible to scan for available networks, while providing AP on 5 GHz interface. It's advised to use 2.4 GHz for WAN uplink. For more information, go to documentation on our GitHub repository
Remote access
You can access your Panther over the Internet, from any place in the world. You can use the preinstalled Husarnet VPN service. To access your robot follow steps from here.
Using a cellular connection
If your Panther is equipped with ANT02 option it is possible to use cellular connection with failover to second SIM and priority of WLAN connection over cellular.
Installing a SIM card(s)
First open Cover following instruction, then you can access Teltonika RUTX11 SIM slots, more detail here.
Configuration of SIM slots
In default configuration, each SIM slot is enabled with automatic APN and priority of WLAN connection over cellular. If you need to change settings such as: PIN code, custom APN, CHAP/PAP authentication go to our GitHub repository for more information.
Access to router WebUI
Further configuration can be done through WebUI, which is available under 10.15.20.1
address. Login with username admin
and password Husarion1
. Consult Teltonika RUTX11 manual for more information.
It is advised to change default password.
Resetting router to default settings
In case of misconfiguration it is possible to reset router to working default settings (as shipped to you). To do it press and hold reset button on powered on RUTX11 for at least six seconds. Signal strength LEDs indicate elapsed time. After all five LEDs are lit up, reset button can be released. After automatic restart router is ready to be used again.
Safety
- Panther v1.2
- Panther v1.0 - v1.06
The robot has been equipped with solutions for the safe use of the equipment, both in the software and hardware layer.
Please take this chapter seriously. Inadequate and irresponsible using of the robot may cause damage to the device, the workplace and people in the vicinity.
The robot is equipped with an Emergency Management Unit (EMU). It is a system that takes control of the robot's components as well as its power in crisis situations. The EMU can stop the robot's movement, turn off the power of the user's device, or even turn off the entire robot, if so configured. It also provides dedicated electrical User Safety Interface (USI) led out to the User Space.
Due to the appearance of any trigger, such as CPU crash or Emergency button press, the EMU call and latch E-stop signal. This means that in such situations, for the further work of the robot, the problem should be resolved and then the E-stop latch should be reset.
This chapter describes only the basic default EMU configuration, however the system is configurable. To learn more about the possibilities and how to configure it, visit a separate article - EMU configuration
The robot has been equipped with solutions for the safe use of the equipment, both in the software and hardware layer.
Please take this chapter seriously. Inadequate and irresponsible using of the robot may cause damage to the device, the workplace and people in the vicinity.
Hardware
- Panther v1.2
- Panther v1.0 - v1.06
Emergency button
On the rear side of the robot there is a red Emergency push button. Pushing the Emergency button causes:
- activate E-stop signal and latch it,
- actively brake the robot using motors,
- toggle a SPDT relay (external E-stop output).
These actions are default EMU configuration. To learn more about the possibilities and how to configure it, visit a separate article - EMU configuration
User Safety Interface (USI)
USI is an electrical hardware interface for EMU designed to integrate Panther with the user's equipment. This thread is covered in details in the Emergency Management Unit article in chapter User Safety Interface.
Emergency button
On rear side of the robot there is red Emergency push button. Pushing the Emergency button completely cuts off the power to the device.
Cutting off the computer's power may cause data loss.
Docs and links
All helpful documents and links in one place:
- Panther v1.2
- Panther v1.0 - v1.06
- Safety instructions - to avoid malfunction or damage your Panther please read this safety manual before use
- Panther schematic block diagram - basic robot components and connections between them
- Panther Overall Dimensions - three basic projections of the platform in all wheel options
- [Panther Origin point and center of mass]( "Husarion Panther Origin point and center of mass") - robot projections with marked mass center
- Panther power consumption and run time - description of Panther power consumption and run time in different working conditions
- Panther WH03 - wheel swap manual - instructions for WH03 package option, to swap between off-road and mecanum wheels
- Panther PC02 - installation manual - instructions for PC02 package option, to install user computer
- pnather_ros repository - Packages composing basic funcinalities of the Husarion Panther robot
- panther_simulation repository - Simulation models for Panther (including Gazebo)
- panther_msgs repository - Custom ROS messages and services for Panther
- panther_docker repository - Docker image with a Panther ROS package
- ros_components_description repository - URDF models of sensors and other components offered alongside with Husarion robots
- Teltonika RUTX11 manual
- Teltonika RUTX11 datasheet
- Panther options
- Safety instructions - to avoid malfunction or damage your Panther please read this safety manual before use
- Panther schematic block diagram - basic robot components and connections between them
- Panther Overall Dimensions - three basic projections of the platform in all wheel options
- Panther Origin point and center of mass - robot projections with marked mass center
- Panther power consumption and run time - description of Panther power consumption and run time in different working conditions
- Panther WH03 - wheel swap manual - instructions for WH03 package option, to swap between off-road and mecanum wheels
- Panther PC02 - installation manual - instructions for PC02 package option, to install user computer
- pnather_ros repository - Packages composing basic funcinalities of the Husarion Panther robot
- panther_simulation repository - Simulation models for Panther (including Gazebo)
- panther_msgs repository - Custom ROS messages and services for Panther
- panther_docker repository - Docker image with a Panther ROS package
- ros_components_description repository - URDF models of sensors and other components offered alongside with Husarion robots
- Teltonika RUTX11 manual
- Teltonika RUTX11 datasheet
- Panther options