地瓜机器人 · 2022年12月08日 · 江苏

地平线旭日X3派试用 | ssh密钥登陆 蓝牙手柄连入ros

1.ssh密钥登陆

ssh登陆开发作为必修课,默认密码登陆不安全又得每次输密码,有点不雅,改之。在windows上使用的是Fluent Terminal(个人使用习惯)。

1.1 因为经常使用macbook,所以先设置增加mac登陆密钥

先用密码ssh登陆x3派:

ssh-keygen

一路回车就行,想增加安全性可以设置带密码的密钥。

cd .ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
chmod 700 ~/.ssh

接下来的操作是需要找到mac的密钥,我mac用的是ssh_ed25519,在mac命令行中输入:

vim ~/.ssh/id_ed25519.pub

把这里的内容复制,在登陆到x3派的命令行中:

vim ~/.ssh/authorized_keys

按i开启编辑,调整光标到末尾然后回车换行,粘贴后按ESC,然后再按冒号后输入wq回车。关闭登陆,再登陆就不需要密码了。

1.2 window下面的密钥如何处理见传送门

1.3 既然能密钥自动登陆了,那就可以关闭ssh密码登陆了,即舒服又安全,坏处就是设好密钥的电脑坏了就bbq了

sudo su
vim /etc/ssh/sshd_config

按图把yes位置改成no即可:

1.png

2.USB/蓝牙手柄连入ros

2.1 usb手柄接ubuntu并且连入ros是很容易的,手头拿的是古老的北通阿修罗usb手柄,usb一接入无需驱动,命令行 ls /dev/input 就出现js0的标识

2.png

2.2 蓝牙手柄用的是飞智黑武士X8 pro,自带了一个蓝牙适配器(切换成Xbox模式)

如何进一步验证手柄功能呢?ubuntu上面有个非常好的小软件:

sudo apt install jstest-gtk
jstest-gtk

如上执行后就会出现一个验证手柄的界面,选中手柄就可以查看具体的操作反应:

3.png4.png

2.3 ROS2案例

2.3.1 先测试ros操作,我实验的版本是ros2 foxy

开第一个终端:

ros2 launch teleop_twist_joy teleop-launch.py joy_config:='js0'


5.png

开第二个终端:

ros2 topic echo /joy

现在对手柄操作会直接改变rostopic的值。

6.png

2.3.2 ros2 小乌龟

上面如此顺利,那小乌龟还难吗?哦 ,不,上面是在intel处理器macbook运行的完整桌面版ubuntu设备下做的实验。下面才是我们的主角地平线X3派。

7.png

终端输入dmesg查看下,全版本的Ubuntu如下:

8.png

而地平线X3派的精简版ubuntu是:

9.png

如上可以发现鼠标的输入是可以识别,但是手柄的输入就没有识别。

经过一晚上的努力,确认了系统内核里面uinput和 joydev这两个模块被精简了。在/dev/input/目录下找不到js0,但是lsusb识别出了xbox360 controller。在不新编译内核情况下,是不是没有办法用游戏手柄?

将这个问题提问到群里得到了快速而果断的否定,但是给了提供编译内核的预期。

10.jpeg

试了试,竟然一个纯python写的代码跑通了,如下:

git clone https://github.com/FRC4564/Xbox.git
cd Xbox/
sudo python3 sample.py 

11.png

原作者:frankzhen
原链接:本文转自地平线开发者社区(详细信息及完整代码点击此处一键直达)
推荐阅读
关注数
1254
内容数
69
我是地瓜机器人,为加速智能生长而来
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息