ROS package for Emergency Stopping functionality on LTU ACTor vehicles. The system consists of two components: the core estop manager (core_estop_manager.py) and the edge estop manager (edge_estop_manager.py). The core system runs on the main computer, while the edge system runs on a remote device, such as a Raspberry Pi.
- Sends heartbeats to the edge manager to verify its own health.
- Monitors heartbeats from the edge manager, if it times out for any reason, it will trigger a software estop (brakes).
- Sends heartbeats to the core manager to verify its own health.
- Monitors heartbeats from the core manager, if it times out for any reason, it will trigger an estop.
- Monitors the physical button and wireless button loops (via GPIO) and triggers an estop/reset accordingly.
- Monitors trigger and reset topics and triggers an estop/reset accordingly.
- Triggers estop activation or reset via relay board wired to the Drive-By-Wire controller.
Note: If the relay board or rpi is powered off or looses communication, (normally open, active off) hardware estop is triggered automatically. To disable hardware estop, it needs to be physically bypassed.
- ROS Noetic
dbw_polaris_msgs: ROS messages for controlling a DataSeed Drive-By-Wire system installed in ACTor.gpiozero: Python GPIO library (install usingpip3 install -r requirements.txtif not already installed in Raspberry Pi).
-
Clone this repository into your ROS workspace's src folder:
git clone <repository_url> -
Build the ROS package once in the workspace:
catkin build actor_estop
-
Run the core estop manager on the main computer:
rosrun actor_estop core_estop_manager.py -
Run the edge estop manager on the remote device (e.g. Raspberry Pi):
rosrun actor_estop edge_estop_manager.py
- Modify the GPIO pin configurations in the edge estop manager script (
edge_estop_manager.py) to match your hardware setup. - Adjust the heartbeat rate and timeout parameters in both scripts as needed for your system requirements.
- Setup autorun on boot (only on edge device) instructions: (coming soon)
Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on GitHub.
This software is released under the MIT License.