Skip to content

sbgisen/lci-rmf-adapter

 
 

Repository files navigation

lci_rmf_adapter (RMF Lift and Door Adapter for LCI)

This package is an implementation of RMF Lift Adapter1 and Door Adapter2 for LCI.

LCI is the cloud-based service provided by Octa Robotics, Inc3 .

It supports,

  • Multiple vendors of elevators (lifts) including Mitsubishi, Hitachi, Toshiba, Fujitec, OTIS and more
  • Multiple vendors of doors and turnstiles including Nabco, Teraoka, Kumahira and more

The base protocol of LCI is RFA4 on MQTT.

This package bridges ROS2 (RMF Lift and Door Adapter) to LCI.

System requirements

  • ROS2 Humble
  • Python packages
    • paho-mqtt < 2.0.0
    • ruamel.yaml

The more detail is exemplified in Dockerfile.

Topics

Message Types ROS2 Topic Description
rmf_lift_msgs/LiftState /lift_states State of the lift published by the lift node
rmf_lift_msgs/LiftRequest /adapter_lift_requests Requests to be sent to the lift supervisor to request operation of lifts
rmf_door_msgs/DoorState /door_states State of the door published by the door node
rmf_door_msgs/DoorRequest /adapter_door_requests Requests to be sent to the door supervisor to request operation of doors

Limitation

  • LiftRequest shall be published when starting to use the lift at the origination floor and after the robot entered the car of the lift (twice in total).
  • When the robot is at the origination floor, LiftRequest.destination_floor shall be "<origination>".
  • After the robot entered the car, LiftRequest.destination_floor shall be "<destination>".
  • For both of LiftRequest, LiftRequest.destination_floor can be set with the format of "<origination>:<destination>". This format is required especially when the backend lift API of LCI requires both "<origination>" and "<destination>" at the first request.
  • The suffix _r is used for the floor name to specify the rear door. This rule applies <origination>, <destination>, LiftRequest.destination_floor and LiftRequest.current_floor.

For example, if the robot wants to use the lift from B1 of the front door to 8F of the rear door,

  • LiftRequest.destination_floor shall be B1:8F_r.
  • The arrival at the final destination can be detected by checking if LiftRequest.current_floor and LiftRequest.door_state are 8F_r and LiftState.DOOR_OPEN respectively.

LCI files

To configure lci_rmf_adapter, the following files are needed.

  • server_config.yaml : Config file to specify what elevators and doors are robot-ready.
  • Cert files: ClientID, client certificate and private key of an LCI Robot Account.

All of them will be provided by Octa Robotics.

server_config_simulator.yaml is the config file for the simulator provided by Octa Robotics.

Please contact [email protected] to obtain the LCI Robot Account for development, which is only allowed to access the simulator.

Docker

To use lci_rmf_adapter quickly, it is recommended to use Docker.

container_manager.sh provides an utility for Docker.

  • Edit LCI_SERVER_CONFIG_YAML and LCI_CERT_DIR in start.sh to fit your environment.
  • sudo ./container_manager.sh start
    • It will build and start the container.
  • sudo ./container_manager.sh login
    • It will login you in the container environment.
  • ./start.sh
    • It will start the Node of lci_rmf_adapter.

Client examples

For Lift

ROS2 Node example is found in the test code for lift.

Its entry point is test_client_lift.sh

Please edit LIFT_NAME, ORIGINATION and DESTINATION in test_client_lift.sh for trial.

LIFT_NAME is of the format /lci/<bldg_id>/<bank_id>/<elevator_id>.

For Door

ROS2 Node example is found in the test code for door.

Its entry point is test_client_door.sh

Please edit DOOR_NAME in test_client_door.sh for trial

DOOR_NAME is of the format /lci/<bldg_id>/<floor_id>/<door_id>.

Use LCI directly

LCI does not only support the elevators (lifts) and the doors but also,

  • signals from alarm systems
  • automatic setting and releasing of security systems
  • the exclusive control of resoruces among multiple robot systems (LCI Sem)
  • the messaging service between robots and humans (LCI Bell)

To use full functionaly of LCI, please use MQTT.

lci_client.py is an implementation of LCI client without ROS2.

Footnotes

  1. https://osrf.github.io/ros2multirobotbook/integration_lifts.html

  2. https://osrf.github.io/ros2multirobotbook/integration_doors.html

  3. https://www.octa8.jp/service/

  4. RFA is the acronym of the Robot Friendly Asset Promotion Association of Japan. RFA publishes the standards for the interfaces between robots and elevators/doors. RFA standards are available for purchase from their homepage. English version is also available.

About

RMF Lift and Door Adapter for LCI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 94.0%
  • Shell 5.1%
  • Dockerfile 0.9%