介绍spacenavd开源项目,主要是因为在斯坦福大学的UMI项目中使用了该项目。在斯坦福大学的 UMI(Universal Manipulation Interface)项目中,Spacenavd 主要用于处理 3D Space Mouse(空间鼠标)的输入,它起着以下关键作用:
- 硬件接口:
Spacenavd 是 3D Space Mouse 的驱动程序守护进程;
负责与 Space Mouse 硬件设备进行通信;
处理原始的设备输入数据 - 机器人控制:
允许操作者使用 Space Mouse 直观地控制机器人
提供 6 自由度(6-DOF)的控制:
3个平移方向 (x, y, z)
3个旋转方向 (roll, pitch, yaw) - 人机交互:
作为人类操作者和机器人系统之间的接口
提供实时、精确的位置和姿态控制
使操作者能够进行演示和数据收集; - 数据收集:
记录人类操作者的控制命令;
为机器人学习提供示范数据;
帮助收集训练数据集; - 系统集成:
# 示例代码片段with Spacemouse(shm_manager=shm_manager) as sm:# 获取 Space Mouse 的状态sm_state = sm.get_motion_state_transformed()# 处理位置变化dpos = sm_state[:3] * (env.max_pos_speed / frequency)# 处理旋转变化drot_xyz = sm_state[3:] * (env.max_rot_speed / frequency)
- 功能特点
实时响应;
精确控制;
低延迟; - 在项目中的应用:
用于机器人技能的演示;
收集训练数据;
验证和测试机器人控制策略;
进行实时操作干预; - 系统要求:
Linux 操作系统;
USB 接口;
适当的权限设置;
正确的驱动程序配置;
Spacenavd 是 UMI 项目中实现人机交互和数据收集的重要组件,它使得操作者能够直观、精确地控制机器人,并为机器人学习提供必要的训练数据。
Spacenavd 是一个免费软件用户空间驱动程序(守护进程),适用于 6 自由度输入设备,如 3Dconnexion 的太空鼠标。它与 3Dconnexion 提供的原版专有守护进程 3dxsrv 兼容,可作为其替代品直接替换任何为 3Dconnexion 驱动器编写的程序,同时也为专门为 spacenavd 设计的程序提供了改进的通信机制。
依赖项
为了编译 spacenavd 守护进程,您需要以下组件:
- GNU C 编译器
sudo apt-get update
sudo apt-get install build-essential
这个命令会安装 gcc、g++ 和 make 等基本的编译工具。
依赖项
为了编译 spacenavd 守护进程,您需要以下组件:
- GNU C 编译器
- GNU make
- Xlib(libX11,可选)
- XInput2(libXi,可选)
- Xtest(libXtst,可选)
可以一次性安装所有基本编译工具(推荐):
# 安装 build-essential 包(包含 gcc、make 和其他必要的编译工具)
sudo apt install build-essential
安装
如果已安装了依赖项,请运行 ./configure
和 make
来编译守护进程,然后运行 make install
来安装。默认安装前缀是 /usr/local
。如果您希望在其他位置安装,可以在配置脚本中传递 --prefix=/whatever
参数。
sudo ./configure
sudo make
sudo make install
运行 spacenavd
spacenavd 被设计为启动时作为系统守护进程运行。
确认系统使用的是哪种初始化系统:
(base) wjj@wjj-HP-348-G7:~/下载$ sudo ps -p 1
[sudo] wjj 的密码: PID TTY TIME CMD1 ? 00:00:09 systemd
如果您的系统使用 SysV init,只需以 root 用户身份运行 setup_init
,以安装 spacenavd 初始化脚本,并使其在启动时自动运行。要在安装后立即启动守护进程而无需重启系统,只需以 root 用户身份键入 /etc/init.d/spacenavd start
。
如果您的系统使用 BSD init 或其他初始化系统,那么您需要按照初始文档设置。您可以使用提供的 init_script
文件作为起点。
对于运行 systemd 的系统,contrib/systemd
目录下有一个 spacenavd.service 文件。