Jetbot RCカー&M5stack core2 でモード切替
Jetbot RCカーでM5stack core2 コントローラーのZ軸加速度データを使い
ラインフォローのモード入り切りも実装しました。
JetbotはCore2を傾けた方向に進み、裏返しで自動運転です。
<追伸>Core2が落下しないように輪ゴム追加しました(落ちるとパニックになります)。
動画はこちら。
https://www.youtube.com/watch?v=m27CFoWe25k
import ipywidgets
from socket import *
automode = 0
manualR = 0
manualL = 0
## UDP受信クラス
class udprecv():
def __init__(self):
SrcIP = "192.168.***.***" # 受信元IP
SrcPort = 9000 # 受信元ポート番号
self.SrcAddr = (SrcIP, SrcPort) # アドレスをtupleに格納
self.BUFSIZE = 1024 # バッファサイズ指定
self.udpServSock = socket(AF_INET, SOCK_DGRAM) # ソケット作成
self.udpServSock.bind(self.SrcAddr) # 受信元アドレスでバインド
def recv(self):
global manualR, manualL, automode, a0_slider, a1_slider, a2_slider
while True: # 常に受信待ち
data, addr = self.udpServSock.recvfrom(self.BUFSIZE)
# 受信
#print(data.decode(), addr) # 受信データと送信アドレス表示
a = data.decode().split(',')
#print(float(a[0]), float(a[1]), float(a[2]))
a0_slider.value = float(a[0])
a1_slider.value = float(a[1])
a2_slider.value = float(a[2])
manualR = (float(a[0]) - float(a[1]))*0.4
manualL = (-float(a[0]) - float(a[1]))*0.4
if float(a[2]) < -0.2:
automode = 1 # 裏返しでラインフォローON
else:
automode = 0 # 表向きでラインフォローOFF
a0_slider = ipywidgets.FloatSlider(min=-2.0, max=2.0, step=0.01, value=0.0, description='a[0]')
a1_slider = ipywidgets.FloatSlider(min=-2.0, max=2.0, step=0.01, value=0.0, description='a[1]')
a2_slider = ipywidgets.FloatSlider(min=-2.0, max=2.0, step=0.01, value=0.0, description='a[2]')
display(a0_slider, a1_slider, a2_slider)
def line_follow():
execute({'new': camera.value})
camera.observe(execute, names='value')
import threading
# UDP run
th1 = threading.Thread(target=udp.recv)
th2 = threading.Thread(target=line_follow)
th1.start()
th2.start()
display(a0_slider, a1_slider, a2_slider)
参考
kashi takuさん、つっきーさんありがとうございました。
[Python3] UDP でデータを送受信する方法
https://qiita.com/kashitaku/items/8db929ad6bf3a13e5e68
ESP32でUDP通信やってみた(ESP32インストール手順解説あり)
https://qiita.com/Tsukkey/items/247285c703fbbc6c6cd2
Author And Source
この問題について(Jetbot RCカー&M5stack core2 でモード切替), 我々は、より多くの情報をここで見つけました https://qiita.com/Hirubi/items/cbff66d2c9b356f0e696著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .