6、docker中机器人开发环境搭建6.1、使用jupyter lab访问docker6.2、使用vscode访问docker6.2.1、远程配置6.2.2、vscode配置6.2.2.1、下载安装vscode6.2.2.2、vscode配置ssh远程登录到宿主机6.2.2.3、进入机器人容器6.2.2.4、vscode远程宿主机配置docker环境6.2.2.5、配置免密登录
操作环境及软硬件参考配置如下:
参考车型:ROSMASTER X3
机器人硬件配置:Arm系列主控,思岚A1激光雷达,AstraPro Plus深度相机
机器人系统:Ubuntu(版本无要求)+ docker(20.10.21及以上版本)
PC虚拟机:Ubuntu(18.04)+ ROS(Melodic)
使用场景:在相对干净的2D平面上使用
1、进入容器,参见【5、进入机器人的docker容器】,执行如下命令:
注意:在docker容器中使用 jupyter lab时必须以host的联网方式运行docker容器:运行容器时加入"--net=host"参数
root@ubuntu:/# jupyter lab --allow-root
[I 2023-04-24 09:27:45.265 ServerApp] Package jupyterlab took 0.0001s to import
[I 2023-04-24 09:27:45.277 ServerApp] Package jupyter_server_fileid took 0.0096s to import
[I 2023-04-24 09:27:45.297 ServerApp] Package jupyter_server_terminals took 0.0190s to import
[I 2023-04-24 09:27:45.429 ServerApp] Package jupyter_server_ydoc took 0.1301s to import
[I 2023-04-24 09:27:45.431 ServerApp] Package nbclassic took 0.0001s to import
..................
2、其他设备查看,在windows或者ubuntu浏览器中打开(必须在同一个局域网下,192.168.2.102为docker容器内的IP地址)
xhttp://192.168.2.102:8889/lab
输入密码:yahboom,即可进入jupyter lab
下面目录是机器人的项目路径:
/root/yahboomcar_ws
这里以windows中配置vscode访问docker容器为例讲解,ubuntu中访问docker的步骤也基本一致。
参见【六、 Linux操作系统 ---- 3. 远程控制】章节
确保windows能远程登录到docker的宿主机【小车】上:
xxxxxxxxxx
在windows中打开cmd输入ssh命令测试:ssh jetson@192.168.2.102 (用户名和ip修改为自己的)
或者使用远程工具:putty、xshell、securecrt、winscp、mobaxterm、finalshell等都可以
vscode官网:https://code.visualstudio.com/,下载windows版本的安装即可
1、打开vscode,点击左边下面箭头的图标,然后在搜索框中输入remote,选择Remote Development插件,点击安装即可安装该插件
vscode默认安装之后是英文版的,可以安装中文插件来汉化:
2、在vscode中按快捷键【ctrl + shift + p】打开命令输入窗口,输入:remote,然后按照如下图的指引登录到远程宿主机【小车】上。
如何看到上图的画面,表示已经成功远程登录到宿主机上。
参见【5、进入机器人的docker容器】章节的教程进入。
1、在远程宿主机【小车】上安装docker插件
2、安装完成后在左侧的导航栏会出现一个docker的图标
3、点击docker图标
4、右击正在运行的容器,按下图操作:
5、会新打开一个窗口,看到如下表示已经进入到容器内
6、打开文件夹
xxxxxxxxxx
/root/yahboomcar_ws # 这是机器人的项目路径
7、同样的,在容器中也可以安装我们需要的插件来方便我们开发
除了ros,这里推荐安装的插件有:
完成以上步骤,就可以操作容器中的代码文件来开发学习了。
上面的步骤中可能某些步骤是需要输入宿主机的密码的,这里再优化一下,配置免密登录。
1、首先测试在windows使用ssh登录到宿主机【小车】上,指令如下:
xxxxxxxxxx
ssh jetson@192.168.2.102 (用户名和ip修改为自己的)
这时候会发现是需要输入宿主机密码的
2、接下来配置免密登录
(1)添加环境变量
打开环境变量属性页面,在用户变量部分点击新建,变量为HOME,值为C:\Users\name,其中name为用户名,可以自行查看自己电脑的用户名,之后生成的密钥对默认保存在这个目录下。
(2)生成密钥对
打开cmd命令行,在ssh程序所在目录运行,或者添加系统环境之后随处运行【ssh-keygen -t rsa】这条命令用来生成密钥,随后一路回车,当看到一幅矩形图生成,那么密钥生成成功。此时在用户目录的.ssh文件夹下会多出两个文件即id_rsa(私钥)、id_rsa.pub(公钥)
(3)将公钥添加到宿主机上
同样的打开cmd命令行,输入
xxxxxxxxxx
ssh username@host "cat >> ~/.ssh/authorized_keys" < C:\Users\name\.ssh\id_rsa.pub
#例如:根据自己的情况修改
ssh jetson@192.168.2.102 "cat >> ~/.ssh/authorized_keys" < C:\Users\Admin\.ssh\id_rsa.pub
这条命令首先登录到宿主机上,然后将本机即win下的公钥添加到宿主机账户个人目录下,从而实现免密码登录。注意这一步需要输入宿主机账户的密码。
(4)验证
再次测试在windows使用ssh登录到宿主机【小车】上,指令如下:
xxxxxxxxxx
ssh jetson@192.168.2.102 (用户名和ip修改为自己的)
这时候会发现已经不需要输入密码了。
重启一下vscode,需要输入密码的地方也不在需要输入密码了。