The purposes of this repository are
- to install the dualpanto framework firmware to the dualpanto devices, which is needed for running & developing apps/games (follow the setup section. the actual firmware installation is in step 5)
- to provide semi-automatic testing for the dualpanto device. This involves basic functionality checks of the hardware, the haptic rendering, communication protocol and the unity integration. A test will install a different testing firmware, which overwrites the dualpanto framework firmware. (follow "If something doesn't work, run these tests")
This project is work-in-progress. Welcome to contribute.
Please check BIS.md first.
- Download the latest installer of the driver for your OS-Version
- Unzip and run the installer
- Tips for windows: download "CP210x Universal Windows Driver," right-click on the silabser.inf file, and select Install
- Tips for mac: mount the DMG file and double-click on the Silicon Labs VCP Driver. If the installation is blocked, go to the System Preferences Security & Privacy pane to unblock the system extension
- Go to Appstore and install Xcode
- Run
xcode-select –install
to install the compilers - Run
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
- Install Visual Studio 2019 or 2017 (you won't use this as your IDE, this is just to install the C++ dependency in the next step)
- Select at least the workload “Desktopentwicklung mit C++”
We highly recommend to use PyCharm to run this test flow, but you can also use VSCode or the command line.
- download PyCharm. As a student, you get a free license (click the "Apply now" button and complete the form).
- clone this repo (on Windows: dont clone into the WSL subsystem, it wont work!) and open it with pycharm
- create virtual environment (we use python 3.7) and install packages using requirements.txt
- install Mermaid plugin for flowchart vis
if you chose PyCharm, you can run unittest from Markdown preview
alternatively, you can still execute unittest from scripts
Use the Terminal in PyCharm in further steps. Because only in the PyCharm terminal you will get your correct python virtual environment.
Alternative B: VScode (can work, but if you already configured your environment in a weird way it might be hard for us to debug)
- download VScode
- install the Python extension for VSCode (https://marketplace.visualstudio.com/items?itemName=ms-python.python)
- go into the extensions menu on the left -> press the settings gear on the Python extension -> select "Settings" -> type "terminal" into the search bar -> make sure that "Activate env in current terminal" and "Activate environment" are both checked. This will ensure that you are always in the correct environment.
- On Windows, use the PowerShell or Command Prompt terminal inside VSCode in all following steps. Don't use the WSL subsystem.
- clone this repo (on Windows: dont clone into the WSL subsystem, it wont work!) and open it with VScode
- shift + command + P -> >Python: Create Environment -> Venv
- On windows: if it says "No python installed", install python from the Microsoft Store (you can get there by clicking the "no python installed" warning). Then go back to VSCode and repeat from step 6.
- select your python version (e.g. Python 3.12.6) -> select requirements.txt -> confirm
- it will install for a while (as shown by a message window on the bottom right). When it's done, open a new terminal.
- Check that it worked: Run
pip list
in the terminal, it should show you (among others)pyserial
andplatformio
in the list. - If they dont show up, or you get python errors later such as "no module named serial": press shift + command + P -> Python: Select Interpreter -> select the interpreter which includes venv, e.g.
Python 3.12.6 ('.venv': venv)
. Then open a new terminal. Then try again. You might have to redo step 11 every time you open VSCode. If you don't see this interpreter in the list, redo the installation steps above from step 6.
Alternative C: Command Line (hard, because you get no help with setup from the IDE and do everything yourself from the terminal)
you can also run all unittest from command line interface if struggle with setting up IDE. Install python library in requirements.txt, then execute script.
- in a terminal, navigate to the dualpanto-testing folder which you cloned this repo into
- run
git submodule init
, thengit submodule update
You need to have the dualpanto connected to your computer to do this. Here is how it works:
- plug the USB-A end of the USB cable into your computer. If you don't have USB-A (e.g. new laptop), use a USB-C to USB-A adapter.
- plug the micro-USB-B end of the cable into the Dualpanto. The port is in the top left of the back of the device.
- Find out your COM port (the COM port is basically the name that your computer gave to the connection to the dualpanto). How to find your COM port: Windows : go to device manager / geräte-manager → ports/anschüsse (COM & LPT) and check the com port (e.g. "//.//COM3"). Mac: use command
ls /dev/cu.*
in the terminal and look for e.g. "/dev/cu.SLAB_USBtoUART" - open
config.py
in the dualpanto-testing folder and put your COM port between the quotes inCOM_PORT = ""
. (@Shohei: is this the only file to be modified?) - Start pressing this button on the back of the device (image below).
- In the terminal of your IDE (either PyCharm or VSCode with Python virtual environment), navigate to the dualpanto-testing folder and run this command:
python -m unittest test_firmware.UploadDualPantoFramework.test_upload_dp_firmware
. Keep pressing the button while this is running. - After the install is finished (terminal says OK), you can release the button.
If all of this worked, you did successfully setup the Dualpanto. If not, see the next section.
Repeat step 5 (uploading the firmware).
known issues when you plug dualpanto device into different PC: - we observe dualpanto has some wall rendering issue when you connect dualpanto to other PC. e.g, you uplaod firmware from mac and connect to windows pc. - this is not always happend. but You need to keep this in mind. - We haven't known why so. Welcome you to contribute here!
Most of the test is not semi-automated since they are related to haptics and mechanical issue. Check How to test?
.
When you need to ask question on discord, please tell us which test you failed, and describe error or issue you have precise as possible.
- All test upload a firmware for each unit-test. You probably need to push button back of dualpantowhen you upload a firmware (it depends on OS).
(For BIS studetns: There are code to figure out whether encoder and motor works, but no good evaluation process yet. We will update asap. You can also modify code to test your purpose.)
- check mechanical configuration
python -m unittest test_firmware.Basic
python -m unittest test_hardware.Linkage.test_encoder
WIPpython -m unittest test_hardware.Linkage.test_sync
WIPpython -m unittest test_hardware.EndEffector.test_encoder
WIPpython -m unittest test_hardware.EndEffector.test_motor
WIP
- 1.Basic check whether you could compile firmware and upload firmaere with platfiormIO
- 2.Linkage.test_encoder check the four encoders on top of big motors works fine
- 3.Linkage.test_sync check the four big motors works fine
- 4.EndEffector.test_encoder check the two encoders on end effectors works fine
- 5.EndEffector.test_sync check the two motors on end effectors works fine
%%{init: {'theme': 'neutral' } }%%
flowchart TD;
ST((start)) --> MC[0.mechanical];
MC -- checked --> FB;
subgraph test_firmware
FB[1.Basic];
FB -- not work --> CH(check USB connection, <br> not using power-only cable, <br> COM port, <br> platformIO properly installed, <br> and pushing button back of dp)
end
FB -- work --> LTE[2.test_Encoder]
subgraph test_hardware.Linkage
LTE -- work -->LTS[3.test_sync];
LTE-- not work --> MC1[check mechanical again]
LTS -- not work --> MC1
end
subgraph test_hardware.EndEffector
LTS -- work --> EETE[4.test_encoder]
EETE -- work --> EETM[5.test_motor]
EETM -- not work -->MC2
EETE -- not work --> MC2[check mechanical again]
EETM -- work --> DONE((done))
end
CH -- no idea --> TA((Ask on discord <br> #general channel))
MC1 -- no idea --> TA
MC2 -- no idea --> TA
style TA fill:#FF9B00
style DONE fill:#99CC00
click LE "https://github.com/HassoPlattnerInstituteHCI/unity-dualpanto-toolkit/blob/develop/README.md"
click TA "https://discord.com"
click MC "https://discord.com"
- check mechanical configuration
python -m unittest test_firmware.Haptics.test_line_wall
WIPpython -m unittest test_firmware.Kinematics.test_kinematics_sync
WIPpython -m unittest test_firmware.Haptics.test_force_field
WIPpython -m unittest test_firmware.Haptics.test_rail
WIPpython -m unittest test_firmware.Haptics.test_rectangle_obstacle
WIPpython -m unittest test_firmware.Haptics.test_diamond_obstacle
WIPpython -m unittest test_firmware.Haptics.test_moving_obstacle
WIP
- 1.Haptics.test_line_wall check dualpanto firmware can render simplest wall = line or not
- 2.Kinematics.test_kiematics_sync check forward and inverse kinematics of dualpanto firmware works fine or not
WIP
WIP
This project is currenty under developement. For questions, please reach out to [email protected], [email protected]
For BIS students, please reach out [email protected]