JetBot ROS AI Kit 教程四、设置变量实现多机通讯

来自Waveshare Wiki
跳转至: 导航搜索

JetBot ROS AI Kit 新手教程目录

步骤1、jetson nano 进行SSH远程登录

  • 在教程一中,我们使用外接屏幕很轻松的给jetson nano 和主机连接到同一WiFi,而且重新开机后jetson nano一般会保持与原来WiFi的连接状态,并且ip不变
  • 开启jetson nan电源,小车OLED屏会显示上次连接WiFi的ip地址
Jetbot 77.jpg
  • 下载MobaXterm软件进行SSH远程登录
  • 打开 MobaXterm,点击“Session -> SSH”,在host中填写小车显示的ip地址,回车打开终端;其中登录名和密码为:jetbot
Jetbot Image12.png
  • 【下述在MobaXterm终端的操作,我们统一称:机器人终端】

步骤2、在机器人终端配置多机通讯

  • 打开机器人终端并输入以下命令,查看jetson nano 主机的ip和主机名并且记住
ifconfig     #查看ip地址   
hostname     #查看主机名
Jetbot1.png
  • 输入命令查看jetson nano 连接的WiFi名,并使PC端也连接同一个WiFi
iwconfig wlan0     #查看WiFi名称   
Jetbot 2.png
  • 在机器人终端输入以下命令并回车,将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【如果这行被注释掉了需要取消注释】
Jetbot Image05.png
Jetbot image06.png
  • 如果 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    
Jetbot image07.png
  • 输入以下命令,添加串口用户组,否则没有权限操作串口
 ls -l /dev/ttyACM*            #查看串口用户组为 dialout
 id -Gn                        #查看当前用户所在的用户组,第一个为当前用户
 sudo adduser jetbot dialout   #将当前用户加入到串口所在的用户组dialout
Jetbot image08.png

步骤3、重启jetson nano并开启节点

  • 输入命令 sudo reboot 进行重启,密码是jetbot【注意:重启之后才可使命令生效,且当没有串口权限时,开机后机器人底盘节点会一直报错】
sudo reboot    #重启jetson nano   
  • 重启之后,等待两次蜂鸣器提示后,按“R”重新登录,输入密码:jetbot。
  • 打开终端,输入以下命令启动机器人主节点【roslaunch 命令会自动启动主节点,这里单独启动主节点是为了一直都保持与虚拟机连接,否则关闭launch 后会关闭主节点,导致虚拟机失联】
roscore      #启动机器人主节点  
Jetbot image09.png
  • 按“Ctrl+Alt+t”新进入一个终端进行登录,然后输入以下命令启动机器人底盘节点
roslaunch jetbot_pro jetbot.launch     #启动机器人底盘节点  
Jetbot image10.png

步骤4、打开Ubuntu虚拟机终端,查看话题

  • 打开Ubuntu虚拟机终端,在终端输入以下命令
rostopic list   
  • 运行代码后若出现下图所示内容,则说明多机通讯成功;若无法连接,则重新检查上面步骤中ip和hostname是否填错或者是否连接同一WiFi
Jetbot image11.png
  • 其中:
    • /cmd_vel 为机器人控制机器人运动速度话题
    • /imu 为机器人IMU话题
    • /motor/* 四个话题表示左右电机的实际编码速度和设置速度
    • /odom 为机器人编码里程计
    • /odom_combined 为机器人融合里程计,由编码里程计融合IMU数据所得。