SlideShare a Scribd company logo
1 of 23
Download to read offline
STMとROSをシリアル通信させて
移動ロボットを作る
もじゃなり
@masanari7430
自己紹介
岡山大学の大学院生
ロボット関連の研究しています
ROSは2017/4~から初めて3年目
最近朝が起きれなくて,社会人になれるか不安
自分でROS対応ロボットを作ってみる
• 研究でi-Cart eduと呼ばれるROS対応ロボッ
トを使ってる(一台10万)
• 働いてからも自分で使えるロボットが欲しい
じゃあ,自分で作るか
ROSだけでロボットは動く?
• ROSは色んなライブラリがあるし,DYNAMIXELでサーボを動かせたら
ロボットは動く?
• SPI,I2Cで動くセンサは?エンコーダの値を読みたいときは?
沢山のセンサのデータを取りたいときは?モータをPID制御するときは?
→PCは考える頭としてはとても優秀だけど,
実際にロボットの手足動かすのはマイコンには勝てない
結局,ハードを動かすにはマイコンが必要
関連プロジェクト
• mROS
• rosserial stm32
マイコンにノードを乗せる取り組み
柔軟なデータのやり取りが可能
mROSはRenesas GR-PEACHに対応
rosserial stm32はSTM32に対応
シリアル通信を実装する理由
• 移動ロボットとやり取りするのは,
PCから移動速度,マイコンからオドメトリだけ
→どのデータをやり取りするかすでに分かっている
• mROSやrosserial stm32に依存すると,更新が止まった
時に何も出来なくなる
• 全てを自分で実装することでバグが発生した時に
原因を特定しやすくする
何のマイコンを使う?
今まで経験してきたマイコン
Renesas
(RX621)
Arduino STM32
• STM32:種類が豊富で,開発環境(stm32CubeIDE)が神
GUIでピン設定が出来て初期化の部分を自分で書く必要がない
チップを買ってきて自作する際も周辺回路が少なくて済む
しかも,開発ボードはデバッカの部分でシリアル通信が出来る!!!
優秀だと思うマイコン(個人の感想です)
PCとSTM32をシリアル通信して
移動ロボット作ろう
ハードウエアの構成(PC-マイコン間)
STM32 Nucleo Board
STM32F446REUSBケーブルPC(ROS)
シリアル通信
STM32 Nucleo Board
STM32F446RE
ハードウエアの構成(マイコン-ロボット間)
電源(12v)
モータドライバ
(L298N)
PWM
(1KHz)
ハードウエアの構成(全体図)
PC
モータドライバ
マイコン
モータ
どうやってシリアル通信すればいい?
ROSのシリアル通信の実装
先行例がある(みっちーさんに教えて頂いた)
https://qiita.com/srs/items/efaa8dc0a6d580c7c423
ROSとSTMのシリアル通信
• シリアル通信は8bitで通信が基本
• 送りたいデータは,前進速度と回転速度
• 前進速度の単位をcm/s,回転速度はdeg/sにして,
それぞれ2byte=16bit=-32768~32767あれば十分そう
0 0 0 0 1 0 1 0 SS 0 0 0 0 1 0 1 0 SS
0 0 0 0 1 0 1 0 SS 0 0 0 0 1 0 1 0 SS
前進速度
回転速度
16bitを8bit×2に分割
memcpy関数を使って,int16_tをchar二つに分割
0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0
char[0] char[1]
例えば
100=0b00000000 01100100
を送りたい時
なぜか10を送ると,13 10になる
0 0 0 0 1 0 1 0
10cm/sを送ろうとした時
10
0x0a
0 0 0 0 1 1 0 1
13 10
0x0d
0 0 0 0 1 0 1 0
0x0a
ROSのシリアルポートの設定が原因
デフォルトの設定では改行コード(0x0a)は
改行+復帰(0x0d 0x0a)のwindows基準に変換されて送信
(ただ,これはPC依存かも?)
conf_tio.c_oflag &= ~(ONLCR);
以下のコードを追加して,自動変換をやめる
実際に動かしてみた
移動ロボットの動作実験
移動ロボットの動作実験
考察
• エンコーダでフィードバックしていないため
真っ直ぐ進まない
• 回転しようとしても搭載したPCが重たいため回転
できなかった
• それでもコントローラに応じてとりあえず動いた
まとめ
• STMとROSのシリアル通信に成功して,自作の移動
ロボットを動かした
• 市販のROS対応ロボットの偉大さが分かった
• 本当は実際に書いたシリアル通信の部分や,
STMのコードについても解説したかった
• 続きはブログで(たぶん12月中に書きます)
http://mozyanari.hatenablog.com/

More Related Content

What's hot

NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日Kitsukawa Yuki
 
ORB-SLAMの手法解説
ORB-SLAMの手法解説ORB-SLAMの手法解説
ORB-SLAMの手法解説Masaya Kaneko
 
MoveItの新機能、 pilz industrial motion を試してみた
MoveItの新機能、 pilz industrial motion を試してみたMoveItの新機能、 pilz industrial motion を試してみた
MoveItの新機能、 pilz industrial motion を試してみたRyo Kabutan
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーションakio19937
 
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価Hirokazu Onomichi
 
20190307 visualslam summary
20190307 visualslam summary20190307 visualslam summary
20190307 visualslam summaryTakuya Minagawa
 
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方Mori Ken
 
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉Mori Ken
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解Koji Terada
 
SLAM入門 第2章 SLAMの基礎
SLAM入門 第2章 SLAMの基礎SLAM入門 第2章 SLAMの基礎
SLAM入門 第2章 SLAMの基礎yohei okawa
 
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII
 
SLAM開発における課題と対策の一例の紹介
SLAM開発における課題と対策の一例の紹介SLAM開発における課題と対策の一例の紹介
SLAM開発における課題と対策の一例の紹介miyanegi
 
複数のGNSSを用いたポーズグラフ最適化
複数のGNSSを用いたポーズグラフ最適化複数のGNSSを用いたポーズグラフ最適化
複数のGNSSを用いたポーズグラフ最適化TaroSuzuki15
 
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォームAutoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォームTakuya Azumi
 
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
 
Direct Sparse Odometryの解説
Direct Sparse Odometryの解説Direct Sparse Odometryの解説
Direct Sparse Odometryの解説Masaya Kaneko
 
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
03 第3.6節-第3.8節 ROS2の基本機能(2/2)03 第3.6節-第3.8節 ROS2の基本機能(2/2)
03 第3.6節-第3.8節 ROS2の基本機能(2/2)Mori Ken
 
SLAM勉強会(3) LSD-SLAM
SLAM勉強会(3) LSD-SLAMSLAM勉強会(3) LSD-SLAM
SLAM勉強会(3) LSD-SLAMIwami Kazuya
 

What's hot (20)

NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
 
ORB-SLAMの手法解説
ORB-SLAMの手法解説ORB-SLAMの手法解説
ORB-SLAMの手法解説
 
SLAM勉強会(PTAM)
SLAM勉強会(PTAM)SLAM勉強会(PTAM)
SLAM勉強会(PTAM)
 
MoveItの新機能、 pilz industrial motion を試してみた
MoveItの新機能、 pilz industrial motion を試してみたMoveItの新機能、 pilz industrial motion を試してみた
MoveItの新機能、 pilz industrial motion を試してみた
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
 
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
 
20190307 visualslam summary
20190307 visualslam summary20190307 visualslam summary
20190307 visualslam summary
 
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方
 
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解
 
SLAM入門 第2章 SLAMの基礎
SLAM入門 第2章 SLAMの基礎SLAM入門 第2章 SLAMの基礎
SLAM入門 第2章 SLAMの基礎
 
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
 
SLAM開発における課題と対策の一例の紹介
SLAM開発における課題と対策の一例の紹介SLAM開発における課題と対策の一例の紹介
SLAM開発における課題と対策の一例の紹介
 
複数のGNSSを用いたポーズグラフ最適化
複数のGNSSを用いたポーズグラフ最適化複数のGNSSを用いたポーズグラフ最適化
複数のGNSSを用いたポーズグラフ最適化
 
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォームAutoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
 
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
 
Direct Sparse Odometryの解説
Direct Sparse Odometryの解説Direct Sparse Odometryの解説
Direct Sparse Odometryの解説
 
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
03 第3.6節-第3.8節 ROS2の基本機能(2/2)03 第3.6節-第3.8節 ROS2の基本機能(2/2)
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
 
ドロネー三角形分割
ドロネー三角形分割ドロネー三角形分割
ドロネー三角形分割
 
SLAM勉強会(3) LSD-SLAM
SLAM勉強会(3) LSD-SLAMSLAM勉強会(3) LSD-SLAM
SLAM勉強会(3) LSD-SLAM
 

Similar to STMとROSをシリアル通信させて移動ロボットを作る

ROSを用いた歩行ロボットの脚の開発
ROSを用いた歩行ロボットの脚の開発ROSを用いた歩行ロボットの脚の開発
ROSを用いた歩行ロボットの脚の開発ShomaUehara
 
ROS搭載ラズパイでLチカしてみる
ROS搭載ラズパイでLチカしてみるROS搭載ラズパイでLチカしてみる
ROS搭載ラズパイでLチカしてみるmozyanari
 
Ros#を使ったROSとxRデバイスの通信
Ros#を使ったROSとxRデバイスの通信Ros#を使ったROSとxRデバイスの通信
Ros#を使ったROSとxRデバイスの通信mozyanari
 
Agile Tech EXPO - 雑談会話ロボットを Agile に作る
Agile Tech EXPO - 雑談会話ロボットを Agile に作るAgile Tech EXPO - 雑談会話ロボットを Agile に作る
Agile Tech EXPO - 雑談会話ロボットを Agile に作るHarumitsu Nobuta
 
瀬戸内ROS勉強会の紹介~地方でROSを勉強するコツ~
瀬戸内ROS勉強会の紹介~地方でROSを勉強するコツ~瀬戸内ROS勉強会の紹介~地方でROSを勉強するコツ~
瀬戸内ROS勉強会の紹介~地方でROSを勉強するコツ~Hirokazu Onomichi
 
ROSのロボットモデルでバーチャルロボット受肉する
ROSのロボットモデルでバーチャルロボット受肉するROSのロボットモデルでバーチャルロボット受肉する
ROSのロボットモデルでバーチャルロボット受肉するUnityTechnologiesJapan002
 
ロボットにできること あなたにしかできないこと - 近藤豊(IEEE Engineering Spotlight講演資料)
ロボットにできること あなたにしかできないこと - 近藤豊(IEEE Engineering Spotlight講演資料)ロボットにできること あなたにしかできないこと - 近藤豊(IEEE Engineering Spotlight講演資料)
ロボットにできること あなたにしかできないこと - 近藤豊(IEEE Engineering Spotlight講演資料)Preferred Networks
 
RPALT 新入社員ロボット
RPALT 新入社員ロボットRPALT 新入社員ロボット
RPALT 新入社員ロボットShiro Fukuda
 
160608 01
160608 01160608 01
160608 01openrtm
 
名古屋CV_ROSによるロボットソフトウェア開発の準備
名古屋CV_ROSによるロボットソフトウェア開発の準備名古屋CV_ROSによるロボットソフトウェア開発の準備
名古屋CV_ROSによるロボットソフトウェア開発の準備ssuser6b6663
 
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボNishida Kansuke
 
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話Yuhei Miyazato
 
仮想のPremaidAIを、既存のロボット用ボードで動かしてみた話
仮想のPremaidAIを、既存のロボット用ボードで動かしてみた話仮想のPremaidAIを、既存のロボット用ボードで動かしてみた話
仮想のPremaidAIを、既存のロボット用ボードで動かしてみた話Hirokazu Onomichi
 
20230119IoTLT縦・横? ノーコードツールの フロー事情 (1).pptx.pdf
20230119IoTLT縦・横? ノーコードツールの フロー事情 (1).pptx.pdf20230119IoTLT縦・横? ノーコードツールの フロー事情 (1).pptx.pdf
20230119IoTLT縦・横? ノーコードツールの フロー事情 (1).pptx.pdfssusera06cae
 
ロボット用マイコンボードを 設計してみた
ロボット用マイコンボードを設計してみたロボット用マイコンボードを設計してみた
ロボット用マイコンボードを 設計してみたBizan Nishimura
 

Similar to STMとROSをシリアル通信させて移動ロボットを作る (15)

ROSを用いた歩行ロボットの脚の開発
ROSを用いた歩行ロボットの脚の開発ROSを用いた歩行ロボットの脚の開発
ROSを用いた歩行ロボットの脚の開発
 
ROS搭載ラズパイでLチカしてみる
ROS搭載ラズパイでLチカしてみるROS搭載ラズパイでLチカしてみる
ROS搭載ラズパイでLチカしてみる
 
Ros#を使ったROSとxRデバイスの通信
Ros#を使ったROSとxRデバイスの通信Ros#を使ったROSとxRデバイスの通信
Ros#を使ったROSとxRデバイスの通信
 
Agile Tech EXPO - 雑談会話ロボットを Agile に作る
Agile Tech EXPO - 雑談会話ロボットを Agile に作るAgile Tech EXPO - 雑談会話ロボットを Agile に作る
Agile Tech EXPO - 雑談会話ロボットを Agile に作る
 
瀬戸内ROS勉強会の紹介~地方でROSを勉強するコツ~
瀬戸内ROS勉強会の紹介~地方でROSを勉強するコツ~瀬戸内ROS勉強会の紹介~地方でROSを勉強するコツ~
瀬戸内ROS勉強会の紹介~地方でROSを勉強するコツ~
 
ROSのロボットモデルでバーチャルロボット受肉する
ROSのロボットモデルでバーチャルロボット受肉するROSのロボットモデルでバーチャルロボット受肉する
ROSのロボットモデルでバーチャルロボット受肉する
 
ロボットにできること あなたにしかできないこと - 近藤豊(IEEE Engineering Spotlight講演資料)
ロボットにできること あなたにしかできないこと - 近藤豊(IEEE Engineering Spotlight講演資料)ロボットにできること あなたにしかできないこと - 近藤豊(IEEE Engineering Spotlight講演資料)
ロボットにできること あなたにしかできないこと - 近藤豊(IEEE Engineering Spotlight講演資料)
 
RPALT 新入社員ロボット
RPALT 新入社員ロボットRPALT 新入社員ロボット
RPALT 新入社員ロボット
 
160608 01
160608 01160608 01
160608 01
 
名古屋CV_ROSによるロボットソフトウェア開発の準備
名古屋CV_ROSによるロボットソフトウェア開発の準備名古屋CV_ROSによるロボットソフトウェア開発の準備
名古屋CV_ROSによるロボットソフトウェア開発の準備
 
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
 
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
 
仮想のPremaidAIを、既存のロボット用ボードで動かしてみた話
仮想のPremaidAIを、既存のロボット用ボードで動かしてみた話仮想のPremaidAIを、既存のロボット用ボードで動かしてみた話
仮想のPremaidAIを、既存のロボット用ボードで動かしてみた話
 
20230119IoTLT縦・横? ノーコードツールの フロー事情 (1).pptx.pdf
20230119IoTLT縦・横? ノーコードツールの フロー事情 (1).pptx.pdf20230119IoTLT縦・横? ノーコードツールの フロー事情 (1).pptx.pdf
20230119IoTLT縦・横? ノーコードツールの フロー事情 (1).pptx.pdf
 
ロボット用マイコンボードを 設計してみた
ロボット用マイコンボードを設計してみたロボット用マイコンボードを設計してみた
ロボット用マイコンボードを 設計してみた
 

STMとROSをシリアル通信させて移動ロボットを作る