ubuntu 配置 spacemouse以及通过python/robosuite使用spacemouse

一 前言

3dconnexion 早在2014年就不更新对linux系统的驱动,因此安装驱动需要参考另一个网站:https://spacenav.sourceforge.net/

二 安装步骤

1 安装 spacenavd

先安装依赖库

shell 复制代码
sudo apt install libxext-dev libxrender-dev libxmu-dev libxmuu-dev
sudo apt-get install libxtst*
sudo apt-get install libx11*
sudo apt-get install libxi-dev

在自定义的安装目录下,执行以下命令下载源码并安装

shell 复制代码
git clone https://github.com/FreeSpacenav/spacenavd.git
cd spacenavd
./configure
make
sudo make install

执行以下命令将该驱动设为开机启动

shell 复制代码
sudo ./setup_init
sudo /etc/init.d/spacenavd start

过程中可能会输出以下像报错的信息,是正常输出,不用理会

shell 复制代码
cat: /etc/inittab: 没有那个文件或目录
default runlevel detection failed.

2 安装 libspnav

执行以下命令下载源码并安装

shell 复制代码
git clone https://github.com/FreeSpacenav/libspnav.git
cd libspnav
./configure
make
sudo make install

3 验证驱动安装是否正确

将spacemouse通过附带的USB线连接到电脑USB。libspnav程序包中给了几个测试用例,执行以下命令进行测试

shell 复制代码
cd libspnav/examples/simple
make
./simple_af_unix

此时移动spacemouse的摇杆,应该能看到以下输出:

shell 复制代码
spacenav AF_UNIX protocol version: 1
Device: 3Dconnexion SpaceMouse Wireless
Path: /dev/input/event6
Buttons: 2
Axes: 6

got motion event: t(0, 0, 0) r(-15, 0, 0)
got motion event: t(0, -5, 0) r(-32, 0, 0)
got motion event: t(-2, -21, 0) r(-58, 0, 0)
got motion event: t(-6, -17, 0) r(-60, 0, 0)
got motion event: t(-3, 0, 0) r(-60, 0, 0)
got motion event: t(0, 0, 0) r(-8, 0, 0)
got motion event: t(0, 0, 0) r(-16, 0, 0)
got motion event: t(0, 0, 0) r(0, 0, 0)
got motion event: t(0, 0, 9) r(-19, 0, 0)
got motion event: t(-45, 0, 56) r(-78, 0, -38)
got motion event: t(-92, 0, 78) r(-99, 0, -78)
got motion event: t(-122, 0, 80) r(-105, 0, -104)
got motion event: t(-123, 0, 75) r(-103, 0, -105)
got motion event: t(-128, 0, 86) r(-123, -10, -115)
got motion event: t(-143, 0, 105) r(-142, -31, -131)

表明驱动安装完成。

三 在python/robosuite中使用spacemouse

1 读取spacemouse设备id

连接设备后,在终端输入lsusb查看哪一行后面有spacemouse字样的就是连接的设备;没有的话,连接设备前后分别运行lsusb看多了哪一个设备信息。我的spacemouse信息如下:

shell 复制代码
Bus 001 Device 010: ID 256f:c62e

其中冒号前面的256fVendor_id,后面的c62eProduct_id,后面会用到。

2 配置hid

python的hid库(pip install hidapi )可以用来读取usb设备信号,但设备的默认权限仅允许root用户访问,一种方法是执行python程序时前面加sudo,但sudo python默认执行的是ubuntu原装的py2。如果想用任意的python的hid库读取信号,需要提高spacemouse设备的权限,步骤如下:

shell 复制代码
cd /etc/udev/rules.d
sudo touch 99-spacemouse.rules
sudo gedit 99-spacemouse.rules

在新建的99-spacemouse.rules中添加以下内容

shell 复制代码
SUBSYSTEM=="usb", ATTRS{idVendor}=="256f",  ATTR{idProduct}=="c62e", MODE="0666"

将其中的256fc62e替换为自己使用的spacemouse的Vendor_idProduct_id

3 robosuite使用spacemouse

下载robosuite

shell 复制代码
git clone https://github.com/ARISE-Initiative/robosuite.git

修改robosuite/demos/demo_device_control.py中的下面两行,主要是修改设备为spacemouse,以及修改vendor_idproduct_id

shell 复制代码
parser.add_argument("--device", type=str, default="spacemouse", choices=['spacemouse', 'keyboard'])
device = SpaceMouse(vendor_id=0x256f,product_id=0xc62e, pos_sensitivity=args.pos_sensitivity, rot_sensitivity=args.rot_sensitivity)

之后运行demo_device_control.py即可使用spacemouse控制仿真环境中的机械臂。

完~

相关推荐
CV工程师小朱20 天前
OpenCV机械臂手眼标定
opencv·机械臂·手眼标定
riversuer23 天前
平面机械臂运动学分析
机械臂·轨迹规划·逆运动学·运动学分析·正运动学·matlab模拟
一颗小树x1 个月前
机器人学习模拟框架 robosuite 支持强化学习和模仿学习 (1) 快速入门
机器人·强化学习·模拟·robosuite·模仿学习
大象机器人2 个月前
使用外骨骼灵活远程控制协作机器人案例
开发语言·python·机器人·机械臂
给我一个接口2 个月前
Ubuntu20.04复现GraspNet全记录(含遇到的问题及解决方法
机器人·机械臂
千羽QY4 个月前
ubuntu20 使用 pyspacemouse获取 spacemouse wireless 输入
机器人·spacemouse
kuan_li_lyg4 个月前
MATLAB & Simulink® - 智能分拣系统
开发语言·人工智能·matlab·机器人·ros·机械臂
kuan_li_lyg6 个月前
MATLAB - 浮动基座机器人的逆运动学
开发语言·人工智能·matlab·机器人·自动驾驶·机械臂·逆运动学
kuan_li_lyg6 个月前
MATLAB - 机器人机械臂设计轨迹规划器
开发语言·人工智能·matlab·机器人·自动驾驶·机械臂·轨迹规划
kuan_li_lyg6 个月前
MATLAB - 机械臂手眼标定(眼在手内) - 估计安装在机器人上的移动相机的姿态
开发语言·人工智能·matlab·机器人·ros·机械臂·手眼标定