从 ROS 节点重启计算机
Reboot a computer from a ROS Node
我想创建一个 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
(或调用服务的任何名称)时,由于 ROS 和 Python,我得到一个 Permission Denied
错误运行 与 sudo
不同,它需要管理员权限才能重新启动计算机。
要获得从 ROS 节点重启计算机的正确权限,roscore
和 rosrun
需要来自根用户 运行。
我是这样做的:
使用sudo su
进入root用户
获取 ROS 安装文件和 catkin_ws 文件 (source /opt/ros/kinetick/setup.bash && source catkin_ws/devel/setup.bash
)
运行 roscore
和 rosrun
(或 roslaunch
如果您有启动文件),您现在可以调用您的服务了。
另一种方法是使用 tmux。
运行 要重启的机器上的 tmux
ssh 到机器和 运行 tmux attach
运行 你需要启动什么来尝试用 ros 重启机器,它应该可以工作
我想创建一个 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
(或调用服务的任何名称)时,由于 ROS 和 Python,我得到一个 Permission Denied
错误运行 与 sudo
不同,它需要管理员权限才能重新启动计算机。
要获得从 ROS 节点重启计算机的正确权限,roscore
和 rosrun
需要来自根用户 运行。
我是这样做的:
使用
sudo su
进入root用户
获取 ROS 安装文件和 catkin_ws 文件 (
source /opt/ros/kinetick/setup.bash && source catkin_ws/devel/setup.bash
)运行
roscore
和rosrun
(或roslaunch
如果您有启动文件),您现在可以调用您的服务了。
另一种方法是使用 tmux。
运行 要重启的机器上的 tmux
ssh 到机器和 运行
tmux attach
运行 你需要启动什么来尝试用 ros 重启机器,它应该可以工作