User Computers
This subpage contains additional descriptions and manuals about Panther's User Computers not included in Panther options.
Mounting the User Computer
Overview
Panther platform can be configured with the option PC02. The Intel NUC User Computer is mounted in a dedicated place on User Shelf inside Panther. The instructions below will guide you on how to mount and set it up within your robot.
Mounting in Panther
- PC02 - Intel NUC
- Custom User Computer
-
Turn off Panther.
-
Open the Cover following instruction, then you can access the inside of the User Space.
-
To remove the User Shelf loosen 6 x DIN 912 M5x12 screws and disconnect cables connected between the router and Panther.
-
Mount PC02 using supplied screws (M3x8) to User Shelf.
-
Place the User Shelf in Panther and tighten 6 x DIN 912 M5x12 screws.
-
Plug-in supplied power cable:
- DC5.5 mm to PC02
- XT60 to 19 V connector in User Power Panel.
When the User Computer is supplied and mounted:
-
Plug the supplied Ethernet cable into the User Computer and Teltonika RUTX11 router.
-
Close the Cover following instruction.
-
Turn off Panther.
-
Open the Cover following instruction, then you can access the inside of the User Space.
-
Before set up make sure you have read User Power Panel documentation. Connect your Custom User Computer to the user power panel. You can use 5V, 12V or 19V.
When the User Computer is supplied and mounted:
-
Plug the supplied Ethernet cable into the User Computer and Teltonika RUTX11 router.
-
Close the Cover following instruction.
-
Network setup
By default the network mask is 255.255.255.0
and the devices' IPs begin with 10.15.20.XX
. The default static IPs are:
- RUTX11
10.15.20.1
- an internal router with an access point and a DHCP server, - Built-in Computer
10.15.20.2
- a SBC with Panther's driver, - Additional: User Computer
10.15.20.3
- look at Computer (PC), - Additional: a manipulator
10.15.20.4
- look at Manipulators (MAN).
Applying DHCP Static Lease
-
Access to Router WebUI using this instruction.
-
Make sure that
Mode advanced
is enabled. Check it in the top right corner. IfMode Basic
is shown, click on it to change it. -
Go to Network --> Interfaces and click edit on
Lan Network
. -
Edit
Static lease
namednuc
. Next, type in the MAC address (supplied during purchase) and clickSave and apply
. If you do not know the MAC address, you can find it under Status --> Network --> LAN page. By default, the User Computer inside Panther has IP10.15.20.3
, but it can be changed to any value in the range between10.15.20.3
to10.15.20.254
. -
You can access the User Computer through its new IP (default:
10.15.20.3
). If it is not available, turn off and back on Panther.
Enable Internet connection in the RUX11
There are 2 ways to enable Internet connection of the Built-in Computer and of the User Computer. You can connect RUTX11 to existing Wi-Fi network which has access to the Internet or you can use a SIM card with LTE.
Connect the RUTX11 to another Wi-Fi
Connect the RUTX11 to another Wi-Fi network using the Configuration examples > Client Mode
section from the producer's instruction.
Use LTE to get access to the Internet
Inset a SIM card to the RUTX11 following the producer's instruction and then active LTE following the producer's instruction.
Configure time synchronization with the Built-in Computer
The built-in computer uses Chrony to establish an NTP server. For optimal performance, the user's computer should be configured as an NTP client.
-
Check if Chrony is installed:
user@any:~$chronyd --version
-
If Chrony is not installed, install it with the following command:
user@any:~$sudo apt install chrony
-
Edit the configuration file:
user@any:~$sudo nano /etc/chrony/chrony.conf
Add the following line:
server 10.15.20.2 iburst prefer
Save the changes (ctrl+s) and exit the file (ctrl+x).
-
Restart chrony:
user@any:~$sudo systemctl restart chrony.service
-
Check if the synchronization was successful (it may take a moment before Chrony to restart):
user@any:~$chronyc tracking
The
Reference ID
field should contain the IP address of the Built-in Computer (10.15.20.2
) or haverpi
in the name. Example output:Reference ID : 0A0F1402 (rpi.lan)
Stratum : 3
Ref time (UTC) : Tue Jun 18 09:03:48 2024
System time : 0.000016993 seconds fast of NTP time
Last offset : +0.000017369 seconds
RMS offset : 0.000017369 seconds
Frequency : 11.877 ppm slow
Residual freq : +0.359 ppm
Skew : 2.391 ppm
Root delay : 0.029849635 seconds
Root dispersion : 0.003227041 seconds
Update interval : 64.3 seconds
Leap status : Normal
Configuring Soft Shutdown with any User Computer
Following these steps will allow the Built-in Computer to request the shutdown procedure on the User Computer or any computer you install.
If you set up your User Computer with the default 10.15.20.3
IP address and username husarion
select the Default configuration tab. In case the IP address or username differs from the defaults, select Custom configuration tab.
The Built-in Computer's ROS 2 driver is capable of shutting down not only one User Computer but as many as you want. It is also capable of running custom shutdown commands and much more. Refer to the panther_manager ROS 2 package documentation to see how to edit shutdown_hosts.yaml to reflect your needs.
- Default configuration
- Custom configuration
The default configuration assumes the system was installed following the steps in User Computer system reinstallation.
-
From any device in Panther's network connect to the Built-in Computer via SSH:
user@any:~$ssh husarion@10.15.20.2
-
Exchange SSH public keys between the Built-in Computer and the User Computer with:
husarion@10.15.20.2:~$ssh-copy-id husarion@10.15.20.3
By default, the ROS driver on the Built-in Computer will try to shutdown the User Computer at
10.15.20.3
IP address with the usernamehusarion
and the commandsudo shutdown
. That is why no other changes are required for it to work in the default configuration.
-
Connect to your User Computer a mouse, a keyboard and a monitor. On your User Computer set a static ip to
10.15.20.XX
and a netmask to255.255.255.0
. Check if your User Computer established correct connection with the RUX11 by:husarion@10.15.20.3:~$ping 10.15.20.1
and with the Built-in computer:
husarion@10.15.20.3:~$ping 10.15.20.2
-
SSH into the User Computer where
XX
is the IP address in step Applying DHCP Static Lease, andusername
is the name of the user you want to log in to:user@any:~$ssh username@10.15.20.XX
-
Allow your computer to use
shutdown
without providing password typing:CHANGE THE USERNAMEChange the
username
in the command below to the one from step 1.username@10.15.20.XX:~$echo username 'ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown' | sudo EDITOR='tee -a' visudo
-
Exit the terminal session with the User Computer by typing
exit
. -
SSH into the Built-in Computer with:
user@any:~$ssh husarion@10.15.20.2
-
Exchange SSH public keys between the Built-in Computer and the User Computer. The username and IP address have to be the same as in step 1:
husarion@10.15.20.2:~$ssh-copy-id username@10.15.20.XX
-
Create the shutdown_hosts.yaml file on the Built-in Computer with the command:
husarion@10.15.20.2:~$nano shutdown_hosts.yaml
-
Paste the following content into the file:
hosts:
- ip: 10.15.20.XX
username: username -
Edit the IP address and username in shutdown_hosts.yaml to match those from step 1.
-
Save the file by pressing
Ctrl+s
,Ctrl+x
. -
Edit the Docker compose file with
nano compose.yaml
. -
In the volumes section of the panther_ros Docker container add:
volumes:
# other volumes
- ./shutdown_hosts.yaml:/shutdown_hosts.yaml
- ROS 2
- ROS
-
In the command section of the panther_ros Docker container add:
command: >
ros2 launch panther_bringup bringup.launch.py
namespace:=panther
shutdown_hosts_config_path:=/shutdown_hosts.yaml
-
In the command section of the panther_ros Docker container add:
command: >
roslaunch --wait
panther_bringup bringup.launch
exit_on_wrong_hw:=false
shutdown_hosts_config_file:=/shutdown_hosts.yaml
- Save the file by pressing
Ctrl+s
,Ctrl+x
. - Restart Docker containers
docker compose up -d --force-recreate
.
After following those steps, when the Power Button is pressed sudo shutdown
will be invoked on the User Computer. The Built-in Computer will wait for the User Computer until it gracefully shuts down before shutting down itself and powering off the robot.
Accessing ROS from the User Computer.
- ROS 2
- ROS
The Panther ROS driver uses rmw_cyclonedds_cpp
as the default communication middleware. For optimal quality of service, ensure that the RMW_IMPLEMENTATION
environment variable is set. To do so, run the following command: export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
.
Panther's ROS 2 API is described here. Make sure ROS 2 Driver is set up on the Built-in Computer and you have Internet connection. To access Panther's Driver from the User Computer you can use natively installed ROS 2 or Docker.
- ROS 2 natively installed
- Docker way
-
To get started, please install on your User Computer ROS 2 Humble on Ubuntu 22.04.
-
To drive Panther install
teleop_twist_keyboard
:husarion@10.15.20.3:~$sudo apt install ros-humble-teleop-twist-keyboard
-
Reset e-stop using service call:
husarion@10.15.20.3:~$ros2 service call /panther/hardware/e_stop_trigger std_srvs/srv/Trigger
-
Run
teleop_twist_keyboard
and drive the robot:husarion@10.15.20.3:~$ros2 run teleop_twist_keyboard teleop_twist_keyboard.py
-
Install Docker Engine and Docker Compose on your User Computer.
-
Pull Panther image:
husarion@10.15.20.3:~$docker pull ros:humble
-
Update
apt
:root@docker:/#apt update
-
To drive Panther install
teleop_twist_keyboard
:root@docker:/#apt install ros-humble-teleop-twist-keyboard
-
Reset e-stop using service call:
root@docker:/#ros2 service call /panther/hardware/e_stop_trigger std_srvs/srv/Trigger
-
Run
teleop_twist_keyboard
and drive the robot:root@docker:/#ros2 run teleop_twist_keyboard teleop_twist_keyboard.py
The Built-in Computer's ROS driver is capable of shutting down not only one User Computer but as many as you want. It is also capable of running custom shutdown commands and much more. Refer to the panther_manager ROS package documentation to see how to edit shutdown_hosts.yaml to reflect your needs.
Panther's ROS API is described here. Make sure ROS Driver is set up on the Built-in Computer and you have Internet connection. To access Panther's Driver from the User Computer you can use natively installed ROS or Docker.
- ROS natively installed
- Docker way
-
To get started, please install on your User Computer ROS Noetic on Ubuntu 20.04.
-
To drive Panther install
teleop_twist_keyboard
:husarion@10.15.20.3:~$sudo apt install ros-noetic-teleop-twist-keyboard
-
Set
ROS_MASTER_URI
to RPi:husarion@10.15.20.3:~$export ROS_MASTER_URI=http://10.15.20.2:11311
-
Reset e-stop using service call:
husarion@10.15.20.3:~$rosservice call /panther/hardware/e_stop_trigger "{}"
-
Run
teleop_twist_keyboard
and drive the robot:husarion@10.15.20.3:~$rosrun teleop_twist_keyboard teleop_twist_keyboard.py _repeat_rate:=10.0
-
Install Docker Engine and Docker Compose on your User Computer.
-
Pull Panther image:
husarion@10.15.20.3:~$docker pull ros:noetic
-
Update
apt
:root@docker:/#apt update
-
To drive Panther install
teleop_twist_keyboard
:root@docker:/#apt install ros-noetic-teleop-twist-keyboard
-
Set
ROS_MASTER_URI
to RPi:root@docker:/#export ROS_MASTER_URI=http://10.15.20.2:11311
-
Reset e-stop using service call:
root@docker:/#rosservice call /panther/hardware/e_stop_trigger "{}"
-
Run
teleop_twist_keyboard
and drive the robot:root@docker:/#rosrun teleop_twist_keyboard teleop_twist_keyboard.py _repeat_rate:=10.0