Reading the repo
Opening the box…
Reading the repo
Opening the box…
How to install on Windows
GitHub didn't answer, so this is the saved copy from 1 days ago
Will it work on Windows?
This software has been tested and verified as working on a Raspberry Pi 3B+ running Ubuntu Server 20.04.5 LTS with ROS Noetic. It is also known to run correctly on Raspbian Buster, however difficulties were faced with installing ROS on this operating system.
Compare yours with the README's “Compatibility” list above before installing anything.
Needs Git: winget install Git.Git
git clone https://github.com/lew101/NoRMA.git cd NoRMA
The repo should be copied into your ROS workspace for it to work.
Navigate to your workspace and run the following command:
git pull https://github.com/lew101/NoRMA.git
This will pull the package files into your workspace.
To start the driver with the web interface, run the following command in your ROS workspace:
roslaunch wheelchair_virtual_joystick_driver norma.launch
The web interface will be accessible on port 8000.
The GC2 joystick controller that NoRMA interfaces uses a hall effect joystick module for signaling. The joystick works by using a fixed reference voltage, known as a center tap, as a 'center' position and then increasing or decreasing the voltage around this to move the wheelchair. In the eight wire implementation that NoRMA uses, this center tap reference voltage is unknown and so is electrically determined using a calibration phase.
For calibration, the joystick should be positioned at the center position. The joystick is then polled repeatedly over a short period of time to find the average center voltage. This is then used as the reference voltage for NoRMA.
As standard, the driver runs a short calibration phase when being launched. This phase can be skipped by providing two calibration values /wheelchair_calibrate_fb and /wheelchair_calibrate_lr on launch. These values will then be used instead.
The normal operation of the Adafruit MCP4728 DAC is to set a voltage via software which is then maintained by the DAC until a reboot, or a new value is set. This is problematic in robotics as a lack of movement commands would normally be interpreted as no motion is required, however, because of this behavior from the DAC, the result would be continuous motion by the robot.
To prevent this, and the resultant "how to stop your runaway wheelchair" problem, a watchdog is implemented in the ROS wrapper. This monitors the received messages and will stop movement is a timeout has been exceeded. This defaults to 2 seconds.
The watchdog uses the rospy Timer library and so is threadsafe.
The GC2 uses a pair of sensors per axis rather than one per axis to detect the location of the joystick. This ensures that if one of the sensors fails, it it detectable. To do this, there is a small difference between the two sensors. If the difference gets too large, the GC2 locks out and brings the wheelchair to a halt.
The NoRMA hardware bypasses this protection and so it is implemented at a driver level. There is a regular check on the difference between the two sensors per axis, and if the difference is too great, it will force the GC2 to lockout.
⚠️ NOTE: Currently this is not reported in the software but an exception could be added.
No reports for Windows yet.
GitManual AI Agent reads the 1 key files and writes a step-by-step guide for Windows. Once written, it's saved for everyone.