我想创建一个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
运行的,它需要管理员权限才能重启计算机。
要拥有从ROS节点重新启动计算机的正确权限,需要从root用户运行roscore
和rosrun
。
我是这样做的:
sudo su
进入root用户source /opt/ros/kinetick/setup.bash && source catkin_ws/devel/setup.bash
)roscore
和rosrun
(或roslaunch
,如果你有一个启动文件),你现在可以打电话给你的服务。另一种方法是使用tmux。
tmux attach