使用 ROS 访问 Raspberry Pi 2 的 GPIO 引脚
Access GPIO pins of Raspberry Pi 2 with ROS
我正在尝试使用机器人操作系统 ROS 访问 Raspberry Pi 2 的 GPIO 引脚。我知道,有很多关于这个主题的教程。但是我的问题如下:
- ROS 的推荐 Linux 分布是 Ubuntu。由于 ROS 网络中还有其他 Ubuntu 机器,我想避免为不同的 OS.
编译 ROS
- 在 Ubuntu 中,
/sys/class/gpio
sysfs 默认未启用。我需要用 custom configuration. 重新编译内核
- 如果我不能使用
/sys/class/gpio
,看来我需要使用 /dev/mem
(例如使用 RPi.GPIO 包) .
- 但是
/dev/mem
只有 root 可以访问。
- 而且我不能 运行 一个 ROS 节点作为根节点,因为它缺少
rospy
和整个 ROS设置。
那么,在 ROS 节点中获取 GPIO 访问权限的 "easiest" 方法是什么?
我想我找到了一个相当干净的解决方案来解决我的问题:
pigpio library 正是我所需要的。它 运行 是一个以 sudo 启动的守护进程,它控制着 GPIO 引脚。客户端程序(在没有 sudo 的情况下启动)与守护进程通信,从而间接控制引脚。
您甚至可以 运行 远程计算机上的客户端。通过这种方式,ROS 节点可以控制远程树莓派的 GPIO 引脚,而树莓派本身甚至不是 运行ning ROS。
我当前的设置是在 fitlet PC 上与 Raspberry Pi 2 通信的 rospy 节点(靛蓝),两者都是 运行ning Ubuntu 14.04。
djsw's answer 在 ROS 论坛中为我指明了正确的方向。
我正在尝试使用机器人操作系统 ROS 访问 Raspberry Pi 2 的 GPIO 引脚。我知道,有很多关于这个主题的教程。但是我的问题如下:
- ROS 的推荐 Linux 分布是 Ubuntu。由于 ROS 网络中还有其他 Ubuntu 机器,我想避免为不同的 OS. 编译 ROS
- 在 Ubuntu 中,
/sys/class/gpio
sysfs 默认未启用。我需要用 custom configuration. 重新编译内核
- 如果我不能使用
/sys/class/gpio
,看来我需要使用/dev/mem
(例如使用 RPi.GPIO 包) . - 但是
/dev/mem
只有 root 可以访问。 - 而且我不能 运行 一个 ROS 节点作为根节点,因为它缺少
rospy
和整个 ROS设置。
那么,在 ROS 节点中获取 GPIO 访问权限的 "easiest" 方法是什么?
我想我找到了一个相当干净的解决方案来解决我的问题:
pigpio library 正是我所需要的。它 运行 是一个以 sudo 启动的守护进程,它控制着 GPIO 引脚。客户端程序(在没有 sudo 的情况下启动)与守护进程通信,从而间接控制引脚。
您甚至可以 运行 远程计算机上的客户端。通过这种方式,ROS 节点可以控制远程树莓派的 GPIO 引脚,而树莓派本身甚至不是 运行ning ROS。
我当前的设置是在 fitlet PC 上与 Raspberry Pi 2 通信的 rospy 节点(靛蓝),两者都是 运行ning Ubuntu 14.04。
djsw's answer 在 ROS 论坛中为我指明了正确的方向。