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
0
1.6k
GR-ROSEとROSを使ってコマンドサーボの現在位置をWebブラウザで表示してみる
2021/7/17 ROS Japan UG #43 組み込み勉強会 LT資料
lutecia16v
July 17, 2021
Tweet
Share
More Decks by lutecia16v
See All by lutecia16v
EDF-IDF Programming Guidを読む - JTAG Debugging 編 -
lutecia16v
1
370
GR-ROSEでROS/ROS2
lutecia16v
1
1.9k
Jetson NanoとGR-ROSEで始めるROS2
lutecia16v
0
2.2k
がじぇねるねでもROSしたい!
lutecia16v
1
140
GR-ROSE でroombaをコントロールする
lutecia16v
2
410
Other Decks in Programming
See All in Programming
SidekiqでAIに商品説明を生成させてみた
akinko_0915
0
110
Introducing RemoteCompose: break your UI out of the app sandbox.
camaelon
2
400
業務でAIを使いたい話
hnw
0
220
Node-REDのノードの開発・活用事例とコミュニティとの関わり(Node-RED Con Nagoya 2025)
404background
0
110
Migration to Signals, Resource API, and NgRx Signal Store
manfredsteyer
PRO
0
140
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
330
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
120
AIのバカさ加減に怒る前にやっておくこと
blueeventhorizon
0
140
One Enishi After Another
snoozer05
PRO
0
170
AkarengaLT vol.38
hashimoto_kei
1
130
三者三様 宣言的UI
kkagurazaka
0
330
Reactive Thinking with Signals and the Resource API
manfredsteyer
PRO
0
120
Featured
See All Featured
Docker and Python
trallard
46
3.6k
4 Signs Your Business is Dying
shpigford
186
22k
For a Future-Friendly Web
brad_frost
180
10k
The Language of Interfaces
destraynor
162
25k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
A Modern Web Designer's Workflow
chriscoyier
697
190k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
GraphQLとの向き合い方2022年版
quramy
49
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
2.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Embracing the Ebb and Flow
colly
88
4.9k
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にて新刊リリースしました