Мы хотим управлять роботом P3DX, используя значения, полученные от потенциометра, подключенного к выводу GPIO на Raspberry pi 2. В настоящее время у нас есть два файла Python: один, который перемещает робота, и другой, который считывает вывод GPIO, подключенный к потенциометру. Оба файла уже работают самостоятельно. Но можно ли объединить два файла в один и запустить его? Потому что я думал, что файл Python, взаимодействующий с ROS, нужно будет запускать отдельно. Если нет, то как проще всего реализовать то, что мы хотим сделать?
*** Обновление: по сути, мы пытаемся использовать цепной метод для перемещения двух роботов в строю. Итак, мы хотим измерить угол, который потенциометр образует с веревкой, другой конец которой прикреплен к другому роботу. В зависимости от угла он определяет ориентацию робота, а затем мы можем внести соответствующие корректировки, чтобы выровнять робота по центральной линии, чтобы робот следовал за первым роботом впереди.
Мы прошли по этой ссылке, чтобы узнать, как подключить потенциометр к 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 Не обращайте внимания на объемные вещи, мы их не включали. Просто читаю горшок.