【问题标题】:Is there any way to get roscore string using python script in raspberry pi?有没有办法在树莓派中使用 python 脚本获取 roscore 字符串?
【发布时间】:2020-07-16 19:21:15
【问题描述】:

我将 Raspberry Pi 用于 LaserScanner(电机 + 测距仪/Hokuyo)。

对于测距仪,我打开3个命令窗口,

#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 $1/$2

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

激光雷达.txt:

标题:

序列:16828

戳:

秒:1594386688

纳秒:380816175

frame_id:“激光”

angle_min:-2.35619449615

最大角度:2.35619449615

角度增量:0.00436332309619

时间增量:1.73611151695e-05

扫描时间:0.0250000003725

range_min:0.0230000000447

最大范围:60.0

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

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


标题:

序列:16828

戳:

...

现在,我可以通过使用python脚本实时获取这些lidar.txt字符串吗?

例如 test.py :

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

【问题讨论】:

  • 问题不清楚。有没有办法使用 python 脚本获取 roscore 字符串?我可以通过实时使用python脚本来获取这些lidar.txt字符串吗?你能解释一下你到底想做什么
  • 当我在终端上运行 roscore 时,例如,'rostopic echo /scan',它会显示如上所示的激光雷达原始数据(如 header : \n seq : 16828 \n ...)。我想使用 .py 脚本获取这些字符串!作为类似 str = getRoscore() 的函数
  • 当然,检查答案就可以了

标签: python raspberry-pi3 ros


【解决方案1】:

假设你想在 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()

【讨论】:

  • 谢谢!有用。顺便说一句,你知道 rospy.spin() 的替代品吗?如果我使用它,它会一直工作到终端停止(会有'n'个数据)。我只需要一个激光雷达数据。我尝试了 rospy.sleep(t) 命令,我想这不适合我的情况。
  • 这是 rospy.spin() 的预期行为。我在这里更新了代码,当您有新消息时,订阅者正在触发。因此添加了lidar_message 变量,您可以在其中访问最少的激光雷达扫描消息,在回调本身内部进行必要的处理。
猜你喜欢
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
  • 2022-08-06
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 2019-02-11
相关资源
最近更新 更多