$ 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
這個階段當(dāng)中,能夠?qū)⑺邪l(fā)布數(shù)值到ROS的已知方法用在控制伺服機(jī)上。假如從0改成1,伺服機(jī)就會全速運(yùn)行。這本來并沒有問題,但實際上我們想要逐漸加速以達(dá)到全速,然后再逐漸減速,停在目標(biāo)角度上。假如伺服機(jī)驟然運(yùn)轉(zhuǎn),機(jī)器人的動作就會變得僵硬,讓周圍的人嚇一跳。
Terry和Houndbot都是ROS機(jī)器人,以6061個鋁合金零件制造而成。項目的目標(biāo)是要盡量讓這些機(jī)器人自主運(yùn)動。
以下的Python腳本程序會監(jiān)聽「/head/tilt/smooth」的訊息,朝「/head/tilt」發(fā)布許多訊息,好讓伺服機(jī)轉(zhuǎn)到目標(biāo)角度之前慢慢加速,再慢慢延遲旋轉(zhuǎn)。當(dāng)訊息抵達(dá)「/head/tilt/smooth」時一定會呼叫「moveServo_cb」。這個回調(diào)函式會從-90到+90度之間每10度產(chǎn)生1個數(shù)值,追加到角度數(shù)組當(dāng)中?!竤in()」會取這個角度,數(shù)值從-1到+1慢慢增加。該數(shù)值加1之后,范圍就會變成0到+2,再除以2之后, 0到+1的曲線數(shù)值數(shù)組就完成了。然后再看看m數(shù)組當(dāng)中,每當(dāng)發(fā)布訊息時,就會稍微前進(jìn)一點,范圍在r之內(nèi),直到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系統(tǒng)
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
交換機(jī)
SIEMENS
6GK5208-0BA10-2AA3
交換機(jī)
SIEMENS
6GK5204-2BB10-2AA3
交換機(jī)
SIEMENS
6GK5612-0BA10-2AA3
交換機(jī)
SIEMENS
6GK5212-2BB00-2AA3
交換機(jī)
SIEMENS
6GK1503-2CB00
模塊
SIEMENS
6ES7288-1SR60-0AA0
模塊
SIEMENS
6ES7288-2DR32-0AA0
模塊
SIEMENS
6ES7288-2DE16-0AA0
模塊
SIEMENS
6XV1830-0EH10
電纜