代码中启动ros节点roslaunch和rosrun,代码启动节点与关闭节点,地图切换

53 篇文章 0 订阅
2 篇文章 0 订阅

                                                          roslaunch和rosrun,代码启动节点与关闭节点

py_slam_startros_在代码中启动ros节点roslaunch和rosrun

import subprocess
import rospy
import rosnode
 
class launch_demo:
    def __init__(self, cmd=None):
        self.cmd = cmd
 
    def launch(self):
        self.child = subprocess.Popen(self.cmd)
        return True
 
    def shutdown(self):
        self.child.terminate()
        self.child.wait()
        return True
 
if __name__ == "__main__":
    rospy.init_node('launch_demo',anonymous=True)
 
    launch_nav = launch_demo(["roslaunch", "pibot_simulator", "nav.launch"])
 
    launch_nav.launch()
 
    r = rospy.Rate(0.2)
    r.sleep()
 
    rospy.loginfo("switch map...")
    r = rospy.Rate(1)
    r.sleep()
 
    rosnode.kill_nodes(['map_server'])
 
    map_name = "/home/pibot/ros_ws/src/pibot_simulator/maps/blank_map_with_obstacle.yaml"
 
    map_node = subprocess.Popen(["rosrun", "map_server", "map_server", map_name, "__name:=map_server"])
 
    while not rospy.is_shutdown():
        r.sleep()

上面使用python代码启动了一个PIBOT模拟器的导航,然后5s后切换了一个地图

  • 使用subprocess.Popen可以启动一个进程(roslaunch或者rosrun)
  • 使用rosnode.kill_nodes可以杀死一个rosnode
  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_无往而不胜_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值