commit | e01ee3822ee2ee5ec3119cef93549f33892d5742 | [log] [tgz] |
---|---|---|
author | Henri Chataing <henrichataing@google.com> | Thu Mar 07 08:42:52 2024 -0800 |
committer | hchataing <104974782+hchataing@users.noreply.github.com> | Thu Mar 07 09:12:05 2024 -0800 |
tree | a634d89c6d0f9f9b79b23f1a46c801edc1bc97e4 | |
parent | dcc01f6ebd9d952c2bcde3d7a5c68421f921963d [diff] |
Fix device lookup during ranging The devices were looked up by their default mac address, which does not necessarily match the device mac address set in the APP config for ranging.
Pica is a virtual UWB Controller implementing the FiRa UCI specification. It has been designed for testing UWB ranging capabilities. Pica supports the following features:
$> git clone https://github.com/google/pica.git $> cd pica/ $> cargo run
You should receive the following output:
Pica: Listening on: 7000 Pica: Web server started on http://0.0.0.0:3000
You can now open the web interface at http://0.0.0.0:3000
and the HTTP commands documentation at http://0.0.0.0:3000/openapi
. The scene should be empty and look like this:
A command line tool is available to trigger some action such as creating an anchor. Run pica in a terminal then open a new one and do:
$> cd pica/ $> python3 scripts/console.py
If you hit Enter
, the console will list you all the available commands:
device_reset Reset the UWBS. get_device_info Retrieve the device information like (UCI version and other vendor specific info). get_caps_info Get the capability of the UWBS. session_init Initialize the session session_deinit Deinitialize the session session_set_app_config set APP Configuration Parameters for the requested UWB session. session_get_app_config retrieve the current APP Configuration Parameters of the requested UWB session. session_get_count Retrieve number of UWB sessions in the UWBS. session_get_state Query the current state of the UWB session. range_start start a UWB session. range_stop Stop a UWB session. get_ranging_count Get the number of times ranging has been attempted during the ranging session.. pica_create_anchor Create a Pica anchor pica_destroy_anchor Destroy a Pica anchor pica_get_state Return the internal Pica state pica_init_uci_device Initialize an uci device pica_set_position Set the position of a Device
If you wish to create a virtual anchor:
$> cd pica/ && python3 scripts/console.py # If the console is not started yet $> --> pica_create_anchor 00:00 # pica_create_anchor <mac_address> $> --> pica_create_anchor 00:01 # Create another one
┌────────────────────┐ │ Web │ │ │ └─────┬─────────▲────┘ │ │ HTTP localhost:3000 ┌────────────────────▼─────────┴───────┐ │ │ │ Pica │ │ │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │Anchor1 │ │Device1 │ │Device2 │ │ │ ├────────┤ │ │ │ │ │ │ │Anchor2 │ ├────────┤ ├────────┤ │ │ ├────────┤ │Session1│ │Session1│ │ │ │... │ ├────────┤ ├────────┤ │ │ │ │ │Session2│ │Session2│ │ │ └────────┘ └──▲──┬──┘ └──▲──┬──┘ │ │ │ │ │ │ │ └─────────────────┼──┼────────┼──┼─────┘ │ │ │ │ TCP localhost:7000 ┌──┴──▼──┐ ┌──┴──▼──┐ │Client1 │ │Client2 │ │ │ │ │ ├────────┤ ├────────┤ │VirtIO │ │ │ ├────────┤ │ │ │UWB HAL │ │ │ ├────────┤ │Python │ │Cuttle │ │console │ │fish │ │ │ └────────┘ └────────┘
Pica also implements HTTP commands, the documentation is available at http://0.0.0.0:3000/openapi
. The set of HTTP commands let the user interact with Pica amd modify its scene.
Setup your python env:
python3 -m venv venv source venv/bin/activate pip install pytest pip install pytest_asyncio pip install -e py/pica/
Then run the tests
pytest --log-cli-level=DEBUG -v
The tests are located in ./tests/