北郵智能車仿真培訓(五)—— 數據可視化工具的使用

前言

上一節:北郵智能車仿真培訓(四)—— 仿真原理詳解
這一節講解下ros的畫圖工具的使用,可以很直觀的觀察我們的數據,也可以很方便的調試我們的代碼。這一套ros的教程對於想參加ROS室外光電創意組的小夥伴也可以起到一個入門的作用,不過真心想參加室外光電創意組的建議看一下我博客裏的ros編程實踐那些文章,多嘗試幾個開源的ros平臺會有更深刻的理解。

rqt_plot使用介紹

這裏先用一個簡單的例子說明這個工具的使用,然後再結合我們之前的巡線腳本使用。
在我們的buptsmartcat程序包下創建新的腳本:

cd ~/smartcar_ws/src/buptsmartcar/src
gedit sine_wave.py

sine_wave.py:

#!/usr/bin/env python
# coding=utf-8
import math, time
import rospy
from std_msgs.msg import Float64

rospy.init_node('sine_wave')#初始化節點
pub = rospy.Publisher('sin', Float64,queue_size = 1)#發佈sin話題,消息類型是Float64
while not rospy.is_shutdown():#一直髮布
  msg = Float64()#創建Float64對象
  msg.data = math.sin(4*time.time())#對象的數據
  pub.publish(msg)#發佈消息
  time.sleep(0.1)

給腳本賦予可執行權限:

chmod 777 *

在一個終端啓動ros服務:

roscore

使用ros的工具都需要啓動ros的服務,我們之前用roslaunch之所以沒啓動roscore是因爲執行roslaunch時內部會執行roscore
執行腳本:

cd ~/smartcar_ws/src/buptsmartcar/src
python sine_wave.py

打開另一個終端,使用rqt_plot函數可視化數據:

rqt_plot /sin/data

在這裏插入圖片描述
工具欄還有很多工具我們可以自己嘗試下怎麼使用。
!!!有同學用虛擬機執行rqt_plot命令顯示不了波形,原因是虛擬機界面大小有限,ros的rqt界面會根據窗口大小自動伸縮,所以將波形圖區域隱藏了,這裏只要點開放大窗口就行了,如圖:
在這裏插入圖片描述

修改我們的巡線腳本,可視化調試參數

cd ~/smartcar_ws/src/buptsmartcar/src
gedit findLine.py

將這一段加在如下圖中位置:

      msg = Float64()
      msg.data = err
      self.err_pub.publish(msg)

在這裏插入圖片描述
將這一段加在如下圖中位置:

    self.err_pub = rospy.Publisher('err',
                                       Float64, queue_size=1) 

在這裏插入圖片描述
將這一段加在如下圖中位置:

from std_msgs.msg import Float64

在這裏插入圖片描述
這裏我們發佈的數據的話題是err,數據是/data,他的值是我們的偏差,也就是當前跑道的中心和我們圖片的中心的偏差
啓動gazebo模型

roslaunch smartcar_description smartcar_display_gazebo3.launch

執行巡線腳本,記得先把地圖拖進去

rosrun buptsmartcar findLine.py

這裏用rosrun可以不用到findLine.py文件夾中用Python命令來執行腳本,ros自動會幫你查找腳本位置
啓動數據監視:

rqt_plot /err/data

Tips:
這裏如果想查看多個數據可以這樣使用:rqt_plot /err/data /sin/data ...
在這裏插入圖片描述

這裏我們可以看到誤差在0的上下起伏,這裏我們修改PID參數中的P可以一定程度的減小這種起伏,但是如果P太小可能會導致在過急彎的時候車子因爲轉向太小而衝出跑道,所以當p的參數差不多的時候需要加PID中的D來消抖動。這裏提一句吧,如果你發現你的PID參數不能很好的適應所有的情況,你可能會需要動態的來改變PID的參數,可以分幾種情況,比如急彎時我們的P參數取一個較大的數,近乎直道時取一個較小的數等等。

結束

下一節:北郵智能車仿真培訓(六)—— 修改模型參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章