Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GR-ROSEとROSを使ってコマンドサーボの現在位置をWebブラウザで表示してみる
Search
lutecia16v
July 17, 2021
Programming
1.6k
0
Share
GR-ROSEとROSを使ってコマンドサーボの現在位置をWebブラウザで表示してみる
2021/7/17 ROS Japan UG #43 組み込み勉強会 LT資料
lutecia16v
July 17, 2021
More Decks by lutecia16v
See All by lutecia16v
EDF-IDF Programming Guidを読む - JTAG Debugging 編 -
lutecia16v
1
390
GR-ROSEでROS/ROS2
lutecia16v
1
1.9k
Jetson NanoとGR-ROSEで始めるROS2
lutecia16v
0
2.2k
がじぇねるねでもROSしたい!
lutecia16v
1
150
GR-ROSE でroombaをコントロールする
lutecia16v
2
420
Other Decks in Programming
See All in Programming
書籍「ユーザーストーリーマッピング」が私のバイブル
asumikam
4
370
Going Multiplatform with Your Android App (Android Makers 2026)
zsmb
2
430
アクセシビリティ試験の"その後"を仕組み化する
yuuumiravy
0
150
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
280
10 Tips of AWS ~Gen AI on AWS~
licux
5
410
mruby on C#: From VM Implementation to Game Scripting (RubyKaigi 2026)
hadashia
2
540
Kingdom of the Machine
yui_knk
2
370
HTML-Aware ERB: The Path to Reactive Rendering @ RubyKaigi 2026, Hakodate, Japan
marcoroth
0
150
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
2
190
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
3k
AI時代のPhpStorm最新事情 #phpcon_odawara
yusuke
0
190
Back to the roots of date
jinroq
0
210
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
180
We Have a Design System, Now What?
morganepeng
55
8.1k
The Curious Case for Waylosing
cassininazir
0
300
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
53k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Become a Pro
speakerdeck
PRO
31
5.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
260
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Color Theory Basics | Prateek | Gurzu
gurzu
0
290
Embracing the Ebb and Flow
colly
88
5k
Transcript
GR-ROSEとROSを使って コマンドサーボの現在位置を Webブラウザで表示してみる るぅて(@lutecia16v) 2021/7/17 ROS Japan UG #43 組み込み勉強会
自己紹介 名前(ハンドル名):るぅて (@lutecia16v) 技術サークル 薔薇の騎士団にてGR-ROSEの同人誌を作成 https://knightsofrose.booth.pm/ https://techbookfest.org/organization/21840045 BOOTH: 技術書典:
本日の発表概要 GR-ROSEでコマンド式サーボの情報を取得し、ROSを使ってWebブラウザで表示する 組込みレベル: 初級 ROSレベル: 初級 必要な機材: GR-ROSE + KXR-A3S(or
KRS330x) + Raspberry Pi 4 + PC 使用するROS: ROS1(Noetic) + rosserial + rosbridge_suite + ROSLIBJS + roswww
コマンド式サーボとは? 主にシリアル通信を使い、決めれられた通信フォーマットのコマンドを送信す ることで、モーターモジュールを制御します。 コントローラ コマンド式サーボ シリアル通信 ・・・ コマンド 応答 •
複数個を数珠繋ぎで接続可能 • 位置制御や速度制御といった機能が豊富 • 現在位置の取得や細かい制御パラメータの設定等が可能
コマンド式サーボとは? 数社から発売されている。 ROBOTIS社 Dynamixel、近藤科学 KRS/B3M、双葉電子工業 RS 最近は中国 HiWonder社 シリアル通信は、TTL半二重やRS485半二重マルチドロップが採用されている。 コマンド方式は各社異なる。
今回は、近藤科学のKRS3301を使用
コマンド式サーボの接続(近藤科学の場合) 1) PC/SBCから コマンド式サーボ Dual USB アダプターHS 2) 組込みボード(arduino/STM32等)から 外部電源(6V)
TTL: コマンド式サーボ RS485USB/ シリアル変換 アダプター 外部電源(6Vとか) RS485: コマンド式サーボ ICS変換基板 外部電源(6Vとか) TTL: コマンド式サーボ RS485USB/ シリアル変換 アダプター 外部電源(6Vとか) RS485: ※R485 I/Fを持っている場合は不要。他 社のRS485 I/F基板でもよい。
コマンド式サーボの接続(近藤科学の場合) GR-ROSEならシンプル! 電源(~18V) →DC/DCを持っているので、これだけでマイコン側にも電源供給される。 TTL/RS485: TTL半二重に対応したシリアルI/FとRS485 I/Fあり 近藤科学 KRS(TTL):〇 B3M(RS485):〇 Dynamixel
XL(TTL): 〇 MX(RS485): 〇 ※RS485の通信速度は1.5Mbpsまで
GR-ROSEからコマンド式サーボの位置取得 #define KRS_FREE 0 #define SERVO_NUM 3 IcsController ICS(Serial1); IcsServo
servo[SERVO_NUM]; void initializeServo(){ ICS.begin(); for(int i = 0; i < SERVO_NUM; i++){ servo[i].attach(ICS, i); servo[i].setPosition(KRS_FREE); delay(1); } }
GR-ROSEからコマンド式サーボの位置取得 uint16_t servo_pos[SERVO_NUM]; void setup() { Serial.begin(9600); initializeServo(); } void
getPositionAll(){ for(int i = 0; i < SERVO_NUM; i++){ servo_pos[i] = servo[i].getPosition(); delay(1); } } void loop() { getPositionAll(); Serial.print("POS:"); Serial.print("\t"); Serial.print(servo_pos[0]); Serial.print("\t"); Serial.print(servo_pos[1]); Serial.print("\t"); Serial.print(servo_pos[2]); Serial.print("\n"); delay(100); }
rosserialを使ってPublish 1) Raspberry Pi にROS環境とrosserial, rosserial_arudinoをインストール 2) Raspberry Pi上でrosserial_arduinoでライブラリを作成 3)
作成したライブラリをGR-ROSEの開発環境であるIDR for GRに取り込み IDR for GR : arudino IDEライクな開発環境 Noeticのrosserial_arduinoのライブラリは、nullptrを使用してい るので、コンパイルオプションに -std=gnu++11を付与
rosserialを使ってPublish /joint_stateのpositionに取得値を入れてPublish。 URDFとか(まだ)ないので、nameは”J1”, “J2”, “J3”とした。 $ rostopic echo /joint_state header:
seq: 27 stamp: secs: 0 nsecs: 0 frame_id: "/base_link" name: - J1 - J2 - J3 position: [7137.0, 8085.0, 5925.0] velocity: [0.0, 0.0, 0.0] effort: [0.0, 0.0, 0.0] --- header: ・・・ ※値はとりあえずそのまま取得したを突っ込んだ → 7500がセンター位置
Webブラウザでの表示 rosbridge_suite + ROSLIBJS + roswwwを使って、トピックをWebブラウザで表示させる GR-ROSE Raspberry Pi rosserial
roswww (webサーバ) USB(Serial) トピック: /joint_state rosbridge_server コンテンツ ROSLIBJS アクセス コンテンツ 取得 WebSocket
技術書典11にて新刊リリースしました