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:
If the date is incorrect, contact your local support team for help setting the correct date and time.
If you set up proxies using export, sudo does not know about them. You must use sudo -E ./edgesoftware to install the bundle:
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.
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.
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.
 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.
Unable to Play ROS 1 Bags
To play a ROS 1 bag in our ROS 2 environment, do the following.
Prepare the environment, and start full-sdk:
docker-compose -f 01_docker_sdk_env/docker_compose/01_amr/amr-sdk.all.yml run --name full-flavour-sdk full-sdk bash
In a different terminal, attach to this Docker* image:
docker exec -it full-flavour-sdk bash
Download and set the ROS_DOMAIN_ID to know where you want to publish the data:
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:
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:
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:
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
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
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.
ROS_DOMAIN_ID: <choose ID>
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.
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>"
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:
./run_interactive_docker.sh eiforamr-full-flavour-sdk:<release_tag> eiforamr