从ROS节点重新启动计算机

问题描述 投票:0回答:1

我想创建一个ROS服务,当使用rosservice调用时,重启计算机。

这是我的回调代码:

def reboot_callback(self, cmd):
    """
    Callback to reboot
    """

    res = TriggerResponse()
    res.success = True
    res.message = "Rebooting"
    os.system('reboot')
    return res

但是,当我运行rosservice call /reboot(或者无论名称是什么名称)时,我得到一个Permission Denied错误,因为ROS和Python不是作为sudo运行的,它需要管理员权限才能重启计算机。

python ros
1个回答
1
投票

要拥有从ROS节点重新启动计算机的正确权限,需要从root用户运行roscorerosrun

我是这样做的:

  • 使用sudo su进入root用户
  • 源ROS设置文件和catkin_ws文件(source /opt/ros/kinetick/setup.bash && source catkin_ws/devel/setup.bash
  • 运行roscorerosrun(或roslaunch,如果你有一个启动文件),你现在可以打电话给你的服务。

另一种方法是使用tmux。

  • 在要重新启动的计算机上运行tmux
  • ssh到机器并运行tmux attach
  • 运行你需要启动的任何东西,尝试用ros重启机器,它应该工作
© www.soinside.com 2019 - 2024. All rights reserved.