E-WheelChAIr
Smart Embedded System for Electric Wheelchairs
For all files see the github link : https://github.com/RenaudFookIng/E-WheelChAIr
Origin of the project :
- Occupational therapist and Medical Doctor couldn’t prescribe a Power Wheelchair if the user driving it could injure themselves or others.
- In consequence, the user with massive motor impairment and cognitive or visual impairment don’t have power wheelchair and they depend of the other to move in their home and the city.
Description
E-WheelChAIr is an open-source project designed to enhance autonomy and accessibility for electric wheelchairs. It integrates:
- A ROS2-based architecture for real-time control and sensor fusion.
- 3D-printed mechanical parts (sensor mounts, joystick adapters).
- Modular design for easy customization and collaboration with partners like Sorbonne University.
📸 Visual Overview
Wheelchair Views
Project Structure
Note: All ROS launch files are centralized in the e_wheelchair_launch package for easier management.
E-WheelChAIr/
├── hardware
│ ├── 3d_models
│ │ ├── BackRest_Fixation/
│ │ │ ├── Fixation_BackRest.iges
│ │ │ ├── Fixation_backrest_part1.stl
│ │ │ └── Fixation_backrest_part2.stl
│ │ ├── Camera_Module/
│ │ │ ├── Camera_module.iges
│ │ │ ├── Fixation_camera.stl
│ │ │ ├── Fixation_camera_up.stl
│ │ │ └── Support_camera.stl
│ │ ├── ServoControl_Joystick/
│ │ │ ├── BasePart.stl
│ │ │ ├── FourchetteAxeX.stl
│ │ │ ├── FourchetteAxeY.stl
│ │ │ ├── Servo_controller_Joystick.iges
│ │ │ ├── Support_servo_joystick.stl
│ │ │ └── Visuel_Joystick_servomoteur_support.png
│ │ └── Ultrasonic_Module/
│ │
│ ├── arduino/
│ │ ├── ewheelchair_controller/
│ │ │ ├── ewheelchair_controller.ino
│ │ │ └── lecture_arduino.py
│ │ ├── ARDUINO_GUIDE.md
│ │ ├── FILES_SUMMARY.md
│ │ ├── README.md
│ │ └── test_arduino.py
│ │
│ └── Image_processing/
│ ├── cmd.txt
│ ├── ROS.txt
│ ├── vision_config_gpu.py
│ ├── vision_config_mac.py
│ ├── vision_system_gpu.py
│ ├── vision_system_mac.py
│ ├── yolo11n.pt
│ └── yolov8n.pt
│
├── resources
│ ├── docs
│ └── utils
|
├── src
| ├── arduino_bridge/
| │ ├── arduino_bridge
| │ │ ├── __init__.py
| │ │ └── arduino_bridge_node.py
| │ ├── resource
| │ │ └── arduino_bridge
| │ ├── test
| │ │ ├── test_copyright.py
| │ │ ├── test_flake8.py
| │ │ └── test_pep257.py
| │ ├── package.xml
| │ ├── setup.cfg
| │ └── setup.py
| ├── custom_msgs/
| │ ├── msg/
| │ │ ├── EmergencyData.msg
| │ │ ├── Joystick.msg
| │ │ ├── ObstacleDetection.msg
| │ │ ├── ServoCommand.msg
| │ │ ├── UltrasonicArray.msg
| │ │ ├── VisionObstacle.msg
| │ │ └── WyesIntent.msg
| │ ├── CMakeLists.txt
| │ ├── package.xml
| │ └── setup.py
| ├── e_wheelchair_launch/
| │ ├── e_wheelchair_launch
| │ │ ├── __init__.py
| │ │ └── launch/
| │ ├── resource/
| │ │ └── e_wheelchair_launch
| │ ├── package.xml
| │ ├── setup.cfg
| │ └── setup.py
| ├── master_node/
| │ ├── config/
| │ │ ├── master_config.yaml
| │ │ └── servo_config.yaml
| │ ├── master_node/
| │ │ ├── __init__.py
| │ │ ├── master_node.py
| │ │ └── master_node_bis.py
| │ ├── package.xml
| │ ├── setup.cfg
| │ └── setup.py
| ├── pc_vision_bridge/
| │ ├── pc_vision_bridge
| │ │ ├── __init__.py
| │ │ └── pc_vision_bridge_node.py
| │ ├── resource
| │ │ └── pc_vision_bridge
| │ ├── test
| │ │ ├── test_copyright.py
| │ │ ├── test_flake8.py
| │ │ └── test_pep257.py
| │ ├── package.xml
| │ ├── setup.cfg
| │ └── setup.py
| └── wyes_teleop/
| ├── resource
| │ └── wyes_teleop
| ├── test
| │ ├── test_copyright.py
| │ ├── test_flake8.py
| │ └── test_pep257.py
| ├── wyes_teleop
| │ ├── __init__.py
| │ └── wyes_teleop_node.py
| ├── package.xml
| ├── setup.cfg
| └── setup.py
|
├── .gitignore
├── CABLAGE_SCHEMA.md
├── E-WheelChAIr.mp4
├── LICENSE
├── parametrage_raspberry_hotspot.txt
├── README.md
├── TESTING_GUIDE.md
└── yolov8n.pt
Prerequisites
Hardware
- Electric wheelchair with servo-controlled joystick (using Miuzei MZ996 servos).
- Sensors: Intel Realsense (depth camera), HC-SR04 (ultrasonic), Arduino (I/O interface).
- Joystick or alternative control input device.
Software
- ROS2 Jazzy.
- colcon (build tool for ROS2).
- OnShape (for 3D modeling).
- Git LFS (for versioning large 3D files).
- Python 3.9+ with pyserial and pyyaml packages.
Installation and Setup On your computer
1. Clone the Repository
git clone https://github.com/RenaudFookIng/E-WheelChAIr.git cd E-WheelChAIr
2. Build the ROS Workspace
colcon build --symlink-install source install/setup.bash
3. Launch the System
ros2 launch e_wheelchair_launch ewheelchair_all.launch.py
Installation and Setup On your Raspberry PI
1. Cloner le dépôt en mode "sparse-checkout"
git clone --filter=blob:none --no-checkout https://github.com/RenaudFookIng/E-WheelChAIr.git cd E-WheelChAIr
2. Active le mode sparse-checkout et exclut le dossier 'hardware'
git sparse-checkout init --cone git sparse-checkout set --no-cone /* !/hardware/
3. Extrait les fichiers (sauf 'hardware')
git checkout main
Build the ROS Workspace
colcon build --symlink-install source install/setup.bash
ROS Launch Files Centralization
All ROS launch files have been centralized in the e_wheelchair_launch package to provide:
- Simplified Management: Single location for all launch configurations
- Easier Maintenance: No duplication across packages
- Consistent Structure: Uniform approach to system launching
- Better Organization: Clear separation between nodes and launch configurations
Available Launch Files
| Launch File | Description | Components Launched |
|---|---|---|
ewheelchair_all.launch.py |
Complete system with all sensors and processing | 6 nodes |
ewheelchair_joystick_servo.launch.py |
Control servo with joystick and Ultrasonic sensor | 2 node |
ewheelchair_arduino_vision.launch.py |
Control servo with joystick and Ultrasonic sensor and Wide-angle camera processing | 3 node |
ewheelchair_wyes_teleop.launch.py |
Control servo with joystick, Ultrasonic sensor and Wyes Glasses | 3 node |
ROS Packages
| Package | Description |
|---|---|
arduino_bridge |
Receives data from Arduino sensors |
custom_msgs |
Custom ROS message definitions |
e_wheelchair_launch |
Launch files for the complete system |
master_node |
Main control node for servo-controlled joystick |
pc_vision_bridge |
Bridge between PC vision system and ROS |
wyes_teleop |
Keyboard-based teleoperation interface |
Pour se connecter au Hotspot WiFi :
- Nom du Hotspot : E-Wheelchair
- Mot de passe : EWheelChair2025
Pour se connecter à la plateforme : Nom de la plateforme : ewheelchair2
ssh ewheelchair2@192.168.4.1
mdp : ewheelchair
3D Models
- Location:
3d_models/ - Formats: STL and STEP files for 3D printing and simulation.
- Tools: Designed in OnShape.
- Note: Use
git lfs pullafter cloning to retrieve 3D files.
Recent Changes
Version 0.2.0 (Current)
- Major Architecture Change: Replaced Sabertooth motor controller with Miuzei MZ996 servo-based joystick control
- New Package:
arduino_bridgefor Arduino-based servo management - Updated:
master_nodenow publishes joystick commands instead of motor commands - Updated:
visualizationpackage removed motor speed plotting - Improved: Safety features with neutral position on emergency stop
Version 0.1.0
- Initial release with Sabertooth motor controller
- Basic sensor integration (ultrasonic, camera)
- ROS2 Jazzy compatibility
Collaboration
- University of Milan: Partner for accessibility validation.
- Contributions: Pull requests and issues are welcome!
- License: Apache 2.0 (see LICENSE).
Contact
- Maintainer: Renaud JANET (renaud.janet@etu.sorbonne-universite.fr or renaud.janet@proton.me)
- Github link : https://github.com/RenaudFookIng/E-WheelChAIr



