ROS交流群
ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
使用python代码启动launch文件
-
在开发中我们经常会遇到使用python代码启动launch文件这样的问题。一般的做法是使用subprocess调用roslaunch。但是这种方法使用起来并不方便。要涉及到自己去控制进程的状态。由于roslaunch实际上是用python实现的。使用python调用launch文件实际上有更简单的方法。
import roslaunch uuid = roslaunch.rlutil.get_or_generate_uuid(None, False) roslaunch.configure_logging(uuid) tracking_launch = roslaunch.parent.ROSLaunchParent( uuid, ["/home/xiaoqiang/Documents/ros/src/xiaoqiang_track/launch/track_body.launch"]) tracking_launch.start()
这样就成功启动了一个launch文件。把uuid后面的路径换成自己的launch文件路径就可以了。
而且我们可以通过roslaunch直接关闭launch文件启动的节点。
tracking_launch.shutdown() # tracking_launch 即是上面通过roslaunch获取到的变量
这样使用起来就很方便了。
-
这个程序运行后就被退出了(killing on exit),应该怎么做?
-
@几何木偶 你的代码是什么样的
-
-
@几何木偶 因为没有join方法,所以程序出错后退出了。tracking_launch.start()是不阻塞的,需要自己阻塞主线程。比如
import roslaunch import rospy import time uuid = roslaunch.rlutil.get_or_generate_uuid(None, False) roslaunch.configure_logging(uuid) tracking_launch = roslaunch.parent.ROSLaunchParent( uuid, ["/home/xiaoqiang/Documents/ros/src/xiaoqiang_track/launch/track_body.launch"]) tracking_launch.start() while not rospy.is_shutdown(): time.sleep(1)
-
这样当我使用ctrl+c结束时,它没有跳出循环,变成死循环了。有办法吗? -
@几何木偶 你的代码是什么样的,像我之前的例子那样写应该会正常退出。
-
tracking_launch.spin()