Ubuntu下安装和使用dronecan_gui_tool,DroneCAN/UAVCAN调试器,USB-CAN模块

哈喽大家好,我是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 updatesudo 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-pippip3 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 cansudo modprobe can-rawsudo modprobe can-gwsudo modprobe slcansudo modprobe vcan完成socketCAN的相关设置,然后在命令行中执行ls /dev/tty*命令查看相关的硬件设备信息,其中/dev/ttyACM0/dev/ttyACM1这两个设备就是连接到电脑的Pogo-DroneCAN调试器,然后在命令行中依次执行sudo slcand -o -c -s8 /dev/ttyACM0 can0sudo slcand -o -c -s8 /dev/ttyACM1 can1sudo ifconfig can0 upsudo 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外设之间的连接与调试。

那么这期视频就到这里了,记得点赞投币收藏和关注,我们下期视频,不见不散!

相关推荐
2401_8576100311 分钟前
Spring Boot框架:电商系统的技术优势
java·spring boot·后端
杨哥带你写代码2 小时前
网上商城系统:Spring Boot框架的实现
java·spring boot·后端
camellias_2 小时前
SpringBoot(二十一)SpringBoot自定义CURL请求类
java·spring boot·后端
背水3 小时前
初识Spring
java·后端·spring
晴天飛 雪3 小时前
Spring Boot MySQL 分库分表
spring boot·后端·mysql
weixin_537590453 小时前
《Spring boot从入门到实战》第七章习题答案
数据库·spring boot·后端
AskHarries3 小时前
Spring Cloud Gateway快速入门Demo
java·后端·spring cloud
Qi妙代码4 小时前
MyBatisPlus(Spring Boot版)的基本使用
java·spring boot·后端
宇宙超级勇猛无敌暴龙战神4 小时前
Springboot整合xxl-job
java·spring boot·后端·xxl-job·定时任务