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
400
GR-ROSEでROS/ROS2
lutecia16v
1
1.9k
Jetson NanoとGR-ROSEで始めるROS2
lutecia16v
0
2.3k
がじぇねるねでもROSしたい!
lutecia16v
1
150
GR-ROSE でroombaをコントロールする
lutecia16v
2
420
Other Decks in Programming
See All in Programming
Transactional Change Stream Processing With Debezium and Apache Flink
gunnarmorling
1
150
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
1.9k
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.4k
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
690
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
210
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.2k
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
410
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
300
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
120
初めてのRubyKaigiはこう見えた
jellyfish700
0
390
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.2k
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
110
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
320
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
The untapped power of vector embeddings
frankvandijk
2
1.7k
What's in a price? How to price your products and services
michaelherold
247
13k
So, you think you're a good person
axbom
PRO
2
2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Color Theory Basics | Prateek | Gurzu
gurzu
0
320
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Typedesign – Prime Four
hannesfritz
42
3.1k
Between Models and Reality
mayunak
4
320
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にて新刊リリースしました