SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
ロボット用OSS 
2014年12月06日 
たけおか 
@takeoka
ロボット用 
OSS
ロボットもOSS時代 
英語版Wikipedia「Open-source robotics」の 
項 
http://en.wikipedia.org/wiki/Open-source_robotics 
フル・ロボット・プロジェクト32個 
ソフトウェアのみのプロジェクト 28 個 
オープン・ハードウェア・プロジェクト:3個
OSSロボット例 (たけおか謹製) 
人間の顔を見つけたら、追尾する 
・顔の位置を判断して、右へ行くか、左へ行くかを決める 
Linux+OpenCV+OpenEL 
OpenCVは顔認識などを含む 
総合的な画像処理ライブラリ 
OpenELはJASAなどが推進している 
ロボット用の下位の抽象化層の規格 
・DCモータの制御はOpenEL 
ハードウェア 
・RaspberryPi 
—ARM11@700MHz 
—512MBytesRAM 
・USBカメラ 
・DCモータ
OpenCV 
画像処理のミドルウェア 
・Intel, Willow Garage が開発 
・いろんなものが入っている 
・極めて便利 
—画像処理 (Image Processing) 
—構造解析 (Structural Analysis) 
—モーション解析と物体追跡 (Motion Analysis and Object 
Tracking) 
—パターン認識 (Pattern Recognition) 
—カメラキャリブレーションと3次元再構成 (Camera 
Calibration and 3D Reconstruction) 
—機械学習 
—ユーザインタフェース
OpenCVによる顔認識 
OpenCV 
・一般的画像処理 
・画像認識 
—学習器 
—認識器 
・カメラ入力部 
USBカメラを接続 
・ロジクール QCAM-E2500, 30万画素 
・Logicool 861200 
・カメラ入力 
顔認識 
・学習済みデータが用意されている 
・簡単に使用できる 
・ロボットの目玉にでも 
「たけおか opencv raspberrypi」でググる
OpenCV 
//確認用ウインドウ初期化 
cvNamedWindow( DISP_WIN , CV_WINDOW_AUTOSIZE ); 
// カメラ初期化 
capture = cvCreateCameraCapture( 0 ); 
// 正面顔検出器の読み込み 
CvHaarClassifierCascade* cvHCC = (CvHaarClassifierCascade*)cvLoad(cascade, 
NULL,NULL,NULL); 
for(;;){ 
CvSeq* face; 
// 1フレーム・キャプチャ 
frame = cvQueryFrame( capture ); 
// 画像中から検出対象の情報を取得する。 
face = cvHaarDetectObjects(frame, cvHCC, cvMStr, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING, 
//認識後 face->total 個、CvRect* faceRect = (CvRect*)cvGetSeqElem(face, i); 
}
ロボット用 
OSS 
ミドルウェア
en.Wikipedia「Open-source robotics」のOSS上位など 
NXJ 
・Lego NXTロボット・キット用のOSS Javaプログラミング環境 
CLARAty 
・JPL(ジェット推進研究所)で開発されている、Mars(火星)プログラムの 
一部として。 
ROS (Robot Operating System) 
・BSDライセンス。すでに50以上のロボットで動作 
URBI 
・C++の分散/組み込み コンポーネント・フレームワーク 
・ + 並列/イベント駆動 制御スクリプト言語 
Player (robot framework) 
OpenRTM-aist (robotics technology middleware) 
・日本の産総研が開発 
※上記のいくつかは、ロボット・ミドルウェアである
ロボット用ミドルウェアとは 
フレームワーク 
・コンポーネントをつなぐ 
・コンポーネントの独立性を高めさせる 
・オーバーヘッド無し 
・存在を感じさせない 
参考 http://en.wikipedia.org/wiki/Robotics_middleware
ROS
ROS 
Robot Operationg System 
http://wiki.ros.org/ 
ロボットのミドルウェアと、たくさんのコンポーネント 
BSDライセンス 
Googleの自動運転で有名 
すでに50以上のロボットで動作 
 2007年 the Stanford Artificial Intelligence Laboratory で開 
発・ 
Stanford AI Robot STAIR project 
2008〜2013年 Willow Garageが中心に開発中 
2013年〜 the Open Source Robotics Foundation 
※参考 http://en.wikipedia.org/wiki/Robot_Operating_System
ROS 
データの流れに応じて、コンポーネントをつなぐ 
自動車の自動運転でも採用 
OpenCVも含まれている 
雑に言ってしまえば… 
ロボットを作るためのソフトウェア部品の多くが含 
まれている 
http://www.ros.org/news/resources/2010/poster2color_revis.jpg
ROSパッケージの適用分野 
 知覚 (Perception) 
物体認知 (Object Identification) 
セグメンテーションと認識 (Segmentation and recognition) 
顔認識 (Face recognition) 
ジェスチャ認識 (Gesture recognition) 
動作追跡 (Motion tracking) 
エゴモーション (Egomotion) 
運動理解 (Motion understanding) 
運動からの構造 (Structure from motion (SFM)) 
ステレオビジョン:2台のカメラを通して、奥行き知覚 
・(Stereo vision: depth perception via two cameras) 
モーション (Motion) 
移動ロボット工学 (Mobile robotics) 
 制御 (Control) 
計画 (Planning) 
把握 (Grasping) 
※http://en.wikipedia.org/wiki/Robot_Operating_Systemから引用、和訳
ROS 
データの流れに応じて、コンポーネントをつなぐ 
http://www.clearpathrobotics.com/blog/how-to-guide-ros-101/ より引用
ROS 
ROSエコ・システムのソフトウェアは3つのグループ 
に分けられる 
・(1) 言語やプラットフォームから独立したツール 
—ROSベースのソフトウェアを作ったり分散させるために使用 
・(2) ROSクライアント・ライブラリ実装 
—roscpp, rospy, roslispなど 
・(3)アプリケーションに関連するコードを含んだパッケージ 
—ひとつ以上のROSクライアント・ライブラリが使用 
※http://en.wikipedia.org/wiki/Robot_Operating_Sys 
temから引用、和訳
RTミドルウェア
RTミドルウェア 
産総研などが開発しているロボット用ミドルウェア 
・RTコンポーネントは、OMGにて、国際標準化 
RT (Robot Technology/Robotic Technology)とは 
・ロボット機能要素 
RTミドルウエアとは 
・様々な機能要素をモジュール化 (RTコンポーネント) 
・RTCを、ソフトウエア的に統合するためのプラットフォーム 
RTミドルウエアの目的 
・仕様をオープンにする 
・様々な実装同士が相互接続できるようにする 
・オープンアーキテクチャのプラットフォームを確立する 
通信はCORBAベース 
「OpenRTM-aist」は、RTミドルウェアの産総研による実現 
・ライセンスは、LGPLおよび産総研と個別に契約するライセンスのデュアルライ 
センス方式 
参考 http://www.openrtm.org/openrtm/ja/node/161#toc5 
http://www.openrtm.org/openrtm/ja/content/openrtm-aist-official-website
RTミドルウエア 
http://www.openrtm.org/openrtm/ja/content/rt%E3%83%9F%E3%83%89%E3%83%AB 
%E3%82%A6%E3%82%A8%E3%82%A2%E3%81%A8%E3%81%AF%EF%BC%9F-0 よりコピー
RTミドルウェア 
引用元 
http://www.aist.go.jp/aist_j/press_release/pr2005/pr20050224/pr20050224.html
RTC(RTコンポーネント) OMG標準 
 RTM / OpenRTM-aist は 
・コンポーネントモデル 
・そのインターフェー ス 
・である「RTC」が OMG 国際標準 
 OMG (Object Management Group) 
・1989年に設立されたソフトウエア標準化団 体 
・CORBA (Common Object Request Broker Architecture)分散オブジェクトミドル 
ウエア: 
・ UML (Unified Modeling Language) ソフトウェアモデリング言語 
・などを策定・管理している組織 
 RTCのインターフェース仕様 
・OMG において, 産総研と米国ミドルウエアベンダ RTI (Real Time Innovations) 
により標準化 
・RTC (Robotic Technology Component) Specification 
( http://www.omg.org/spec/RTC/1.0/ ) として2008年4月に公式リリース 
http://www.openrtm.org/openrtm/ja/content/rt%E3%83%9F%E3%83%89%E3%83%AB 
%E3%82%A6%E3%82%A8%E3%82%A2%E3%81%A8%E3%81%AF%EF%BC%9F-0#toc4 より 
引き写し
OpenEL 
低レイヤのミドルウェア
OpenEL 
JASA,産総研などが推進しているフレームワーク 
国際規格にするべく、OMGに提案中 
RTミドルウェアなどのコンポーネントの可搬性を 
高める 
ハードウェアに近い層を、抽象化 
OpenEL準拠で書かれたソフトウェア(RTC)は、 
ハードウェア・ドライバに依存せずに動作する 
参考 
http://jasa.or.jp/openel/Main_Page/ja#OpenEL.E3.81.AE.E6.AD.B4 
.E5.8F.B2.E3.81.A8.E6.99.AE.E5.8F.8A.E3.83.BB.E5.95.93.E7.99.BA. 
E6.B4.BB.E5.8B.95
OpenEL 
引用元 http://jasa.or.jp/openel/Main_Page/ja
OpenEL 
引用元 http://www.jasa.or.jp/top/activity_bulletin/bulletin041-05.html
OpenEL使用 オレオレ実例 
Multi Thread BASICインタープリタ 
OS無し 
OpenELでDCモータ駆動 
PIC32MX250 
(MIPSコア@50MHz、ROM128KB, 
RAM32KB) 
秋月で360円 
OpenCV under Linux 
OpenELで DCモータ駆動 
Raspi 
(ARM11@700MHz, 512MBメモリ)
おしまい 
絶賛、アルバイト募集中 
C, Java, Lispな人 
上位レイヤの人も求む 
www.takeoka.org/~take/ 
@takeoka
OpenCV 
int 
main( int argc, char** argv ) 
{ 
int i; 
double w = (double)cap_width; 
double h = 120; 
motor_gpio_init(); 
cvNamedWindow( DISP_WIN , CV_WINDOW_AUTOSIZE ); 
CvCapture* capture = NULL; 
if (argc > 1){ 
disp_and_sleepf=1; 
}else{ 
} 
capture = cvCreateCameraCapture( 0 ); 
// (2)キャプチャサイズを設定する. 
cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, w); 
cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, h); 
IplImage* frame; 
// 正面顔検出器の読み込み 
CvHaarClassifierCascade* cvHCC = (CvHaarClassifierCascade*)cvLoad(cascade, NULL,NULL,NULL); 
// 検出に必要なメモリストレージを用意する 
CvMemStorage* cvMStr = cvCreateMemStorage(0); 
// 検出情報を受け取るためのシーケンスを用意する 
CvSeq* face;
OpenCV 
while(1) { 
frame = cvQueryFrame( capture ); 
if( !frame ) break; 
// 画像中から検出対象の情報を取得する 
face = cvHaarDetectObjects(frame, cvHCC, cvMStr, 
1.2, 2, CV_HAAR_DO_CANNY_PRUNING, 
minsiz, minsiz); 
// 1.1, 3, 0, minsiz, minsiz); 
//////cvHaarDetectObjects( //const CvArr* image, 
for(i = 0; i < face->total; i++) { 
// 検出情報から顔の位置情報を取得 
CvRect* faceRect = (CvRect*)cvGetSeqElem(face, i); 
// 取得した顔の位置情報に基づき、矩形描画を行う 
cvRectangle(frame, 
cvPoint(faceRect->x, faceRect->y), 
cvPoint(faceRect->x + faceRect->width, 
faceRect->y + faceRect->height), 
CV_RGB(255, 0 ,0), 
2, CV_AA, 0); 
last_face_x=(int)faceRect->x; 
last_face_width=(int)faceRect->width; 
} 
motor_drive( (face->total <=0)? -1: cap_width, last_face_x, last_face_width);
OpenCV 
if(disp_and_sleepf){ 
cvShowImage( DISP_WIN, frame ); 
//char c = cvWaitKey(33); 
char c = cvWaitKey(1); 
if( c == 27 ) break; 
} 
} 
// 用意したメモリストレージを解放 
cvReleaseMemStorage(&cvMStr); 
// カスケード識別器の解放 
cvReleaseHaarClassifierCascade(&cvHCC); 
cvReleaseCapture( &capture ); 
cvDestroyWindow( DISP_WIN ); 
}

Mais conteúdo relacionado

Mais procurados

Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29ryuz88
 
2013 1019osc-fallnetmf
2013 1019osc-fallnetmf2013 1019osc-fallnetmf
2013 1019osc-fallnetmfAtomu Hidaka
 
Summercamp2020 group4
Summercamp2020 group4Summercamp2020 group4
Summercamp2020 group4openrtm
 
M5StackをRustで動かす
M5StackをRustで動かすM5StackをRustで動かす
M5StackをRustで動かすKenta IDA
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングryos36
 
FPGA startup 第一回 LT
FPGA startup 第一回 LTFPGA startup 第一回 LT
FPGA startup 第一回 LTYamato Kazuhiro
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出marsee101
 
PSoC4 BLEで作る簡単無線センサーユニット
PSoC4 BLEで作る簡単無線センサーユニットPSoC4 BLEで作る簡単無線センサーユニット
PSoC4 BLEで作る簡単無線センサーユニットKenta IDA
 
ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性Kenichiro MITSUDA
 
IoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトークIoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトークTomoya Hibi
 
FPGAによるHDMI to LVDS変換器
FPGAによるHDMI to LVDS変換器FPGAによるHDMI to LVDS変換器
FPGAによるHDMI to LVDS変換器I_HaL
 
FPGAX6_hayashi
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi愛美 林
 
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoTakefumi MIYOSHI
 
ESP32特集の内容紹介
ESP32特集の内容紹介ESP32特集の内容紹介
ESP32特集の内容紹介Kenta IDA
 
Rtshell 2017
Rtshell 2017Rtshell 2017
Rtshell 2017openrtm
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門ryos36
 

Mais procurados (20)

Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
 
お化け
お化けお化け
お化け
 
2013 1019osc-fallnetmf
2013 1019osc-fallnetmf2013 1019osc-fallnetmf
2013 1019osc-fallnetmf
 
Summercamp2020 group4
Summercamp2020 group4Summercamp2020 group4
Summercamp2020 group4
 
M5StackをRustで動かす
M5StackをRustで動かすM5StackをRustで動かす
M5StackをRustで動かす
 
RISC-V User level ISA
RISC-V User level ISARISC-V User level ISA
RISC-V User level ISA
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミング
 
Pynq祭り資料
Pynq祭り資料Pynq祭り資料
Pynq祭り資料
 
Takep lpc1114-190614
Takep lpc1114-190614Takep lpc1114-190614
Takep lpc1114-190614
 
FPGA startup 第一回 LT
FPGA startup 第一回 LTFPGA startup 第一回 LT
FPGA startup 第一回 LT
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
 
PSoC4 BLEで作る簡単無線センサーユニット
PSoC4 BLEで作る簡単無線センサーユニットPSoC4 BLEで作る簡単無線センサーユニット
PSoC4 BLEで作る簡単無線センサーユニット
 
ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性
 
IoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトークIoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトーク
 
FPGAによるHDMI to LVDS変換器
FPGAによるHDMI to LVDS変換器FPGAによるHDMI to LVDS変換器
FPGAによるHDMI to LVDS変換器
 
FPGAX6_hayashi
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi
 
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyo
 
ESP32特集の内容紹介
ESP32特集の内容紹介ESP32特集の内容紹介
ESP32特集の内容紹介
 
Rtshell 2017
Rtshell 2017Rtshell 2017
Rtshell 2017
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 

Destaque

131111 東工大授業「ロボット技術」資料
131111 東工大授業「ロボット技術」資料131111 東工大授業「ロボット技術」資料
131111 東工大授業「ロボット技術」資料openrtm
 
もし福岡にコミュニティがなかったら ∼ とある福岡ITコミュニティの話
もし福岡にコミュニティがなかったら ∼ とある福岡ITコミュニティの話もし福岡にコミュニティがなかったら ∼ とある福岡ITコミュニティの話
もし福岡にコミュニティがなかったら ∼ とある福岡ITコミュニティの話Garyuten
 
八幡神と藤崎八旛宮 (清村さん講演 2012 )
八幡神と藤崎八旛宮 (清村さん講演 2012 )八幡神と藤崎八旛宮 (清村さん講演 2012 )
八幡神と藤崎八旛宮 (清村さん講演 2012 )Keiichiro Kataoka
 
藤崎宮とその祭りについて(52会 清村さん)
藤崎宮とその祭りについて(52会 清村さん)藤崎宮とその祭りについて(52会 清村さん)
藤崎宮とその祭りについて(52会 清村さん)Keiichiro Kataoka
 
イチからはじめるLuarida-マイコン
イチからはじめるLuarida-マイコンイチからはじめるLuarida-マイコン
イチからはじめるLuarida-マイコン三七男 山本
 
James walker - Lion expanding packing
James walker - Lion expanding packingJames walker - Lion expanding packing
James walker - Lion expanding packingBanana Yuan
 
バルセロナ旅行のご提案
バルセロナ旅行のご提案バルセロナ旅行のご提案
バルセロナ旅行のご提案natsuki551
 
Yahoo!ニュースの事例で学ぶオウンドメディア立ち上げ術(2015年4月13日)
Yahoo!ニュースの事例で学ぶオウンドメディア立ち上げ術(2015年4月13日)Yahoo!ニュースの事例で学ぶオウンドメディア立ち上げ術(2015年4月13日)
Yahoo!ニュースの事例で学ぶオウンドメディア立ち上げ術(2015年4月13日)news HACK by Yahoo!ニュース
 
Yahoo!ニュースが考える「コンテンツマーケティング」(2015年4月20日)
Yahoo!ニュースが考える「コンテンツマーケティング」(2015年4月20日)Yahoo!ニュースが考える「コンテンツマーケティング」(2015年4月20日)
Yahoo!ニュースが考える「コンテンツマーケティング」(2015年4月20日)news HACK by Yahoo!ニュース
 
CloudSpiral 2013年度 UML講義 2日目
CloudSpiral 2013年度 UML講義 2日目CloudSpiral 2013年度 UML講義 2日目
CloudSpiral 2013年度 UML講義 2日目Shin Matsumoto
 
企業・業界情報プラットフォームSPEEDAにおけるElasticsearchの活用
企業・業界情報プラットフォームSPEEDAにおけるElasticsearchの活用企業・業界情報プラットフォームSPEEDAにおけるElasticsearchの活用
企業・業界情報プラットフォームSPEEDAにおけるElasticsearchの活用Akira Kitauchi
 
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessElasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessShinsuke Sugaya
 
Web動画、WordPressで使ってみよう!
Web動画、WordPressで使ってみよう!Web動画、WordPressで使ってみよう!
Web動画、WordPressで使ってみよう!Katz Ueno
 
CloudSpiral 2014年度 ビッグデータ講義
CloudSpiral 2014年度 ビッグデータ講義CloudSpiral 2014年度 ビッグデータ講義
CloudSpiral 2014年度 ビッグデータ講義Shin Matsumoto
 
スタートアップとデザインのいい関係。
スタートアップとデザインのいい関係。スタートアップとデザインのいい関係。
スタートアップとデザインのいい関係。Matsumoto Takamasa
 

Destaque (20)

131111 東工大授業「ロボット技術」資料
131111 東工大授業「ロボット技術」資料131111 東工大授業「ロボット技術」資料
131111 東工大授業「ロボット技術」資料
 
もし福岡にコミュニティがなかったら ∼ とある福岡ITコミュニティの話
もし福岡にコミュニティがなかったら ∼ とある福岡ITコミュニティの話もし福岡にコミュニティがなかったら ∼ とある福岡ITコミュニティの話
もし福岡にコミュニティがなかったら ∼ とある福岡ITコミュニティの話
 
20120809WBN横浜
20120809WBN横浜20120809WBN横浜
20120809WBN横浜
 
Less - first step
Less - first stepLess - first step
Less - first step
 
八幡神と藤崎八旛宮 (清村さん講演 2012 )
八幡神と藤崎八旛宮 (清村さん講演 2012 )八幡神と藤崎八旛宮 (清村さん講演 2012 )
八幡神と藤崎八旛宮 (清村さん講演 2012 )
 
藤崎宮とその祭りについて(52会 清村さん)
藤崎宮とその祭りについて(52会 清村さん)藤崎宮とその祭りについて(52会 清村さん)
藤崎宮とその祭りについて(52会 清村さん)
 
イチからはじめるLuarida-マイコン
イチからはじめるLuarida-マイコンイチからはじめるLuarida-マイコン
イチからはじめるLuarida-マイコン
 
James walker - Lion expanding packing
James walker - Lion expanding packingJames walker - Lion expanding packing
James walker - Lion expanding packing
 
バルセロナ旅行のご提案
バルセロナ旅行のご提案バルセロナ旅行のご提案
バルセロナ旅行のご提案
 
京の食文化ハンドブック Leaf mini 増刊号
京の食文化ハンドブック Leaf mini 増刊号京の食文化ハンドブック Leaf mini 増刊号
京の食文化ハンドブック Leaf mini 増刊号
 
Yahoo!ニュースの事例で学ぶオウンドメディア立ち上げ術(2015年4月13日)
Yahoo!ニュースの事例で学ぶオウンドメディア立ち上げ術(2015年4月13日)Yahoo!ニュースの事例で学ぶオウンドメディア立ち上げ術(2015年4月13日)
Yahoo!ニュースの事例で学ぶオウンドメディア立ち上げ術(2015年4月13日)
 
Yahoo!ニュースが考える「コンテンツマーケティング」(2015年4月20日)
Yahoo!ニュースが考える「コンテンツマーケティング」(2015年4月20日)Yahoo!ニュースが考える「コンテンツマーケティング」(2015年4月20日)
Yahoo!ニュースが考える「コンテンツマーケティング」(2015年4月20日)
 
CMSI計算科学技術特論A(13) 古典分子動力学法の高速化2
CMSI計算科学技術特論A(13) 古典分子動力学法の高速化2CMSI計算科学技術特論A(13) 古典分子動力学法の高速化2
CMSI計算科学技術特論A(13) 古典分子動力学法の高速化2
 
CMSI計算科学技術特論A(12) 古典分子動力学法の高速化1
CMSI計算科学技術特論A(12) 古典分子動力学法の高速化1CMSI計算科学技術特論A(12) 古典分子動力学法の高速化1
CMSI計算科学技術特論A(12) 古典分子動力学法の高速化1
 
CloudSpiral 2013年度 UML講義 2日目
CloudSpiral 2013年度 UML講義 2日目CloudSpiral 2013年度 UML講義 2日目
CloudSpiral 2013年度 UML講義 2日目
 
企業・業界情報プラットフォームSPEEDAにおけるElasticsearchの活用
企業・業界情報プラットフォームSPEEDAにおけるElasticsearchの活用企業・業界情報プラットフォームSPEEDAにおけるElasticsearchの活用
企業・業界情報プラットフォームSPEEDAにおけるElasticsearchの活用
 
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessElasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFess
 
Web動画、WordPressで使ってみよう!
Web動画、WordPressで使ってみよう!Web動画、WordPressで使ってみよう!
Web動画、WordPressで使ってみよう!
 
CloudSpiral 2014年度 ビッグデータ講義
CloudSpiral 2014年度 ビッグデータ講義CloudSpiral 2014年度 ビッグデータ講義
CloudSpiral 2014年度 ビッグデータ講義
 
スタートアップとデザインのいい関係。
スタートアップとデザインのいい関係。スタートアップとデザインのいい関係。
スタートアップとデザインのいい関係。
 

Semelhante a ロボット用Open Source Software

OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた徹 上野山
 
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)Toshihiko Yamakami
 
オープンキャンパススライド2017
オープンキャンパススライド2017オープンキャンパススライド2017
オープンキャンパススライド2017robo_lab
 
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築Yoshitaka HARA
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ陽平 山口
 
まねっこロボット
まねっこロボットまねっこロボット
まねっこロボットopenrtm
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目saiwaki
 
Statically detecting vulnerability under memory pressure using exhaustive search
Statically detecting vulnerability under memory pressure usingexhaustive searchStatically detecting vulnerability under memory pressure usingexhaustive search
Statically detecting vulnerability under memory pressure using exhaustive searchRuo Ando
 
100mpusとopc brick ev3 ご紹介
100mpusとopc brick ev3 ご紹介100mpusとopc brick ev3 ご紹介
100mpusとopc brick ev3 ご紹介Akira Hatsune
 
march report in japanese
march report in japanesemarch report in japanese
march report in japanesenao takatoshi
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)OSgeo Japan
 
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Daiyu Hatakeyama
 
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発Yoshitaka HARA
 
オープンソースNW監視ツールのご紹介
オープンソースNW監視ツールのご紹介オープンソースNW監視ツールのご紹介
オープンソースNW監視ツールのご紹介OSSラボ株式会社
 
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能Unity Technologies Japan K.K.
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...Yusuke Furuta
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platformToru Yamaguchi
 

Semelhante a ロボット用Open Source Software (20)

OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた
 
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
 
オープンキャンパススライド2017
オープンキャンパススライド2017オープンキャンパススライド2017
オープンキャンパススライド2017
 
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ
 
まねっこロボット
まねっこロボットまねっこロボット
まねっこロボット
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目
 
Statically detecting vulnerability under memory pressure using exhaustive search
Statically detecting vulnerability under memory pressure usingexhaustive searchStatically detecting vulnerability under memory pressure usingexhaustive search
Statically detecting vulnerability under memory pressure using exhaustive search
 
Groovyコンファレンス
GroovyコンファレンスGroovyコンファレンス
Groovyコンファレンス
 
100mpusとopc brick ev3 ご紹介
100mpusとopc brick ev3 ご紹介100mpusとopc brick ev3 ご紹介
100mpusとopc brick ev3 ご紹介
 
SensorBeeのご紹介
SensorBeeのご紹介SensorBeeのご紹介
SensorBeeのご紹介
 
march report in japanese
march report in japanesemarch report in japanese
march report in japanese
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
 
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
 
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
 
オープンソースNW監視ツールのご紹介
オープンソースNW監視ツールのご紹介オープンソースNW監視ツールのご紹介
オープンソースNW監視ツールのご紹介
 
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
 

Mais de たけおか しょうぞう

いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加したいにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加したたけおか しょうぞう
 
俺ASICと俺CPU“松竹V(しょうちくぶい)”
俺ASICと俺CPU“松竹V(しょうちくぶい)”俺ASICと俺CPU“松竹V(しょうちくぶい)”
俺ASICと俺CPU“松竹V(しょうちくぶい)”たけおか しょうぞう
 
あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)たけおか しょうぞう
 
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?たけおか しょうぞう
 
無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレ無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレたけおか しょうぞう
 
昔の外付けキャッシュ & コヒーレント・キャッシュ
昔の外付けキャッシュ & コヒーレント・キャッシュ昔の外付けキャッシュ & コヒーレント・キャッシュ
昔の外付けキャッシュ & コヒーレント・キャッシュたけおか しょうぞう
 
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-たけおか しょうぞう
 

Mais de たけおか しょうぞう (20)

いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加したいにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
 
SOAR:Smalltalk on RISC
SOAR:Smalltalk on RISCSOAR:Smalltalk on RISC
SOAR:Smalltalk on RISC
 
俺ASICと俺CPU“松竹V(しょうちくぶい)”
俺ASICと俺CPU“松竹V(しょうちくぶい)”俺ASICと俺CPU“松竹V(しょうちくぶい)”
俺ASICと俺CPU“松竹V(しょうちくぶい)”
 
あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)
 
RISC-Vの可能性
RISC-Vの可能性RISC-Vの可能性
RISC-Vの可能性
 
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?
 
Takep lpc1114-190613
Takep lpc1114-190613Takep lpc1114-190613
Takep lpc1114-190613
 
初歩的な部品の知識
初歩的な部品の知識初歩的な部品の知識
初歩的な部品の知識
 
Takepino LPC1114
Takepino LPC1114Takepino LPC1114
Takepino LPC1114
 
無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレ無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレ
 
Common Lisp ユーザへのScheme紹介
Common Lisp ユーザへのScheme紹介Common Lisp ユーザへのScheme紹介
Common Lisp ユーザへのScheme紹介
 
昔の外付けキャッシュ & コヒーレント・キャッシュ
昔の外付けキャッシュ & コヒーレント・キャッシュ昔の外付けキャッシュ & コヒーレント・キャッシュ
昔の外付けキャッシュ & コヒーレント・キャッシュ
 
Ichigojam ossc-170819
Ichigojam ossc-170819Ichigojam ossc-170819
Ichigojam ossc-170819
 
大昔のMMU
大昔のMMU大昔のMMU
大昔のMMU
 
Axeai 170421
Axeai 170421Axeai 170421
Axeai 170421
 
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
 
Robot Language and a Tail Recursive Interpreter
Robot Language and a Tail Recursive Interpreter Robot Language and a Tail Recursive Interpreter
Robot Language and a Tail Recursive Interpreter
 
Dataflow140711-a@Kernel/VM北陸1
Dataflow140711-a@Kernel/VM北陸1Dataflow140711-a@Kernel/VM北陸1
Dataflow140711-a@Kernel/VM北陸1
 
Dataflow140711@Kernel/VM北陸1
Dataflow140711@Kernel/VM北陸1Dataflow140711@Kernel/VM北陸1
Dataflow140711@Kernel/VM北陸1
 
Dataflow140711
Dataflow140711Dataflow140711
Dataflow140711
 

ロボット用Open Source Software

  • 3. ロボットもOSS時代 英語版Wikipedia「Open-source robotics」の 項 http://en.wikipedia.org/wiki/Open-source_robotics フル・ロボット・プロジェクト32個 ソフトウェアのみのプロジェクト 28 個 オープン・ハードウェア・プロジェクト:3個
  • 4. OSSロボット例 (たけおか謹製) 人間の顔を見つけたら、追尾する ・顔の位置を判断して、右へ行くか、左へ行くかを決める Linux+OpenCV+OpenEL OpenCVは顔認識などを含む 総合的な画像処理ライブラリ OpenELはJASAなどが推進している ロボット用の下位の抽象化層の規格 ・DCモータの制御はOpenEL ハードウェア ・RaspberryPi —ARM11@700MHz —512MBytesRAM ・USBカメラ ・DCモータ
  • 5. OpenCV 画像処理のミドルウェア ・Intel, Willow Garage が開発 ・いろんなものが入っている ・極めて便利 —画像処理 (Image Processing) —構造解析 (Structural Analysis) —モーション解析と物体追跡 (Motion Analysis and Object Tracking) —パターン認識 (Pattern Recognition) —カメラキャリブレーションと3次元再構成 (Camera Calibration and 3D Reconstruction) —機械学習 —ユーザインタフェース
  • 6. OpenCVによる顔認識 OpenCV ・一般的画像処理 ・画像認識 —学習器 —認識器 ・カメラ入力部 USBカメラを接続 ・ロジクール QCAM-E2500, 30万画素 ・Logicool 861200 ・カメラ入力 顔認識 ・学習済みデータが用意されている ・簡単に使用できる ・ロボットの目玉にでも 「たけおか opencv raspberrypi」でググる
  • 7. OpenCV //確認用ウインドウ初期化 cvNamedWindow( DISP_WIN , CV_WINDOW_AUTOSIZE ); // カメラ初期化 capture = cvCreateCameraCapture( 0 ); // 正面顔検出器の読み込み CvHaarClassifierCascade* cvHCC = (CvHaarClassifierCascade*)cvLoad(cascade, NULL,NULL,NULL); for(;;){ CvSeq* face; // 1フレーム・キャプチャ frame = cvQueryFrame( capture ); // 画像中から検出対象の情報を取得する。 face = cvHaarDetectObjects(frame, cvHCC, cvMStr, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING, //認識後 face->total 個、CvRect* faceRect = (CvRect*)cvGetSeqElem(face, i); }
  • 9. en.Wikipedia「Open-source robotics」のOSS上位など NXJ ・Lego NXTロボット・キット用のOSS Javaプログラミング環境 CLARAty ・JPL(ジェット推進研究所)で開発されている、Mars(火星)プログラムの 一部として。 ROS (Robot Operating System) ・BSDライセンス。すでに50以上のロボットで動作 URBI ・C++の分散/組み込み コンポーネント・フレームワーク ・ + 並列/イベント駆動 制御スクリプト言語 Player (robot framework) OpenRTM-aist (robotics technology middleware) ・日本の産総研が開発 ※上記のいくつかは、ロボット・ミドルウェアである
  • 10. ロボット用ミドルウェアとは フレームワーク ・コンポーネントをつなぐ ・コンポーネントの独立性を高めさせる ・オーバーヘッド無し ・存在を感じさせない 参考 http://en.wikipedia.org/wiki/Robotics_middleware
  • 11. ROS
  • 12. ROS Robot Operationg System http://wiki.ros.org/ ロボットのミドルウェアと、たくさんのコンポーネント BSDライセンス Googleの自動運転で有名 すでに50以上のロボットで動作  2007年 the Stanford Artificial Intelligence Laboratory で開 発・ Stanford AI Robot STAIR project 2008〜2013年 Willow Garageが中心に開発中 2013年〜 the Open Source Robotics Foundation ※参考 http://en.wikipedia.org/wiki/Robot_Operating_System
  • 13. ROS データの流れに応じて、コンポーネントをつなぐ 自動車の自動運転でも採用 OpenCVも含まれている 雑に言ってしまえば… ロボットを作るためのソフトウェア部品の多くが含 まれている http://www.ros.org/news/resources/2010/poster2color_revis.jpg
  • 14. ROSパッケージの適用分野  知覚 (Perception) 物体認知 (Object Identification) セグメンテーションと認識 (Segmentation and recognition) 顔認識 (Face recognition) ジェスチャ認識 (Gesture recognition) 動作追跡 (Motion tracking) エゴモーション (Egomotion) 運動理解 (Motion understanding) 運動からの構造 (Structure from motion (SFM)) ステレオビジョン:2台のカメラを通して、奥行き知覚 ・(Stereo vision: depth perception via two cameras) モーション (Motion) 移動ロボット工学 (Mobile robotics)  制御 (Control) 計画 (Planning) 把握 (Grasping) ※http://en.wikipedia.org/wiki/Robot_Operating_Systemから引用、和訳
  • 16. ROS ROSエコ・システムのソフトウェアは3つのグループ に分けられる ・(1) 言語やプラットフォームから独立したツール —ROSベースのソフトウェアを作ったり分散させるために使用 ・(2) ROSクライアント・ライブラリ実装 —roscpp, rospy, roslispなど ・(3)アプリケーションに関連するコードを含んだパッケージ —ひとつ以上のROSクライアント・ライブラリが使用 ※http://en.wikipedia.org/wiki/Robot_Operating_Sys temから引用、和訳
  • 18. RTミドルウェア 産総研などが開発しているロボット用ミドルウェア ・RTコンポーネントは、OMGにて、国際標準化 RT (Robot Technology/Robotic Technology)とは ・ロボット機能要素 RTミドルウエアとは ・様々な機能要素をモジュール化 (RTコンポーネント) ・RTCを、ソフトウエア的に統合するためのプラットフォーム RTミドルウエアの目的 ・仕様をオープンにする ・様々な実装同士が相互接続できるようにする ・オープンアーキテクチャのプラットフォームを確立する 通信はCORBAベース 「OpenRTM-aist」は、RTミドルウェアの産総研による実現 ・ライセンスは、LGPLおよび産総研と個別に契約するライセンスのデュアルライ センス方式 参考 http://www.openrtm.org/openrtm/ja/node/161#toc5 http://www.openrtm.org/openrtm/ja/content/openrtm-aist-official-website
  • 21. RTC(RTコンポーネント) OMG標準  RTM / OpenRTM-aist は ・コンポーネントモデル ・そのインターフェー ス ・である「RTC」が OMG 国際標準  OMG (Object Management Group) ・1989年に設立されたソフトウエア標準化団 体 ・CORBA (Common Object Request Broker Architecture)分散オブジェクトミドル ウエア: ・ UML (Unified Modeling Language) ソフトウェアモデリング言語 ・などを策定・管理している組織  RTCのインターフェース仕様 ・OMG において, 産総研と米国ミドルウエアベンダ RTI (Real Time Innovations) により標準化 ・RTC (Robotic Technology Component) Specification ( http://www.omg.org/spec/RTC/1.0/ ) として2008年4月に公式リリース http://www.openrtm.org/openrtm/ja/content/rt%E3%83%9F%E3%83%89%E3%83%AB %E3%82%A6%E3%82%A8%E3%82%A2%E3%81%A8%E3%81%AF%EF%BC%9F-0#toc4 より 引き写し
  • 23. OpenEL JASA,産総研などが推進しているフレームワーク 国際規格にするべく、OMGに提案中 RTミドルウェアなどのコンポーネントの可搬性を 高める ハードウェアに近い層を、抽象化 OpenEL準拠で書かれたソフトウェア(RTC)は、 ハードウェア・ドライバに依存せずに動作する 参考 http://jasa.or.jp/openel/Main_Page/ja#OpenEL.E3.81.AE.E6.AD.B4 .E5.8F.B2.E3.81.A8.E6.99.AE.E5.8F.8A.E3.83.BB.E5.95.93.E7.99.BA. E6.B4.BB.E5.8B.95
  • 26. OpenEL使用 オレオレ実例 Multi Thread BASICインタープリタ OS無し OpenELでDCモータ駆動 PIC32MX250 (MIPSコア@50MHz、ROM128KB, RAM32KB) 秋月で360円 OpenCV under Linux OpenELで DCモータ駆動 Raspi (ARM11@700MHz, 512MBメモリ)
  • 27. おしまい 絶賛、アルバイト募集中 C, Java, Lispな人 上位レイヤの人も求む www.takeoka.org/~take/ @takeoka
  • 28. OpenCV int main( int argc, char** argv ) { int i; double w = (double)cap_width; double h = 120; motor_gpio_init(); cvNamedWindow( DISP_WIN , CV_WINDOW_AUTOSIZE ); CvCapture* capture = NULL; if (argc > 1){ disp_and_sleepf=1; }else{ } capture = cvCreateCameraCapture( 0 ); // (2)キャプチャサイズを設定する. cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, w); cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, h); IplImage* frame; // 正面顔検出器の読み込み CvHaarClassifierCascade* cvHCC = (CvHaarClassifierCascade*)cvLoad(cascade, NULL,NULL,NULL); // 検出に必要なメモリストレージを用意する CvMemStorage* cvMStr = cvCreateMemStorage(0); // 検出情報を受け取るためのシーケンスを用意する CvSeq* face;
  • 29. OpenCV while(1) { frame = cvQueryFrame( capture ); if( !frame ) break; // 画像中から検出対象の情報を取得する face = cvHaarDetectObjects(frame, cvHCC, cvMStr, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING, minsiz, minsiz); // 1.1, 3, 0, minsiz, minsiz); //////cvHaarDetectObjects( //const CvArr* image, for(i = 0; i < face->total; i++) { // 検出情報から顔の位置情報を取得 CvRect* faceRect = (CvRect*)cvGetSeqElem(face, i); // 取得した顔の位置情報に基づき、矩形描画を行う cvRectangle(frame, cvPoint(faceRect->x, faceRect->y), cvPoint(faceRect->x + faceRect->width, faceRect->y + faceRect->height), CV_RGB(255, 0 ,0), 2, CV_AA, 0); last_face_x=(int)faceRect->x; last_face_width=(int)faceRect->width; } motor_drive( (face->total <=0)? -1: cap_width, last_face_x, last_face_width);
  • 30. OpenCV if(disp_and_sleepf){ cvShowImage( DISP_WIN, frame ); //char c = cvWaitKey(33); char c = cvWaitKey(1); if( c == 27 ) break; } } // 用意したメモリストレージを解放 cvReleaseMemStorage(&cvMStr); // カスケード識別器の解放 cvReleaseHaarClassifierCascade(&cvHCC); cvReleaseCapture( &capture ); cvDestroyWindow( DISP_WIN ); }