Skip to main content

Robot integration runtime for the ARENA

Project description

ARENA-robot

Robot integration runtime for the ARENA.

Installation

Requires Python3.8+ (it probably runs fine on 3.6 and 3.7, but you will need your own NumPy wheels)

From PyPi:

pip install arena-robot

Latest development:

pip install git+https://github.com/arenaxr/arena-robot#egg=arena-robot

Or for development, clone the repo and from inside the directory:

pip install -e .

Modules

arenarobot

Services may be one of the following types:

  • sensor: Primarily takes in data from a hardware device and publishes the data to its own topic. These are usually sensors (ex. IMU, lidar, etc.).
  • processor: Primarily takes in data from another MQTT topic (typically a sensor, controller, or another processor) and publishes transformed data to its own topic. These are usually more computationally-heavy tasks that have been decouples from the sensor service or they are transformations that take in data from multiple sensors, processors, or controllers (ex. VIO, SLAM, navigation, etc.).
  • controller: Primarily takes in data on its own topic and publishes data on its own topic. Controllers usually interact with hardware devices that constantly take in and produce data (ex. a robot, drone, etc.)

Services that stream to MQTT may be started with the arena-robot-service command. See examples/service_sensor_vl53l5cx_lidar_1.json for a service file example. All services require the following arguments:

  • service_type: Required. See below for service types.
  • instance_name: Required. The name of this running service.
  • subtopic: Required. The device subtopic to publish to. For sensors, this will always be prefixed with sensors/. For processors, this will always be prefixed with processors/.
  • interval_ms For services that run repeatedly, this is the interval. Set to -1 by default, which will fire the service once. Set to 0 to fire as fast as possible. This option is ignored for async-based services.

A service can be run with the arenaxr.org instance of ARENA with:

MQTTH=mqtt.arenaxr.org DEVICE=mydevicename arena-robot-service my_service.json

A complete set of example services may be found in the examples directory.

sensor_beluga_serial

This is a Beluga UWB sensor connected via serial:

  • dev_path: Required. Path to the serial dev file device. For example, a Beluga USB serial device commonly shows up on Linux as /dev/ttyACM[0-9]+. Hardware serial ports are often /dev/ttyS[0-9]+. For USB devices, it is best practice to use the full serial device symlink like /dev/serial/by-id/usb-SEGGER_J-Link_000760025484-if00 so that the connection order does not affect the device assignment. If multiple USB devices of the same type are connected, then the /dev/serial/by-path/.* syminks should be used to select the serial device by USB port.
  • beluga_id: Required. ID to assign to Beluga.
  • baudrate: Optional. Defaults to 115200.
  • beluga_rate: Optional. Defaults to 10. Rate in ms that Beluga will query and respond.
  • beluga_channel: Optional. Defaults to unset. See Beluga documentation.
  • beluga_tx_power: Optional. Defaults to unset. See Beluga documentation.
  • beluga_timeout: Optional. Defaults to unset. See Beluga documentation.
  • beluga_twr_mode: Optional. Defaults to unset. See Beluga documentation.
  • beluga_led_mode: Optional. Defaults to unset. See Beluga documentation.

sensor_licosa_serial

This is a LiCosa IMU and lidar sensor connected via serial:

  • dev_path: Required. Path to the serial dev file device. For example, a LiCosa USB serial device commonly shows up on Linux as /dev/ttyACM[0-9]+. Hardware serial ports are often /dev/ttyS[0-9]+. For USB devices, it is best practice to use the full serial device symlink like /dev/serial/by-id/usb-Raspberry_Pi_Pico_E4616C840F602C27-if00 so that the connection order does not affect the device assignment. If multiple USB devices of the same type are connected, then the /dev/serial/by-path/.* syminks should be used to select the serial device by USB port.
  • baudrate: Optional. Defaults to 230400.

sensor_t265

This is an Intel T265:

  • timeout_ms: Optional. Defaults to 500. Timeout in milliseconds for waiting for pose frames from the sensor.
  • enable_pose_jumping: Optional. Defaults to False. Enable position jumping. See librealsense docs.
  • enable_relocalization: Optional. Defaults to False. Enable appearance based relocalization. See librealsense docs.
  • enable_mapping: Optional. Defaults to False. Enable an internal map. See librealsense docs.
  • enable_map_preservation: Optional. Defaults to False. Preserve map from the previous run.
  • enable_dynamic_calibration: Optional. Defaults to True. Enable dynamic calibration.

NOTE: This requires an extras package: pip install arena-robot[realsense]

processor_t265

This is an Intel T265 transformation processor. This service runs initially to set up callback listeners, so the interval_ms should always be -1. The available options are:

  • sensor_t265_topic: Required. Full path to the topic with the T265 data. Note that the processor will ignore sensor messages that are not from a sensor_t265 instance.
  • sensor_t265_instance_name: Optional. Defaults to None. Name of the T265 instance to process messages from. This is useful if multiple T265 instances are publishing to a topic and you would like to ignore all but one of them.
  • camera_orientation: Optional. Defaults to 0. The orientation options are:
    • 0: Forward, USB port to the right
    • 1: Downfacing, USB port to the right
    • 2: 45 degree forward
    • 3: Upward facing, USB port to the right
  • scale_factor: Optional. Defaults to 1. Scale factor to apply to body transformations.
  • jump_threshold_translation: Optional. Defaults to 0.1. Position jump detection threshold in meters. This value should be relative to how frequent is the position data is obtained (200Hz for the T265).
  • jump_threshold_velocity: Optional. Defaults to 20. Velocity jump detection threshold in meters/second. This value should be relative to how frequent is the velocity data is obtained (200Hz for the T265).

sensor_vl53l5cx

This is a lidar sensor that connects through I2C and addresses by toggling its LPn pins. It additionally supports the following arguments:

  • dev_path: Required. Path to the I2C dev file device. For example, the first I2C port on the Raspberry Pi is /dev/i2c-1.
  • gpio_path: Required. Path to the GPIO dev file device. For example, the first I2C port on the Raspberry Pi is /dev/gpiochip0.
  • rst_pin: Required. Pin (integer) on gpio_path connected to the I2C_RST pin on all of the sensors.
  • lpn_pins: Required. Array of pins (integers) on gpio_path connected to Lpn pins on each sensor. The array must be present, and at least one pin must be specified or the service won't initialized any sensors. Sensors will be initialized and addressed in te order if this array.

processor_apriltag_detector

This processor reads frames, detects Apriltags, and returns camera pose given a known set of Apriltag locations. All services require the following arguments:

  • video_file: Required. Where frames should be read from. e.g. /dev/video0 (v4l) or http://localhost:8265/cam1 (mjpeg)
  • camera_resolution: Required. 2-element list. [horizontal resolution, vertical resolution]
  • camera_params: Required. Camera parameters fx, fy, cx, cy
  • dist_params: Required. Distortion parameters k1, k2, p1, p2, k3
  • apriltag_locations: Required. Dictionary with Apriltag IDs as keys and 2D-list tag poses as values. The 2D-list should be a 4x4 matrix. The uppermost left 3x3 matrix should represent the rotation matrix of the Apriltag. The rightmost column, from top to bottom, contains the x, y, and z coordinates of the Apriltag's translation. The bottom row should be [0, 0, 0, 1] to allow for transformation-related matrix operations.

The following parameters are for the Python bindings for the Apriltags library:

  • apriltag_family: Optional. Defaults to 'tag36h11'. See above documentation.
  • tag_size: Optional. Defaults to 0.15. See above documentation.
  • num_detector_threads: Optional. Defaults to 1. See above documentation.
  • quad_decimate: Optional. Defaults to 2.0. See above documentation.
  • quad_sigma: Optional. Defaults to 0.0. See above documentation.
  • refine_edges: Optional. Defaults to 1. See above documentation.
  • decode_sharpening: Optional. Defaults to 0.25. See above documentation.

NOTE: This requires an extras package: pip install arena-robot[apriltag_detector]

controller_pololu_slave_i2c

This controller allows for controlling and receiving data from a Pololu slave device over I2C. This service has been abstracted to work with any data configuration provided by the I2C driver on the Arduino side.

Flash the Pololu sketch to the A-Star or Romi. Examples for both boards may be found here, but you should not download these directly. So, prepare the hardware like so:

  1. You will need to install either the AStar32U4 Arduino Library or the Romi32U4 Arduino Library insalled in the Arduino IDE.
  2. Install the PololuRPiSlave Arduino Library and load the example for your board via the Arduino example menu.
  3. Using raspi-config, enable I2C (if using a Raspberry Pi).
  4. Add dtparam=i2c_arm_baudrate=400000 to /boot/config.txt (if using a Raspberry Pi).
  5. Reboot

The example service configuration found at examples/service_controller_pololu_slave_i2c_romi.json matches the Data struct defined in the Romi example found here (note: this is a permalink to a specific Git version of this file).

interval_ms should be set to 100 ms by default, matching the Pololu polling speed. Anything faster is not guaranteed to work. All services require the following arguments:

  • dev_path: Required. Path to the I2C dev file device. For example, the first I2C port on the Raspberry Pi is /dev/i2c-1.
  • slave_data_types: Required. Dictionary of objects for each data type found in the Pololu Data struct in the order they are defined in the struct. Each top level key in this dictionary is the friendly name for the data type. Each object for these keys may contain:
    • format: Required. A single string character matching a Python Struct Format Character. Repeated characters can be accomplished with the num_items field. This also ensure that strings are handled properly.
    • num_items: Required. The number of items this data type has. Multiple items will be returned as a list in MQTT with this key. Must be at least 1.
    • write: Required. Bool of whether or not this field may be written to.
    • initial: Required if write is true. For more fields, this is an array of initial values. Number of items in list should match num_items. If format is s, then this should be a string with the number of characters of num_items (note that strings like \u0000 count as one character).

The controller receives commands on its own MQTT topic. It will only processor commands that are well-formed and targeted for the specific instance. Commands consist of a standard ARENA-robot message with a key called pololu_device_commands in data. Commands will be executed in the order listed. This key consists of an array of objects, each containing:

  • name: Required. The name of the field to be set. This matches the key for each object in slave_data_types.
  • value: Required. Either a list of items (for fields with num_items greater than 1) or a single value to set. For string fields, this must always be a string (not a list).
  • index: Optional. An integer offset for setting values. This allows values in the middle at at the end of a field with num_items greater than 1 to be set without setting the earlier values.

For example, to turn on the red LED on an instance called service_controller_pololu_slave_i2c_pololu_slave_i2c_1_romi from the command line:

arenaxr_pub -t realm/d/myuser/mydevice/controllers/robot -m '"{\"target_device_instance_name\": \"service_controller_pololu_slave_i2c_pololu_slave_i2c_1_romi\", \"msg\": {\"data\": {\"pololu_device_commands\": [{\"name\": \"led_red\", \"value\": true}]}}}"'
{
  "target_device_instance_name": "service_controller_pololu_slave_i2c_pololu_slave_i2c_1_romi",
  "msg": {
    "data": {
      "pololu_device_commands": [
        {"name": "led_red", "value": true}
      ]
    }
  }
}

To play a tune:

arenaxr_pub -t realm/d/myuser/mydevice/controllers/robot -m '"{\"target_device_instance_name\": \"service_controller_pololu_slave_i2c_pololu_slave_i2c_1_romi\", \"msg\": {\"data\": {\"pololu_device_commands\": [{\"name\": \"notes\", \"value\": \"l16ceg>c\"}, {\"name\": \"notes_play\", \"value\": true}]}}}"'
{
  "target_device_instance_name": "service_controller_pololu_slave_i2c_pololu_slave_i2c_1_romi",
  "msg": {
    "data": {
      "pololu_device_commands": [
        {"name": "notes", "value": "l16ceg>c"},
        {"name": "notes_play", "value": true}
      ]
    }
  }
}

To set both motors (causing a spin):

arenaxr_pub -t realm/d/myuser/mydevice/controllers/robot -m '"{\"target_device_instance_name\": \"service_controller_pololu_slave_i2c_pololu_slave_i2c_1_romi\", \"msg\": {\"data\": {\"pololu_device_commands\": [{\"name\": \"motors\", \"value\": [-512, 512]}]}}}"'
{
  "target_device_instance_name": "service_controller_pololu_slave_i2c_pololu_slave_i2c_1_romi",
  "msg": {
    "data": {
      "pololu_device_commands": [
        {"name": "motors", "value": [-512, 512]}
      ]
    }
  }
}

To set only the second motor (makes use of the index field):

arenaxr_pub -t realm/d/myuser/mydevice/controllers/robot -m '"{\"target_device_instance_name\": \"service_controller_pololu_slave_i2c_pololu_slave_i2c_1_romi\", \"msg\": {\"data\": {\"pololu_device_commands\": [{\"name\": \"motors\", \"value\": [60], \"index\": 1}]}}}"'
{
  "target_device_instance_name": "service_controller_pololu_slave_i2c_pololu_slave_i2c_1_romi",
  "msg": {
    "data": {
      "pololu_device_commands": [
        {"name": "motors", "value": [60], "index": 1}
      ]
    }
  }
}

arenavideocall

After installing the repo, you should now have the arena-video-call-chrome command. You can also run it with python3 -m arena-video-call-chrome. It uses the standard arena-py scene environment variables.

The first argument sets the surface that the video should be mapped to. For example, to map to an object called avideobox:

MQTTH=mqtt.arenaxr.org NAMESPACE=namespace SCENE=scene arena-video-call-chrome avideobox

licosa_py

The licosa_py module depends only on NumPy. It includes a packet parser but not the serial interface; you will need to provide this yourself. See examples/licosa_py_basic.py for an example.

vl53l5cx_py

The vl53l5cx_py module requires Linux I2C interface (linux/i2c.h and linux/i2c-dev.h). It will issue a RuntimeError on other platforms if it is attempted to initialize.

C shared library

gcc -fPIC -shared -o vl53l5cx.so -Ivl53l5cx_py/include -Ivl53l5cx_py/VL53L5CX_Linux_driver_1.1.2/user/platform -Ivl53l5cx_py/VL53L5CX_Linux_driver_1.1.2/user/uld-driver/inc vl53l5cx_py/src/*.c vl53l5cx_py/VL53L5CX_Linux_driver_1.1.2/user/platform/*.c vl53l5cx_py/VL53L5CX_Linux_driver_1.1.2/user/uld-driver/src/*.c -l

License

Copyright (c) 2021, The CONIX Research Center All rights reserved.

This source code is licensed under the BSD-3-Clause license found in the LICENSE file in the root directory of this source tree.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arena-robot-2.2.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

arena_robot-2.2.0-pp38-pypy38_pp73-win_amd64.whl (52.1 kB view details)

Uploaded PyPy Windows x86-64

arena_robot-2.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (139.6 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

arena_robot-2.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (49.5 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

arena_robot-2.2.0-cp310-cp310-win_amd64.whl (53.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

arena_robot-2.2.0-cp310-cp310-win32.whl (52.5 kB view details)

Uploaded CPython 3.10 Windows x86

arena_robot-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (248.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

arena_robot-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (247.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

arena_robot-2.2.0-cp310-cp310-macosx_11_0_arm64.whl (51.9 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

arena_robot-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl (52.1 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

arena_robot-2.2.0-cp310-cp310-macosx_10_9_universal2.whl (62.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

arena_robot-2.2.0-cp39-cp39-win_amd64.whl (53.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

arena_robot-2.2.0-cp39-cp39-win32.whl (52.5 kB view details)

Uploaded CPython 3.9 Windows x86

arena_robot-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (254.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

arena_robot-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (254.0 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

arena_robot-2.2.0-cp39-cp39-macosx_11_0_arm64.whl (51.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

arena_robot-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl (52.1 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

arena_robot-2.2.0-cp39-cp39-macosx_10_9_universal2.whl (62.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

arena_robot-2.2.0-cp38-cp38-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

arena_robot-2.2.0-cp38-cp38-win32.whl (52.6 kB view details)

Uploaded CPython 3.8 Windows x86

arena_robot-2.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (253.9 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

arena_robot-2.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (253.9 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

arena_robot-2.2.0-cp38-cp38-macosx_11_0_arm64.whl (51.9 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

arena_robot-2.2.0-cp38-cp38-macosx_10_9_x86_64.whl (52.0 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

arena_robot-2.2.0-cp38-cp38-macosx_10_9_universal2.whl (62.8 kB view details)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file arena-robot-2.2.0.tar.gz.

File metadata

  • Download URL: arena-robot-2.2.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for arena-robot-2.2.0.tar.gz
Algorithm Hash digest
SHA256 ac79118b46a33c8b144531864b6761f1171d0370a3461b3f79922ded2cfe3116
MD5 88868209c477cecd193e00a8908cf9b2
BLAKE2b-256 3d3015831144a94522f6dea0f55bba37a77288f44f8625314f7c4859e202fc8d

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 5b8700db5a1776090956cb45d68fce786e3a8771c37d82c74b5078920b6dbb08
MD5 8250bdda1d44027da153f87348257a55
BLAKE2b-256 59d69e510fe99ed7fee3c0fbdeffe6c4a410e2153218d8c8b7dc59ed018208cb

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c1ac632483cd04f49c20f30bbf14d641c1dabf739387925abe9e5520c1165fa
MD5 52b2d11ca693529e714a22903b22d784
BLAKE2b-256 4998de8412ac89102eaaea3ee81dd4120b91e69ce7b05f9b3c342ce8cf42d90f

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e1e59e2ddd2748581e105fee3de78dacf70684b87b25ab645be6f09eb847becb
MD5 a41ad366875e3254fa2170f7607dd22f
BLAKE2b-256 382efee6dbb6970b4ed59f2ac72fa5776de14edbd8e1f1c21f537c91d9a47ae5

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 562db5daabb09bac29c3e0d083dc3b8d6be25ac0b1298e38bdcd91eede388fa3
MD5 78b25785b79177208e24c98b09a58c78
BLAKE2b-256 8b36e6ac034447c8c29a54b4aade43fc683299b978f1c8dd3120a3b9c9201923

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: arena_robot-2.2.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 52.5 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for arena_robot-2.2.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 eaf4fd638f4e8201eb32b8a4a466cf0193a23a0402de4832656a0c5b46015959
MD5 2071a69da99e428e52ff49c4080c7d56
BLAKE2b-256 34a29b6e1f7780321602098e7ec46d1db5177901f5ef1bec00edf4abde8c5615

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c0fbcd7111bf4bfbf18e0a506732a6a39419f1ebec17e8e214f5521ffe5cbe6
MD5 22071a53e343b9d2566b7f9b4dc7fba0
BLAKE2b-256 349b3ea1c11e301b76af77b62876708c25858a0bf40af027d5cd7f5b717ebc40

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 401cc9a89e4b66b4dea23b7849faffaffdcfc881bef2c256ca0bb6a6bbc929cd
MD5 6c94715f3e47572d12bf9ff09e1529d5
BLAKE2b-256 8a851ca9f7d1b106fc3a4851ea62158694db7c20fc6da0e55fe27f3dbe2da445

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d0d35957ede8f99104e8e6f5d1442d3392d2536e8a81355a5c96d6f1390fd04c
MD5 784d9585f6c31ac6bd191be7d1f897ee
BLAKE2b-256 24e647ab31a0b17521866ed841f5224a81bf57e3d0993a6b1a56460616a4c227

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0f3ca91a491c74d700dc493389ee0d4ca7b9ee0d55bdd4fca375d5c0d28ea84b
MD5 9afb19e9c6dce9267064b9a8cd9abf97
BLAKE2b-256 937d88408ad87317fbfb79b1e9f51ea55b52b2488c48f56ca854bbc5b5cb9568

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 71063b7db40e1bdfd7c59f21ce15230d3a7672f612cdec22de97a3e106237edf
MD5 273cfe42f97ef077e77545b4a793a42c
BLAKE2b-256 ef30b8820c26b34abcc98f20e347724f896892e7d00d1798af69c0d2de07c604

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 987cb642a2966f64e347f8d1747954f9ea316e0418d4df7962a2af6ca5e9c7ff
MD5 cfa9ec1567dcbea0ae271429d77b7cd9
BLAKE2b-256 0c1d1af4372fc49a8bac2357982f3923974edd25f31a20f9dd0c5ea6c07d6959

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: arena_robot-2.2.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 52.5 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for arena_robot-2.2.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 7c58833f519a77d1251febd726d7b3f507ff0b136a15403610e90877c63db3d3
MD5 085549a064daf5f0f6f3e4260526ee93
BLAKE2b-256 22e11e1473e302e5b23d8ac14ce76acc64a960330ae1a4bc3a708ceeaa428500

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cf03daca8c45c68357b70c0041256a8a9f9087b6251085541d54a230007a1822
MD5 f92a38f7d063be023852c61a8befb609
BLAKE2b-256 941a3ba337ef1f5a4fc003c026f4c319f4cd7e98d4ea3a0c468b2ded14d7432e

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2539f5e607b09ef3e1b3c0ae5dc5e93aff2953b6ce8f93ad5d6bb8538eb90b46
MD5 1c7d8606913eee3a39afd1af3a207308
BLAKE2b-256 10390b900ed31dffe5e4d5214ed465b62693d7fbe98c7f8d5fade931a52f1a4d

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b0a23068cdd0dabc04eab306bb7a6aceb1003207e2d2029afba54ca51cf306d9
MD5 761eb6cfcf90992472985b0dbbace659
BLAKE2b-256 0d926b847e7b3d81493466f888b6df9ea72f3d4858b037fa790900ef0e3741a4

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0ac7aa71efe7d24f5dba0bb64d6b7e1ad55d648486124246cd8c637f6114f05d
MD5 489f9800ff9408618fab749425d9c965
BLAKE2b-256 69594ede76f07395ab926f7e871318ab6a56ead502407d22777f43adc51fe13e

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 40cccf024e811e1d989192a888c3110f7fa4de6d992057134f8cd761b22fae08
MD5 4b845cfafd1915b35868d543c47a8794
BLAKE2b-256 3a2a1b60edb77a84e92f639cd58c9492e1c50cf7a22328521155742c4d79c74d

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 661e6a739c24761982ccad9b8225fac74012f5152ae297e21c1ce255496a175e
MD5 cd37af1fcbfb3d7a776bea0cbb1d1f23
BLAKE2b-256 37bc477543c21a8ea74d1ed758e4b10d9ce7cec19d4318130ff0399350b9979f

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: arena_robot-2.2.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 52.6 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for arena_robot-2.2.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 83f4ef5e56f1171c7e5d56d6347998a36a630c255333380399bbd5072a5021c8
MD5 80088e10a168a238107c754f67baaa20
BLAKE2b-256 d142a06e914678b247167549fd7393080e9fa59d20c72e29ff4531d8ea772b8f

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 01bb88fce2d3068e2635ace093b75d674962f6d70fa49d0fa615555b99f360ef
MD5 b58b65b4a8973340b7342f516a3d608b
BLAKE2b-256 628ec88c6ffdf0ca85d572604c5fc05d131c81a99db0a005aed5a5ae50576ade

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9c891afbd762f34ad05f400a18528b6ec8b429c02ee318c59806cc7d2d6abd18
MD5 80336bff11400be0333fcc8a52ebeff6
BLAKE2b-256 9b39edc13b3ab26c3fbf0f85190d63197d99bd0c177f2ae4bab37207bea6bacc

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c7b09f21d325a8a3fd648055191e81e56c94445ecdb52e5418751d9c4adffa0
MD5 b4bec570e1f8dc0e47783825654b0ee0
BLAKE2b-256 3e5e14f835c5b038c6254bd6f2232a02928155fd50fab2ac08dd9008dc4931b8

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 21f82a4330c4b449f272c964d9650c0e77f323f631e460f7374712655fb5ba39
MD5 d9d807a61cb2f4bd8d758455e54b2ade
BLAKE2b-256 d06a91f67f8497a4e1dedc73ec75d2d038b04e739a4f14f2b5d2773ff9a2740f

See more details on using hashes here.

File details

Details for the file arena_robot-2.2.0-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for arena_robot-2.2.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 517e68e6a9719883bfe0f4fbab362f752b3f2e899f485fb766f20f59a50cf453
MD5 8ce6dc0442e7b90321b114a0ee371d80
BLAKE2b-256 da77312c9542d0351a3d918b95bbb9180caf569ed57699a5385bc6e657205672

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page