SlideShare a Scribd company logo
1 of 22
Download to read offline
ROS搭載ラズパイで
Lチカしてみる
もじゃなり
@masanari7430
自己紹介
⚫岡山大学の大学院生
⚫ロボット関連の研究しています
⚫ROSは2017/4~から初めて約3年目
ROSで初めにすること
ROSからハードウェア(LEDやモータ)を動かさない
あんまり達成感がない
 Liestenerとtalkerの作成  Gazeboでシミュレーションチュートリアルの亀
ROS対応の有名なハードウェア
 Dynamixel
動かすには1万円~
 Turtlebot3
6万円
学生・ROSを手軽にしたい人には高い
今まで買っていたサーボやモータとか使えない
 i-Cart edu
8万5000円
ROSで自由にハードを動かすには
rosserial経由でマイコンと通信して,マイコンからハード制御
rosserial
で通信
LED
モーター
パソコンとarduino
両方の面倒を見ないといけない
arduino
ラズパイなら一つでハード制御できる?
LED
モーター
ラズパイのGPIOで制御すればいい?
ラズパイのピン制御するには?
echo コマンドから動かす
ex) echo 1 > /sys/class/gpio/gpio27/value
ライブラリ使う
◦WiringPi
◦RPi.GPIO
◦pigpio
どのライブラリを使うか検討する
それぞれの比較
WiringPi RPi.GPIO pigpio
PWM 2本 0本 32本
入力割り込み あり なし あり
言語 Python/C python Python/C
https://karaage.hatenadiary.jp/entry/2017/02/10/073000
pigpioを検索してみる
みんなpythonで書いてる
(Cが大好きなので極力pythonは書きたくない・・・)
ROS対応してやってみたページが一つしかない
(しかも解説が無いからプログラム見て読み解くしかない・・・)
https://botalab.tech/ros_raspi_tamiya_cam_robot_motor/
とりあえず調べてやってみた
使用環境
ハード:Raspberry Pi 3 model B
OS:Ubuntu Mate
(RaspbianでもたぶんOK)
ROS:kinetic
pigpioのインストール
sudo apt-get install pigpio
これだけでいい
aptからインストールできるからめっちゃ楽
ターミナルから
※Pythonで書きたい場合はこちらをインストール
sudo apt-get python-pigpio python3-pigpio
pigpioを使ったLチカプログラム
#include <ros/ros.h>
#include <pigpiod_if2.h>
#include <std_msgs/Bool.h>
class gpio{
//construct
public:
gpio();
private:
int pi;
void cb_LED(const std_msgs::Bool::ConstPtr &data);
ros::NodeHandle nh;
ros::Subscriber sub_led;
};
gpio::gpio(){
pi = pigpio_start(NULL,NULL);
sub_led = nh.subscribe("/led", 5, &gpio::cb_LED, this);
}
void gpio::cb_LED(const std_msgs::Bool::ConstPtr &data){
if(data->data == 1){
gpio_write(pi,26,1);
}else{
gpio_write(pi,26,0);
}
}
int main(int argc, char** argv){
ros::init(argc, argv, "gpio");
gpio gpio;
ros::spin();
return 0;
}
pigpioを使ったLチカプログラム(抜粋)
①#include <pigpiod_if2.h>
ヘッダをインクルード
②pi = pigpio_start(NULL,NULL);
pigpioを初期化
③gpio_write(pi,26,1);
ラズパイの26番ピンをON
この3ステップで
Lチカが出来る
とても簡単!!
CMakeListsの設定
add_executable(gpio src/gpio.cpp)
target_link_libraries(gpio ${catkin_LIBRARIES})
target_link_libraries(gpio pigpiod_if2)
CMakeListsに通常のノード登録と共に,
明示的にライブラリを使うことを示さないといけない
※pigpiod_if2を使っているけど,pigpioもある?
Lチカ実験の環境
LED26ピン
ラズパイの26ピンに
抵抗とLEDを接続
実験動画
他の機能は?
PWM 32本(ただ,ハードウェアPWMは4本のみ)
UART GPIOで1つ,USBからも可能
SPI 基本的に1つ(特殊な設定をすればもう1つ)
I2C 1つ
小さいマイコンと同等ぐらいの性能?
一つ面倒なとこが・・・・・・
ラズパイを起動した後に必ず
sudo pigpiod
を実行しないといけない
(GPIOをコントロールしてくれる
デーモン?らしく必ずいる)
https://hakengineer.xyz/2017/09/22/post-318/
参照文献
ラズパイ起動時に自動で
実行するように変更する
pigpioを使ったプログラム
Githubにプログラムをあげて,
ブログに解説を書きました(プログラムだけのものある)
Github
https://github.com/Mozyanari/pigpio
ブログ
http://mozyanari.hatenablog.com/archive/category/pigpio
いままでやったこと
Lチカ,PWMを出してサーボを動かす,SPI通信でMPU9250を動かす,
GPIOでシリアル通信,USBで接続した機器とシリアル通信
検証する必要がありそうなこと
• CPUに負荷をかけてもPWMが安定するか
(pigpioのほとんどがソフトウェアPWMなので負荷かけると周波数がずれる?)
• 複数のノードからGPIOに同時にアクセスしたらどうなるか
(twitterではノードが落ちる報告)
• I2Cと割り込み機能をまだ使ったことがない
(割り込み機能でエンコーダをやりたいけどさすがに無理かも)
• Pythonなら[import pigpio]を使っているのをよく見る
今回は[#include <pigpiod_if2.h>]からインクルードしたが
この違いは何?
ROS2でも使える?
https://qiita.com/NeK/items/da429f8c001476ec4544
ROS2でpigpioの利用 -準備・情報-
ROS2で使用してみた作例を発見
最近はROS2への移行が盛んにおこなわれている
ROS1でpigpioの勉強してもすぐに使えなくなる?
今後もpigpioはROSでも使えそう!!
結論
 ラズパイ+pigpioで自由にハードを動かせる
 簡単なロボットならPC+arduinoから
ラズパイ+pigpioで置き換えれるかも?

More Related Content

What's hot

CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法Hirokatsu Kataoka
 
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組みShintaro Fukushima
 
Marketing×Python/Rで頑張れる事例16本ノック
Marketing×Python/Rで頑張れる事例16本ノックMarketing×Python/Rで頑張れる事例16本ノック
Marketing×Python/Rで頑張れる事例16本ノックTeruyuki Sakaue
 
協調フィルタリング入門
協調フィルタリング入門協調フィルタリング入門
協調フィルタリング入門hoxo_m
 
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会Hiroaki Kaneda
 
MediaPipeの紹介
MediaPipeの紹介MediaPipeの紹介
MediaPipeの紹介emakryo
 
AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方Shinagawa Seitaro
 
情報アクセス技術のためのテストコレクション作成
情報アクセス技術のためのテストコレクション作成情報アクセス技術のためのテストコレクション作成
情報アクセス技術のためのテストコレクション作成kt.mako
 
ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例Yoshitaka HARA
 
つくばチャレンジ2019技術調査報告
つくばチャレンジ2019技術調査報告つくばチャレンジ2019技術調査報告
つくばチャレンジ2019技術調査報告Yoshitaka HARA
 
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方Mori Ken
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03Daiki Maekawa
 
文献紹介:YOLO series:v1-v5, X, F, and YOWO
文献紹介:YOLO series:v1-v5, X, F, and YOWO文献紹介:YOLO series:v1-v5, X, F, and YOWO
文献紹介:YOLO series:v1-v5, X, F, and YOWOToru Tamaki
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてFixstars Corporation
 
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージMori Ken
 
ORB-SLAMの手法解説
ORB-SLAMの手法解説ORB-SLAMの手法解説
ORB-SLAMの手法解説Masaya Kaneko
 
三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)Tomohiro Motoda
 
MoveItの新機能、 OMPL Constrained Planningを試してみた
MoveItの新機能、 OMPL Constrained Planningを試してみた MoveItの新機能、 OMPL Constrained Planningを試してみた
MoveItの新機能、 OMPL Constrained Planningを試してみた Ryo Kabutan
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜Hideki Takase
 
AWS + MLflow + SageMakerの環境を動かしてみたお話
AWS + MLflow + SageMakerの環境を動かしてみたお話AWS + MLflow + SageMakerの環境を動かしてみたお話
AWS + MLflow + SageMakerの環境を動かしてみたお話ItohHiroki
 

What's hot (20)

CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
 
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
 
Marketing×Python/Rで頑張れる事例16本ノック
Marketing×Python/Rで頑張れる事例16本ノックMarketing×Python/Rで頑張れる事例16本ノック
Marketing×Python/Rで頑張れる事例16本ノック
 
協調フィルタリング入門
協調フィルタリング入門協調フィルタリング入門
協調フィルタリング入門
 
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
 
MediaPipeの紹介
MediaPipeの紹介MediaPipeの紹介
MediaPipeの紹介
 
AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方
 
情報アクセス技術のためのテストコレクション作成
情報アクセス技術のためのテストコレクション作成情報アクセス技術のためのテストコレクション作成
情報アクセス技術のためのテストコレクション作成
 
ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例
 
つくばチャレンジ2019技術調査報告
つくばチャレンジ2019技術調査報告つくばチャレンジ2019技術調査報告
つくばチャレンジ2019技術調査報告
 
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
 
文献紹介:YOLO series:v1-v5, X, F, and YOWO
文献紹介:YOLO series:v1-v5, X, F, and YOWO文献紹介:YOLO series:v1-v5, X, F, and YOWO
文献紹介:YOLO series:v1-v5, X, F, and YOWO
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けて
 
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
 
ORB-SLAMの手法解説
ORB-SLAMの手法解説ORB-SLAMの手法解説
ORB-SLAMの手法解説
 
三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)
 
MoveItの新機能、 OMPL Constrained Planningを試してみた
MoveItの新機能、 OMPL Constrained Planningを試してみた MoveItの新機能、 OMPL Constrained Planningを試してみた
MoveItの新機能、 OMPL Constrained Planningを試してみた
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
 
AWS + MLflow + SageMakerの環境を動かしてみたお話
AWS + MLflow + SageMakerの環境を動かしてみたお話AWS + MLflow + SageMakerの環境を動かしてみたお話
AWS + MLflow + SageMakerの環境を動かしてみたお話
 

Similar to ROS搭載ラズパイでLチカしてみる

STMとROSをシリアル通信させて移動ロボットを作る
STMとROSをシリアル通信させて移動ロボットを作るSTMとROSをシリアル通信させて移動ロボットを作る
STMとROSをシリアル通信させて移動ロボットを作るmozyanari
 
Moveitを使ったアプリケーションの紹介
Moveitを使ったアプリケーションの紹介Moveitを使ったアプリケーションの紹介
Moveitを使ったアプリケーションの紹介Ryodo Tanaka
 
Ros#を使ったROSとxRデバイスの通信
Ros#を使ったROSとxRデバイスの通信Ros#を使ったROSとxRデバイスの通信
Ros#を使ったROSとxRデバイスの通信mozyanari
 
GR-ROSEでroombaを コントロールする
GR-ROSEでroombaを コントロールするGR-ROSEでroombaを コントロールする
GR-ROSEでroombaを コントロールするKosugaMasakatsu1
 
Maker Faire Tokyo 2012 のご報告など
Maker Faire Tokyo 2012 のご報告などMaker Faire Tokyo 2012 のご報告など
Maker Faire Tokyo 2012 のご報告などBizan Nishimura
 
TurtleBotで遊んでみた
TurtleBotで遊んでみたTurtleBotで遊んでみた
TurtleBotで遊んでみたnaoyuki_iot
 

Similar to ROS搭載ラズパイでLチカしてみる (6)

STMとROSをシリアル通信させて移動ロボットを作る
STMとROSをシリアル通信させて移動ロボットを作るSTMとROSをシリアル通信させて移動ロボットを作る
STMとROSをシリアル通信させて移動ロボットを作る
 
Moveitを使ったアプリケーションの紹介
Moveitを使ったアプリケーションの紹介Moveitを使ったアプリケーションの紹介
Moveitを使ったアプリケーションの紹介
 
Ros#を使ったROSとxRデバイスの通信
Ros#を使ったROSとxRデバイスの通信Ros#を使ったROSとxRデバイスの通信
Ros#を使ったROSとxRデバイスの通信
 
GR-ROSEでroombaを コントロールする
GR-ROSEでroombaを コントロールするGR-ROSEでroombaを コントロールする
GR-ROSEでroombaを コントロールする
 
Maker Faire Tokyo 2012 のご報告など
Maker Faire Tokyo 2012 のご報告などMaker Faire Tokyo 2012 のご報告など
Maker Faire Tokyo 2012 のご報告など
 
TurtleBotで遊んでみた
TurtleBotで遊んでみたTurtleBotで遊んでみた
TurtleBotで遊んでみた
 

ROS搭載ラズパイでLチカしてみる