1 创建ROS工作空间
1.1 创建工作空间
(1)创建工作空间
mkdir catkin_ws
(2)进入catkin_ws文件夹,然后创建一个src文件夹
cd catkin_ws
mkdir src
(3)进入src文件夹,生成CMakeLists.txt
catkin_init_workspace
1.2 编译工作空间
返回上一级目录,进行编译
cd ..
catkin_make
ls
设置环境变量
设置环境变量
source devel/setup.bash
查看环境变量
echo $ROS_PACKAGE_PATH
修改完环境变量之后重启终端生效。
2 虚拟机配置静态IP地址
电脑虚拟机的Ubuntu和ROS主机Jetson nano的Ubuntu在通信时需要知道对方的IP地址,系统默认使用的是动态分配的IP地址,使用的过程中可能会出现IP地址不停变化的情况,因此设置静态IP地址可以为后续减少很多麻烦。
2.1 设置虚拟机的网络连接
(1)将虚拟机的网络连接模式改成“桥接模式”
(2)电机VM左上角“编辑”,点击“虚拟网络编辑器”,电机“更改设置”
(3)将设置为桥接模式的设备改为电脑网卡,此时即可使用SSH远程登陆。如果想要使虚拟机再次连接上网络,只需要把设置为桥接模式的改为自动(或以太网设备)
2.2 新建Ubuntu网络连接设置
(1)电机界面右上角的,点击Wired Connected,点击Wired Settings
(2)点击界面的齿轮,查看当前系统的动态IP地址和网关地址
(3)新建一个自定义网络配置,将网络配置修改成静态IP
(4)点击界面的+
(5)设置IPV4的静态IP,IPV4 Method选择Manual,DNS和IP地址和刚刚查到的信息一致,子网掩码默认设置255.255.255.0,网关根据网段,将IP地址最后一位改成1,路由自动选择
(6)设置完毕之后点击添加,退出,这时会在界面多出Static IP,点击切换
3 Jstson nano的环境配置
3.1 Jetson nano镜像下载
(1)准备一张SD卡,32G,使用格式化工具进行格式化
(2)下载镜像
(3)使用balenaEtcher进行镜像写入
3.2 Ubuntu中配置无线WiFi和静态IP
(1)给jetson nano接上显示屏
(2)显示器右上角找到网络按钮,然后右键,选择Edit Connections
(3)点击右下角“+”新建“WiFi”,点击“create”
(4)设置connection name、SSID、Mode:Hotspot
(5)点击WiFi Security设置密码,密码模式选择WPA &WPA2 Personal
(6)点击IPV4_Setting,点击ADD,分别输入IP地址,子网掩码和网关
4 NFS挂载
如果想要远程访问并修改ROS主机中Ubuntu怎见,可以通过NFS挂载的方式。虚拟机上的Ubuntu可以通过NFS的方式来访问ROS主机中Ubuntu系统的文件,NFS文件分为服务器挂载和客户端访问。这里将虚拟机上的Ubuntu作为客户端,ROS主机上的Ubuntu作为服务端,虚拟机的Ubuntu将jetson nano上的Ubuntu文件挂载到本地。
4.1 配置NFS服务端
在ROS主机操作,即jetson nano
(1)安装NFS服务端
sudo apt-get install nfs-kernel-server
(2)添加NFS共享目录,即要挂载的文件夹
sudo vim /etc/exports
添加下列代码:
/home/nvidia/nvidia_robot *(rw,sync,no_root_squash)
(3)给挂载的目录设置权限以及修改文件用户
sudo chmod -R 777 /home/nvidia/nvidia_robot
sudo chown -R 777 /home/nvidia/nvidia_robot
(4)启动NFS
sudo /etc/init.d/nfs-kernel-server start
sudo /etc/init.d/nfs-kernel-server restart
(5)挂载NFS
将本地的/home/nvidia/nvidia_robot路径挂载到本地/mnt路径下,中间的IP地址为服务端IP
sudo mount -t nfs -o nolock IP:/home/nvidia/nvidia_robot /mnt
(6)查看是否挂载成功
df -h
4.2 配置NFS客户端
(1)安装NFS客户端
sudo apt-get install nfs-common
(2)挂载服务端的文件到本地
sudo mount -t nfs IP:/home/nvidia/nvidia_robot /mnt
(3)查看是否挂载成功
df -h
出现挂载失败的情况:
虚拟机与jetson nano需要进行连接:
1、使用手机热点,jetson nano与虚拟机分别连接手机热点,使用手机热点的静态IP
2、电脑连接jetson nano发送的WiFi
4.3 挂载NFS开机执行脚本
(1)新建需要运行的脚本文件
cd etc/init.d
sudo vim mount_test.sh
(2)编辑脚本
(3)修改脚本权限
sudo chmod 777 mount_test.sh
(4)将脚本加入开机执行的队列中
sudo update-rc.d mount_test.sh defaults 90
(5)重启输入df -h查看挂载项
(6)如果想要取消挂载项目,可以输入以下指令
sudo update-rc.d -f mount_test.sh remove
5 SSH远程登陆
exit
(1)通信测试
ping IP地址
(2)ssh登陆
ssh nvidia@IP地址
(3)退出SSH登陆
exit
6 开机自启动脚本
在虚拟机中通过ssh命令登陆ROS主机,然后设置开机自动挂载脚本
ssh nvidia@IP
使用su进入root模式
su
进入文件,使用nano编写
cd /home/nvidia
nano nfs.sh
给脚本可执行权限
sudo chomod 777 nfs.sh
使用ctrl+d退出超级用户模式,尝试脚本是否可以正常运行
./nfs.sh
将脚本文件写入rc.local文件中
sudo nano /etc/rc.local
重启
sudo reboot
ssh连接机器人
7 ROS主控无屏幕连接网络
(1)电脑连接手机热点
(2)使用ip a命令来查看ip地址
(3)电脑连接ROS主机的WiFi,打开新的终端,使用ssh登陆到ros主控