Troubleshooting
If you’re unable to resolve your issues, go to the Support Forum.
Installation Failure Due to bad system date
Make sure you that your system has the correct date:
date
If the date is incorrect, contact your local support team for help setting the correct date and time.
Proxies Error
If you set up proxies using export, sudo does not know about them. You must use sudo -E ./edgesoftware to install the package:
sudo -E ./edgesoftware
Installation Failure Due to Lost Internet Connection
Make sure you have an active Internet connection during the full installation. If you lose Internet connectivity at any time, the installation might fail.
Ubuntu* Errors
Make sure you are using a fresh Ubuntu* installation. Earlier software, especially Docker* and Docker* Compose, can cause issues.
Rate Limit Error
For the following error message, go to Docker* hub download rate limit.
docker: Error response from daemon: toomanyrequests: You have reached your pull rate limit.
Credential Errors
Example credential errors:
Error saving credentials: error storing credentials - err: exit status 1, out: `Error calling StartServiceByName for org.freedesktop.secrets: Timeout was reached ERROR: rpc error: code = Unknown desc = error getting credentials - err: exit status 1, out: `Error calling StartServiceByName for org.freedesktop.sec rets: Timeout was reached`
To fix, use the working solution from this thread:
sudo apt update sudo apt -V install gnupg2 pass
https Communication Errors
For errors related to https communication, make sure that DNS filtering is not filtering out sites. For example, the edgesoftware installer uses the site ip-api.com to get geographic locations. If this site is filtered out by DNS filtering, you get this error:
requests.exceptions.ConnectionError: HTTPConnectionPool(host='ip-api.com', port=80): Max retries exceeded with url: /json/ (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f8ffc530400>: Failed to establish a new connection: [Errno -2] Name or service not known'))
To fix, do not block ip-api.com through DNS filtering or firewalls.
Installation as Different Users Error
If EI for AMR was installed on the same system using a different user than the current user, you may encounter an error when doing Step 7: Install the Edge Insights for Autonomous Mobile Robots Software.
The error is similar to:
Successfully installed eiforamr-full-flavour-sdk took 32 minutes 49.44 seconds Traceback (most recent call last): File "PyInstaller/loader/pyimod04_ctypes.py", line 54, in __init__ File "ctypes/__init__.py", line 373, in __init__ OSError: /opt/intel/lanternrocksdk-linux-3.0.90/native/lib/libstdc++/libstdc++.so: cannot open shared object file: Permission denied The above exception was the direct cause of the following exception: Traceback (most recent call last): File "edgesoftware/edgesoftware.py", line 536, in <module> File "click/core.py", line 1128, in __call__ File "click/core.py", line 1053, in main File "click/core.py", line 1659, in invoke File "click/core.py", line 1395, in invoke File "click/core.py", line 754, in invoke File "edgesoftware/edgesoftware.py", line 101, in install File "edgesoftware/functions.py", line 850, in setup_start File "edgesoftware/functions.py", line 742, in run_installation File "edgesoftware/common/utils.py", line 1052, in send_LR_data File "edgesoftware/common/utils.py", line 2490, in import_LR_helper File "ctypes/__init__.py", line 451, in LoadLibrary File "PyInstaller/loader/pyimod04_ctypes.py", line 56, in __init__ pyimod04_ctypes.PyInstallerImportError: Failed to load dynlib/dll '/opt/intel/lanternrocksdk-linux-3.0.90/native/lib/libstdc++/libstdc++.so'. Most probably this dynlib/dll was not found when the application was frozen. [3897] Failed to execute script 'edgesoftware' due to unhandled exception!
The installation process will complete even if you encounter this issue.
To avoid this error, change /opt/intel ownership to the current user as shown below:
sudo chown -R intelamr:intelamr /opt/intel/
Downloading Incorrect Components Error
There is a known issue with the list of images displayed in Available with your selection being different then expected.
If you select the Server Complete Kit and then select the Robot Complete Kit, the displayed text is for the Robot and Sever Complete Kit. Also, the incorrect components you see in the Available with your selection section are downloaded when you install the release.
To fix this, refresh the webpage, and re-select the bundle you want to download.
This guide lists common troubleshooting tips for robot tutorials.
Permission Denied Error
For a permission denied error when running a script:
$ ./run_interactive_docker.sh eiforamr-full-flavour-sdk:<TAG> eiforamr bash: ./run_interactive_docker.sh Permission denied
Give executable permission to the script:
chmod 755 run_interactive_docker.sh
DISPLAY Environment Variable Error
For errors related to the DISPLAY environment variable when trying to open the Docker container or a GUI application, enter the command:
echo $DISPLAY
If this variable is empty, it will cause issues when opening applications that need GUI.
The most common solution is to give it the 0:0 value:
export DISPLAY= "0:0"
If the connection with the system is via VNC, DISPLAY should be already set.
If it is not, find out the value of DISPLAY set by vncserver and then set the correct value:
For example:
ps ax |grep vncserver /usr/bin/Xtigervnc :42 -desktop .... /usr/bin/perl /usr/bin/vncserver -localhost no -geometry 1920x1000 -depth 24 :42 export DISPLAY= ":42"
Use ROS_DOMAIN_ID to Avoid Interference in ROS Messages
A typical method to demonstrate a use case requires you to start a container (or group of containers) and exchange ROS messages between various ROS nodes. However, interference from other ROS nodes can disrupt the whole process. For example, you might receive ROS messages from unknown nodes that are not intended for the demo use case. These other nodes could be on the same host machine or on other host machines within the local network. In this scenario, it can be difficult to debug and resolve the interference.
You can avoid this by declaring ROS_DOMAIN_ID as a fixed numeric value per use case, under the following conditions:
The ROS_DOMAIN_ID should be same for all containers launched for a particular use case.
The ROS_DOMAIN_ID should be an integer between 0 and 101.
After launching the container, you can declare it with:
export ROS_DOMAIN_ID=<value>
For more information, go to: ROS_DOMAIN_ID
To add the ROS_DOMAIN_ID, you can choose any of the below options.
Add it in the common.yml file for all containers:
# In file 01_docker_sdk_env/docker_compose/common/common.yml # ROS_DOMAIN_ID can be added that applies to all use cases services: common: environment: ROS_DOMAIN_ID: <choose ID>
Add it in the .env file for all containers:
# In file 01_docker_sdk_env/docker_compose/01_amr/.env # add below line and provide ROS_DOMAIN_ID ROS_DOMAIN_ID=<choose ID>
Add it in the specific yml file for a specific use case for specific targets:
# In the below example, ROS_DOMAIN_ID is added in ros-base target # For any use case where this target is used, the ROS_DOMAIN_ID will be set to the given value. services: ros-base: image: ${REPO_URL}amr-ubuntu2004-ros2-foxy-ros-base:${DOCKER_TAG:-latest} container_name: ${CONTAINER_NAME_PREFIX:-amr-sdk-}ros-base environment: ROS_DOMAIN_ID: <choose ID> env_file: - ./.env extends:
Add it in the specific yml file in the command: section and apply only after launching the containers:
# In file 01_docker_sdk_env/docker_compose/05_tutorials/fleet_mngmnt_with_low_battery.up.tutorial.yml # In the below example, ROS_DOMAIN_ID is set to 58 # You may change it to any new value as per use case requirement. services: battery_bridge: image: ${REPO_URL}amr-ubuntu2004-ros2-foxy-battery_bridge:${DOCKER_TAG:-latest} container_name: ${CONTAINER_NAME_PREFIX:-amr-sdk-}battery_bridge extends: file: ../01_amr/amr-sdk.all.yml service: ros-base volumes: - /dev/battery_bridge:/dev/battery_bridge:rw build: target: battery_bridge network_mode: host restart: "no" command: - | source ros_entrypoint.sh source battery-bridge/src/prebuilt_battery_bridge/local_setup.bash export ROS_DOMAIN_ID=58 sleep 5 ros2 run battery_pkg battery_bridge
Add it while running a container using the run_interactive_docker.sh script:
# by adding env parameter, ROS_DOMAIN_ID can be exported inside container: ./run_interactive_docker.sh <image name> <user> --extra_params "-e ROS_DOMAIN_ID=<choose ID>"
NOTE:You can use any number between 0 and 101 (inclusive), to set ROS_DOMAIN_ID, as long as it is not used by a different ROS system.
Be aware that you can also use these options to modify other environment variables.
System HOME Directory Issues
If your test system uses $HOME mounted in remote volumes, for example, in a network file system (NFS), you may encounter the error below when you try to run a Docker* image using the ./run_interactive_docker.sh script:
docker: Error response from daemon: error while creating mount source path '/nfs/site/home/<user>': mkdir /nfs/site/home/<user>: file exists.
To avoid this, before you run a Docker* image, create a new directory in /tmp (or any locally mounted volume), and set $HOME to the new path:
mkdir /tmp/tmp_home export HOME=/tmp/tmp_home ./run_interactive_docker.sh eiforamr-full-flavour-sdk:<release_tag> eiforamr