哇靠靠,这也行?零基础DIY无人驾驶小车(三)
原理:
之前在教程(一)中我們討論了制作無人駕駛小車的方案,結論是當小車采集到圖片之后,通過網絡傳給筆記本,然后筆記本通過深度學習推理,得出結果,反饋給小車。但是目前通過一些優秀的開源庫,將cnn網絡優化之后在手機或者樹莓派這樣的終端上面也有比較好的效果。所以這里真正開始實踐的時候,我采用了樹莓派的方式,摒棄了筆記本,直接通過樹莓派進行圖片的采集和深度學習推理,并實時的控制小車的運動。這樣的話極大的擴展了無人駕駛小車的便攜性。那么重新梳理一下我們無人駕駛小車的原理。
第一步:搭建一個帶有攝像頭功能的小車
第二步:使用手機或者電腦等進行手動遙控,在手動遙控的過程中,小車自動保存圖像和指令
第三步:將小車保存的大量圖像和指令導出到電腦上,使用深度學習網絡進行訓練
第四步:將訓練好的深度學習網絡導出到小車上,小車就可以實現無人駕駛了
?
小車搭建:
這里使用最普通的四驅亞克力小車底盤 樹莓派3B+ 云臺? 攝像頭 電壓轉換板 鋰電池組裝一輛小車。如下圖所示:
?
編寫代碼:
首先需要編寫小車端的代碼(樹莓派3B+上的程序)以及電腦端的控制程序
以上程序會開源上傳到GITHUB上面。隨后會貼出鏈接。
下面介紹一下程序的主題邏輯
RaspberryCar(小車端程序)
from socket import *
from tcp_package import TcpPackage
from car_control import *
HOST = '' #監聽地址
PORT = 60000 #監聽端口
ADDRESS = (HOST, PORT)?
def recv_data(socket):
? ? data = socket.recv(8)
? ? if data:
? ? ? ? package_recv = TcpPackage(data)
? ? ? ? cmd, value = package_recv.get_package()
? ? ? ? return cmd, value
? ? else:
? ? ? ? return None, None
? ? ? ??
def send_data(socket, cmd, value):
? ? package_send = TcpPackage()
? ? package_send.add_package(cmd, value)
? ? socket.send(package_send.package)
if __name__ == "__main__":
? ? car_init()
? ? print("car init.")
? ??
? ? tcp_server_socket = socket(AF_INET, SOCK_STREAM)
? ? tcp_server_socket.bind(ADDRESS)
? ? tcp_server_socket.listen(1)
? ? print("start server...")
? ? try:
? ? ? ? while True:
? ? ? ? ? ? print('waitint for client...')
? ? ? ? ? ? client_socket, client_address = tcp_server_socket.accept()
? ? ? ? ? ? try:
? ? ? ? ? ? ? ? while True:
? ? ? ? ? ? ? ? ? ? cmd, value = recv_data(client_socket)
? ? ? ? ? ? ? ? ? ? print("recv cmd:%d value:%d"%(cmd, value))
? ? ? ? ? ? ? ? ? ? if cmd <= 4:
? ? ? ? ? ? ? ? ? ? ? ? car_moving(cmd, value)
? ? ? ? ? ? ? ? ? ? ? ? send_data(client_socket, cmd, value)
? ? ? ? ? ? ? ? ? ? ? ? pass
? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? pass
? ? ? ? ? ? finally:
? ? ? ? ? ? ? ? client_socket.close()
? ? finally:
? ? ? ? tcp_server_socket.close()
? ? ? ? car_uninit()
效果展示:
手動控制小車
?
?
總結
以上是生活随笔為你收集整理的哇靠靠,这也行?零基础DIY无人驾驶小车(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乘联会秘书长崔东树:2022 年中国占世
- 下一篇: 轻量级网络之mobilenet_v1