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 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 install
sudo ./targetless
: this program 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
: this program (under construction) demonstrates target seeking behaviour, where the target is imaginary and located at x=1.0m, y=0m. Run with options 0 [custom-stepDistance]
: for turning debug options off. In debug mode, LIDAR coordinates, Box2D objects and robot trajectories are dumped into the /tmp
folder. The stepDistance is the maximum distance covered by a single task, 1.0m by default.Only planning and execution (tracking using dead reckoning) demonstrated
WARNING! Due to the point cloud clustering algorithm used (Partition), an obstacle such as a cul-de-sac will be detected as a solid box, so take into account that representation of concave objects may be inaccurate.
test/simulations/target_sim [folder_with_scans/] [bool: is_real_time]
: runs a simulation of a planning and plan recycling scenario (not fully debugged). Args:folder_with_scans
: a folder containing 2D LIDAR scansis_real_time
: a boolean flag used to determine whether to use a timer to ensure that LIDAR callbacks are called every 200ms and motor callbacks every 100 (default=1)run make test