tms_ss_fss - irvs/ros_tms GitHub Wiki

run fss

sudo chmod a+rw /dev/ttyACM0
roslaunch tms_ss_fss_exe fss_lrf_drive.launch
rosrun tms_ss_fss_exe fss_preprocess
rosrun tms_ss_fss_exe fss_transform
rosrun tms_ss_fss_exe fss_cluster
rosrun tms_ss_fss_exe fss_classify
rosrun tms_ss_fss_exe fss_track

run tms_viewer for confirm the data and process

rosrun tms_dev_viewer tms_viewer 

Prior Knowledge

https://docs.google.com/spreadsheet/ccc?key=0AsKjmdeQEqOHdENrTUM3UWFidnJ5SUdxXzRGT2ZMRmc

Setup NTP (Network Time Protocol)

: Clock synchronization is important for ROS. :)

  1. Install Chrony
sudo apt-get install chrony
  1. Setup sync NTP
sudo ntpdate ntp.ubuntu.com

Function of use time

Publisher example

ros::Time tNow = ros::Time::now() + ros::Duration(9*60*60); // GMT +9

fss_pre_data.tMeasuredTime = tNow;

rosPub.publish(fss_pre_data);

Subscriber example

#include <boost/date_time/local_time/local_time.hpp> 

void rosCheckTime(boost::posix_time::ptime time)
{
    struct tm T = boost::posix_time::to_tm(time);     // ptime -> struct tm

    cout << T.tm_year + 1900 << "/" << T.tm_mon + 1 << "/" << T.tm_mday << " "
         << T.tm_hour        << ":" << T.tm_min     << ":" << T.tm_sec  << endl;

    // or save in TMS
}

void fssCallback(const fss::fss_pre_data::ConstPtr& msg)
{
    ros::Time tMeasuredTime = msg->tMeasuredTime;

    uint64_t nsec = tMeasuredTime.toNSec();
    printf("nsec = %llu nsec\n", nsec);

    rosCheckTime(tMeasuredTime.toBoost());  // view or save measured time
}

Setup fss node

Setup

  1. roscd fss
  1. rosmake
  2. make eclipse-project (because make to eclipse-project file)

Edit sorce

  1. Eclipse > File > import > General > Existing Projects into Workspace > Browse > fss node folder > OK > Finish

Run/Debug Setting

  1. Projects Menu > Properties > Run/Debug Settings > New > Main > Search Project... > Select Binaries file (ex.fss_classify) > Environment > New
  1. Variable or Name = ROS_MASTER_URI, Value = http://192.168.4.101:11311
  2. Variable or Name = ROS_ROOT, Value = /opt/ros/electric/ros or /opt/ros/fuerte/ros

Make

  1. rosmake fss or Qt > Build Command

Setup fss_graph

Package dependencies

  1. libqwt
  1. qt4

Setup (if ubuntu 12.04 LTS)

  1. install libqwt-dev, libqwt6 (recommend using "synaptic package manager")
  1. install qt4 (http://qt-project.org/downloads, Qt SDK version 1.2 > , recommend offline installer)
  2. roscd fss_graph
  3. cmake CMakeLists.txt
  4. rosmake
  5. cmake .. -G"CodeBlocks - Unix Makefiles" CMakeLists.txt (because make to qt-project file)

To edit

  1. QT > Open Project > fss_graph node folder > CMakeLists.txt

Run/Debug Setting

  1. Left Projects Menu > Run Settings > Run Environment > Add >
  1. Variable = ROS_MASTER_URI, Value = http://192.168.4.101:11311
  2. Variable = ROS_ROOT, Value = /opt/ros/electric/ros or /opt/ros/fuerte/ros

Make

  1. rosmake fss_graph or Qt > Build Command

Setup fss_viewer

Package dependencies

  1. qt4

Setup

  1. install qt4 (http://qt-project.org/downloads, Qt SDK version 1.2 > , recommend offline installer)
  1. roscd fss_viewer
  2. cmake CMakeLists.txt
  3. rosmake
  4. cmake .. -G"CodeBlocks - Unix Makefiles" CMakeLists.txt (because make to qt-project file)

To edit

  1. QT > Open Project > fss_viewer node folder > CMakeLists.txt

Run/Debug Setting

  1. Left Projects Menu > Run Settings > Run Environment > Add >
  1. Variable = ROS_MASTER_URI, Value = http://192.168.4.101:11311
  2. Variable = ROS_ROOT, Value = /opt/ros/electric/ros or /opt/ros/fuerte/ros

Make

  1. rosmake fss_viewer or Qt > Build Command

Execute

Drive UTM30LX laser-range-finder(LRF)

roslaunch fss fss_lrf_drive.launch

Measure LRF accuracy

rosrun fss fss_accuracy

Classify clusters of objects

roslaunch fss fss_classify.launch
rosrun fss fss_preprocess
rosrun fss fss_transform
rosrun fss fss_cluster
rosrun fss fss_classify

Tracking class of objects

rosrun fss fss_track

View data of objects in floor via graph

rosrun fss_graph fss_graph

View data of objects in floor via xy-coordinate

rosrun fss_viewer fss_viewer 

TMSDB data format

Link page > tms_db

//------------------------------------------------------------------------------
#define TYPE_ROBOT              1
#define TYPE_FUNITURE           2
#define TYPE_MOVABLE_FUNITURE   3
#define TYPE_PERSON             4
#define TYPE_OBJECT             5
#define TYPE_UNKNOWN_OBJECT     6
#define TYPE_MAP                7
#define TYPE_2D_MODEL           8
#define TYPE_3D_MODEL           9

#define ID_NONE                 0

#define ID_SMARTPAL             1
#define ID_ROOMBA               2
#define ID_KKP                  3

#define ID_FLOOR                11
#define ID_BED                  12
#define ID_DESK                 13
#define ID_TABLE                14
#define ID_CABINET1             15
#define ID_CABINET2             16

#define ID_WAGON1               21
#define ID_WAGON2               22
#define ID_CHAIR1               23
#define ID_CHAIR2               24
#define ID_WHEELCHAIR           25

#define ID_PERSON1              31
#define ID_PERSON2              32
#define ID_PERSON3              33
#define ID_PERSON4              34
#define ID_PERSON5              35

#define ID_NAMACHA              51
#define ID_CHIPSTAR1            52
#define ID_CHIPSTAR2            53
#define ID_CHIPSTAR3            54
#define ID_BOTTLE               55
#define ID_COINBANK             56
#define ID_WATER                57
#define ID_PETBOTTLE            58
#define ID_BOOK                 59
#define ID_CALPIS               60

#define ID_UNKNOWN_OBJECT1      201
#define ID_UNKNOWN_OBJECT2      202
#define ID_UNKNOWN_OBJECT3      203
#define ID_UNKNOWN_OBJECT4      204
#define ID_UNKNOWN_OBJECT5      205

#define NAME_NAMACHA            "namach"
#define NAME_CHIPSTAR1          "chipstar1"
#define NAME_CHIPSTAR2          "chipstar2"
#define NAME_CHIPSTAR3          "chipstar3"
#define NAME_BOTTLE             "bottle"
#define NAME_COINBANK           "coinbank"
#define NAME_WATER              "water"
#define NAME_PETBOTTLE          "petbottle"
#define NAME_BOOK               "book"
#define NAME_CALPIS             "calpis"

//------------------------------------------------------------------------------
#define STATE_NOT_EXIST         0
#define STATE_EXIST             1
#define STATE_STOP              1
#define STATE_MOVE              2

//------------------------------------------------------------------------------

Ubuntuにfloor-sensing-systemを導入する方法

作成日:2012/07/10 20:45 作成者:田中真英

目次

1.ROSのインストール 2.RapitSVNのインストール(※ Subversionのクライアント) 3.Eclipseのインストール 4.Qtのインストール

内容

  1. ROSのインストール
  1. RapitSVNのインストール
  • 端末で次を実行「$ sudo apt-get install rapidsvn」
  • 完了するとインストール済みアプリにRapidSVNが入っているので起動
  • 「ブックマーク」右クリックで「新しい作業コピーをチェックアウト」
  • 以下のURL(表さんのfloorSensingSystemのリポジトリ)を入力。 出力ディレクトリは、1で作成したROSのworkspace内を選択、そしてチェックアウト (この時、subaruへのアカウント名、パスワードの入力を要求される) http://subaru.ait.kyushu-u.ac.jp/svn/floor-sensing-system/trunk
  • cmake_install.cmakeとbuildフォルダを削除   
  1. Eclipseのインストールとプロジェクト読み込み手順(※ 例としてfssパッケージで説明)
  • 以下のURLから最新のEclipse(juno)をダウンロード Eclipse IDE for C/C++ Developers」のLinux版 http://www.eclipse.org/downloads/packages/release/juno/r
  • 以下のサイトの内容に沿って、Eclipseでデバックするための設定を行う http://www.ros.org/wiki/IDEs
  • 端末で、先ほどチェックアウトしたファイルの「trunk/fss/」に移動し、 次のコマンドを入力「$ make eclipse-project」 (この時作成?されるファイルはsvnでコミットしない方が良いみたい)
  • Eclipseを起動(できればコマンドで)し、上記で作成したプロジェクトファイルを読み込む 「File」->[import]->[General/Existing Projects into Workspace] 「Select root directory」で「trunk/fss/」を選択(fss packageがある場所)
  1. Qtのインストール
  • 以下のサイトよりLinux版をダウンロード「linux/X11 32-bit オンラインインストーラ」 http://qt.nokia.com/downloads-jp
  • ダウンロードしたrunファイルを以下のように実行
$ chmode u+x Qt_SDK_Lin32_online_v1_2_en.run
$ ./Qt_SDK_Lin32_online_v1_2_en.run
  • セットアップを行う