Basic Fleet Management Use Case
This tutorial tests your install by setting up the fleet management server to guide an EI for AMR to the docking station when its battery reaches the 40% threshold.
You must do all of the sections in this tutorial in the order listed.
Machine A is the server.
Machine B is an EI for AMR target that sends data to the server and receives instructions (the robot).
Machine A and Machine B need to be in the same network.
Prerequisites: The robot and the server are configured as instructed in their Get Started Guides:
Configuring the client: Get Started Guide for Robots.
Configuring the server: Get Started Guide for Robot Orchestration.
Build, and Configure the Basic Fleet Management Client
On Machine B
Go to the AMR_containers folder:
cd <edge_insights_for_amr_path>/Edge_Insights_for_Autonomous_Mobile_Robots_<version>/AMR_containers
Set up the environment variables necessary to run docker-compose commands:
cd <edge_insights_for_amr_path>/Edge_Insights_for_Autonomous_Mobile_Robots_202*/AMR_containers/ source 01_docker_sdk_env/docker_compose/05_tutorials/config/docker_compose.source
Make sure that the server public key generated in the previous step is copied to the right path in client sources and that it does not contain the default dummy content:
cat 01_docker_sdk_env/artifacts/02_edge_server/edge_server_fleet_management/thingsboard.pub.pem
Generate configuration file:
chmod 775 ./01_docker_sdk_env/artifacts/01_amr/amr_fleet_management/turtle_creek_client/cloud_source chmod +x ./01_docker_sdk_env/artifacts/01_amr/amr_fleet_management/turtle_creek_client/fleet_client_prereq.sh sudo ./01_docker_sdk_env/artifacts/01_amr/amr_fleet_management/turtle_creek_client/fleet_client_prereq.sh <Server-IP> <PORT> y 8nwWlQnkdZn5HShvRekx TGL1-i7
NOTE:Parameters: <Server-IP><PORT><TLS:Y/N><DeviceToken><product-name-of-robot><Server-IP>: Use the Controller IP if Intel® Smart Edge Open Multi-Node is deployed. Use ThingsBoard* server pod’s IP if Intel® Smart Edge Open Single-Node is deployed.
<PORT>: Use 32767 as the one configured in the Intel® Smart Edge Open playbook.
<TLS>: Default use Y to enable TLS connection with ThingsBoard* server.
<DeviceToken>: Default now with preconfigured db. New one can be used when a new device profile is created in the ThingsBoard* server.
<product-name-of-robot>: Get the product name of the robot by running sudo dmidecode -t system | grep Product
Each time you change the above parameters, do not forget to rerun the fleet_client_prereq.sh script.
Build the basic fleet management Docker* image:
docker-compose -f 01_docker_sdk_env/docker_compose/01_amr/amr-sdk.all.yml build fleet-management
Install the battery-bridge kernel module:
When the EI for AMR (machine B) uses an actual battery, the sensor-driver of the robot provides the corresponding driver’s ros-interface, which writes battery status into generic ros2-topic interface /sensors/battery_state. However, this information is usually not transmitted to the generic OS interface /sys/class/power_supply. Components that interact with OS directly (for example, Intel® In-Band Manageability), cannot get battery-information from OS.
To bridge this gap, a ROS component battery-bridge and a kernel module battery-bridge-kernel-module is provided. Using this battery-bridge, battery-status can be transmitted via a kernel module to standard OS interface /sys/class/power_supply.
Koboki driver and Kobuki-ros-interface is proven to be working with battery-bridge and battery-bridge-kernel-module components.
cd components/amr_battery_bridge_kernel_module/src/ chmod a+x module_install.sh # below command will install battery-bridge-kernel-module sudo module_install.sh # to uninstall battery-bridge-kernel-module (if needed) sudo module_install.sh -u
Known Limitations
Make sure that UEFI Secure Boot is disabled:
Go to the BIOS menu.
Open Boot > Secure Boot.
Disable Secure Boot.
If the battery-bridge-kernel-module cannot be installed, see: Troubleshooting for Robot Orchestration Tutorials, “battery-bridge-kernel-module Install Failure”.
Start the Basic Fleet Management Client Deployment
On Machine B
Go to the AMR_containers folder:
cd Edge_Insights_for_Autonomous_Mobile_Robots_*/AMR_containers/ source 01_docker_sdk_env/docker_compose/05_tutorials/config/docker_compose.source export CONTAINER_BASE_PATH=pwd
Run the Basic Fleet management turtle_creek_client container:
CHOOSE_USER=root docker-compose -f 01_docker_sdk_env/docker_compose/01_amr/amr-sdk.all.yml up amr-fleet-management
Run the wandering app microservices:
CHOOSE_USER=root docker-compose -f 01_docker_sdk_env/docker_compose/05_tutorials/aaeon_wandering_remote_inference.yml up battery-bridge realsense aaeon-amr-interface ros-base-camera-tf collab-slam fastmapping nav2 wandering vda5050-ros2-bridge
If no battery bridge installed, run:
CHOOSE_USER=root docker-compose -f 01_docker_sdk_env/docker_compose/05_tutorials/aaeon_wandering_remote_inference.yml up realsense aaeon-amr-interface ros-base-camera-tf collab-slam fastmapping nav2 wandering vda5050-ros2-bridge
Log into the Basic Fleet Management Server
On Machine A
Open the Basic Fleet Management Dashboard:
NOTE:VNC interferes with the Intel® Smart Edge Open installation. Intel recommends that you open the Basic Fleet Management Dashboard on a different system, as the dashboard is accessible via internet.# Open a browser, use controller IP and open: <IP Address>:32764
NOTE:Use the following credentials:account: tenant@thingsboard.org
password: tenant
If the Fleet Management Server Dashboard is not accessible on a system in the same network, check Troubleshooting for Robot Orchestration Tutorials, “Fleet Management Server Dashboard over LAN Issues”.
The following home page is loaded. Device Profiles and Devices are loaded with pre-configured data from Intel.
Check the pre-configured device profile from Intel named: INB.
The Root Rule Chain is associated with the pre-defined Device Profile “INB.”
Definitions in this Root Rule Chain determine how incoming and outgoing messages are processed for all devices registered in this profile.
Check the pre-configured Root Rule Chain from ThingsBoard*.
Open the Rule:
Intel added the following to the Rule:
The second PostTelemetry path (in order to not interfere with the original ThingsBoard* processing)
The three circled nodes (in order to send the robot to the charging station when its battery is less than 40%)
The BatteryStatusCheck node validates the battery level: when the battery level is less than 40%, it is set to true to form the VDA5050 message.
NOTE:To add new clients to the fleet management server, see Troubleshooting for Robot Orchestration Tutorials, “Add New Clients to the Fleet Management Server”.
Check out the Dashboard tailored for Intel® In-Band Manageability.
Open the Dashboard:
The Dashboard shows Device basic information and telemetry data, for example:
The INB_Fleet_Management_Client device is currently online.
The battery status is numeric and presented as an average value.
The battery level is 35 (hover over the grey line representing battery value by time to see this).
NOTE:Prerequisite: The battery reading is facilitated with a Python* psutil library call in Intel® In-Band Manageability. The function of psutil depends on the host where the basic fleet management client is deployed. Make sure the battery value is reflected in the psutil API call. If the battery is not reported as expected, see Troubleshooting for Robot Orchestration Tutorials, “Battery Status Not Available in Dashboard”.
Check the VDA event logs when the battery level goes under 40%.
Go to the separate VDA terminal. The logs are similar to this:
Check the Wandering application logs when the battery level goes under 40%.
The logs are similar to this:
[wandering_mapper]: GoToLocation
Collaboration Diagram
When a robot’s battery level is less than 40%, basic fleet management tells the robot to move to the origin position. The following figure depicts the steps.