Calcolatrice meccanica Brunsviga 13 ZK seriale 213474... indicativamente 1930-19340
A parte lo stato della vernice e' ancora funzionate
Calcolatrice meccanica Brunsviga 13 ZK seriale 213474... indicativamente 1930-19340
A parte lo stato della vernice e' ancora funzionate
Ho avuto modo di provare il sensore Intel RealSense L515 sul campo e piu' precisamente in una acquisizione in cava. Il sensore era promettente perche' la scheda tecnica parla di un raggio di azione del lidar massimo di 9 m
Ci sono da indicare un paio di aspetti
Il primo e' che il sensore e' dal punto di vista del firmware e del software ancora abbastanza immaturo. RTab-Map utilizza il sensore solo in alcune versioni ancora beta....funziona bene ma non sono disponibili tutti i parametri di impostazione che si possono settare in Intel RealSense Viewer. Per esempio il firmware attuale permette di lavorare a 1280 pixel di risoluzione mentre RTab-Map lavora al massimo a 640x480 facendo un downgrade al firmware 1.5.0.0
https://www.intelrealsense.com/optimizing-the-lidar-camera-l515-range/
Il secondo aspetto decisamente penalizzante e' che il raggio di azione in cava era compreso tra 0.5 ed 1 m dalla parete rocciosa ... a maggiori distanze non c'era segnale
Leggendo nel dettaglio la scheda tecnica si osserva che il laser emette ad una frequenza di 860 nm che si sovrappone con lo spettro di emissione del Sole.. in pratica se si usa il sensore outdoor questo viene completamente accecato dalla luce solare. Per una riprova ho fatto una acquisizione di notte e sono arrivato fino a 7 di range di rilevamento. C'e' inoltre da dire il raggio d'azione del laser e' su un settore circolare per cui se ci troviamo all'estremo del range di misura la parte centrale potra' essere acquisita mentre i bordi dell'immagine no
In estrema sintesi strumento interessante ma si puo' usare per scopi geologici solo in miniera, il che puo' avere un senso date le ridotte dimensioni
La migliore congiunzione si raggiungera' il 21 dicembre ma vista l'incertezza meteo ho preferito approfittare di una finestra tra le nuvole per fare qualche foto
Questa e' la foto migliore...si riescono a vedere anche i satelliti galileiani
![]() |
| Congiunzione Giove Saturno foto singola |
![]() |
| Elaborazione da video |
Da Stellarium (ovviamente l'immagine del telescopio e' ribaltata)
Per avere un'idea della distanza angolare ho ripreso con le stelle impostazione :Luna e Giove-Saturno
Celestron Nexstart 127 SLT con Canon EOS 450d
Per salvare i dati da una porta seriale (nello specifico un GPS) e dividerli in blocchi orari ho trovato comodo il comando timeout che uccide un processo dopo un tempo definito dall'utente
per esempio si puo' creare un file come il seguente
file sig.sh
================================
timeout -sHUP 59m cat /dev/ttyUSB0 > "/$(date +"%Y%m%d_%H_%M").ubx"
================================
a questo punto si puo' mettere il tutto in cron con esecuzione oraria per riavviare
@hourly /sig.sh
(ho impostato il timeout a 59 minuti in modo da essere sicuro che quando parte il cron con cadenza oraria la porta seriale non sia bloccata dal processo in esecuzione in precedenza)
Il modulo trasformatore della Olivetti Logos 55 e 58 (sono intercambiali) si trova al di sopra della tastiera ed e' fissato con 4 viti. Il collegamento con la 220 V viene con un cavo faston bianco direttamente dalla presa di rete
E' presente un fusibile da 100 mA
Per verificare le tensioni si puo' seguire lo schema sottostante (questa piastrina nel linguaggio Olivetti si chiama Piastrina ALI)
![]() |
| la linea +12V di sinistra e' definita A, quella a destra B |
Mi e' capitato di avere un modulo rotto che non presentava tensione sulla linea a -12V. In questo caso all'accensione anche premendo il tasto di CLR Registers la luce rossa non si spengeva.
Il modulo di alimentazione e' collegato alla parte elettronica con un connettore a pettine sull'estremita sinistra
Coperto da una copertura bianca si trova questo condensatore
Al di sotto del fusibile e' presente un cavo fissato con faston a 6 posizioni (con soli 5 pin) definito nel manuale Olivetti Combo-Line alternata con le posizioni dello schema in grassetto
1 N 5
2 4 6
Se si scollega il faston si devono trovare 12V alternati tra i pin 1 e 2, 24V alternati tra i pin 5 e 6, e tra i punti 4 e 5, 4 e 6 si trovano 11-12V
Aggiornamento 2
Ho avuto modo di osservare una tastiera di una Olivetti Logos 58
| In alto Logos 55, in basso Logos 58 |
Ad esclusione del differente numero di tasti il meccanismo e' sostanzialmente il solito. Avendo un modello di tastiera funzionante ho visto che alcuni pendolini non hanno solo due posizioni (come indicato in precedenza) ma hanno anche una posizione neutra centrale. Inoltre nella Logos 58 tutti i pendoli sono dello stesso colore
| In alto Logos 55, in basso Logos 58 |
Consultando il sito http://johnwolff.id.au/calculators/Olivetti/Logos58/Logos58.htm ho potuto osservare di non essermi sbagliato sulla natura binaria della codifica della tastiera
========================================
Aggiornamento
ho avuto modo di leggere il service manual originale Olivetti
Nel linguaggio del manuale gli interruttori sono indicati come Dry-Reed mentre quelli che io ho indicato come cavallotti vengono definiti "pendolini". Viene inoltre indicata la presenza di un "ponte qualificazione capacita'"
========================================
Sto cercando di rimettere in funzione una Olivetti Logos 55. La calcolatrice si smonta in modo modulare C'e' il blocco tastiera, il blocco alimentazione (riconoscibile dal generoso condensatore blu), il blocco motore (a destra dell'alimentazione), il blocco piastrina console (tasto on/off e selettori di precisione del calcolo) e blocco stampa.
Per sganciare la tastiera basta spostare 4 forcelle e tirare verso l'alto tutto il blocco tastiera
Al di sotto della tastiera sono presenti 7 interruttori di prossimita' magnetici (ampolle reed). Si tratta di piccole ampolle di vetro riempite di gas inerte nel quale sono inserite due lamine. Azionando i tasti si alzano ed abbassano 7 cavallotti (2 rossi,1 bianco e 4 neri) con un magnete all'estremita'
http://www.elektro.it/magnetici/magnetici_01.html
I cavallotti sono bloccati da un gabbietta di plastica bianca. L'eta' ha reso molto fragile la plastica ed i dentini sono molto facili da rompere. A sinistra si possono vedere i cavallotti smontati e la gabbietta fuori dalla sede
In pratica la tastiera si comporta come un encoder a 7 bit. Per ogni tasto premuto c'e' una combinazione univoca delle posizioni dei cavallotti
Un esempio di movimento
Sul bordo della tastiera c'e' una guarnizione di gomma (prima e dopo la pulizia)
Corso di difficolta' molto bassa ma in ogni caso utile per partire con Swift....certo che ci sono convergenze astrali tra Kotlin e Swift
Per includere una libreria in qmake che disponga del supporto a pkg-config e' sufficiente aggiungere le due righe sottostanti nel file .pro
unix: CONFIG += link_pkgconfig
unix: PKGCONFIG += pcl_common-1.11 pcl_features-1.11 pcl_io-1.11
per conoscere il nome esatto si puo' digitare
Per imparare un po' di librerie mi sono fatto il mio visualizzatore di nuvole di punti
Volevo includere ImGui o NanoGui per settare i valori delle variabili ma non riesco a trovare il modo di compilarli
https://github.com/c1p81/cloudpoint_glfw
La visualizzazione si modifica con i tasti freccia/pg up-down ed il mouse
Dopo un po' di esperienza con i sensori a luce strutturata ho provata il sensore Intel RealSense D435 (attenzione manca la i finale....a differenza al D435i qui non e' presenta la IMU integrata) che funziona come sensore di profondita' usando la stereoscopia di due camere
Il sensore e' nato per applicazioni di robotica ed e' molto veloce nell'acquisizione/elaborazione (circa 30 fps) ma il risultato come dato di profondita' e' molto differente da quello che si ottiene da un sensore a luce strutturata
l'SDK e' nato per Windows e Ubuntu ma si puo' installare su Debian utilizzando Snap
snap install librealsense
Oltre alle librerie si installa anche realsense-viewer da cui e' possibile anche effettuare l'upgrade del firmware della camera
Gli esempi si trovano a https://dev.intelrealsense.com/docs/code-samples
Per compilare gli esempi ho dovuto installare anche la libreria StbEasyFont (e' presente nella directory third parts ma io la ho installata con apt per semplicita')
=================================================
cmake_minimum_required(VERSION 3.5)
project(realsense LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(realsense2 REQUIRED )
add_executable(realsense main.cpp)target_link_libraries(realsense realsense2)=================================================
=================================================
#include <iostream>#include <librealsense2/rs.hpp>using namespace std;int main(){rs2::pipeline p;p.start();rs2::frameset frames = p.wait_for_frames();rs2::depth_frame depth = frames.get_depth_frame();float width = depth.get_width();float height = depth.get_height();float dist_to_center = depth.get_distance(width / 2, height / 2);std::cout << "The camera is facing an object " <<dist_to_center << " meters away" << endl << endl;return 0;}
=================================================
Multicam
Nell'esempio Multicam oltre alla libreria Realsense viene usata anche OpenGL con glfw
================================================
cmake_minimum_required(VERSION 3.5)project(multicam LANGUAGES CXX)set(CMAKE_CXX_STANDARD 11)set(CMAKE_CXX_STANDARD_REQUIRED ON)# finds OpenGL, GLU and X11find_package(OpenGL REQUIRED)if(NOT OPENGL_FOUND)message("ERROR: OpenGL not found")endif(NOT OPENGL_FOUND)set(GL_LIBRARY GL GLU X11)find_package(realsense2 REQUIRED )add_executable(multicam main.cpp)target_link_libraries(multicam realsense2 glfw ${GL_LIBRARY} m)
================================================
Avevo provato tempo fa ad usare il tablet Google Tango per scansionare un affioramento roccioso
Adesso che anche Iphone 12 pro (e Ipad Pro 2020) ha un lidar volevo vedere la possibilita' di usare il telefono di Apple per applicazione geologiche
Scansione con Iphone
Scansione con Google Tango Tablet
Non esiste una applicazione ufficiale per esportare i cloudpoint o la mesh da IPhone ma sono disponibili 3DScanner App, PolyCam e Heges
I dati comunque sono leggibili ed elaboraibili da CloudCompare
Una volta spacchettato il file tar.gz per esempio c:\vtk\src. Si crea una directory build e con CMake-GUI si indica la sorgente in src e ovviamente la build con build usando come target il compilatore di Visual Studio 2019 (viene richiesta la scelta dopo aver premuto Configure)
Al termine si clicca Generate e si aprono gli strumenti di Visual Studio/Developer Command Prompt, si entra nella directory dove e' stato creato il file progetto
Per installare ed usare PCL su Windows la cosa piu' comoda e' utilizzare il pacchetto PCL-1.11.1-AllInOne-msvc2019-win64
Una volta installato il file exe per esempio in C:\Program Files\PCL 1.11.1
il file CMAKE e' il seguente
===============================================
cmake_minimum_required(VERSION 3.5)
project(t3 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(PCL 1.3 REQUIRED COMPONENTS common io features)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(t3 main.cpp)
target_link_libraries(t3 ${PCL_LIBRARIES})
===============================================
mentre un programma di esempio e' ===============================================#include <iostream>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#include <pcl/features/normal_3d.h>using namespace std;int main(){pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);if (pcl::io::loadPCDFile<pcl::PointXYZ> ("c://gabriele.pcd", *cloud) == -1) //* load the file{PCL_ERROR ("Couldn't read file test_pcd.pcd \n");return (-1);}//std::cout << "Loaded " << cloud->width * cloud->height << " data points from test_pcd.pcd with the following fields: " << std::endl;/*for (size_t i = 0; i < cloud->points.size (); ++i)std::cout << " " << cloud->points[i].x << " " << cloud->points[i].y << " " << cloud->points[i].z << std::endl;*/// Create the normal estimation class, and pass the input dataset to itpcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne;ne.setInputCloud (cloud);// Create an empty kdtree representation, and pass it to the normal estimation object.// Its content will be filled inside the object, based on the given input dataset (as no other search surface is given).pcl::search::KdTree<pcl::PointXYZ>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZ> ());ne.setSearchMethod (tree);// Output datasetspcl::PointCloud<pcl::Normal>::Ptr cloud_normals (new pcl::PointCloud<pcl::Normal>);// Use all neighbors in a sphere of radius 3cmne.setRadiusSearch (0.03);// Compute the featuresne.compute (*cloud_normals);//std::cout << endl << cloud_normals->size() << endl;// cloud_normals->size () should have the same size as the input cloud->size ()*int i = 0;for (pcl::Normal n : *cloud_normals) {//std::cerr << i << " n = " << n.normal_x << ", " << n.normal_y << ", " << n.normal_z << "\n";std::cout << n.normal_x << "," << n.normal_y << "," << n.normal_z << "\n";i++;}return 0;}
Questo modello di Pong Soundic anno 1979 a colori lo ho comprato come rotto in quanto i controller non rispondevano
Di fatto pero' i controller sono dei semplici potenziometri
Per misurare le lunghezze e gli angoli di una nuvola di punti su CloudCompare si clicchi sul pulsante cerchiato in rosso nell'immagine successiva
A seguito di questo post ho provato a vedere ho provato a vedere cosa accadeva ad utilizzare un modello specifico per la lingua italiana in...