This repository explores the operations with Game Theory for decision making for autonomous vehicles. I have been researching about different ways to integrate sequential games for decision making into robotics.
-
Currently the game theory experiments have been conducted using the existing
Nashpylibrary with reference to previous work carrried in https://www.semanticscholar.org/paper/When-Should-the-Chicken-Cross-the-Road-Game-Theory-Fox-Camara/db03667574a7abfdbab1656ce803352bc57c874d -
The custom ros2 game theory package has been created for real-vehicle experimentation and demonstration:
ros2_chicken_game. This ros2 package is integrated with a bigger custom ros2 stack of the autonomous vehicle: OpenPodCar_2
- OpenPodCar_2:
https://github.com/Rak-r/OpenPodCar_V2.git
-
The concept of Game theory integration is based on the strong fact that it provides probabilistic outcomes instead of pure outcomes which is importamt in Autonomous driving research with interaction in real world.
-
The experiments have been performed with the Open source Hardware & Software platform named
OpenPodCar_2which is the upgraded version of predecessor.
- Accodring to the research work mentioned above, the key focus here is to deleberately create the scenarios which end up in collision. The research focus on the integration of Pedestrian psychological behaviour into robot/autonomous vehicle control algorithms by providing the decison making ability which consist of the behavioural information in shared space. The current work is one of the (early/very few) research exprimentation and study on real physical vehicle. The image below shows the real-time experiment conducted in ros2 enviroment.
The key concept in chicken model time in seconds is used as currency (1 dollar is equal to 1 second). The main parameter in the Chicken model is U_crash, which tells that how much the pedestrian is willing to spend the time to avoid the crash.
For example: If for say U_crash is 1,00,000 seconds, then this is equivalent to 27 hours approximately which is interpreted a large negative utility as if crash occured, the pedestrian will have sincere injuries in which this time will be lost relating with other factors like treatment, recovery etc. Therefore, pedestrian will give this time more value than crossing to avoid the crash and pefer to yield (wait).
OpenPodCar_2 blue, vehicle path red, Pedestrian crossing yellow with track history orange and collision/intersection point magenta.
Gambit is more extensive library to conduct more accurate game theory related work. Extending the existing work to Gambut based system is one of the future tasks at the moment.
I provide some insights of using Gambit and ROS2 at veyr simple level along with some game theory concepts.
-
The script
Test_Game_Theory_ROS2.pyincludes a simple game similar toPrisonor's Dilemmacreated using gambit. -
To test the gambit connection with ROS2 Twist commands, a simple payoff outputs are assigned only to
linear.xfield. -
To test the working with
Gazebo Garden / ignition Fortress, we can create aros_gz_bridgewith the following command.ign gazebo ackermann_steering.sdforgz sim ackermann_steering.sdfros2 run ros_gz_bridge parameter_bridge /model/vehicle_blue/cmd_vel@geometry_msgs/msg/Twist]gz.msgs.Twist.- In the new terminal :
python3 Test_Game_theory_ROS2.py
-
In the terminal, check
ros2 topic listto check the published topic. -
We can visualise the robot moving with the output of the game's payoff.
