Topic: Manipolatore 5 assi  (Letto 1926 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re: Manipolatore 5 assi
« Risposta #15 il: Luglio 22, 2014, 23:58 »
Oltre a quanto già segnalato, un po' di altre risorse utili su git e company. In particolare:
http://www.vogella.com/tutorials/Git/article.html
http://rogerdudler.github.io/git-guide/index.it.html
http://marklodato.github.io/visual-git-guide/index-it.html
http://learnxinyminutes.com/docs/git/

Non ci ho messo esattamente 15/20 min (la manualistica non è proprio chiara) e l'inserimento dei file è stato rocambolesco, molto probabilmente primitivo e poco efficiente

In effetti per muoversi con cognizione di causa serve un po' di più, fare però versioning dei propri file su github,
partendo dal repository locale (quello sul proprio computer) e se tutto è configurato correttamente, è un semplice:
[codice]git add nomefile
git commit -m"Commento del commit"
git push origin master[/codice]
Mi raccomando non dimenticate di leggere il file Readme!

Come puoi notare appare come prima pagina del repo.
Leggevo le indicazioni sul come spostare i file nelle cartelle principali: non è così che si procede.

Sul tuo computer crei già la struttura delle directory così come deve essere, con all'interno i file desiderati,
poi "pushi" il tutto sul repository su GitHub.
« Ultima modifica: Luglio 23, 2014, 21:58 da Giornale di Sistema »

Offline Grezzo

  • python erectus
  • ***
  • Post: 147
  • Punti reputazione: 0
    • Mostra profilo
Re: Manipolatore 5 assi
« Risposta #16 il: Luglio 23, 2014, 14:11 »
Grazie Giornale di Sistema,
mi rendo pienamente conto che non è come ho operato io il modo migliore per presentare il lavoro fatto, ne sono consapevole.

Citazione
...l'inserimento dei file è stato rocambolesco, molto probabilmente primitivo e poco efficiente

Provvederò quanto prima a rendere il tutto disponibile sotto una veste più decorosa.
Il materiale che mi hai fornito merita un'attenta lettura, la quale richiede tempo (risorsa purtroppo non abbondante) ed esercizio. Considerando però che fino all'altro ieri nemmeno sapevo cosa era Git & C. sto facendo progressi nelle mie lacunose conoscenze informatiche.

Spero tuttavia che i file per ora pubblicati possano comunque destare interesse, a breve renderò disponibile il sorgente per Arduino ed un pratico, nonché sintetico, manuale sul programma.

Grazie.

Offline Grezzo

  • python erectus
  • ***
  • Post: 147
  • Punti reputazione: 0
    • Mostra profilo
Re: Manipolatore 5 assi
« Risposta #17 il: Luglio 23, 2014, 14:59 »
Bene credo di aver inserito nella maniera "canonica" i file:

https://github.com/Mrgrezzo82/Manipolatore5Assi01/tree/master

Troverete inoltre un file che si chiama Prova.rbt, è in sostanza un file di salvatggio generato dal mio programma che muove il manipolatore in 5 diverse posizioni.

Attendo come sempre un vostro riscontro. Grazie.

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Manipolatore 5 assi
« Risposta #18 il: Luglio 23, 2014, 18:03 »
Il readme e' completamente inutile. Di fatto semplicemente duplica informazione altrimenti disponibile (DRY!) e non dice nulla di piu'.

Italiano == solo italiani.

Gestione dei moduli... ma *davvero*? (e due.)
Un libro normale su Python spiega come funzionano le cose, per fare qualcosa che funziona basta riflettere su come funzionano le cose.

Poi non e' che un setup.py faccia male...

Non vado oltre. Un __init__ di 100 righe che termina con un gtk.main() credo che violi *ogni* norma di software engineering creata nei decenni.

Poi cose spurie che il mio occhio non ha potuto non notare, pur cercando di non guardare il codice... old style classes, palate di codice ripetitivo e inutile da mantenere. Credo che tutto il modulo principale potrebbe diventare *al massimo* un centinaio di righe usando Python come si deve. Se tu avessi dei test unitari, potrei anche arrischiarmi a fare io il refactoring per te e farti vedere come diventa, ma senza rischio di rompere qualcosa (ovvero, dovrei scrivere del codice alla cieca e non so quanto potrebbe aiutarti -- cioe', se ci prendo, molto, se sca**o, molto poco --).

Offline Grezzo

  • python erectus
  • ***
  • Post: 147
  • Punti reputazione: 0
    • Mostra profilo
Re: Manipolatore 5 assi
« Risposta #19 il: Luglio 23, 2014, 18:52 »
Ammetto che il Readme ha un'utilità pari a 0, ma fa parte di un processo "empirico" atto a capire come utilizzare GitHub.
Nelle prossime puntate si arricchirà di significato.

L'italiano è un limite, è vero ma limitate sono le mie conoscenze in materia di diffusione software (da 2 giorni un po' meno) ed ammetto che anch'io ho pensato
di tradurre commenti e righe di codice per incrementare la fruibilità.
Anche questo verrà implementato quanto prima.

Ora io sono estremamente sicuro che c'è un modo migliore di programmare, le mie "capacità" sono frutto di qualche ricerca su internet e del manuale "Python di Marco Beri", libricino interessante ma non completo.

Se mi rivolgo ad altre persone è perchè sono sicuro che possano corregere il mio lavoro. Il software che ho scritto è solo una parte del progetto, devo valurtane la meccanica e l'elettronica (quindi una marea di problematiche). Il mio mestiere non è il programmatore ciò nonostante mi azzardo lo stesso nel programmare, coi risultati che tutti potete vedere.

In definitiva qualsiasi aiuto è ben accetto, purchè sia comprensibile:

Citazione
... Se tu avessi dei test unitari, potrei anche arrischiarmi a fare io il refactoring per te e farti vedere come diventa, ma senza rischio di rompere qualcosa (ovvero, dovrei scrivere del codice alla cieca e non so quanto potrebbe aiutarti -- cioe', se ci prendo, molto, se sca**o, molto poco --).

Riko ho la certezza che il tuo suggerimento è interessante ma in tutta onestà non capisco di cosa tu stia parlando... avrei bisogno di qualche esempio o chiarimenti di qualsivoglia specie. Grazie!

Il discorso setup non sarebbe male, non ne ho mai preparati. Dovrei documentarmi.

Offline Max74

  • python neanderthalensis
  • ****
  • Post: 383
  • Punti reputazione: 0
    • Mostra profilo
Re: Manipolatore 5 assi
« Risposta #20 il: Luglio 23, 2014, 19:19 »
Ammetto che il Readme ha un'utilità pari a 0, ma fa parte di un processo "empirico" atto a capire come utilizzare GitHub.
Nelle prossime puntate si arricchirà di significato.

L'italiano è un limite, è vero ma limitate sono le mie conoscenze in materia di diffusione software (da 2 giorni un po' meno) ed ammetto che anch'io ho pensato
di tradurre commenti e righe di codice per incrementare la fruibilità.
Anche questo verrà implementato quanto prima.

Ora io sono estremamente sicuro che c'è un modo migliore di programmare, le mie "capacità" sono frutto di qualche ricerca su internet e del manuale "Python di Marco Beri", libricino interessante ma non completo.

Se mi rivolgo ad altre persone è perchè sono sicuro che possano corregere il mio lavoro. Il software che ho scritto è solo una parte del progetto, devo valurtane la meccanica e l'elettronica (quindi una marea di problematiche). Il mio mestiere non è il programmatore ciò nonostante mi azzardo lo stesso nel programmare, coi risultati che tutti potete vedere.

In definitiva qualsiasi aiuto è ben accetto, purchè sia comprensibile:

Citazione
... Se tu avessi dei test unitari, potrei anche arrischiarmi a fare io il refactoring per te e farti vedere come diventa, ma senza rischio di rompere qualcosa (ovvero, dovrei scrivere del codice alla cieca e non so quanto potrebbe aiutarti -- cioe', se ci prendo, molto, se sca**o, molto poco --).

Riko ho la certezza che il tuo suggerimento è interessante ma in tutta onestà non capisco di cosa tu stia parlando... avrei bisogno di qualche esempio o chiarimenti di qualsivoglia specie. Grazie!

Il discorso setup non sarebbe male, non ne ho mai preparati. Dovrei documentarmi.

http://it.wikipedia.org/wiki/Unit_testing
Tra l'altro c'è nella pronta una libreria apposita https://docs.python.org/2/library/unittest.html. Se Riko ha detto che sarebbe pronto a fare il refactoring io sinceramente non mi farei sfuggire l'occasione e mi metterei subito a studiare unittest. Anzi lo farei in ogni caso. :D

Offline Grezzo

  • python erectus
  • ***
  • Post: 147
  • Punti reputazione: 0
    • Mostra profilo
Re: Manipolatore 5 assi
« Risposta #21 il: Luglio 23, 2014, 21:00 »
Capisco ora un attimo di più il concetto (grazie Max74). In definitiva dovrei creare dei comparti indipendenti autonomi del programma.
Però credo di non essere lontano dall'obbiettivo. Il programma consta infatti di due operazioni fondamentali:
1) la movimentazione del robot;
2) la visualizzazione delle posizioni salvate

Se analizziamo solo il main e se escludiamo l'accesso alla pagina con le posizioni salvate, si può comunque mantenere la funzionalità del programma,
riducendo il codice da gestire. Basta inibire il toolbutton tb_programmazione.

[codice]def tb_programmazione_clicked(self, widget, data=None):
      program = programviewer(self.percorso_form)
      program.program_show(self.registro,self.simulation)[/codice]

La __init__ è una sfilza di dichiarazioni ed inizializzazioni (riducibili se non ho capito male, dalla dichiarazione di Rico, benché non mi sia chiaro come).

Sul main_delete non mi soffermo, mentre il mainwin_key_press_event permette il cambiamento dei valori negli speedbutton che indicano la posizione dei singoli assi muovendo il mouse. Il tutto è possibile tenendo premuto dei specifici tasti (1 = asseA, 2 = asseB, ecc)

Segue l'attivazione dei tasti del menù, e la gestione dei range di valore per gli speed button che indicano la posizione dei motori ed i loro estremi  (min 0° max 180 di default).
Con set_range impedisco alla posizione del motore di oltrepassare il range min/max, in più attuo il movimento se sono connesso e non in simulazione.
set_min impedisce al valore minimo di scostamento di salire sopra al valore attuale di posizione dell'asse.
set_max impedisce al valore massimo di scostamento di scendere al di sotto del valore attuale di posizione dell'asse.

Il resto sono i toolbutton che implementano le funzioni che in sostanza dichiarano nel nome.

Credo sia possibile isolare singole parti del programma e testarle ma lo affermo conoscendo come funziona, per tutti gli altri forse è un discorso più complesso.


Rimango però un po' perplesso sulla seguente dichiarazione di Riko:
Citazione
Un libro normale su Python spiega come funzionano le cose, per fare qualcosa che funziona basta riflettere su come funzionano le cose.
Ovvero quali cose nello specifico? Cosa intendi? E come posso evitare
Citazione
old style classes, palate di codice ripetitivo e inutile da mantenere
?

Come sempre grazie a tutti.

Offline Grezzo

  • python erectus
  • ***
  • Post: 147
  • Punti reputazione: 0
    • Mostra profilo
Re: Manipolatore 5 assi
« Risposta #22 il: Luglio 24, 2014, 10:53 »
Sarebbe possibile salvare l'eventaule manuale (corredato di immagini) in un file .rst? Grazie.

Offline imbuto

  • python neanderthalensis
  • ****
  • Post: 462
  • Punti reputazione: 2
    • Mostra profilo
Re: Manipolatore 5 assi
« Risposta #23 il: Luglio 24, 2014, 11:47 »
Per la documentazione, io ti consiglio di dare uno sguardo a http://sphinx-doc.org/
Col minimo sforzo (addirittura puoi generare documentazione automaticamente dal codice, volendo) hai documentazione con aspetto professionale e ti permette di generare HTML, pdf, etc.

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.655
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re: Manipolatore 5 assi
« Risposta #24 il: Luglio 24, 2014, 12:25 »
Suggerirei di cambiare il titolo della discussione da "manipolatore 5 assi" a "manipolare Python e GitHub"  :D :D :D

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Manipolatore 5 assi
« Risposta #25 il: Luglio 24, 2014, 15:08 »
Per la documentazione, io ti consiglio di dare uno sguardo a http://sphinx-doc.org/
Col minimo sforzo (addirittura puoi generare documentazione automaticamente dal codice, volendo) hai documentazione con aspetto professionale e ti permette di generare HTML, pdf, etc.

Tutto vero, ma si sta buttando davvero troppa carne al fuoco.
E' vero che documentazione fatta bene aiuta, ma e' anche vero che il suo goal immediato e' avere collaboratori.

Per questo quello che conta veramente e':
- quanto e' interessante il problema
- dare una buona immagine sulle proprie capacita' (e.g., consapevolezza che e' il 2014 e non il 1994)
- codice leggibile e su cui venga voglia di mettere mano

Questi sono veri e propri blocker: se il problema non e' interessante, nessuno arriva a prescindere. Se si intravvedono forti problemi di interazione e collaborazione, la gente non verra'. Se il codice e' un incubo, la gente non verra'.

Per un progetto embrionale, non ci si aspetta davvero documentazione pronta. Certo, averla e' un bene, ma non averla non e' un male.

Offline Grezzo

  • python erectus
  • ***
  • Post: 147
  • Punti reputazione: 0
    • Mostra profilo
Re: Manipolatore 5 assi
« Risposta #26 il: Luglio 24, 2014, 17:58 »
Effettivamente si sta parlando sopratutto delle fasi preliminari per la pubblicazione del progetto, discorsi molto utili ed interessanti ma eludono la questione principale:

rielaborare il codice per ottimizzarlo ed implementarlo!

Ora per me il progetto è interessante giacchè è multidisciplinare (programmazione/elettronica/meccanica/...)
Sono fermo agli anni '90, non fa nulla, mi aggiornerò (come ho sempre fatto e sempre farò).
Il codice non è impossibile, va sicuramente ottimizzato e corretto (se non era così non chiedevo aiuto).

Vi garantisco che il manipolatore si muove ed il programma funziona.

In buona sostanza chiedo a chi è interessato, allo specifico problema del codice, di commentare il mio lavoro.
In caso vi sentiate spinti dal voler aggiungere suggerimenti sull'impostazione del lavoro ben vengano (magari non in questa discussione).

Grazie a tutti.

Offline Grezzo

  • python erectus
  • ***
  • Post: 147
  • Punti reputazione: 0
    • Mostra profilo
Re: Manipolatore 5 assi
« Risposta #27 il: Luglio 30, 2014, 21:08 »
Nel modificare il codice si è presentata la necessità di gestire un ciclo e di doverlo interrompere in modo controllato.
Normalmente un ciclo while può essere concluso con un break ma se lo attivo tramite un pulsante la cosa non è così immediata.

Infatti nella mia interfaccia voglio premere un pulsante che esegue in maniera continuativa un ciclo, il quale deve essere interrotto mediante la pressione di un secondo pulsante. Tuttavia quando premo il primo ed il ciclo si avvia il pulsante rimane premuto, la form si grigia ed il ciclo blocca l'intero programma impedendomi di sbloccare la situazione. Come è meglio gestire questa situazione? Grazie.

P.S.
Sto eseguendo una pulizia e riorganizzazione del programma per renderlo un po' più appetibile. A presto notizie.