ENAC Robotic's high level code for the eurobot competition.
Please see the installation instructions to set it up on a Raspberry Pi.
Init the submodules with git submodule update --init --recursive
.
This repo heavily relies on eCAL for inter-process communications. Think about it like ROS, but lighter and easier to use.
The robot is composed of:
- a Raspberry Pi 4 (or 5)
- "base roulante" board, driving the motors and featuring an IMU
- The IO board to handle actuators and some sensors
- The LCD board, a simple UI.
Some sensors are directly connected to the Raspberry Pi, like the LD06 lidar, and the 8x8 range sensors VL53L5Cx.
All theses boards communicate via UART, see the udev rules to setup unambiguous device names.
The code is divided in multiple processes, that communicate over an eCAL publish-subscribe bus. The messages definitions are in the proto submodule.
The processes are systemd user services. See the install script in the services directory.
The services unit files assume that the username is robot
and the path to this repository is /home/robot/rpi
.
Manage the service with systemctl --user status robot_*.services
.
requirements :
- heapq
- typing
- ...
You can manage services by using systemd
Do sudo systemctl <option> <service>
to interact.
Options :
- start
- stop
- status
- restart
- enable
- disable
All robot necessary services being with the prefix "robot_". You can use TAB to list them all while writing the command. You can edit the install_service.sh and run if you make new services. To edit new services read the associated documentation. You may also just copy paste a working service and hope it works :).