JetBot ROS AI Kit 教程四、设置变量实现多机通讯
来自Waveshare Wiki
JetBot ROS AI Kit 新手教程目录
- JetBot ROS AI Kit 教程一、组装小车
- JetBot ROS AI Kit 教程二、安装Jetson nano 镜像
- JetBot ROS AI Kit 教程三、安装Ubuntu_ROS系统 镜像
- JetBot ROS AI Kit 教程四、配置多机通讯和添加串口
- JetBot ROS AI Kit 教程五、机器人移动控制
- JetBot ROS AI Kit 教程六、配置摄像头节点
- JetBot ROS AI Kit 教程七、配置激光雷达节点
- JetBot ROS AI Kit 教程八、SLAM激光雷达建图
- JetBot ROS AI Kit 教程九、自主导航
- JetBot ROS AI Kit 主页
步骤1、jetson nano 进行SSH远程登录
- 在教程一中,我们使用外接屏幕很轻松的给jetson nano 和主机连接到同一WiFi,而且重新开机后jetson nano一般会保持与原来WiFi的连接状态,并且ip不变
- 开启jetson nan电源,小车OLED屏会显示上次连接WiFi的ip地址
- 下载MobaXterm软件进行SSH远程登录
- 打开 MobaXterm,点击“Session -> SSH”,在host中填写小车显示的ip地址,回车打开终端;其中登录名和密码为:jetbot
- 【下述在MobaXterm终端的操作,我们统一称:机器人终端】
步骤2、在机器人终端配置多机通讯
- 打开机器人终端并输入以下命令,查看jetson nano 主机的ip和主机名并且记住
ifconfig #查看ip地址 hostname #查看主机名
- 输入命令查看jetson nano 连接的WiFi名,并使PC端也连接同一个WiFi
iwconfig wlan0 #查看WiFi名称
- 在机器人终端输入以下命令并回车,将Ubuntu虚拟机的ip地址和主机名添加到jetson nano的 /etc/hosts 文件中,密码是:jetbot【 编辑器可用nano ,也可以使用vim,根据个人习惯选择文本编辑器】
sudo nano /etc/hosts
- 如下图所示,将127.0.1.1 nano-4gb-jp45.localdimain nano-4gb-jp45下面的那行修改为ubuntu虚拟机的ip和hostname【如果这行被注释掉了需要取消注释】
- 如果 nano 命令无法执行,请输入以下命令安装nano编辑器 ,安装完之后可以再次执行命令:sudo nano /etc/hosts
sudo apt install nano #安装nano编辑器
- 修改后,按Ctrl+s保存,按Ctrl+c退出,选择Yes回车
步骤2、添加串口用户组
- 在jetson nano 中输入命令 ls /dev ,查看驱动板是否正常连接jetbot ,是否有发现ttyACM0,ttyACM1设备【其中ttyACM0 用于与主板通讯,ttyACM1用于与雷达通讯】
ls /dev
- 输入以下命令,添加串口用户组,否则没有权限操作串口
ls -l /dev/ttyACM* #查看串口用户组为 dialout id -Gn #查看当前用户所在的用户组,第一个为当前用户 sudo adduser jetbot dialout #将当前用户加入到串口所在的用户组dialout
步骤3、重启jetson nano并开启节点
- 输入命令 sudo reboot 进行重启,密码是jetbot【注意:重启之后才可使命令生效,且当没有串口权限时,开机后机器人底盘节点会一直报错】
sudo reboot #重启jetson nano
- 重启之后,等待两次蜂鸣器提示后,按“R”重新登录,输入密码:jetbot。
- 打开终端,输入以下命令启动机器人主节点【roslaunch 命令会自动启动主节点,这里单独启动主节点是为了一直都保持与虚拟机连接,否则关闭launch 后会关闭主节点,导致虚拟机失联】
roscore #启动机器人主节点
- 按“Ctrl+Alt+t”新进入一个终端进行登录,然后输入以下命令启动机器人底盘节点
roslaunch jetbot_pro jetbot.launch #启动机器人底盘节点
步骤4、打开Ubuntu虚拟机终端,查看话题
- 打开Ubuntu虚拟机终端,在终端输入以下命令
rostopic list
- 运行代码后若出现下图所示内容,则说明多机通讯成功;若无法连接,则重新检查上面步骤中ip和hostname是否填错或者是否连接同一WiFi
- 其中:
- /cmd_vel 为机器人控制机器人运动速度话题
- /imu 为机器人IMU话题
- /motor/* 四个话题表示左右电机的实际编码速度和设置速度
- /odom 为机器人编码里程计
- /odom_combined 为机器人融合里程计,由编码里程计融合IMU数据所得。