SuperFourmi

SuperFourmi

un simulateur de fourmillière multi-agent du dernier millénaire (!) – Lien Github

Historique

SFourmi est le premier projet C++ développé au lycée (Michel Tran Ngoc, Manik Bhattacharjee pour la conception et le code, graphiques par Tristan Millner et nettoyage de code par François Leiber) – période 1998-2002.

Son site web est toujours en ligne, dernière mise à jour il y a 18 ans !

Pour construire cette simulation, nous avons cherché des livres sur les fourmis à la BNF, observé des fourmis dans la nature et pris des photos argentiques de nos observations.

 

 

 

 

Ce projet était une occasion d’apprendre la programmation orientée objet et le C++, l’affichage graphique sous Windows et Linux en utilisant DirectX, GTK et enfin SDL.

Présentation basique

Les fourmis explorent leur monde 2D pour rechercher de la nourriture qu’elles rapportent à la fourmillière.

Chaque fourmi est indépendante et en fonction de sa situation, de son environnement et de sa catégorie (ouvrière, reine, nourrice, soldat) effectue la tâche appropriée. Elles laissent des pistes de phéromones (flèches bleues pour la nourriture, points rouge pour le danger), se déplacent sur la carte, prélèvent de la nourriture (les formes jaune brun) et élèvent de nouvelles fourmis à partir de larves dans la fourmillière. Elles peuvent tuer d’autres insectes et des fourmis issues d’autres fourmillières (les confettis colorés représentent un cadavre d’insecte).

L’interface montre à la fois une mini-carte avec toutes les fourmis (à gauche), et une vue locale (à droite). Une fourmi peut être sélectionnée pour afficher ses caractéristiques (à gauche), et lorsqu’elle transporte de la nourriture, c’est affiché.

Des ouvrières ramassent de la nourriture et laissent/suivent des phéromonesUne fourmi-soldat patrouille près d’un insecte mort et de phéromones de danger Dans la fourmilliére les nourrices s’occupent des larves près de la reine. Les ouvrières apportent de la nourriture de l’extérieur.

Etat actuel

J’a récemment (février 2020) essayé de relancer le programme, et j’ai pu le recompiler avec les anciennes librairies toujours distribuées avec ma version de linux.

La dernière version 2D a été compilée après quelques modifications (apparemment les processeurs 64 bits et du C++-98 mal codé, ça crée des bugs). Ca fonctionne assez bien avec plusieurs milliers de fourmis, bien qu’il n’y ait pas d’accélération matérielle pour l’affichage.


Nettoyer le code source représenterait beaucoup de travail, mais ce serait bien de voir SFourmi avec des librairies plus modernes, avec de l’accélération matérielle et SDL2, du code C++-20 propre utilisant le parallèlisme (voire les GPU !).

La version 3D – OpenGL développée par Michel la dernière année compile mais crashe fréquemment et n’a pas l’air de bien fonctionner car l’affichage est incompréhensible.

Tout le code a été mis sur Github, la nouvelle license est la GNU Affero GPL v3.

Publié dans software project | Laisser un commentaire

Chemin de fer du Gâtinais – tracé reconstitué sur UMAP

De 1901 au début des années 1950 existait une ligne de chemin de fer entre Egreville et Sens. Connaissant un village dans le coin je m’y suis intéressé. La ligne a été supprimée sur tout son tracé, mais des amateurs ont rassemblé de nombreuses informations sur le tracé et sur les anciens bâtiments et j’ai pu utiliser les photos aériennes (IGN, Bing Maps et Google Maps).

Grâce à ces informations, j’ai reconstitué le tracé et les bâtiments existants du mieux que j’ai pu, mais il y a peut-être des erreurs :

See full screen

Sources :

http://www.inventaires-ferroviaires.fr/hd77/77168.a.pdf
– les photos google maps et bing maps avec les traces visibles (limites des champs et traces sombres sur les champs de l’ancien tracé)
– photos aériennes anciennes et carte de 1950 de l’IGN https://remonterletemps.ign.fr/comparer/basic?x=3.257303&y=48.221596&z=15&layer1=ORTHOIMAGERY.ORTHOPHOTOS.1950-1965&layer2=GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN50.1950&mode=doubleMap
– Informations du forum http://www.passion-metrique.net/forums/viewtopic.php?f=2&t=7647&hilit=CFY&start=45

Publié dans Divers | Laisser un commentaire

(English) setGID, ldd and library not found

Désolé, cet article est seulement disponible en Anglais Américain.

Publié dans Notes Info | Laisser un commentaire

Visite virtuelle lycée Louis-le-Grand (1996-1998)

Le projet LLG

J’ai décidé de reprendre un vieux projet de logiciel de visite virtuelle de mon lycée en 1997-1998 et de le convertir en une page web html5/javascript/css pour me familiariser un peu plus avec ces technologies.
A l’origine, il s’agissait de parcourir le lycée de photo en photo dans un logiciel écrit en Visual Basic 6.facadeDeCote

L’équipe du projet

  • idée initiale, conception et développement: Manik Bhattacharjee
  • photo : Manik Bhattacharjee et Michel Tran Ngoc
  • format d’image compressé GCD : Laurent Demonet
  • icônes, modélisation 3D d’une classe : Tristan Millner

Réalisation

Les photos ont été prises en argentique (réflex manuel), développées, puis scannées au scanner à plat et converties en GCD par moi-même sur un Pentium 133 MHz. J’ai ensuite utilisé un petit logiciel créé pour l’occasion pour définir des zones de clic pour chaque image, et les images auxquelles elles mènent. Quelques rares photos ont été prises avec l’appareil numérique basse résolution d’un ami (Habib Shoukry), un Sony qui stockait les photos directement sur disquette 3,5″.

Tristan Millner a produit le design de l’interface d’origine, quelques icônes et une modélisation 3D d’une classe (dont il ne me reste qu’une capture d’écran). La modélisation 3D avait pour but de produire un jeu en 3D type Doom, mais nous nous sommes arrêtés là.

Nous avions eu aussi l’autorisation d’accéder au musée scientifique du lycée ainsi qu’à la bibliothèque, mais je ne retrouve plus les photos correspondantes.

Conversion en HTML5

Ce projet ayant été réalisé sur un PC il y a 17 ans, j’ai perdu une partie des données en route. Je n’ai plus les images numérisées en JPEG (supprimées sans doute par manque de place du PC), les photos argentiques sont sans doute dans une cave, et certaines photos manquent dans la version que j’ai retrouvée. Si je retrouve sur de vieux CDs gravées ou sur des disques ZIP des données plus complètes, je mettrai à jour la version en ligne.

En 1997, Visual Basic ne pouvait pas afficher une image au format JPEG, uniquement du BMP. Mais ce format prenait tellement de place qu’il n’était pas possible de stocker toutes les photos dans ce format et que le tout tienne sur un CD (et ne remplisse pas mon disque dur de l’époque). Laurent Demonet a alors proposé de programmer un format de fichier (en C) dérivé des mêmes principes que le GIF, avec un contrôle OCX pour l’intégrer dans Visual Basic. La qualité d’image nous semblait correcte (palette de couleurs réduite et une résolution correcte pour l’époque).
J’ai heureusement retrouvé le code C du contrôle OCX, et j’ai pu ainsi écrire un petit programme pour convertir mes fichiers GCD en jpeg grâce à la librairie Qt.

Les courtes légendes des photos étaient sauvées dans un format texte simple, mais l’encodage des caractères accentués était celui utilisé par Windows 95. J’ai donc converti ces fichiers de CP1252 en UTF-8 grâce à la commande iconv.

Je n’ai pas reconstitué l’ancienne interface graphique, mais j’ai créé une page html5 utilisant AJAX pour récupérer les images et les informations sur les zones de clic permettant de passer d’une image à une autre.

Je n’ai pas encore mis en place le plan du lycée avec plusieurs points de départ comme c’était le cas du logiciel d’origine. C’est encore un travail en cours !

Liens

Site officiel du lycée Louis-le-Grand

Site officiel du musée scientifique du lycée Louis-le-Grand

 

Publié dans software project | Laisser un commentaire

Ubuntu 15.04 : ajout d’un PPA avec un proxy

Pour installer un nouveau PPA (par exemple les backports KDE pour avoir le dernier KDE stable avec Kubuntu 15.04) avec une connexion nécessitant un proxy pour les accès http/https :

export http_proxy=http://monProxy:port
export https_proxy=https://monProxy:port
sudo -E add-apt-repository ppa:kubuntu-ppa/backport

Le « -E » permet à sudo de conserver les variables d’environnement du proxy.

Pour qu’apt utilise les proxys, créer un fichier /etc/apt/apt.conf.d/50proxy contenant:
Acquire::http::Proxy "http://monProxy:port";
Acquire::https::Proxy "https://monProxy:port";

Publié dans Notes Info | Laisser un commentaire

(English) Gitlab behind a reverse proxy with SSL termination

Désolé, cet article est seulement disponible en Anglais Américain.

Publié dans Notes Info | Laisser un commentaire

Sciences en Marche 2: Grenoble-Lyon

Le 4 octobre 2014, les participants à Sciences en Marche de Grenoble ont fait le trajet Grenoble-Lyon à vélo.

Sciences en marche – Grenoble -> Lyon par m_b_38
Voici une carte du trajet que j’ai fait :
– En rouge, étape Grenoble-Rives à vélo. Le vélo est reparti pour Grenoble depuis la gare.
– En bleu, la voiture balai partie longtemps après les cyclistes tourne en rond puis se rend à Eclose pour un rendez-vous avec les cyclistes
– En rouge, la voiture balai suit les cyclistes jusqu’au périphérique de Lyon. Les vélos se rendent seuls au centre-ville en évitant la voie rapide. La voiture se gare sur les quais.
– En vert, le trajet à pied jusqu’au point de rendez-vous (arrivés les derniers !).

Lien vers la carte

La carte en petit

Voir en plein écran

Publié dans Politique & société | Laisser un commentaire

GpxPlot : premier aperçu

GpxPlot est un petit logiciel pour:

  • afficher des traces GPS en 3D (à partir d’un fichier .gpx)
  • les éditer (couper une liaison, supprimer un point, déplacer un point, fusionner des traces, voir et modifier des waypoints…)
  • Afficher un modèle numérique de terrain
  • afficher des photos satellite/aériennes plaquées sur le terrain 3D
  • afficher des données vectorielles OpenStreetMap mappées sur la surface 3D (et peut-etre des tuiles de type Mapnik)

GpxPlot est la continuation de mon exploration des données OSM et SRTM avec python.

GpxPlot-2014-09-21GpxPlot-2014-09-21b

C’est une image du Mont Rachais en 3D, avec :

  • la surface 3D issue de SRTM
  • Une photo satellite/aérienne (Bing Maps) plaquée sur cette surface, mais plus large. L’altitude 0 en dehors de la surface SRTM explique la « falaise » visible tout autour de la surface 3D. Un bug provoque un décalage de la photo par rapport aux autres données (voir le tracé de l’Isère qui croise les routes à gauche)
  • En rouge, un tracé GPX correspondant à une randonnée
  • Les autres traces sont des chemins et routes issues d’OpenStreetMap

Les choix techniques utilisés ne sont pas stables (affichage 3D complexe, un peu lent…) :

Python, PyQt4 pour l’interface, Mayavi Mlab pour l’affichage 3D, gpxpy pour la lecture des GPX, l’API OpenStreetMap Python, l’API Bing Maps, les données SRTM

J’espère que j’aurai un peu de temps pour développer ceci, et y ajouter les données ouvertes issues du groupe GreLibre pour Grenoble et sa région (orthophotos, modèles de terrain plus précis…)

Publié dans Divers | Laisser un commentaire

Sciences en Marche

Le mouvement Sciences en marche est parti !

Voici la carte finale pour le trajet en vélo Grenoble-Lyon samedi 4 octobre:

Voir en plein écran

Publié dans Politique & société | Laisser un commentaire

Drobo après une coupure de courant : statut 98304

Après une coupure de courant au cours du week-end, les deux Drobo FS au boulot ont redémarré quand le courant est revenu (21 heures plus tard). Par contre, les dossiers partagés amba/windows n’étaient pas accessibles.

Quand j’ai essayé mon script droboStatus, tout était affiché normalement, mis à part une ligne :

Overall status of the device 98304 = 11000000000000000b -> UNKNOWN STATUS – please see http://code.google.com/p/drobowebdashboard/wiki/ESATMUpdate#ESATMUpdate/mStatus

Comme la page en lien ne donne pas de réponse pour ce code, il semble que le status 98304 correspond à un état où tout fonctionne bien mais où les partages de fichier sont désactivés après uné vérification du disque (fsck).

Un simple redémarrage des drobos à l’aide du bouton arrière a suffit à revenir à un fonctionnement normal.

Publié dans Notes Info | Laisser un commentaire