我想创建一个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节点重新启动计算机的正确权限,
roscore
和rosrun
需要从根用户运行。你知道吗我是这样做的:
使用
sudo su
获取ROS安装文件和catkin-ws文件(
source /opt/ros/kinetick/setup.bash && source catkin_ws/devel/setup.bash
)运行
roscore
和rosrun
(或者roslaunch
,如果您有一个启动文件),现在就可以调用您的服务了。另一种方法是使用tmux。你知道吗
在要重新启动的计算机上运行tmux
ssh到机器并运行
tmux attach
运行任何需要启动的程序,尝试用ros重新启动机器,它应该可以工作
相关问题 更多 >
编程相关推荐