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
βΒ Β β
βΒ Β βββ Right_View.jpeg
β
βββ 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
- Github link : https://github.com/RenaudFookIng/E-WheelChAIrΒ



