Luận án Hệ thống điều khiển robot tự hành qua mạng trong môi trường công nghiệp
Cuộc cách mạng công nghiệp lần thứ nhất được đánh dấu bằng sự ra đời của
máy hơi nước vào năm 1784 và việc sử dụng năng lượng nước, hơi nước vào
trong cơ giới hóa sản xuất. Cuộc cách mạng công nghiệp lần thứ hai bắt đầu từ
năm 1870 với việc sử dụng năng lượng điện, và sự ra đời của dây chuyền sản
xuất hàng loạt qui mô lớn. Cuộc cách mạng công nghiệp lần thứ ba bắt đầu từ
năm 1969 với sự lan tỏa của việc sử dụng công nghệ điện tử, công nghệ thông
tin để đưa vào tự động hóa sản xuất. Và từ năm 2015, cuộc cách mạng công
nghiệp lần thứ tư (Industry 4.0) đã chính thức bắt đầu. Đặc trưng của Industry
4.0 là sự kết hợp xóa bỏ ranh giới giữa hệ thống sản xuất, quản lí và quản trị với
các yếu tố kỹ thuật cốt lõi là: Trí tuệ nhân tạo (Artificial Intelligence – AI), kết
nối vạn vật (Internet of Thing – IoT), phân tích dữ liệu lớn (Big Data), bảo mật
hệ thống chuỗi (Block Chain). Industry 4.0 tác động vào tất cả các lĩnh vực như:
robot, công nghệ sinh học, y sinh, nông nghiệp, công nghệ nano, in 3D, và robot
tự hành (xe ô tô và robot tự hành).v.v.
Việc tác động của Industry 4.0 đến lĩnh vực robot tự hành sẽ tạo nên một hệ
thống vận chuyển hàng trong nhà xưởng, nhà kho mang tính linh hoạt cao, tạo
điều kiện thuận lợi cho các hoạt động quản lí, quản trị như: Hoạch định quỹ đạo
di chuyển, tối ưu hóa quỹ đạo theo tiêu chí tối thiểu năng lượng tiêu thụ hoặc
thời gian di chuyển nhanh nhất, tránh vật cản, kiểm soát lưu lượng hàng hóa,
đánh giá năng lực sản xuất và luân chuyển hàng hóa. Để hiện thực hóa hệ thống
với các chức năng trên, các robot tự hành có khả năng kết nối với bộ điều khiển
trung tâm từ xa nhằm chia sẻ các thông tin như: vị trí hiện tại, tác vụ hiện hành,
tình trạng hoạt động. Đồng thời chúng cũng có thể kết nối và chia sẻ thông tin
với nhau tạo thành mạng chia sẻ ngang hàng giữa chúng với bộ điều khiển trung
tâm. Với việc triển khai cấu trúc điều khiển qua mạng của hệ thống robot tự
hành, cho phép các nhà quản lí thay đổi thông số động học như vận tốc, quỹ đạo
và tác vụ của robot một cách linh hoạt, nhanh chóng. Tuy nhiên, do hệ thống2
này tập trung nhiều thiết bị với số lượng thông tin chia sẻ lớn, nên sẽ gây tổn
hao băng thông trên đường truyền, điều này phát sinh hai vấn đề: Mất gói dữ
liệu trên đường truyền và thời gian trễ sinh ra trên đường truyền. Việc mất gói
dữ liệu trên đường truyền có thể giải quyết bằng các giao thức truyền với cơ chế
quản lí chất lượng dịch vụ (Quality of Servive – QoS) kiểm soát tổng số gói tin,
yêu cầu gửi bù những gói tin bị thiếu, gửi lại những gói tin bị thiếu. Tuy nhiên,
thời gian trễ sinh ra trên đường truyền ngoài yếu tố băng thông, còn do nguyên
nhân tốc độ đường truyền, cơ chế QoS, và thời gian xử lí của thiết bị đầu cuối.
Mặt khác, thời gian trễ trên đường truyền còn làm giảm chất lượng điều khiển
của hệ thống robot tự hành hoặc thậm chí làm mất tính ổn định của hệ thống. Do
vậy, việc xây dựng hệ thống điều khiển robot tự hành qua mạng trong đó nghiên
cứu giải quyết, khắc phục vấn đề thời gian trễ trên đường truyền nhằm giảm ảnh
hưởng đến chất lượng điều khiển của hệ thống là điều cần thiết mang tính khoa
học và thực tiễn.
Luận án này đặt ra các vấn đề nghiên cứu như sau:
Mục tiêu nghiên cứu: Tìm ra giải pháp dựa trên cơ sở điều khiển, ước lượng
với các thông tin được chia sẻ trong hệ thống điều khiển robot tự hành qua mạng
nhằm giảm ảnh hưởng của yếu tố thời gian trễ đến chất lượng điều khiển của hệ
thống, đảm bảo tính ổn định cho hệ thống hoạt động trong môi trường công
nghiệp với độ tin cậy trong phạm vi cho phép.
Đối tượng nghiên cứu: Hệ thống điều khiển robot tự hành với phương thức
giao tiếp qua mạng không dây (Internet).
Phạm vi nghiên cứu: Luận án đề xuất các bộ điều khiển phát triển dựa trên
mô hình hóa động học và động lực học của robot tự hành đồng thời kết hợp các
thuật toán bám theo quỹ đạo, thích nghi theo hệ thống tham chiếu, kỹ thuật thiết
kế hệ thống đệ quy, nhằm làm giảm ảnh hưởng của thời gian trễ được đánh giá
bằng hiệu suất hoạt động của robot tự hành trên mô phỏng và tạo tiền đề cho
thực nghiệm.3
Giới hạn của luận án: Robot tự hành là một hệ thống phức hợp nhiều bài
toán gồm điều khiển bám theo quỹ đạo, điều khiển bám theo quỹ đạo đảm bảo
yếu tố động lực học, quản lí năng lượng, định vị trong môi trường trong nhà.
Luận án này giới hạn ở việc chỉ xây dựng bộ điều khiển bám theo quỹ đạo trong
sự hiện diện của thời gian trễ và các thông số hệ thống không thể xác định chính
xác.
- Luận án không tập trung phát triển thuật toán xác định vị trí cho robot tự
hành mà sử dụng thuật toán truyền thống dead-reckoning, còn được gọi là
phương pháp odometry.
- Luận án không tập trung phát triển giải thuật hoạch định và tối ưu hóa quỹ
đạo cho robot tự hành
Tóm tắt nội dung tài liệu: Luận án Hệ thống điều khiển robot tự hành qua mạng trong môi trường công nghiệp
BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ CÔNG THƯƠNG
VIỆN NGHIÊN CỨU ĐIỆN TỬ, TIN HỌC, TỰ ĐỘNG HÓA
---***---
NGUYỄN TRỌNG TRUNG
HỆ THỐNG ĐIỀU KHIỂN ROBOT TỰ HÀNH QUA MẠNG
TRONG MÔI TRƯỜNG CÔNG NGHIỆP
CHUYÊN NGÀNH: KỸ THUẬT ĐIỆN TỬ
MÃ SỐ: 9520203
LUẬN ÁN TIẾN SĨ KỸ THUẬT
TP Hồ Chí Minh - 2021
i
LỜI CAM ĐOAN
Tôi xin cam đoan rằng nội dung của luận án này là kết quả nghiên cứu của
riêng tác giả. Tất cả những tham khảo từ các nghiên cứu liên quan đều được nêu
nguồn gốc một cách rõ ràng. Những kết quả nghiên cứu và đóng góp trong luận
án chưa được công bố trong bất kỳ công trình khoa học nào khác.
Tác giả luận án
Nghiên cứu sinh
Nguyễn Trọng Trung
ii
LỜI CẢM ƠN
Tôi xin bày tỏ lòng biết ơn sâu sắc đến hai Thầy hướng dẫn: PGS. TS.
Nguyễn Thanh Phương và TS. Trần Viết Thắng đã tận tình hướng dẫn tôi thực
hiện các công trình nghiên cứu và hoàn thành luận án này.
Tôi xin chân thành cảm ơn các Thầy, Cô, Cán bộ, Nhân viên của Viện
Nghiên cứu Điện tử, Tin học, Tự động hóa và Phân Viện Nghiên cứu Điện tử,
Tin học, Tự động hóa TP.HCM đã nhiệt tình giúp đỡ, tạo điều kiện thuận lợi cho
tôi trong suốt thời gian học tập và nghiên cứu.
Cuối cùng, xin bày tỏ lòng biết ơn chân thành đến Gia đình của tôi, những
người thân đã chia sẻ mọi khó khăn, luôn động viên tôi vượt qua khó khăn để
hoàn thành tốt luận án này.
iii
MỤC LỤCS
LỜI CAM ĐOAN ................................................................................................... i
LỜI CẢM ƠN ....................................................................................................... ii
MỤC LỤC ............................................................................................................ iii
DANH MỤC CÁC TỪ VIẾT TẮT ..................................................................... vi
DANH MỤC CÁC ĐƠN VỊ ĐO LƯỜNG ........................................................ viii
DANH MỤC HÌNH VẼ ....................................................................................... ix
DANH MỤC BẢNG BIỂU ............................................................................... xii
DANH MỤC KÍ HIỆU ...................................................................................... xiii
MỞ ĐẦU ............................................................................................................... 1
CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG ĐIỀU KHIỂN ROBOT TỰ
HÀNH QUA MẠNG ............................................................................................ 6
1.1. Giới thiệu về hệ thống vật lí ảo cho hệ thống kho vận nội bộ trong môi
trường công nghiệp ....................................................................................... 6
1.2. Giới thiệu về hệ thống điều khiển qua mạng cho robot tự hành ................. 13
1.2.1. Giới thiệu chung.............................................................................. 13
1.2.2. Hệ thống điều khiển robot tự hành qua mạng ................................. 20
1.3. Các vấn đề cần giải quyết ........................................................................... 25
1.4. Tình hình nghiên cứu .................................................................................. 30
1.4.1. Về hệ thống có thời gian trễ ............................................................ 30
1.4.2. Về điều khiển robot tự hành có thời gian trễ .................................. 36
1.5. Kết luận ....................................................................................................... 41
CHƯƠNG 2: XÂY DỰNG MÔ HÌNH HÓA ROBOT TỰ HÀNH TRONG SỰ
ẢNH HƯỞNG CỦA THỜI GIAN TRỄ ............................................................. 43
2.1. Mô tả hệ thống ............................................................................................ 43
2.2. Mô hình động học của robot tự hành .......................................................... 46
2.3. Mô hình động lực học của robot tự hành .................................................... 47
2.4. Mô hình hóa thời gian trễ ............................................................................ 53
iv
2.5. Kết luận chương 2 ....................................................................................... 57
CHƯƠNG 3: THIẾT KẾ BỘ ĐIỀU KHIỂN BÁM THEO QUỸ ĐẠO MONG
MUỐN CHO ROBOT TỰ HÀNH VỚI TÍN HIỆU TRỄ ĐẦU VÀO .............. 59
3.1. Thuật toán bám theo quỹ đạo mong muốn .................................................. 60
3.2. Hệ thống tham chiếu của mô hình ổn định ................................................. 65
3.3. Bộ điều khiển thích nghi theo hệ thống tham chiếu cho hệ thống một ngõ
vào – một ngõ ra. ......................................................................................... 71
3.4. Bộ điều khiển thích nghi theo hệ thống tham chiếu cho robot tự hành ...... 83
3.5. Kết luận chương 3 ....................................................................................... 92
CHƯƠNG 4: KẾT QUẢ .................................................................................. 94
4.1. Cấu trúc hệ thống ........................................................................................ 94
4.1.1. Cấu hình điều khiển qua mạng ....................................................... 94
4.1.2. Cấu trúc robot tự hành .................................................................... 95
4.1.3. Cấu trúc trao đổi dữ liệu qua mạng................................................. 97
4.2. Thiết lập mô phỏng ................................................................................... 100
4.3. Kết quả mô phỏng trên Matlab ................................................................. 103
4.3.1. Trường hợp 1 – Không có thời gian trễ ........................................ 103
4.3.2. Trường hợp 2 – Thời gian trễ 0.01 giây ....................................... 108
4.3.3. Trường hợp 3 – Thời gian trễ 0.05 giây ....................................... 112
4.3.4. Trường hợp 4 – Thời gian trễ 0.1 giây.......................................... 115
4.4. Thực nghiệm xác định thời gian trễ .......................................................... 120
4.5. Kết quả thực nghiệm điều khiển robot tự hành ảo qua mạng ................... 124
4.6. Kết luận chương 4 ..................................................................................... 130
Kết luận ............................................................................................................. 133
CÔNG TRÌNH CÔNG BỐ TẠP CHÍ ............................................................... 137
CÔNG TRÌNH CÔNG BỐ HỘI NGHỊ ............................................................ 138
TÀI LIỆU THAM KHẢO ................................................................................. 139
PHỤ LỤC .......................................................................................................... 152
A.1 Chương trình mô phỏng hệ thống tham chiếu .......................................... 152
v
A.2 Chương trình mô phỏng bộ điều khiển thích nghi theo hệ thống tham chiếu
cho hệ thống một ngõ vào – một ngõ ra. ................................................... 154
A.3 Chương trình mô phỏng bộ điều khiển thích nghi theo hệ thống tham chiếu
cho robot tự hành – Trường hợp không có thời gian trễ ........................... 160
A.4 Chương trình mô phỏng bộ điều khiển thích nghi theo hệ thống tham chiếu
cho robot tự hành – Trường hợp thời gian trễ 10ms ................................. 170
A.5 Chương trình mô phỏng bộ điều khiển thích nghi theo hệ thống tham chiếu
cho robot tự hành – Trường hợp thời gian trễ 50ms ................................. 180
A.6 Chương trình mô phỏng bộ điều khiển thích nghi theo hệ thống tham chiếu
cho robot tự hành – Trường hợp thời gian trễ 100ms ............................... 189
A.7 Chương trình phần mềm đo thời gian trễ ở tầng mạng ............................. 199
A.8 Chương trình phần mềm đo thời gian trễ ở tầng ứng dụng – Thành phần
nguồn ......................................................................................................... 201
A.9 Chương trình phần mềm đo thời gian trễ ở tầng ứng dụng – Thành phần
đích ............................................................................................................ 205
A.10 Chương trình phần mềm mô phỏng động học/động lực học của robot tự
hành ........................................................................................................... 208
A.11 Chương trình phần mềm điều khiển và giao diện của bộ điều khiển trung
tâm ............................................................................................................. 211
vi
DANH MỤC CÁC TỪ VIẾT TẮT
AC Alternative current Dòng điện xoay chiều
ACK Acknowledgement Hồi đáp
AGV Automated guided vehicle Phương tiện tự hành
CAN Controlled Area Network Mạng điều khiển nội bộ
CSMA/CD Carrier Sense Multiple Access
/ Collision Detection
DC Direct current Dòng điện một chiều
DCS Distributed control system Hệ thống điều khiển phân tán
FTP File Transfer Protocol Giao thức truyền tải tập tin
HMI Human machine interface Giao diện người - máy
HTTP Hypertext Transfer Protocol Giao thức truyền tải siêu văn bản
HTTPS Hypertext Transfer Protocol
Secure
Giao thức truyền tải siêu văn bản
bảo mật
ID Identifier Mã định danh
IMU Inertia measurement unit Thiết bị đo lường quán tính
IP Internet protocol Giao thức mạng
LAN Local Area Network Mạng giao tiếp nội bộ
LQR Linear Quadratic Regulator
MIMO Multi input multi output Hệ thống nhiều ngõ vào nhiều ngõ
ra
MRAC Model reference adaptive
control
Bộ điều khiển thích nghi theo mô
hình tham chiếu chuẩn
MQTT Message Queuing Telemetry
Transport
Giao thức truyền thông điệp theo mô
hình cung cấp/thuê bao
NCS Networked control system Hệ thống điều khiển qua mạng
truyền thông
NTP Network Time Protocol
PC Personal computer Máy tính
PI Proportional – Integral Bộ điều khiển tỉ lệ - tích phân
PID Proportional – Integral –
Derivative
Bộ điều khiển tỉ lệ - tích phân – vi
phân
PLC Programmable logic control Bộ điều khiển khả trình
PWM Pulse Width modulation Phương pháp điều chế độ rộng xung
SISO Single input single output Hệ thống một ngõ vào một ngõ ra
SYN Synchronous Đồng bộ
RTS Request to send Yêu cầu để gửi
RTT Round trip time Thời gian lặp vòng
TCP Transmission Control
vii
Protocol
UART Universal asynchronous
receiver transmitter
UDP User Datagram Protocol Giao thức dữ liệu người dùng
UWB Ultra-wideband Công nghệ radio băng thông siêu
rộng
WIFI Wireless fidelity Tín hiệu truyền không dây
viii
DANH MỤC CÁC ĐƠN VỊ ĐO LƯỜNG
Khối lượng kilogram kg
Chiều dài meter, millimeter m, mm
Thời gian second, millisecond s, ms
Vận tốc meter per second, round per minute m/s, rpm
Tốc độ truyền bit per second bps
Công suất Watt W
Độ phân giải pulse per ... ]])*sampling_time
else:
xi = xi_vector[:,[-2,-1]] - (varsigma + varsigma_dot) *
sampling_time
xi_vector = np.append(xi_vector, xi, axis=1)
#Control input
u = np.dot(Theta_vector[:,[-2,-1]].T,Zc)
u_vector = np.append(u_vector,u,axis=1)
#Calculate Delta_u
if (len(u_vector)-2-p) >= 0:
delta_u = u_vector[:,[-1]] - u_vector[:,[-2-p]]
else:
delta_u = u_vector[:,[-1]]
delta_u_vector = np.append(delta_u_vector,delta_u, axis=1)
#-----------------------------------------------------------
txt_time_total.set(t_time_vector[-1])
xs.append(xc)
ys.append(yc)
#Send to Broker
client.publish("ncsntt/command_v_a_l", u.item(0))
client.publish("ncsntt/command_v_a_r", u.item(1))
if start_flag == 1:
threading.Timer(sampling_time, controller).start()
def Start_button():
global start_flag
start_flag = 1
controller()
216
def Stop_button():
global start_flag, t_time_vector, z_m_vector, z_d_vector
start_flag = 0
client.disconnect()
plt.figure(2)
plt.plot(t_time_vector, z_m_vector[0,:], '-b',label='z_m(1)')
plt.plot(t_time_vector, z_d_vector[0,:], '--r', label='z_d(1)')
plt.plot(t_time_vector, z_vector[0, :], '-.k', label='z_d(1)')
plt.xlabel('Thời gian (s)')
plt.ylabel('Đáp ứng động lực học')
plt.grid(color='k', linestyle='--', linewidth=1)
plt.legend(framealpha=1, frameon=True)
plt.figure(3)
plt.plot(t_time_vector, z_m_vector[1,:], '-b',label='z_m(2)')
plt.plot(t_time_vector, z_d_vector[1,:], '--r', label='z_d(2)')
plt.plot(t_time_vector, z_vector[1, :], '-.k', label='z_d(2)')
plt.xlabel('Thời gian (giây)')
plt.ylabel('Đáp ứng động lực học')
plt.grid(color='k', linestyle='--', linewidth=1)
plt.legend(framealpha=1, frameon=True)
plt.figure(4)
plt.plot(t_time_vector, xc_vector, '-b',label='x_c')
plt.plot(t_time_vector, xr_vector, '--r', label='x_r')
plt.xlabel('Thời gian (giây)')
plt.ylabel('Vị trí theo phương X')
plt.grid(color='k', linestyle='--', linewidth=1)
plt.legend(framealpha=1, frameon=True)
plt.figure(5)
plt.plot(t_time_vector, yc_vector, '-b',label='y_c')
plt.plot(t_time_vector, yr_vector, '--r', label='y_r')
plt.xlabel('Thời gian (giây)')
plt.ylabel('Vị trí theo phương Y')
plt.grid(color='k', linestyle='--', linewidth=1)
plt.legend(framealpha=1, frameon=True)
plt.figure(6)
plt.plot(t_time_vector, u_vector[0,:], '-b',label='u(1)')
plt.plot(t_time_vector, u_vector[1,:], '--r', label='u(2)')
plt.xlabel('Thời gian (giây)')
plt.ylabel('Tín hiệu điều khiển')
plt.grid(color='k', linestyle='--', linewidth=1)
plt.legend(framealpha=1, frameon=True)
plt.show()
def update(i):
line.set_data(xs,ys)
return line,
def MQTT_connect():
global controller_start, xc, yc, theta
if controller_start == 0:
broker_address = txt_brokeraddress.get()
broker_port = int(txt_port.get())
Output.insert(END, "connecting to broker\n")
client.connect(broker_address, port=broker_port, keepalive=60)
Output.insert(END, "Subscribing to ncsntt/xc\n")
client.subscribe("ncsntt/xc")
Output.insert(END, "Subscribing to ncsntt/yc\n")
217
client.subscribe("ncsntt/yc")
Output.insert(END, "Subscribing to ncsntt/theta\n")
client.subscribe("ncsntt/theta")
Output.insert(END, "Subscribing to ncsntt/v\n")
client.subscribe("ncsntt/v")
Output.insert(END, "Subscribing to ncsntt/omega\n")
client.subscribe("ncsntt/omega")
pb_connect.config(text="Connecting...")
controller_start = 1
else:
controller_start = 0
pb_connect.config(text="Connect")
Output.delete(1.0, END)
client.disconnect()
client.loop_start()
# ===================================================#
def on_message(client, userdata, message):
global count, controller_start, xc, yc, theta, xs, ys, v, omega
msg = str(message.payload)
Input_txt.insert(END, message.topic + " = " + msg + "\n")
value = float(message.payload)
if message.topic == "ncsntt/xc":
xc = round(value, 3)
txt_xc.set(xc)
if message.topic == "ncsntt/yc":
yc = round(value, 3)
txt_yc.set(yc)
if message.topic == "ncsntt/theta":
theta = round(value, 3)
txt_theta.set(theta)
if message.topic == "ncsntt/v":
v = round(value, 3)
txt_v.set(v)
if message.topic == "ncsntt/omega":
omega = round(value, 3)
txt_omega.set(omega)
xs.append(xc)
ys.append(yc)
#==========================================================================
=============================================
window = Tk()
window.geometry('1000x700')
window.configure(bg='white')
window.title('Central Controller @N. T. Trung - Source')
window.resizable(0, 0)
topFrame = Frame(window, width=200, height=800, background="white")
topFrame.grid(row=0, column=0, sticky="NSEW")
bottomFrame = Frame(window, width=1000, height=800, background="white")
bottomFrame.grid(row=0, column=1, sticky="NSEW")
# ROW 0
===========================================================================
=====================================
218
Label(topFrame, text="Broker Address",font = ('Times', 12),
bg='white').grid(row=0, column=0, sticky="W")
#
txt_brokeraddress = StringVar()
et_brokeraddress = Entry(topFrame, textvariable=txt_brokeraddress, font =
('Times', 12), width=20)
et_brokeraddress.grid(row=0, column=1, sticky="NSEW", columnspan=2)
et_brokeraddress.insert(0, "broker.mqttdashboard.com")
# ROW 1
===========================================================================
=====================================
Label(topFrame, text="Port",font = ('Times', 12), bg='white').grid(row=1,
column=0, sticky="W")
#
txt_port = StringVar()
et_port = Entry(topFrame, textvariable=txt_port, font = ('Times', 12),
width=10)
et_port.insert(0, "1883")
et_port.grid(row=1, column=1, sticky="NSEW")
#
pb_connect = Button(topFrame, text='Connect',font = ('Times', 12),
command=MQTT_connect, width=10)
pb_connect.grid(row=1, column=2, sticky="NSEW")
# ROW 2
===========================================================================
=====================================
Output = Text(topFrame, font = ('Times', 12), bg="white", width=30,
height=5)
Output.grid(row=2, column=0, columnspan=3, sticky="NSEW")
# ROW 3
===========================================================================
=====================================
Input_txt = Text(topFrame, font = ('Times', 12), bg="white", width=30,
height=5)
Input_txt.grid(row=3, column=0, columnspan=3, sticky="NSEW")
# ROW 4
===========================================================================
=====================================
pb_start = Button(topFrame, text='Start',font = ('Times', 12),
command=Start_button, width=10)
pb_start.grid(row=4, column=0, sticky="NSEW")
#
pb_stop = Button(topFrame, text='Stop',font = ('Times', 12),
command=Stop_button, width=10)
pb_stop.grid(row=4, column=1, sticky="NSEW")
# ROW 5
===========================================================================
=====================================
Label(topFrame, text="xc (m)", font = ('Times', 12),
bg='white').grid(row=5, column=0, sticky=W)
txt_xc = StringVar()
Entry(topFrame, textvariable=txt_xc, font = ('Times', 12), bg='white',
width=15).grid(row=5, column=1, columnspan=1, sticky=W)
# ROW 6
===========================================================================
=====================================
Label(topFrame, text="yc (m)", font = ('Times', 12),
bg='white').grid(row=6, column=0, sticky=W)
txt_yc = StringVar()
Entry(topFrame, textvariable=txt_yc, font = ('Times', 12), bg='white',
219
width=15).grid(row=6, column=1, columnspan=1, sticky=W)
# ROW 7
===========================================================================
=====================================
Label(topFrame, text="Theta (rad)", font = ('Times', 12),
bg='white').grid(row=7, column=0, sticky=W)
txt_theta = StringVar()
Entry(topFrame, textvariable=txt_theta, font = ('Times', 12), bg='white',
width=15).grid(row=7, column=1, columnspan=1, sticky=W)
# ROW 8
===========================================================================
=====================================
Label(topFrame, text="v (m/s)", font = ('Times', 12),
bg='white').grid(row=8, column=0, sticky=W)
txt_v = StringVar()
Entry(topFrame, textvariable=txt_v, font = ('Times', 12), bg='white',
width=15).grid(row=8, column=1, columnspan=1, sticky=W)
# ROW 9
===========================================================================
=====================================
Label(topFrame, text="omega (rad/s)", font = ('Times', 12),
bg='white').grid(row=9, column=0, sticky=W)
txt_omega = StringVar()
Entry(topFrame, textvariable=txt_omega, font = ('Times', 12), bg='white',
width=15).grid(row=9, column=1, columnspan=1, sticky=W)
# ROW 10
===========================================================================
=====================================
Label(topFrame, text="Time delay (s)", font = ('Times', 12),
bg='white').grid(row=10, column=0, sticky=W)
txt_time_delay = StringVar()
time_delay = Entry(topFrame, textvariable=txt_time_delay, font = ('Times',
12), bg='white', width=15)
time_delay.insert(0,"1")
time_delay.grid(row=10, column=1, columnspan=1, sticky=W)
# ROW 11
===========================================================================
=====================================
Label(topFrame, text="Sampling (s)", font = ('Times', 12),
bg='white').grid(row=11, column=0, sticky=W)
txt_sampling = StringVar()
sampling = Entry(topFrame, textvariable=txt_sampling, font = ('Times', 12),
bg='white', width=15)
sampling.insert(0,"0.1")
sampling.grid(row=11, column=1, columnspan=1, sticky=W)
# ROW 12
===========================================================================
=====================================
Label(topFrame, text="Time total (s)", font = ('Times', 12),
bg='white').grid(row=12, column=0, sticky=W)
txt_time_total = StringVar()
Entry(topFrame, textvariable=txt_time_total, font = ('Times', 12),
bg='white', width=15).grid(row=12, column=1, columnspan=1, sticky=W)
#==========================================================================
============================================
Output.insert(END, "creating new instance\n")
client = mqtt.Client() # create new instance
client.on_message = on_message # attach function to callback
fig = plt.figure(figsize=[7, 7])
220
ax = plt.axes(xlim=(-2, 2), ylim=(-2, 2))
plt.xlabel('X (m)')
plt.ylabel('Y (m)')
plt.grid(color ='k', linestyle='--', linewidth = 1)
line, = ax.plot(xs, ys, 'b,-')
# Set up plot to call animate() function periodically
graph = FigureCanvasTkAgg(fig, master=bottomFrame)
graph.get_tk_widget().grid()
graph.draw()
ani = animation.FuncAnimation(fig, update, interval=1, blit=True)
window.mainloop()
File đính kèm:
luan_an_he_thong_dieu_khien_robot_tu_hanh_qua_mang_trong_moi.pdf
Cac cong trinh cong bo Nguyễn Trọng Trung.pdf
NCS Nguyen Trong Trung - Nhung luan diem moi.pdf
Tom tat luan an Nguyễn Trọng Trung.pdf

