Get Started Guide

  • 2022.3
  • 09/26/2022
  • Public Content

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 completes 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/
In the above example, the current user is
intelamr
and its group is
intelamr
. Modify the command with your user and group details.

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.

Unable to Play ROS 1 Bags

To play a ROS 1 bag in our ROS 2 environment, do the following.
  1. Prepare the environment, and start full-sdk:
    cd <path to where the EI for AMR was installed>Edge_Insights_for_Autonomous_Mobile_Robots_*/AMR_containers/ source ./01_docker_sdk_env/docker_compose/common/docker_compose.source export CONTAINER_BASE_PATH=`pwd` export ROS_DOMAIN_ID=35 docker-compose -f 01_docker_sdk_env/docker_compose/01_amr/amr-sdk.all.yml run --name full-flavour-sdk full-sdk bash
  2. In a different terminal, attach to this Docker* image:
    docker exec -it full-flavour-sdk bash unset ROS_DISTRO source /opt/ros/noetic/setup.bash source /opt/ros/foxy/setup.bash
  3. Download and set the ROS_DOMAIN_ID to know where you want to publish the data:
    export ROS_DOMAIN_ID=35 wget <ROS 1 BAG> ros2 bag play -s rosbag_v2 <ROS 1 BAG>

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 causes issues when opening applications that need a 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.
  1. 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>
  2. 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>
  3. 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 is 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:
  4. 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
  5. 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>"
    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

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.