如何在root账户下运行rosrun

项目场景:

我需要使用香橙派的gpio引脚控制舵机,在ros工作空间下写的python程序。


问题描述

运行该脚本程序我试了两种方法:

方法一:

sudo python3 servo_control.py

但是这个可能是我环境没有配好,就一直包环境包找不到,

Traceback (most recent call last):
  File "./src/platform_control/script/platform_control.py", line 64, in <module>
    main()
  File "./src/platform_control/script/platform_control.py", line 56, in main
    rospy.init_node('platform_control_node', anonymous=True)
  File "/usr/lib/python3/dist-packages/rospy/client.py", line 309, in init_node
    rospy.core.configure_logging(resolved_node_name)
  File "/usr/lib/python3/dist-packages/rospy/core.py", line 405, in configure_logging
    _log_filename = rosgraph.roslogging.configure_logging('rospy', level, filename=filename)
  File "/usr/lib/python3/dist-packages/rosgraph/roslogging.py", line 156, in configure_logging
    rosgraph_d = rospkg.RosPack().get_path('rosgraph')
  File "/usr/lib/python3/dist-packages/rospkg/rospack.py", line 207, in get_path
    raise ResourceNotFound(name, ros_paths=self._ros_paths)
rospkg.common.ResourceNotFound: rosgraph

我明明已经安装过了

sudo apt-get install ros-noetic-rosgraph

而且可以在终端进入python3环境导入,但是运行程序的时候就是报错,然后就没管了

方法二:

rosrun servo_control servo_control.py

在source之后运行节点的方式运行,但是这个也报错了:

Traceback (most recent call last):
  File "/home/orangepi/HPCP_platform_ws/src/platform_control/script/platform_control.py", line 11, in <module>
    import BusServoCmd
  File "/home/orangepi/HPCP_platform_ws/src/platform_control/script/BusServoCmd.py", line 53, in <module>
    portInit()
  File "/home/orangepi/HPCP_platform_ws/src/platform_control/script/BusServoCmd.py", line 48, in portInit
    GPIO.setup(rx_pin, GPIO.OUT)  # 配置RX_CON 即 GPIO17 为输出
  File "/usr/local/lib/python3.8/dist-packages/OPi/GPIO.py", line 482, in setup
    sysfs.direction(pin, direction)
  File "/usr/local/lib/python3.8/dist-packages/OPi/sysfs.py", line 52, in direction
    with open(path, "w") as fp:
PermissionError: [Errno 13] Permission denied: '/sys/class/gpio/gpio47/direction'

说对gpio没有权限,但是我也对py脚本加了权限的,也对/sys/class/gpio/gpio47/direction加了权限,但是也不行。


原因分析:

有大佬知道可以提示下我^.^


解决方案:

使用root用户运行rosrun

在终端进入root

sudo su

输入密码后进入root

开两个终端,都source一下ros和工作空间的环境

source /opt/ros/noetic/setup.bash #看看自己的ros版本替换(noetic)
source ./devel/setup.bash

一个终端启动roscore,另一个终端就启动程序,就可以了。

ps:为啥我用gpt推荐的使用 sudo 并保留用户环境

通过 -E 选项可以保留当前用户的环境变量,从而使 sudo 下的 ROS 命令可用:

sudo -E rosrun platform_control platform_control.py

这会保留当前用户的环境设置,包括 ROS 的环境变量,使得 rosrun 可用。

提示我没有这个rosrun命令呢?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值