$ rostopic list
/diagnostics
1746-NIO4V配件1746-NIO4V配件1746-NIO4V配件
/head/tilt
/rosout
/rosout_agg
$ rostopic pub -1 /head/tiltstd_msgs/Float32 0.4
$ rostopic pub -1 /head/tilt std_msgs/Float320.9
這個階段當中,能夠將所有發布數值到ROS的已知方法用在控制伺服機上。假如從0改成1,伺服機就會全速運行。這本來并沒有問題,但實際上我們想要逐漸加速以達到全速,然后再逐漸減速,停在目標角度上。假如伺服機驟然運轉,機器人的動作就會變得僵硬,讓周圍的人嚇一跳。
Terry和Houndbot都是ROS機器人,以6061個鋁合金零件制造而成。項目的目標是要盡量讓這些機器人自主運動。
以下的Python腳本程序會監聽「/head/tilt/smooth」的訊息,朝「/head/tilt」發布許多訊息,好讓伺服機轉到目標角度之前慢慢加速,再慢慢延遲旋轉。當訊息抵達「/head/tilt/smooth」時一定會呼叫「moveServo_cb」。這個回調函式會從-90到+90度之間每10度產生1個數值,追加到角度數組當中。「sin()」會取這個角度,數值從-1到+1慢慢增加。該數值加1之后,范圍就會變成0到+2,再除以2之后, 0到+1的曲線數值數組就完成了。然后再看看m數組當中,每當發布訊息時,就會稍微前進一點,范圍在r之內,直到1*r或是全范圍為止。
#!/usr/bin/env python
from time im
port sleep
im
port numpy as np
im
port rospy
from std_msgs.msg im
port Float32
currentPosition = 0.5
pub = None
def moveServo_cb(data):
global currentPosition, pub
targetPosition = data.data
r = targetPosition - currentPosition
angles = np.array( (range(190)) [0::10]) -90
m = ( np.sin( angles * np.pi/ 180. ) + 1 )/2
for mi in np.nditer(m):
pos = currentPosition + mi*r
SIEMENS
6SE7024-7TD84-1HF5
主板
SIEMENS
6FC5370-0AA00-2BA0
802DSL系統
SIEMENS
6SL3210-5BE31-8UV0
變頻器
SIEMENS
6FC5303-0DT12-1AA1
按鍵板
Siemens
6AV6 542-0BB15-2AX0
顯示器
SIEMENS
SKM200GAL176D
模塊
SIEMENS
6SE6420-2AB21-1BA1
變頻器
SIEMENS
6SE6420-2AD24-0BA1
變頻器
SIEMENS
6ES7 322-1BL00-0AA0
模塊
SIEMENS
6ES7 321-1BL00-0AA0
模塊
SIEMENS
6ES7 315-2AH14-0AB0
模塊
SIEMENS
6GK5101-1BB00-2AA3
交換機
SIEMENS
6GK5208-0BA10-2AA3
交換機
SIEMENS
6GK5204-2BB10-2AA3
交換機
SIEMENS
6GK5612-0BA10-2AA3
交換機
SIEMENS
6GK5212-2BB00-2AA3
交換機
SIEMENS
6GK1503-2CB00
模塊
SIEMENS
6ES7288-1SR60-0AA0
模塊
SIEMENS
6ES7288-2DR32-0AA0
模塊
SIEMENS
6ES7288-2DE16-0AA0
模塊
SIEMENS
6XV1830-0EH10
電纜