ROS+rosjava+android+studio

開発環境の整え

関連ツール、コンポーネントの互換性から予測せぬ、さまざまなコンパイルエラーに苦労してきた。強力なROS機能が込められたandroid app開発環境の整備を目指して、Ubuntu14.04.5(Trusty)の環境で、ROS Indigo→rosjava→android studio→android_coreの順番でインストールしていきましょう。

Ubuntu 14.04.5(Trusty)

ROS Indigoの公式に認定した動作OSなので、インストールしておくこと。

ROS Indigo

android向けでは、ROS Indigoの都合がよく、インストールしておくこと。

$sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
$wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
$sudo apt-get update
$sudo apt-get install ros-indigo-desktop-full
$sudo rosdep init
$rosdep update
$source /opt/ros/indigo/setup.bash
$sudo apt-get install python-rosinstall
$mkdir -p ~/catkin_ws/src
$cd ~/catkin_ws
$catkin_make

rosjava

ROSのjava版で、java言語でもROS全ての機能を操るまたカスタマイズできることになるのでインストールしておくこと。

$sudo add-apt-repository ppa:openjdk-r/ppa
$sudo apt-get update
$sudo apt-get install openjdk-8-jdk
$export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
$mkdir -p ~/rosjava/src
$wstool init -j4 ~/rosjava/src https://raw.githubusercontent.com/rosjava/rosjava/indigo/rosjava.rosinstall
$source /opt/ros/indigo/setup.bash
$cd ~/rosjava
$rosdep update
$rosdep install --from-paths src -i -y
$catkin_make
$mkdir -p ~/myjava/src
$cd ~/myjava/src
$wstool init -j4 https://raw.githubusercontent.com/me/rosinstalls/master/my_custom_msg_repos.rosinstall
$source ~/rosjava/devel/setup.bash
$cd ~/myjava
$rosdep update
$rosdep install --from-paths src -i -y
$catkin_make

android studio

android studio 171.4443003~zesty 3.01 linux versionをインストールしておくこと。

$mkdir ~/android
$cd ~/android
$wget https://dl.google.com/dl/android/studio/ide-zips/3.0.1.0/android-studio-ide-171.4443003-linux.zip
$unzip android-studio-ide-171.4443003-linux.zip
$mv android-studio studio
$sudo dpkg --add-architecture i386
$sudo apt-get update -y
$sudo apt-get install -y libncurses5:i386 libstdc++6:i386 zlib1g:i386
$echo export PATH=$PATH:~/android/sdk/tools:~/android/sdk/platform-tools:~/android/studio/bin >> ~/.bashrc
$echo export ANDROID_HOME=~/android/sdk >> ~/.bashrc
$source ~/.bashrc
$studio.sh

android_core

android app開発向けのcore moduleが含まれているので、インストールしておくこと。

$mkdir -p ~/android_core/src
$wstool init ~/android_core/src https://raw.github.com/rosjava/rosjava/indigo/android_core.rosinstall
$cd ~/android_core
$catkin_make

関連記事

研究開発用 台車型ロボット キット

以上

3+

ロボット・ドローン部品お探しなら
ROBOT翔・電子部品ストア

windows10/ubuntu14.04デュアルブート

経緯

Lenovo L560にすでにwindows7 32bitがインストール済み、CPUのi5 6300Uが省エネ優先なので、バーチャル環境を辞めて、敢えてubuntu14.04とデュアルブートしようとした。

試行錯誤

USBでブート可能なubuntu14.04 64bitをインストールできなく、CDROMに変えて現象同様、USBでもCDでもブートすらできない状態に陥った。windows7 32bitが入っており、もしかしたらPCが32bitしかサポートできないか、先に、windows7 32bitをwindows 10 64bit proにアップグレートして成功した。次に、またUSBでubuntu14.04 64bitインストール失敗、windows7 32bitとの現象とは同様、というのは別の問題が抱えていた。BiosでSecurity BootをDisabeにして、Boot modeをUEFI Firstにして、CDROMでubuntu14.04 64bitがブート成功した。これでubuntu14.04 64bitがインストールできた。

いくつかの注意点

・windows 10にてdisk managementを起動して、NFTSパーティションを縮小して、フリーパーティション用意しておく。
・Ubuntu 14.04 64bit のインストールに、Install type をsomthing elseにして、windows 10で用意したフリーパーティションを使用する。
・フリーパーティションをext4 formatで/パーティション 、/homeパーティションを作り、またswap areaを10GB程度作る。
・/パーティションにubuntuのブートエリアにして、インストールを開始する。
・これまでデュアルブートの環境がほぼ用意できた。

Bootメニューの表示

このままだと、ブートメニューが表示せず、困るので、EasyBCD v2.4をwindows 10側にインストールして、ubuntuブートを新規追加して、
ブートメニューが出た。またUbuntu側で、grub設定を編集したことで、GRUBが開かれた際の初期カーソル位置がWindowsになるように設定できる。

#nano /etc/default/grub
GRUB_DEFAULT="Windows10 pro"
GRUB_TIMEOUT=30
#update-grub
#reboot

またもや問題点

L560のubuntu14.04が立ち上がったら、ethernet、wifiとも使えなく、ifconfigでもNICを認識できない症状ある。

$lspci | grep "Ethernet\|Network"
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection 156f (rev 21)
02:00.0 Network controller: Intel Corporation Wireless 8260 (rev 3a)

https://downloadcenter.intel.com/download/15817 からe1000e-3.4.2.1.tar.gzをダウンロードする。
https://cateee.net/lkddb/web-lkddb/NET_VENDOR_INTEL.html からはe1000e シリーズでいけるかと知った。
他のマシンでダウンロードし、ubuntu-PCにUSBメモリなどでコピーして、srcディレクトリに移動して次のコマンドを実行する。

$sudo make install
$sudo modprobe -r e1000e
$sudo modprobe e1000e
$lsmod | grep e1000e

これでEhernetが接続できるようになる。

$sudo apt-get update
$sudo apt-get upgrade
$lspci | grep Nework
02:00.0 Network controller: Intel corporation Wireless 8260(rev 3a)
$uname-r
3.13.0-24-generic

kernalバージョンは3.13.0-24-generic、Intel 8260がkernal 4.2以上では利用可能なので、wifiはとりあえず放っておき、Ethernetだけでやっていくことにした。
追記:以下を実行することでwifiが使えるようになった。

$sudo modprobe iwlwifi

以上

3+

ロボット・ドローン部品お探しなら
ROBOT翔・電子部品ストア

YDLIDAR G4=16m 薄型 ROS対応SLAM LIDAR

SLAM LIDAR-YDLIDAR G4 主なスペック

・寸法 72mm(直径) x 41mm(厚さ)
・検出方法 360度回転式・三角法
・検出距離 max 16m
・サンプリング周波数 max 9kHz
・回転周波数 max 12Hz
・耐環境光 2kLux
・ROS対応 〇

ydlidar-g4-banner
ydlidar-g4-banner

YDLIDAR G4 vs RPLIDAR A2M8 主なスペック比較

仕様 YDLIDAR G4 RPLIDAR A2M8
メカニズム 360度モータ回転式 360度モータ回転式
計測法 三角法 三角法
ROS対応
寸法 Φ72mm x H41mm Φ76mm x H41mm
本体重さ 270g 340g
最大起動電流 550mA 1500mA
定格電圧電流 5V450mA 5V500mA
検知距離 0.1~16m 0.15~12m
回転周波数 5Hz~12Hz 5Hz~12Hz
レンジ周波数 4kHz~9kHz 2kHz~8kHz
距離精度 <0.5mm(0.10~2.0m)、距離の1%以下(2.0m~16m)   0.5mm(0.10~1.5m)、距離の1%以下(1.5m~12m)  
角度精度 0.3度(回転周波数7Hz) 0.45~1.35度
規模応用例   あり、EAI Robot あり、Slamtec Robot

移動ロボット、AGVへの活用

タッチスクリーンへの活用

開封動画

SLAMパラメータGithub

YDLidar G4のSLAMパラメータ(ご参考までお願い致します)

YDLIDAR Github

YDLIDAR Github(メーカーアカウント)

販売ストア

令和2年3月再入荷いたしました。どうぞご利用下さい。
YDLIDAR G4 | ROBOT翔-電子部品ストア

1+

ロボット・ドローン部品お探しなら
ROBOT翔・電子部品ストア

Bluetooth 4.0 BLE接続について

はじめに

ロボット側にBLEモジュールが付いて、今回はBLEモジュールが付く情報連絡端末が、Bluetoothを介してロボットの動きをリモート監視、制御を行う。全体のシステム構成としては、ロボット(BLE)~(BLE)情報連絡端末(WiFi)~WiFiアクセスポイント~(ether)クラウドサーバ(ether)~WiFiアクセスポイント~(WiFi)ブラウザまたはスマホアプリの形となる。

アクセス方式

SPPシリアル

ツール

プロトコールGATT、SDK化したのは、NOBLE(セントラル)/BLENO(ペリフェラル)、Node.js、Andriodなどいくつかのバージョンが用意されている。これでメソッドと、イベントをきちんとおさえれば、MVC開発の感覚で開発が進められる。
https://github.com/sandeepmistry/
http://yegang.hatenablog.com/entry/2014/08/09/195246
https://www.safaribooksonline.com/library/view/getting-started-with/9781491900550/ch04.html

役割分担

情報連絡端末はCentral(セントラル)、ロボットはPeripheral(ペリフェラル)、ペリフェラルは外部設備、端末の意味合いと思って良い。携帯無線、WiFiとは真反対にして、ペリフェラルはアドバタイズメントを出して、自分の存在を一所懸命を周りに知らせる。セントラルが近くにあれば、ペリフェラルの存在を知り、必要であれば接続する。

サーバ/クライアント

セントラル/ペリフェラルとはイコールではない、サービス提供者の立場から、セントラルはサーバでも可能だし、クライアントでも可能だ。ペリフェラルも同様。

キーワード

Serviceサービス(キャラクタリスティクスのコンテナ)、Characteristicsキャラクタリスティクス(送受信データのコンテナー)、UUID(サービス、キャラクタリスティクスを区分するための識別子)、writeキャラクタリスティクスvalue書き込み、readキャラクタリスティクスvalue読み込み、Notification知らせ(Subscribe登録しておけば、キャラクタリスティクスvalue変更の際、相手に知らせる)、Subscribe登録など。

開発手順

gatttoolツールで、GATTで定義したサービス、キャラクタリスティクスをよく確認して、それからNode.jsでプログラムを綴る。

0

ロボット・ドローン部品お探しなら
ROBOT翔・電子部品ストア

Laravel5.1(3)WebSocketについて

ChatやIoTリアルタイム処理にLaravel5のWebSocketが必要となります。以下の参考ベースがあります。

1、Ratchetライブラリ:https://github.com/ratchetphp/Ratchet

2、laravel 5.2 chat

3、github.com/assertchris/laravel4 リアルタイムchat

4、ライブラリ:github.com/BrainBoxLabs/brain-socket

5、socket IO:www.codetutorial.io/laravel-5-and-socket-io-tutorial/

6、AJAX&laravel 4:https://www.youtube.com/watch?v=GLDjgbbBvOg

以上。

0

ロボット・ドローン部品お探しなら
ROBOT翔・電子部品ストア