哈喽大家好,我是Mokel,这是DroneCAN调试器系列视频的第3期。这期视频我们将介绍在Ubuntu下安装和使用dronecan_gui_tool的内容。
和上期在Windows下安装和使用dronecan_gui_tool的视频一样,我们将使用两个Pogo-DroneCAN调试器互连来演示测试dronecan_gui_tool的使用,你可以在淘宝搜索"DroneCAN调试器"找到这个商品,也可以通过评论区置顶链接(item.taobao.com/item.htm?sp...) 直接跳转商品,调试器默认为slcan固件,同时支持使用QGC更新固件,我将在后续视频里分享利用QGC更新固件的过程,并介绍官方提供的几个可用固件。
Ubuntu下我们将直接通过命令行安装dronecan_gui_tool上位机,但在这之前,你需要将apt源更换为国内源,亦或者你可以选择使用稳定快速的网络代理,在这里我们将更换为下面的清华源:
ruby
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security multiverse
打开Ubuntu的终端,cd /etc/apt/
进入文件夹下,ls -al
显示文件夹的所有内容,可以看到有一个sources.list文件,通过cp sources.list sources.list.back
命令将该文件备份一下,然后sudo vim sources.list
打开该文件,将原有内容全部注释掉,然后将上面的清华源复制粘贴到该文件,随后:wq
保存并退出该文件。
更新了sources.list文件后,依次执行sudo apt-get update
和sudo apt-get upgrade
命令更新下载源;更新完成后,在命令行中执行sudo apt install can-utils
命令下载can-utils工具集,我们将使用该工具集来与linux下的socketCAN交互,由于我已经安装过了can-utils工具集,所以这里提示已经是最新版了。
接下来,我们需要先通过pip在命令行中安装dronecan_gui_tool上位机,理想情况下,你的Ubuntu应该与我的一样,最低为Ubuntu20.04 LTS版本,因此系统自带的python版本为3.x系列,比如我这里是3.8.10,如果你的Ubuntu系统的python版本较低,推荐你更新为python3.x系列;另外一方面,如果你之前未安装过pip,或者你已经很久没有更新过pip了,那么你需要依次执行sudo apt install python3-pip
、pip3 install --upgrade pip
安装和更新pip。
完成了pip的安装与更新后,我们就可以来安装dronecan_gui_tool上位机了,在终端中执行sudo python3 -m pip install dronecan_gui_tool dronecan -i https://pypi.tuna.tsinghua.edu.cn/simple
命令安装dronecan_gui_tool上位机,注意 -i 使用清华源安装;在安装过程中,你可能会遇到一些报错导致安装失败,由于我无法枚举所有可能出现的问题,所以在这里我仅介绍我遇到的一个问题,就是在安装过程中一直卡在pyqt5这个依赖的安装环节,并最终抛出相关报错;此时你可以先通过pip3 install pyqt5 --config-settings --confirm-license= --verbose
把pyqt5安装好,但你可能会遇到pip提示不存在--config-settings的报错,此时你就需要更新一下pip,所以我们刚刚才提前更新了pip;关于pip安装pyqt5卡住的问题,你可以查看stackoverflow的questions了解更多信息:stackoverflow.com/questions/7... 。
安装完成后执行sudo dronecan_gui_tool
打开上位机,注意使用sudo执行,避免dronecan_gui_tool出现没有端口读取权限的问题;可以看到,dronecan_gui_tool上位机正常打开。
然后我们关闭已经打开的droncan_gui_tool上位机,先将两个Pogo-DroneCAN调试器的GH1.25口通过一根双头反向端子线连接在一起,然后将调试器通过TypeC线连接到电脑上,你应该还记得我们在第2期视频中提到在Windows下直接使用dronecan_gui_tool上位机连接Pogo-DroneCAN调试器时需要依次将调试器连接到电脑,现在我们是在Ubuntu系统下直接连接调试器并通信,不再受到此约束。
重新在命令中执行sudo dronecan_gui_tool
打开上位机,可以看到在Select CAN interface选项中有两个新设备,他们分别对应连接到电脑的两个DroneCAN调试器;选择第一个设备,然后点击下方那个的ok按钮进入dronecan_gui_tool上位机主页面,然后点击左上角的 √ (对勾)设置local node ID,比如我这里设置为127,再点击右下角的小火箭,dronecan_gui_tool上位机会识别到我们已经连接到电脑的DroneCAN调试器,它的节点ID为127。
新开一个终端,在命令行中执行sudo dronecan_gui_tool新开一个上位机界面,此时在Select CAN interface选项中选择第二个设备,然后点击下方那个的ok按钮进入dronecan_gui_tool上位机主页面,在新开的dronecan_gui_tool上位机主页面里,注意这几个情况,首先是左上角的本地节点ID,它需要与刚刚的本地节点ID不同,比如刚刚的本地节点ID为127,那么这里可以更改为126,然后点击 √ (对勾)应用本地节点ID;然后是这边的online nodes,可以看到,它已经识别到了我们刚才的127节点;最后点击一下右下角的小火箭,可以看到已经成功地识别到了我们的127和126节点。
回到127节点的上位机主页面中,可以看到online nodes有126节点,右下角同样识别到了126节点和127节点,这意味着两个DroneCAN调试器都成功被上位机识别了,且两个调试器之间也成功建立了连接。
接下来,我们通过dronecan_gui_tool的工具来测试一下通过这两个DroneCAN调试器的CAN数据的收发、转换是否能够正确执行。
在127节点的dronecan_gui_tool主页新建一个执行器面板(actuator panel),它位于Panels -> Actuator Panel下,将其修改为我所演示的设置,具体是:value值分别为0.1、0.2、0.3、0.4,ID值分别为0、1、2、3,并且勾选四个Enabled,可以看到在Generated message中显示了完整的数据内容,如果有需要你可以点击Pause暂停数据的发送,再次点击则恢复数据的发送。
然后在126节点的dronecan_gui_tool主页新建一个bus monitor,它位于Tools -> Bus Monitor下,点击左上角的摄像头icon开始捕获数据(start capturing),可以看到数据在持续地刷新,随机选择一条uavcan.equipment.actuator数据,它的数据详情会显示在下方, 可以看到,126节点收到的数据与127节点发出的数据完全一致。
也就是说,dronecan_gui_tool上位机向127节点DroneCAN调试器以slcan协议发送的CAN数据,经过127节点调试器转换为dronecan协议数据并发送给126节点DroneCAN调试器后,126节点调试器再将dronecan协议数据转换回slcan协议数据并回传给dronecan_gui_tool上位机显示,经过一个完整的发送、转换、传递、转换、回传环节的收发数据完全一致,这意味着DroneCAN调试器正确地工作了。
并且,你可以注意到,发送数据的DroneCAN调试器的呼吸灯的闪烁频率更快,这里的表现情况与我们上一期在Windows下安装和使用dronecan_gui_tool的视频中完全一致。
至此,可以说,我们已经基本完成了Ubuntu下安装和使用dronecan_gui_tool,并利用两个Pogo-DroneCAN调试器互连来演示CAN数据收发的内容,但目前,我们还没有使用上socketCAN,回到刚才的Select CAN interface的界面,我们会注意到,对应两个DroneCAN调试器的device是以串口的方式被dronecan_gui_tool识别的,我们可以使用can-utils工具集将它们封装为socketCAN网络can口提供给dronecan_gui_tool或者代码使用。
在命令行中依次执行sudo modprobe can
、sudo modprobe can-raw
、sudo modprobe can-gw
、sudo modprobe slcan
、sudo modprobe vcan
完成socketCAN的相关设置,然后在命令行中执行ls /dev/tty*
命令查看相关的硬件设备信息,其中/dev/ttyACM0
和/dev/ttyACM1
这两个设备就是连接到电脑的Pogo-DroneCAN调试器,然后在命令行中依次执行sudo slcand -o -c -s8 /dev/ttyACM0 can0
、sudo slcand -o -c -s8 /dev/ttyACM1 can1
、sudo ifconfig can0 up
、sudo ifconfig can1 up
命令来创建并启动can0和can1;在创建完成后,执行ifconfig
可以看到已经有了can0和can1。
分别在两个终端中执行sudo dronecan_gui_tool打开两个上位机,可以看到,dronecan_gui_tool已经识别到了我们刚刚创建并启动的can0和can1,分别选择这两个CAN interface然后按ok进入dronecan_gui_tool主页面,与刚刚我们所演示的内容一样,在一个dronecan_gui_tool中发送CAN数据,在另外一个dronecan_gui_tool中接受并显示数据,可以看到,也是以符合我们预期的方式正常工作。
后续,你可以将其中一个调试器更换为你的DroneCAN外设并给外设通电,然后外设将持续产生dronecan协议的数据发送给DroneCAN调试器,调试器将dronecan协议的数据转换为slcan协议数据后回传给dronecan_gui_tool显示,此时你就可以根据外设的实际数据进行相关开发调试工作了,我们将在后续视频中演示测试DroneCAN调试器与CANGPS外设之间的连接与调试。
那么这期视频就到这里了,记得点赞投币收藏和关注,我们下期视频,不见不散!