有什么方法可以使用 raspberry pi 中的 python 脚本获取 roscore 字符串吗?

Is there any way to get roscore string using python script in raspberry pi?

我正在使用 Raspberry Pi 激光扫描仪(电机 + Rangefinder/Hokuyo)。

对于Rangefinder的情况,我打开了3个命令window,

#1 : roscore

#2 : rosrun urg_node urg_node _serial_port:=/dev/ttyACM0

#3 : sh /home/pi/hokuyo/lidarDemo.sh /home/pi/Desktop/Demo/Data lidar.txt

其中 lidarDemo.sh :

if [$# -ne 2 ] 

then 
  echo '2 inputs'
  exit 1
fi

rostopic echo /scan|tee /

然后 lidar.txt 被保存,直到我关闭终端#3。

lidar.txt :

header:

序列:16828

邮票:

秒:1594386688

纳秒:380816175

frame_id:“激光”

angle_min: -2.35619449615

angle_max: 2.35619449615

angle_increment: 0.00436332309619

time_increment: 1.73611151695e-05

scan_time: 0.0250000003725

range_min: 0.0230000000447

range_max: 60.0

范围:[3.888000011444092,3.888000011444092,3.888000011444092,...

强度:[2673.0, 2663.0, 2652.0, 2673.0 ...


header:

序列:16828

邮票:

...

现在,我可以使用 real-time 中的 python 脚本获取 lidar.txt 的那些字符串吗?

例如,test.py:

while(True):
    str = getRoscore()
    print(str)

假设您想获取python中的实时激光雷达数据;您可以编写一个 python 脚本,其中有一个订阅者 /scan 主题,您可以在其中实时处理您的数据,类似于此,

    import rospy
    from sensor_msgs.msg import LaserScan


    lidar_message = None

    def lidar_callback(data):
        rospy.loginfo(rospy.get_caller_id() + " %s", data)
        lidar_message = data
        ##Execute necessary processing here..

    if __name__ == '__main__':
        rospy.init_node('lidar_node', anonymous=True)
        rospy.Subscriber("/scan", LaserScan, lidar_callback)
        
        ##Execute rest of the logic here...

        rospy.spin()