とっても、忙しくて更新する事ができませんでした。
開発している事、日々思う事を、また書いていきます。
よかった、読んでください。
ロボット使ってトマト作れば楽だなぁ...やってみっか!
農業ロボット開発記録
日本中で100台以上動かしちゃった(^^)/
I'm developing robots that do tomato harvesting, settled planting ,,,,and many tasks.
The goal of production cost of robot is $2,000 per unit.
Because it is necessary a lot of robots, in order to innovate the farming.
I use Raspberry Pi as robot controller to develop low cost robots.
TOMATO FARM website -> CLICK!
なんと、、、
絶望的になりながら、、、這いつくばって解決のメモ
このバージョンのお話
implementation 'com.google.firebase:firebase-ml-vision
結局、build.gradleの
// ML Kit dependencies
implementation 'com.google.firebase:firebase-ml-vision:'
// Image Labeling model.
implementation 'com.google.firebase:firebase-ml-vision-image-label-model:20.0.2'
// Face model
implementation 'com.google.firebase:firebase-ml-vision-face-model:20.0.2'
// Custom model
implementation 'com.google.firebase:firebase-ml-model-interpreter:'
// Object model
implementation 'com.google.firebase:firebase-ml-vision-object-detection-model:19.0.6'
// AutoML model
implementation 'com.google.firebase:firebase-ml-vision-automl:18.0.6'
implementation 'com.google.firebase:firebase-ml-common:22.1.2'
implementation 'com.google.android.gms:play-services-vision-common:19.1.3'
implementation 'com.google.firebase:firebase-core:20.0.1'
を、変更して
// ML Kit dependencies
//implementation 'com.google.firebase:firebase-ml-vision:'
// Image Labeling model.
implementation 'com.google.firebase:firebase-ml-vision-image-label-model:20.0.2'
// Face model
implementation 'com.google.firebase:firebase-ml-vision-face-model:20.0.2'
// Custom model
//implementation 'com.google.firebase:firebase-ml-model-interpreter:'
// Object model
implementation 'com.google.firebase:firebase-ml-vision-object-detection-model:19.0.6'
// AutoML model
implementation 'com.google.firebase:firebase-ml-vision-automl:18.0.6'
implementation 'com.google.firebase:firebase-ml-common:22.1.2'
implementation 'com.google.android.gms:play-services-vision-common:19.1.3'
implementation 'com.google.firebase:firebase-core:20.0.1'
OKになりました。つまり、、、
https://firebase.google.com/docs/android/setup?hl=ja
自動的にアップデートして非推奨ライブラリーが残っており、かつ完全な構文でなかったので、エラー
で、も、、、、上部のエラーがなくなっただけ
実はこのファイルの、エラーが発生しても、値を設定して、依存関係を定義する
// ML Kit dependencies
implementation 'com.google.firebase:firebase-ml-vision:24.1.0'
// Custom model
implementation 'com.google.firebase:firebase-ml-model-interpreter:22.0.4'
// ML Kit dependencies
implementation 'com.google.firebase:firebase-ml-vision:24.1.0'
// Image Labeling model.
implementation 'com.google.firebase:firebase-ml-vision-image-label-model:20.0.2'
// Face model
implementation 'com.google.firebase:firebase-ml-vision-face-model:20.0.2'
// Custom model
implementation 'com.google.firebase:firebase-ml-model-interpreter:22.0.4'
// Object model
implementation 'com.google.firebase:firebase-ml-vision-object-detection-model:19.0.6'
// AutoML model
implementation 'com.google.firebase:firebase-ml-vision-automl:18.0.6'
implementation 'com.google.firebase:firebase-ml-common:22.1.2'
implementation 'com.google.android.gms:play-services-vision-common:19.1.3'
implementation 'com.google.firebase:firebase-core:20.0.1'
これで、sync はOK!
でも、、、
Unsupported class file major version 61
% java --version
openjdk 17.0.1 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12-39)
OpenJDK 64-Bit Server VM (build 17.0.1+12-39, mixed mode, sharing)
とりあえず、確認のためにに、下記のコードでテスト
build は、こんな感じ
gcc -Wall -o tst tst.c -lmysqlclient -L/usr/lib64/mysql/
サンプルは以下、、、
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
int main(void){
MYSQL *conn = NULL;
MYSQL_RES *resp = NULL;
MYSQL_ROW row;
char sql_str[255];
char *sql_serv = "localhost";
char *user = "xxxxx";
char *passwd = "yyyyyy";
char *db_name = "dddd";
memset( &sql_str[0] , 0x00 , sizeof(sql_str) );
// mysql接続
conn = mysql_init(NULL);
if( !mysql_real_connect(conn,sql_serv,user,passwd,db_name,0,NULL,0) ){
// error
printf(" connect error\n");
exit(-1);
}
// クエリ実行
snprintf( &sql_str[0] , sizeof(sql_str)-1 , "select * from test" );
if( mysql_query( conn , &sql_str[0] ) ){
// error
mysql_close(conn);
exit(-1);
}
// レスポンス
resp = mysql_use_result(conn);
while((row = mysql_fetch_row(resp)) != NULL ){
printf( "%d : %s\n" , atoi(row[0]) , row[1] );
}
// 後片づけ
mysql_free_result(resp);
mysql_close(conn);
return 0;
}
開発環境をつくりたいので、、、
sudo dnf install mariadb-devel
Last metadata expiration check: 2:57:12 ago on Sun Dec 5 19:09:59 2021.
Error:
Problem: package mariadb-devel-3:10.3.28-1.module+el8.4.0+427+adf35707.x86_64 requires mariadb-connector-c-devel >= 3.1.11, but none of the providers can be installed
- package mariadb-connector-c-devel-3.1.11-2.el8_3.i686 requires libmariadb.so.3, but none of the providers can be installed
- package mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64 requires mariadb-connector-c = 3.1.11-2.el8_3, but none of the providers can be installed
- package MariaDB-shared-10.6.3-1.el8.x86_64 obsoletes mariadb-connector-c provided by mariadb-connector-c-3.1.11-2.el8_3.i686
- package MariaDB-shared-10.6.3-1.el8.x86_64 obsoletes mariadb-connector-c provided by mariadb-connector-c-3.1.11-2.el8_3.x86_64
- problem with installed package MariaDB-shared-10.6.5-1.el8.x86_64
- package MariaDB-shared-10.6.4-1.el8.x86_64 obsoletes mariadb-connector-c provided by mariadb-connector-c-3.1.11-2.el8_3.i686
- package MariaDB-shared-10.6.4-1.el8.x86_64 obsoletes mariadb-connector-c provided by mariadb-connector-c-3.1.11-2.el8_3.x86_64
- package mariadb-devel-3:10.3.28-1.module+el8.4.0+427+adf35707.x86_64 conflicts with mysql-devel provided by MariaDB-devel-10.6.5-1.el8.x86_64
- conflicting requests
- package MariaDB-shared-10.6.5-1.el8.x86_64 obsoletes mariadb-connector-c provided by mariadb-connector-c-3.1.11-2.el8_3.i686
- package MariaDB-shared-10.6.5-1.el8.x86_64 obsoletes mariadb-connector-c provided by mariadb-connector-c-3.1.11-2.el8_3.x86_64
- installed package MariaDB-shared-10.6.5-1.el8.x86_64 obsoletes mariadb-connector-c provided by mariadb-connector-c-3.1.11-2.el8_3.i686
- installed package MariaDB-shared-10.6.5-1.el8.x86_64 obsoletes mariadb-connector-c provided by mariadb-connector-c-3.1.11-2.el8_3.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
エラー、、、、
いろいろ探して、、、
$ sudo dnf -y install MariaDB-devel ;
Last metadata expiration check: 2:57:42 ago on Sun Dec 5 19:09:59 2021.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
MariaDB-devel x86_64 10.6.5-1.el8 mariadb 7.9 M
Transaction Summary
================================================================================
Install 1 Package
Total download size: 7.9 M
Installed size: 49 M
Downloading Packages:
MariaDB-devel-10.6.5-1.el8.x86_64.rpm 2.8 MB/s | 7.9 MB 00:02
--------------------------------------------------------------------------------
Total 2.8 MB/s | 7.9 MB 00:02
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: MariaDB-devel-10.6.5-1.el8.x86_64 1/1
Installing : MariaDB-devel-10.6.5-1.el8.x86_64 1/1
Running scriptlet: MariaDB-devel-10.6.5-1.el8.x86_64 1/1
Verifying : MariaDB-devel-10.6.5-1.el8.x86_64 1/1
Installed:
MariaDB-devel-10.6.5-1.el8.x86_64
Complete!
僕は、日本中で動いているロボットを統合的にシステム管理している。これをRDCS Serverと呼んでいる。実体は某社のVPS上に構築している。
ところが、、、
CentOS 8 のサポートが、12月31日に終了という事で、移行の必要性があった。いろいろ調査した結果、Rocky Linuxに移行することにした。というか、、、Google、Microsoft、Amazonが支持をしているからが大きい。安易だなぁ、、、
また、これまで、自作DBで管理していたけど、思ったより管理データが多くなってきたので使い慣れているMariaDBに移行する事も決めた。
これは簡単で、Rocky Linuxが提供しているツールで10分程度で終了。
How to Migrate to Rocky Linux from CentOS Stream, CentOS, Alma Linux, RHEL, or Oracle Linux
MariDBは、下記のページの通りにする。
How to Install MariaDB on Rocky Linux 8
ここに書いてあるように、defaultのままでインストールすると10.3がインストールされる。現在の最新版は10.6なので記述してあるようにインストールする。
この説明は、丁寧な説明なのでこの通りにすれば良い。
すんなりすんで、よかったです。
インストール直後は、設定が行われていない。
文字コードを、utf8mb4 に設定する。 詳しくはこちら
手順の抜粋
「mysql -u root -p」でMariaDBにログインします。
定期的にロボットの状態を把握したいので、遅ればせながらTwitterで確認できるようにした。その時の忘備録
既にある、または新しいアカウントで行う。今回は公開したく無いので新しいアカウントを作成した。
ネットの情報の通りに、https://apps.twitter.com/ にアクセスして開発者登録する。
その後、Developer Portalで、追加情報を入力した。実は、この部分がネットの情報と違った。
でも作業は同じなので、後から同じことをできるようにメモしておく。
In your words
In English, please describe how you plan to use Twitter data and/or APIs. The more detailed the response, the easier it is to review and approve.
ここには英語で何をするのかを記述する。最低でも200文字が必要
僕は、複数種類のロボットの開発をしている。それらのロボットの状態を統合的に管理する必要がある。ロボットを統合管理するサーバーが、自動的に15分毎にロボット達の状態を集約して、ツイートする。そのツイートにより効率的に全体が把握できる
I am developing multiple types of robots. It is necessary to manage the state of those robots in an integrated manner. The server that manages the robots in an integrated manner automatically aggregates the states of the robots every 15 minutes and tweets them. You can grasp the whole efficiently by the tweet.
Are you planning to analyze Twitter data?
Will your app use Tweet, Retweet, Like, Follow, or Direct Message functionality?
Please describe your planned use of these features.
The application uses the tweet function. The robot management system aggregates and tweets every 15 minutes.
Do you plan to display Tweets or aggregate data about Twitter content outside Twitter?
これはNo
Will your product, service, or analysis make Twitter content or derived information available to a government entity?
これも、No
NEXTボタンを押下する。すると下の画面
次に、Keyデータを取得する。
API Key and Secret Regenerateボタンを押下
これで準備OK
sudo pip3 install twython
確認は、、、
python3 -c "import twython"
vi auth.py
consumer_key = 'API Key'
consumer_secret = 'API Key Secret'
access_token = 'Access Token'
access_token_secret = 'Access Token Secret'
vi tst.py
from twython import Twython
from auth import (
consumer_key,
consumer_secret,
access_token,
access_token_secret
)
twitter = Twython (
consumer_key,
consumer_secret,
access_token,
access_token_secret
)
message = "100-100-101"
twitter.update_status(status=message)
print("Tweeted: " + message)
これで実行したらOKです。
ちなみに同じメッセージを繰り返すとエラーになる。
twython.exceptions.TwythonError: Twitter API returned a 403 (Forbidden), Status is a duplicate.
Peace!!
これは良いコラムで、これを読むと表題の事がわかる
https://jp.reuters.com/article/column-daisaku-ueno-idJPKBN2HV31K