$ rostopic pub -1 /head/tilt std_msgs/Float320.9
這個階段當中,能夠將所有發布數值到ROS的已知方法用在控制伺服機上。假如從0改成1,伺服機就會全速運行。這本來并沒有問題,但實際上我們想要逐漸加速以達到全速,然后再逐漸減速,停在目標角度上。假如伺服機驟然運轉,機器人的動作就會變得僵硬,讓周圍的人嚇一跳。IC600PM504RR常規IC600PM504RR常規IC600PM504RR常規

Terry和Houndbot都是ROS機器人,以6061個鋁合金零件制造而成。項目的目標是要盡量讓這些機器人自主運動。
以下的Python腳本程序會監聽「/head/tilt/smooth」的訊息,朝「/head/tilt」發布許多訊息,好讓伺服機轉到目標角度之前慢慢加速,再慢慢延遲旋轉。當訊息抵達「/head/tilt/smooth」時一定會呼叫「moveServo_cb」。這個回調函式會從-90到 90度之間每10度產生1個數值,追加到角度數組當中?!竤in()」會取這個角度,數值從-1到 1慢慢增加。該數值加1之后,范圍就會變成0到 2,再除以2之后, 0到 1的曲線數值數組就完成了。然后再看看m數組當中,每當發布訊息時,就會稍微前進一點,范圍在r之內,直到1*r或是全范圍為止。
#!/usr/bin/env python
from time import sleep
import numpy as np
import rospy
from std_msgs.msg import 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
print “pos: “, pos
pub.publish(pos)
sleep(0.05)
currentPosition = targetPosition
print “pos-e: “, currentPosition
pub.publish(currentPosition)
def listener():
SIEMENS6ES7323-1BH01-OAAO
SIEMENS6ES7331-7KF02-0AB0模塊
品牌型號品名
SIEMENS6ES7322-1BL00-0AA0模塊
SIEMENS6ES331-7KF02-0AB0模塊
siemens6ES7317-2EK13-0AB0模塊
siemens6ES7407-0DA02-0AA0模塊
siemens6ES7407-0DA02-0AA0模塊
siemens6ES7216-2BD23-OXBO模塊
SIEMENS6ES7214-2AD23-0XB0模塊
SIEMENS6ES7 953-8LJ30-0AA0儲存卡
SIEMENS6ES7 132-4BF00-0AA0模塊
SIEMENS6ES7 350-1AH03-0AE0模塊
SIEMENS6ES7 138-4CA01-0AA0模塊
SIEMENS6ES7 151-1AA05-0AB0模塊
siemens6ES7151-1AA05-0AB0模塊
siemens6AV6 642-OBC01-1-1AX1觸摸屏
siemens6ES7153-1AA03-0XB0模塊
siemens6ES7952-0KH00-0AA0存儲卡
SIEMENS6ES7 138-4CA01-0AA0模塊
siemens6AV6643-0AA01-1AX0觸摸屏
siemens6ES7414-2XG03-0AB0模塊
SIEMENS6ES7322-1HH01-0AA0模塊
SIEMENS6ES7153-1AA03-0XB0模塊
SIEMENS6ES7414-2XK05-0ABO模塊
SIEMENS6ES7972-0BA41-0XA0連接器
SIEMENS6ES7322-1HH00-0AA0模塊
SIEMENS6ES7131-4BD01-0AA0模塊
SIEMENS6ES7235-0KD22-0XA8模塊
SIEMENS6EP1 334-3BAOO電源
SIEMENS3SB3000-1BA20開關