Здравствуйте, я работаю над проектом для школы.Я использую Sense Hat на Raspberry pi 3 B для отображения пикселей на светодиодной матрице и IMU для получения данных рыскания.Но проблема в том, что я пытаюсь запустить IMU, когда Ubuntu Mate запускается (при загрузке) в ROS (http://www.ros.org/).). Поэтому я создал сервис, который запускает скрипт python при загрузке с помощью robot_upstart (http://docs.ros.org/jade/api/robot_upstart/html/). НоЯ получаю сообщение об ошибке от службы:
#!/usr/bin/env python
import rospy
from sense_hat import SenseHat
import time
from random import randint
from std_msgs.msg import Float32
sense = SenseHat()
def randomColor():
red_random = randint(0,255)
blue_random = randint(0,255)
green_random = randint(0,255)
return (red_random,green_random,blue_random)
def gyroData():
pub = rospy.Publisher('gyro', Float32, queue_size=10)
rospy.init_node('picobot_imu')
rate = rospy.Rate(10) # 10hz
sense.set_imu_config(False, True, True)
while not rospy.is_shutdown():
o = sense.get_orientation()
#pitch = o["pitch"]
#roll = o["roll"]
yaw = o["yaw"]
#rospy.loginfo(yaw)
pub.publish(yaw)
rate.sleep()
def main():
sense.clear((0, 0, 0))
sense.low_light = True
g =(0,153,153)
bl = (0,153,0)
b = (0,0,0)
picobot_pixels = [
g,g,b,g,b,g,g,b,
g,g,b,g,b,g,b,b,
g,b,b,g,b,g,g,b,
b,b,b,b,b,b,b,b,
g,g,g,b,bl,b,bl,b,
g,b,g,b,b,bl,b,b,
g,g,g,b,bl,bl,bl,b,
b,b,b,b,b,b,b,b
]
sense.set_pixels(picobot_pixels)
gyroData()
if __name__ == '__main__':
main()
Если я запускаю скрипт вручную, все работает нормально, но если я запускаю службу, я получаю сообщение об ошибке.
- dec 28 01:25: 57 pi-mate picobot-start [870]: файл «/home/pi/catkin_ws/src/Picobot/picobot_imu/src/picobot_imu.py», строка 22, в gyroData
- дек 28 01:25: 57 pi-mate picobot-start [870]: sense.set_imu_config (False, True, True)
- dec 28 01:25:57 pi-mate picobot-start [870]: файл «/usr/lib/python2.7/dist-packages/sense_hat/sense_hat.py », строка 660, в set_imu_config
- дек. 28 01:25:57 pi-mate picobot-start[870]: self._init_imu () # Убедитесь, что imu инициализирован
- дек 28 01:25:57 pi-mate picobot-start [870]: файл «/ usr / lib /python2.7 / dist-packages / sense_hat / sense_hat.py ”, строка 648, в_init_imu
- декабрь 28 01:25:57 запуск пиобота pi-mate [870]: поднять OSError («Ошибка инициализации IMU»)
- dec 28 01:25:57 pi-mate picobot-start [870]: OSError: сбой инициализации IMU
- dec 28 01:25:58 pi-mate picobot-start [870]: нетможно найти обработчики для регистратора «roslaunch»
- dec 28 01:25:58 pi-mate picobot-start [870]: процесс [picobot_imu-6] завершился [pid 1515, код выхода 1, cmd /home / pi / catkin_ws / src / Picobot / picobot
Позже я попытался установить задержку запуска на 15 с.
<node pkg="timed_roslaunch" type="timed_roslaunch.sh" args="15 picobot_imu picobot_imu.launch" name="timed_roslaunch2" output="screen" />
ошибка в обслуживании выглядела так:
29 декабря 10:46:06 pi-mate picobot-start [859]: УЗЛЫ
29 декабря 10:46:06 pi-mate picobot-начало [859]: /
29 дек. 10:46:06 pi-mate picobot-start [859]: picobot_imu (picobot_imu / picobot_imu.py)
29 декабря 10:46:06 pi-mate picobot-start [859]: ROS_MASTER_URI = http://127.0.0.1:11311
29 декабря 10:46:06 pi-mate picobot-start [859]:[Данные BLOB-объекта 96B]
29 дек. 10:46:06 pi-mate picobot-start [859]: процесс [picobot_imu-1]: запущен с pid [1823]
29 декабря 10:46:06 pi-mate picobot-start [859]: все процессы на машине прекратились, roslaunch завершит работу
29 декабря10:46:06 pi-mate picobot-start [859]: выключение монитора обработки ...
29 декабря 10:46:06 pi-mate picobot-start [859]: ... завершение обработки монитора завершено