我們想要使用從連接到Raspberry pi 2上的GPIO引腳的電位計獲得的值控制P3DX機器人。目前,我們有兩個Python文件:一個移動機器人,讀取連接電位器的GPIO引腳。這兩個文件已經在自己的工作。但是有可能將這兩個文件合併成一個文件並運行它?因爲我在考慮與ROS連接的Python文件需要單獨運行。如果不是,實現我們想要做的最簡單的方法是什麼?在Raspberry Pi 2型號B上使用GPIO引腳來控制運行ROS的P3DX機器人
***更新: 本質上,我們試圖使用懸鏈線方法來移動兩個機器人。所以我們要測量電位器用繩子的角度,其中另一端連接到另一個機器人。根據角度給出機器人的方向,然後我們可以進行適當的調整,將機器人重新對準中心線,以便機器人跟隨前面的第一個機器人。
我們按照此鏈接瞭解如何將電位計連接到Raspberry Pi 2並讀取數值。它還包括腳本文件: https://learn.adafruit.com/downloads/pdf/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi.pdf
下面是移動P3DX文件:`
#!/usr/bin/env python
import getch
import roslib; roslib.load_manifest('p3dx_mover')
import rospy
from geometry_msgs.msg import Twist
KEY_UP = 65
KEY_DOWN = 66
KEY_RIGHT = 67
KEY_LEFT = 68
USER_QUIT = 100
MAX_FORWARD = 1.1
MAX_LEFT = 0.3
MIN_FORWARD = -1.1
MIN_LEFT = -0.3
forward = 0.0
left = 0.0
keyPress = 0
while(keyPress != USER_QUIT):
pub = rospy.Publisher('RosAria/cmd_vel', Twist)
rospy.init_node('p3dx_mover')
twist = Twist()
keyPress = getch.getArrow()
if((keyPress == KEY_UP) and (forward <= MAX_FORWARD)):
forward += 0.1
elif((keyPress == KEY_DOWN) and (forward >= MIN_FORWARD)):
forward -= 0.1
elif((keyPress == KEY_LEFT) and (left <= MAX_LEFT)):
left += 0.1
elif((keyPress == KEY_RIGHT) and (left >= MIN_LEFT)):
left -= 0.1
twist.linear.x = forward
twist.angular.z = left
pub.publish(twist)
pub = rospy.Publisher('RosAria/cmd_vel', Twist)
rospy.init_node('p3dx_mover')
twist = Twist()
pub.publish(twist)
exit()
` 下面是我們用於讀取電位器的電壓電平值的鏈接: https://gist.github.com/ladyada/3151375 忽略體積東西,我們沒有包括他們。只是讀鍋。
歡迎來到Stack Overflow!歡迎來到Stackoverflow!您能否詳細說明您的問題,比如代碼或其他事情,以便人們能夠儘早解決問題並幫助您?謝謝! – manetsus
1)請顯示你的代碼(或者你正在做的一個簡單的例子)。否則,這太寬泛了。 然而,真正的問題歸結於此 - 你是否需要這兩種操作連續發生,獨立於彼此?無論哪種方式,您都可以將其組合成一個程序/文件。但是,如果您需要它們獨立運行而不會阻塞彼此,我們可能需要一些多處理! – Will
*「讀取連接到電位計的GPIO引腳的讀數」*如果Raspi沒有內置模數轉換器(ADC),您如何讀取電位計?外部ADC?窮人的ADC(電容+電阻)?還有別的嗎? – jDo