|
Bratmobile
|
The purpose of this library is to showcase a framework for multi-step ahead planning using pure input control (see Braitenberg vehicles). The navigation problem is broken down into several unique closed-loop input controllers, called Tasks. Each Task produces a unique control behaviour (go straight, turn left/right 90 degrees) in response to a Disturbance (an obstacle or target), which determines a Task's duration. A supervising module, called the Configurator, can simulate sequences of Tasks at runtime in game engine Box2D, retain their outcomes in a cognitive map, which can be searched to extract plans. The physics simulation represents the robot's Core Knowledge (Spelke, 2007).
Available at https://glafratta.github.io/bratmobile/
Giulia Lafratta, Bernd Porr, Christopher Chandler, Alice Miller; Closed-Loop Multistep Planning. Neural Computation 2025; 37 (7): 1288–1319. doi: https://doi.org/10.1162/neco_a_01761
The indoor robot is equipped with
sudo apt install g++ cmake libpigpio-dev libopencv-dev libboost-all-dev xorg-dev libglu1-mesa-dev libgtest-dev
box2d/build and run sudo make installgit clone git@github.com:glafratta/bratmobile.git
Demo prefixes:
brat2* : Multi-step planning with fixed discretisation of Tasks with DEFAULT actionsbrat3* : Multi-step planning with fixed-size state split (of states ending in collision) and attention window to guide optimal obstacle avoidance when a goal is presentDemos:
sudo ./*targetless : these programs demonstrates planning over a 1m distance horizon for a control goal that is not a target location but rather an objective to drive straight for the longest time with the least amount of disturbancessudo ./*target: these program demonstrates target seeking behaviour, where the target is imaginary and located at x=1.0m, y=0m.ctest
run make test