Fejemis 2026
Introduction
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.
Start up guide
To turn on Fejemis, you need to press the turn on button for more than 2 seconds. If not, both Raspberry Pis wont boot. To turn it off you need to press it for more than 7 seconds.
To work with Fejemis, you can connect directly using a monitor and keyboard. The monitor can be connected to one of the Raspberry Pis, while the keyboard connects through USB. After booting, log into the Ubuntu system using the provided credentials.
Fejemis uses two Raspberry Pis:
Main Raspberry Pi and Auxiliary Raspberry Pi
The Raspberry Pis can be also accessed through SSH.(The IP some time changes, check it by connecting directly with the monitor)
Main lab local@10.197.213.227 Aux lab local@10.197.213.226 Main asta local@10.197.219.238 Aux lab local@10.197.219.237
The last way of connecting is through Ethernet.
Main 197.168.1.1 Aux 197.168.1.2
If you are connected to the main Raspberry Pi,the auxiliary Raspberry Pi can also be accessed using:
ssh fejemis-aux
Launch
Launching the bridge (from anywhere):
ros2 launch fejemis_bridge bridge.launch.py
Launching the mixer + gamepad control (from anywhere):
ros2 launch fejemis_bridge mixer.launch.py
You need to press the "BACK" button on the gamepad to actually start the control from the gamepad.
You can launch both at once with the following command: ros2 launch fejemis_bridge control.launch.py
This launch file runs the latest version of the autonomous cleaning software:
ros2 launch fejemis robot.launch.py
It must be launched on both Raspberry Pis, since each device handles different parts of the system.
Arguments:
localization:=true/false, map_location:=asta/lab
Default: localization true, map loc asta
If the argument "localization:=false" is provided, the robot will automatically start a new mapping process and overwrite the current map.
After fejemis robot.launch.py is running on both Raspberry Pis, you can optionally start a few helper nodes depending on what you want to test:
ros2 run fejemis_maploc rviz_goal_relay.pylets you send a navigation goal from RViz if you want to drive the robot to a specific point.- If the robot does not localize itself automatically, you can set the initial pose in RViz.
ros2 run fejemis_maploc mission_trigger.pystarts the cleaning behaviour once the robot is ready.ros2 run fejemis_maploc fixed_complete_coverage_planner.pyorros2 run fejemis_maploc complete_coverage_planner.pycan be used to test only the cleaning path generation and coverage following.
If Fejemis crash (one of the battery display will turn off), you need to plug it in before turning it on again.
Troubleshooting / usual problems
Common issues seen during daily operation:
- Main Raspberry Pi crashes while building the full workspace
The main Raspberry Pi may crash or run out of resources when building everything at once. Use symlink install and only build the packages you changed:
```bash colcon build --symlink-install --packages-select <changed_package_1> <changed_package_2> ```
- Robot shuts down while driving (high speed / acceleration)
If commanded speed or acceleration is too aggressive, the battery management system can cut power and both Raspberry Pis may shut down. Reduce drive aggressiveness and avoid sudden acceleration spikes.
- System behaves inconsistently between main and aux Pi
This is often caused by the two Raspberry Pis having unsynchronised clocks. Run this from the main Raspberry Pi:
```bash fejemis sync_clocks ```
- Only one Raspberry Pi appears to boot
You must hold the power button for a few seconds so both Raspberry Pis start correctly.
- Left battery does not engage after BMS cutoff
If the left battery turns off due to battery management protection, plug in the robot before booting again, otherwise that battery may not re-engage.
- Unstable wireless connection in ASTA
Wi-Fi in ASTA is often unreliable. Prefer connecting your PC over Ethernet for stable control and monitoring.
Other utilities
If you want to generate a square signal, you can use the node I made:
ros2 run arcana_tools signal_generator --ros-args -p frequency:=<signal_freq> -p out_type:=<output ROS2 type> -r /sig_out:=<output topic> -p bias:=<signal bias> -p range:=<vmax-vmin>
Typically you wight want to send it as if it was a gamepad input:
ros2 run arcana_tools signal_generator--ros-args -p frequency:=0.5 -p out_type:=geometry_msgs.msg.Twist.linear.x -r /sig_out:=/joy_control/cmd_vel -p range:=0.5
You can display graphs using the rqt tool (type rqt in a terminal). There's a plugin "Vizualization>Plot" that integrate the python 3 matplotlib package.
To enable the fetching of the wheels velocities from the bridge, you may need to edit the file "~/.config/fejemis_bridge/bridge.yaml" and set enable: true instead of false in the vel section.
Hardware
Mechanics
You can access the technical description of the Mechanics in this page.
Electronics
You can access the technical description of the Electronics in this page.
Software
The software is split into two components:
- Fejemis bridge — handles communication between the main Raspberry Pi and the Teensy controllers and provides a manual/remote-control interface. See Fejemis repository for source and docs.
- Fejemis ROS2 Software — higher-level programs for mapping, navigation, and robot behaviours located in Fejemis_workspace_2026.
Old repository
You can access the description of the legacy through this link.