Как использовать «многопользовательский» в Python с ROS Services и последовательным общением?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать «многопользовательский» в Python с ROS Services и последовательным общением?

Сообщение Anonymous »

Я хочу запустить несколько процессов в Python с Services ROS и последовательной связи (между микроконтроллером Raspberry Pi и ESP32) в моем роботе. Схема программного обеспечения в роботе показана на этом изображении
Я начинаю делать в C ++, как можно увидеть по этой ссылке, как использовать Ros Services и Serial Communication с Sopix и Semaphores в C ++? Но я понял, что мои модули для последовательной связи и чтения ODOM (давление, IMU) находятся в Python. < /p>
Итак, структура программы должна быть следующей. Сначала я открываю последовательный порт (последовательная связь Raspberry Pi 4). В то время как сериал открыт два процесса, которые работают < /p>
, сначала один, основной запуск автоматически и выполняет следующее: Поток запрашивает обновления ODOM (давление и IMU из микроконтроллера) и опубликовать их. Также каждые 0,3 секунды проверяют модемный почтовый ящик, и если что -то новое его публикует. Затем первый процесс резюме с обычной работой < /p>
Поэтому я пытаюсь сначала сделать код псевдо -питона, который выглядит так, но мне нужна помощь, как я новичок в Python и MultiThreading. Вот это < /p>
#!/usr/bin/env python3

from sys import ps1
import rospy
import numpy as np
from os import system
import time
import threading
import Microcontroller_Manager_Serial as Serial
import IMU_Functions as IMU
import Pressure_Functions as Pressure
from std_msgs.msg import Float32

mutex = threading.Lock()

from std_msgs.msg import String
Communication_Mode_ = 0 # Serial Communication

pub_pressure = rospy.Publisher('depth',Float32,queue_size=1)

P0 = 1.01325 #Default Pressure

def callback(data):
global P0
mutex.acquire()
while (Serial.Serial_Port_Standard()): # While serial Port is open

try:
data_received_pressure = Pressure.Pressure_Get_Final_Values(1,1)
data_received_imu = IMU.IMU_Get_Values(1, 1)
P1 = (np.int16((data_received_pressure[6]

Подробнее здесь: https://stackoverflow.com/questions/713 ... munication
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»