我想写个详细的,能傻瓜式跟着操作实现的教程,当然最好原理也讲讲,也是为了我日后能很好复现,也能帮助他人。
这篇文章应该是树莓派到的那天开始写的,也就是8月16日开始写的。
https://blog.csdn.net/sinat_16643223/article/details/107511110
你首先百度搜ubuntu mate 18.04就可以发现ubuntu mate的官网,点进去
然后我们点上面的download他会让你选择平台,那我们选择64位的树莓派。
https://ubuntu-mate.org/download/arm64/
ubuntu mate 18.04就这一个版本下载,所以不用担心上面18.04.2以为还有.1什么的。可以看到18.04支持到2021年
https://ubuntu-mate.org/download/arm64/bionic/
然后我直接点direct download也就是直接下载,其他选项我也看不懂什么意思。
https://ubuntu-mate.org/download/arm64/bionic/thanks/?method=direct
如果没有弹出下载窗口你可以再点一下下面第一个链接。这时就会弹出下载了。
当然实际官网下载速度非常慢,所以我还是选择从别人的网盘那里下,但是官网至少让我们知道官方的镜像是什么样子的。
https://blog.csdn.net/jacob210/article/details/104401264
2 安装Ubuntu 18.04 Mate LTS
(1)下载并写入
下载Ubuntu 18.04 Mate LTS官方镜像文件:https://ubuntu-mate.org/raspberry-pi/ubuntu-mate-18.04.2-beta1-desktop-arm64+raspi3-ext4.img.xz,注意这个是64位的系统镜像,下载完后解压.img供写入。
为方便各位小伙伴下载,这里提供百度网盘下载地址:
链接: https://pan.baidu.com/s/1GU6xMtFL2-0YPjQ8PTJR6A 提取码: ew43
注意下载好后还要解压才能得到.img的镜像文件。
https://www.cnblogs.com/Biiigwang/p/11735890.html
烧写我看亚博的教程这个用的是Win32DiskImager,我直接百度Win32DiskImager可以看到它的官网,然后直接在它官网下载了
点download(用代理而且是全局模式下好些,PAC模式下下载也很慢,可能默认它没有用外网)
下载好后直接点击安装即可。
https://sourceforge.net/projects/win32diskimager/
https://www.yahboom.com/build.html?id=2102&cid=203
我的,(我没有先用亚博教程里说的用一个专门软件格式化U盘,因为我这是新的SD卡,空的,所以我选择直接烧了)
点写入后正在烧写
烧写成功会显示
实际SD卡插入树莓派上电开启之后,是会有安装步骤的,和我之前搜的树莓派装Ubuntu mate 18.04的教程一样,并非上电后就可以直接用了,那些人真的这些没写全。弄得我以为掌握了那种不需要装系统安装的方法。
https://www.cnblogs.com/Biiigwang/p/11735890.html
实际装下发现还是很简单的,没有实际装Ubuntu那样要上面分配磁盘空间,整个步骤非常简单,几步完成,选择语言,选择键盘,选择时区,设置用户名密码,非常简单和快。所以这个过程不用担心不会。密码我就设为1,为了方便到时候无人机上操作,要是输很长密码很麻烦。语言我选择的中文,可以选中文。
有线鼠标键盘插上就可以用,和我当初的DE1-SOC一样
弄好后等它几分钟安装安装好
如下所示,是有浏览器,也可以手动选择wifi的
然后我现在再给树莓派插上网线。
在我的电脑上访问192.168.0.1,可以在路由器上看到我的树莓派已经连上了,IP地址和我在树莓派终端看到的一样,都是192.168.0.102 我ping了下百度是Ping得通的。
我发现树莓派也自带了蓝牙,也可以在图形界面设置,所以那个罗技的蓝牙键盘应该也可以用,去设置。
因为考虑到装东西还是复制粘贴命令方便一点所以我还是先把树莓派的SSH开启,VCN弄好
先开启SSH,这个按照亚博给的官方教程就OK
https://www.yahboom.com/build.html?id=1809&cid=203
或者这个 https://www.yahboom.com/build.html?id=1810&cid=203
注意的是我们选择SSH之后,要按enter,进入到下面界面,然后移动选择yes再按enter之后这样才行,不是再这个界面就完了,这个界面虽然写着enable/disable,但是看不出什么,这是亚博教程没有写到的地方。
SSH配置好后会显示,这也说明官方镜像默认是没有开SSH的。
然后我要在我电脑这边设置 SSH
SSH工具我记得有很多,我当初在诺的时候有一个,我Ipad上也有不少。树莓派我看这么多教程都是用的Putty,我觉得用其他的应该也没关系,我以前在诺用的似乎是这个
亚博官方的教程也是用的putty
https://mp.csdn.net/console/editor/html/108032651
我在我网盘搜了下似乎是的,是的,下下来还可以用。
我实际下了以前的secureCRT,发现有些操作不熟悉,所以我还是准备去下putty试试看
https://www.chiark.greenend.org.uk/~sgtatham/putty/
进去官网这样(注意全局代理,不然官网可能不好打开),我直接点download it here
我点windows64位的下载(注意全局代理,而不是PAC)
下载好后正常点击安装就行。
装好后似乎没出现桌面图标,但是可以去开始菜单里找到
点开是这样
我把service ssh reatart之后就会这样
那我先专门解决一下这个问题。
树莓派开久了真的非常非常非常非常烫!!!!!!!
我刚刚还发现树莓派有限连路由器的时候,ping得通百度,把有线拔掉,无线连路由器,确定连上了,我上192.168.0.1看到了的。而且树莓派桌面会显示成功连接英文的,并且那个wifi名下面会有个dicconnect,意思是你可以选择断开连接,所以是连上了的,但是这样无线连的时候是树莓派ping不通baidu,而且我的笔记本也ping不通树莓派。
接wifi时看ip地址ifconfig之后去看wlan而不是第一个
我发现亚博的教程也说了这个
https://www.yahboom.com/build.html?id=1810&cid=203
我决定先装VNC试试
树莓派上命令行开启VNC功能的方法和开启SSH一样
完全参照这个教程就OK,非常简单。
https://www.cnblogs.com/gghy/p/11625139.html
和这个
https://shumeipai.nxez.com/2018/08/31/raspberry-pi-vnc-viewer-configuration-tutorial.html
还有我发现让树莓派睡眠后怎么弄都唤醒不了,只能强行断电关机了
我确实发现Ubuntu meta 18.04根本没有上面教程说的VNC选项!!!!估计还得自己装
https://blog.csdn.net/wzl19910916/article/details/95937527
我刚刚成功解决了SSH的问题,我应该是找解决VNC问题的时候不小心找到的,似乎这种方法我之前看到过但是似乎没注意,觉得应该不是吧,现在试了下真的解决了,只是注意它让你输密码的时候你直接按enter跳过,别真去输密码就好。
(像我之前按看的这个 https://blog.csdn.net/qq_42260493/article/details/106318028
以后再遇到问题,网上各种方法都试试)
我为什么相信这种方法了呢,因为我按照他说的去查看ssh的status也就是状态,显示的是和他一样的问题。
确实是搜VNC的问题是点进去的
靠的是这个
https://www.cnblogs.com/devilmaycry812839668/p/12826566.html
我决定截图保存
我刚刚重启了树莓派,树莓派上面都没去操作直接ssh,也OK。(当然这之前通过登录路由器管理界面查看树莓派IP)
用户名是 maxi 密码是 1 putty的操作完全就可以参考亚博给的教程就OK了,很简单的几步。
说明现在ssh是OK的了,开机也是自己启动的,我现在解决VNC的问题就直接ssh上面解决就可以,不需要去那屏幕那里了。
不过我发现从树莓派端ping电脑端还是ping不通
确实很多东西实际做起来没那么简单,纵然别人给了教程,但中途依然很曲折。
我VNC目前地问题是连不上,感觉树莓派那边应该是装好了的
我发觉,在解决ssh连不上的问题时和解决vnc连不上的问题时,都用到了查看服务状态,service ******* status 这才是深入本质地查找原因,这才是专业。
结果一看我连vncserver的服务都没有起来,虽然你运行了那些命令
https://blog.csdn.net/qq_24955485/article/details/78859759
似乎客户端不是直接输入IP地址,而是IP:1
https://www.laozuo.org/15476.html
https://www.ubuntu18.com/install-vnc-server-ubuntu-18/
正常输入vncserver之后应该是这样
https://www.jianshu.com/p/b73f358849de
不过好像从这个教程看我的输出又是对的
https://cloud.tencent.com/developer/article/1350304
我忽然不知怎么就好了!!!!
难道是因为我装了?
我好像还把密码设为123456
这次我是这样的
输入vncserver
它这里说启动了3
于是我在VNC viewer输入192.168.0.104:3 这回真的连上了。之前连不上也可能是因为我IP地址错了?
注意密码肯定是要设置的,我之前似乎没有设置密码,后来才设置的?我看你是参照某个教程的时候弄好的?好像是第一期输入vncserver的时候它会让你配密码。
https://blog.csdn.net/chenguang_work/article/details/86241361
https://blog.51cto.com/13526376/2050501
https://www.jianshu.com/p/1acb3a0451bd
这里好像也说了。
灰屏的问题用这个解决。
https://blog.csdn.net/qq_32384313/article/details/77533012?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-7&spm=1001.2101.3001.4242
那我现在解决灰屏的问题,主要是我现在vi去编译一个文件,你移动光标它打出的都是B,我得先解决一下这个问题。
http://www.blogjava.net/leisure/archive/2011/09/13/358569.html
https://www.cnblogs.com/jev-0987/p/12885422.html
我是按照第一个方法弄的,装了vim 然后用vim编辑OK了。当然用vi命令编译也OK了。
一些VNC命令我觉得需要注意的地方
https://www.cnblogs.com/maocaoliu/p/3585132.html
https://www.jianshu.com/p/9192835c6a84
VNC开机启动的问题可以这么解决
https://blog.csdn.net/wyy_sunshine/article/details/41778617
报这种错误的原因好像是我树莓派那边已经在用图形界面就是用显示屏了,我现在把显示屏拔掉了。
https://www.cnblogs.com/leetom/archive/2010/04/29/2845848.html
https://www.cnblogs.com/xiaochina/p/5823500.html
我最后成功了,按照这个教程来的 https://www.codeleading.com/article/3402706455/
和之前相比关键就是多加了一句
unset DBUS_SESSION_BUS_ADDRESS
这个教程表面上看和之前 https://blog.csdn.net/qq_32384313/article/details/77533012
差不多,实际有两句话不一样!!!!,正是加了这两句话整个就OK了
整个这么多个过程我真的是不断改这个文件,而且可以清楚看到加上一些话减去一些话所实际表现出来的现象,让我确定,最终控制出图像的关键就是这个文件。
似乎和这看到的有一点关系。
http://blog.sina.com.cn/s/blog_60697c7d0100okqj.html
关于VNC的总结我写到了下面这篇博文里
https://blog.csdn.net/sinat_16643223/article/details/108059478
关机如果是用sudo shutdown命令的话,你7点53输的命令,它会等到54才关机,会等一分钟(60秒),不是立马关机
shutdown -h now 现在立即关机
shutdown -r now 现在立即重启
sudo shutdown命令后现在看路由器界面确实没有树莓派了。当然我树莓派还没断电,我估计下次得线断电再上电它才启动。
再次上电时,没有显示屏了,看它的红灯,等到它的红灯不闪常亮的时候就应该代表它启动好了。这是看路由器可以死hi可以看到树莓派的IP地址的,当然此时树莓派和路由器是网线相连。
然后先用putty ssh,登上,用vncserver命令开启vnc服务,再用vncviewer连,一切都OK,说明关机,断电,上电开启,这一系列没有问题。(看能不能弄成vnc开机自启动)
=====================================================================================
下面进一步进发,装ROS MAVROS librealsense realsense-ros vision_to_mavros
可以参考古月的ROS21讲里的ROS安装视频
https://blog.csdn.net/sinat_16643223/article/details/107738083
https://www.bilibili.com/video/BV1zt411G7Vn?p=5
实际操作发现古月的这个暗转教程有坑的,他那添加的是Ubuntu的官方源不是国内的镜像源!!!!!!说都没说!!!!!看书发现他写在书上,我看视频里他后来那都是阿里云的链接以为他给的源就是国内的,实际不是!!!!
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
果然换了中科大的源速度立马快N倍,而不是几kb,不然一个update半个小时都没完。
实际下ROS时也是去中科大的源下了,只需要把古月的第一句改为上面那一句。
下ROS用家里wifi太慢了我最后选择树莓派连我的手机热点,而且电脑和树莓派同时连手机热点。你在树莓派终端上ifconfig得到树莓派的wifi的ip地址之后(也是192.168..),是可以在自己电脑上ssh的。用自己手机热点就飞快多了。我感觉你到时候树莓派装在无人机上,和电脑wifi相连,也应该可以手机热点。当然用手机热点这也是古月的ROS安装视频里面说了提醒我的。我估计装librealsense的时候用手机热点也好一些。
sudo apt install ros-melodic-desktop 这步连手机热点从下载到安装当然都是它自动进行用了半个小时左右,很难想象不用热点是上面后果,靠家里wifi几KB每秒的速度。还有中途出现一个说什么让你重启的,我选了yes,但实际它也没有重启又继续运行下去了,不知道什么意思。没见别人说有这一步骤,但是似乎也没有影响,选个yes然后它又继续正常安装了。中途没有任何报错,之前用家里wifi下的时候还报错过上面连不上服务器估计是网太慢了,总之用手机热点弄没有任何问题。
sudo rosdep init 这个运行后显示,可能是因为古月装的是desktop-full 而我装的是desktop,少了一些东西?
于是我先跳过rosdep这两个命令,直接去设置环境变量,
运行完设置环境变量那两个语句,然后就可以一个是先输入ros再双击TAB键可以看到ROS的一些命令行工具(如果环境变量没有设置好,这些系统是找不到的),再一个是直接输入roscore命令,可以启动ROS。我已经弄成了。自此ROS就算装好了,
我这里roscore后输出的信息和古月的ROS书上写的一样
古月的最后一个命令,不是必须的,到上面为止ROS 已经装好了,古月的最后一个命令,是说为了方便日后的开发,可以装一下。不过我发现这步也是ROS官方教程要求的,那我也装上吧。
上面没有弄的rosdep我发现ROS的官方教程有些,我觉得我还是有必要把它弄一弄。
我现在知道为什么我那里说找不到rosdep,官网现在的教程是要你自己先装,古月的那个可能已经过时了,古月的那个中途弄rosdep是和ros kinetic的教程一样,kinetic的教程里是这样的,但是melodic的教程里是放再最后,而且要自己先安装。
http://wiki.ros.org/melodic/Installation/Ubuntu
不过我在运行
sudo rosdep init
这个命令显示报错,说一个Github的网站连不上,网络原因么?我此时连的热点,莫非需要代理?
网上搜了下这个问题很常见,确实需要代理。考虑到后面装Librealsense应该也需要代理,所我先把终端代理弄好。
https://blog.csdn.net/Bryantaoli/article/details/104730474/
我实现终端代理后,再运行sudo rosdep init就成功了,没有说那个网站连不上了,
当然实际运行是 sudo proxychains rosdep init
不对,好像还是不行,我试着直接浏览器打开那个网址根本打开不,可能就是那个网站的原因!!!!!网址打不开啊,我自己的笔记本开了代理的,这样浏览器都打不开肯定有问题。
我过了几个小时再这么弄又好了!!!现在是凌晨0点52分
看这前后两个同样地命令,一个失败,一个成功,当然前后隔了几个小时,中途打电话去了。还有有没有方法能导出这些记录的?我在这篇博文写了 :https://blog.csdn.net/sinat_16643223/article/details/108091479
然后我进一步运行最后一个命令 rosdep update 直接运行也是报错了,连不上,所以我加为 proxychains4 rosdep update 然后就一切顺利,全是ok,弄完了。看来终端代理真的非常重要!!!!!!
下面这个截图非常清晰地反应了这个过程。
至此我的ROS安装应该就真正完成了!!!!
这个命令我之前运行了,而且ROS melodic的教程是把它放在rosdep之前的,我应该照着做了,也看到命令行记录李敏又这个命令了,
这里我再次强调,跟着ROS melodic的官方教程来,你会发现连古月的ROS的教程可能都不对,原本你这么信赖的,当然他帮助了我很好理解里面的安装步骤,再去看官方的安装步骤好些,直接看官方的安装步骤可能也不太好,有的可能不明白。
http://wiki.ros.org/melodic/Installation/Ubuntu
8月19日凌晨0点58分,
所需要的命令我放在这(全程连手机热点,按照ROS melodic的官方教程来http://wiki.ros.org/melodic/Installation/Ubuntu
部分步骤需要终端代理(两个加了proxychains4的,如果加了代理不行可以过一阵子再试试,可能就好了,终端代理的方法我写在另一篇博文里了 :https://blog.csdn.net/sinat_16643223/article/details/108086672)
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-melodic-desktop
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
proxychains4 sudo rosdep init
proxychains4 rosdep update
但是我树莓派要确定装的是ROS的哪种。首先参考我这篇博文:https://blog.csdn.net/sinat_16643223/article/details/107813134
由于我看到APM的那个T265树莓派的视频里面看到他们用了rviz,所以我觉得装destop 不装destop-full,另外有个树莓派教程也是装的desktop。
https://blog.csdn.net/sinat_16643223/article/details/108041713
附上一张我现在桌子的图(8月18日)
我现在想接着装MAVROS
我首先看了我之前写的这篇博文里说的ZN无人机课程他们的安装方法
当然注意一下我们用的是melodic的ROS,所以不要单纯直接复制粘贴命令,把kinect改为melodic应该,
然后我又去查了下MAVROS官方给的安装方法,我先去了wiki,里面没有,跳转到github,首页也没说,但我看到了这个
点进去了isntallation instruction 感觉和ZN无人机的教程说的一样,我感觉ZC无人机用的TX2也是ARM平台,可以直接apt不用源码编译,我觉得树莓派应该也不用源码编译。
https://github.com/mavlink/mavros/blob/master/mavros/README.md#installation
APM的官方手册也有给,和MAVROS官方的一样。
https://ardupilot.org/dev/docs/ros-vio-tracking-camera.html#ros-vio-tracking-camera
https://ardupilot.org/dev/docs/ros-install.html#ros-install
应该只用看第一部分就可以了,后面两个命令应该是针对其他的,如桌面版的它建议装RQT,我忽然想起来他们讲ROS的时候说到过RQT,似乎可以可视化看消息传输?我暂时先不弄吧,以后如果需要再弄吧。本身上面两个MAVROS安装也没说这些。
最后实际安装MAVROS我的命令是
注意是把kinect改为melodic
sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras
注意加了proxychains4,不走代理连不上这个网站,走代理一切就OK。之前rosdep也是连的这个网站,也是得走代理!!!
proxychains4 wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
官方教程里是直接执行这个sh脚本,但实际你直接执行会说权限被拒绝,所以我就先这样了。
chmod 777 install_geographiclib_datasets.sh
最后一步就是执行这个脚本。注意这步时间可能有点长,让我差点以为它卡死了,还要我先弄其他的去了,过一阵子回来看好了,OK,那MAVROS安装到此结束。
./install_geographiclib_datasets.sh
那我现在就要开始装Librealsense了。 辛亏昨天把终端代理弄好了,
虽然说之前找到了两个官方教程,但是其中librealsense给的是raspbian的安装不是Ubuntu的,我后来也才知道raspbian和ubuntu是不同的,所以我想暂且先按照APM官方手册的教程里面来弄。
https://ardupilot.org/dev/docs/ros-vio-tracking-camera.html#ros-vio-tracking-camera
我弄交换分区前用free查看内存情况。
没想到第一个命令就出问题了
我打算先按这个教程来,不为什么,可能就看着爽一些。
https://blog.csdn.net/fcts1230/article/details/107869781
https://www.jianshu.com/p/b916181ab7ab
注意它的教程里面这个名字最后一个单词打错了,应该是swap,导致直接copy这个命令,结果显示没有这个文件。
这个文件我没修改前是这样
后面加了一句修改后这样
运行这个命令时有点报错,但我觉得影响不大,本身只是一个更新命令。
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
这篇教程感觉各种注意的细节都写到的(就是我在其他教程看到的) 一些编译选项啊等等的 编译了3隔小时是哪个步骤。
编译中,是可以看到百分比进度的,我是下午一点半开始的大概。
2点半
一个半小时了,才29%
5点半的时候我来看它显示装好了。
装好后,下一个就是这个命令,,注意编译好后你是处于build文件夹下,你要先cd .. 然后再运行下面这个命令才是,这样你才能看到scripts文件夹。
我自作聪明跑到scripts文件夹下直接执行这个setup_udev_rules.sh脚本,这样会报错,直到我退出这个文件夹,老老实实执行复制粘贴这个命令执行就OK了。而且这个命令执行报错,你下一步去图形界面。终端执行
realsense-viewer
那个realsense viewer会显示出来但是会报一个udev的错误,直到我正确执行了上面那个语句之后,realsense viewer就没有报错了
这是那个setup_udev_rules.sh脚本没有执行成功,强行运行realsense-viewer,报错的viewer
这是OK了的
我树莓派识别不到T265,我看了下别人也有这种情况
讲道理这里也说了librealsense装好了,插上T265就可以像windows那样了。但我的realsense viewer确实没有识别到设备。我的T265插到windows,realsense viewer立马就能识别到
会不会是因为我先装了ros?要不要我吧realsense-ros也装好再看看?
还有蓝牙鼠标插树莓派就能立马用。
https://ardupilot.org/dev/docs/ros-vio-tracking-camera.html#ros-vio-tracking-camera
https://zhuanlan.zhihu.com/p/95724383#ref_1
装realsense-ros我继续跟着那个人的教程弄吧
https://blog.csdn.net/fcts1230/article/details/107869781
运行catkin_init_workspace这个命令时出现问题靠下面这个解决的
https://www.cnblogs.com/fuhang/p/9781739.html
用下面这个方法时注意把kinect改为melodic
运行到catkin_make clean命令时,出现cmake的报错,我在想是不是因为cmake的版本不对?之前也看到一篇文章谈这个
https://blog.csdn.net/sinat_16643223/article/details/107519788?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159783515219195188334748%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=159783515219195188334748&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v1~rank_blog_v1-1-107519788.pc_v1_rank_blog_v1&utm_term=cmake&spm=1018.2118.3001.4187
于是我反过头尝试用二进制的方法安装realsense-ros,居然可以安装!!!!!当初我在笔记本上面可是没弄成的
他后面还有个装3D图形库的我就暂时不装了,我感觉树莓派应该用不上。
这样装好后我运行这个命令启动节点真的能启动起来。
然后网盘运行了APM官方手册说的 roslaunch realsense2_camera rs_t265.launch 这个命令,而且在这之前把T265插上了,
是显示节点运行成功的
然后我用rostopic list查看了当前所有消息
而且用rostopic echo /tf 查看了/tf消息,可以看到T265的数据是实时读取到了的,而且我摸到T265有些发热了。
这也是APM官方手册教我这么看的 rostopic echo 打印消息的命令就是从它这里学到的。
所以我感觉之前那个realsense viewer没有识别到没有关系。
我可以清晰地看到我把T265举高,Z有变化,往前,X有辩护啊,左右移动,Y有变化,很明显,而且现在没有出现我把T265放在那静止不动它就断开连接了没有,/tf消息一直在打印一直在微小变动着,说明T265一直在传输数据,
那目前还剩下最后一步,就是装,那我们回归APM的官方手册,因为那个之前参考的个人教程已经不写这个了。
可惜又是在这一步报错!!!cmake的错。
catkin_make
似乎版本什么的也需要注意?
受到下面这个启发,我新建了一个文件,再去下载编译,似乎就没有报错了,而不是和之前realsense-ros的文件夹一起...
http://www.manongjc.com/article/44706.html
现在似乎是在正常编译了可以看到进度。似乎这个编译还很占CPU?弄得树莓派还比较卡?算了,等等把,可能树莓派编译都是比较慢的,
确实因为内存的原因被树莓派kill掉了,可能因为我重启了之前的交换内存没有了,我再弄一遍那个交换内存。看来重启是可以让那些交换内存消失的,那就不用担心了应该。你通过fre -m查看就知道那些交换内存还在不在。
重启后
先按照之前给Librealsense弄交换内存的方法重新弄一遍
然后再来弄vision_to_mavros
运行catkin_make遇到之前同样的问题,用之前同样的方法解决
果然这回一分钟左右就编译完了,不像之前卡再25%,估计有个把小时,最后被系统kill掉了。弄个交换内存真的有用。
这样我的vsion_to_mavros也装好了,没有出现任何编译错误,
综上我感觉就是首先装Librealsense感觉没用到代理,第二个装vision_to_mavros需要交换内存,当然你装完librealsense之后不重启继续装 vision_to_mavros就OK了。还有realsense-ros通过源码编译的方式安装我这似乎有些问题,目前没有解决,最后通过apt二进制方式安装的,可以安装成。
现在是8月19日晚上九点半
我现在来调飞控的一些参数,根据APM官方手册是
我看有重置默认值选项
我第一个修改这个
直接双击那个数字就可以修改,然后点右侧的写入参数
修改后
这个原本就是0 ,不用改
再告诉一个省力地方,最后三个参数,其实你搜COMPASS_USE时就三个都一次性搜出来了,可以直接三个都改了不用搜三次,上面我是为了严谨所以弄成三次截图修改,
注意是在哪里找到这些参数,然后在右边搜索下面方框粘贴上参数名称它就会自动搜索出来。
这样我参数也修改完了。
下一步就是要运行起ROS那三个节点了。
本身之前做个项目的初衷是简历上没个高级点的项目看不过去,之前也是定的20号做出来。
APM官方文档说这一个launch文件可以一次性把三个节点都启动起来,我看了下它launch文件的内容,确实是的。
等我把树莓派和pixhawk连接起来,用苍穹四轴给的先,pixhawk接telem2口,中间是一个USB转TTL模块,树莓派是普通的USB口 ,再
用那个launch文件一次性启动三个节点,然后通过地面站看看飞控有没有实时接收到T265的位置数据,查看方法APM官方手册也说了,按ctrl+F
这三个节点只有T265地节点可以正常启动,其他两个都报错
MAVROS的 roslaunch mavros apm.launch 报错
在这个确实就之前关注的那个fcu_url,它找不到飞控,而launch文件里面默认是写的 /dev/ttyACM0 @ 57600bps 实际我飞控最后通过USB插的树莓派的那个口应该不是这个。
我实际去dev文件夹下看了下
我感觉应该是tty这几个
着似乎可以用lsusb查看对应起来,你先拔掉USB,看下lsusb,再插入那个usb,再用lsusb查看下,就直到那个多的就代表那个我的那个USB了
我接飞控的USB就是我弄成白色的那部分。
我发现直接看dev文件夹下的变化更明显,注意
比而不会找dev文件夹啊,先sudo su 再两次cd ..退到根目录下,这样才能看到dev文件夹。
多了个ttyUSB0,那我现在把命令改改试试,波特率我用他们的57600,毕竟他们也是APM,没用苍穹四轴的,可能苍穹四轴的没用ROS?后面连通了,也说明57600这个波特率是对的!
roslaunch mavros apm.launch fcu_url:=/dev/ttyUSB0:57600
果然这回通信成功了,我可以看到USB转TTL上面的灯在狂闪说明在传输数据!!!!!!!!
参考:https://blog.csdn.net/sinat_16643223/article/details/107875576
OK,MAVROS节点的问题搞定了。
遇到这种问题还是以前的老解决方法。我也不知道ROS为什么总是这样,似乎换个用户就会这样?因为你之前装软件在其他用户下装的?
https://www.cnblogs.com/fuhang/p/9781739.html
source /opt/ros/melodic/setup.bash
现在来解决vision_to_mavros这个节点。
它是报这样的错误,我怀疑是不是我建的那个文件夹系统找不到?要添加环境变量?我试试
把那个文件夹名字改回来重新编译。
我那样弄了发现还是这样的错误。
网上搜了下确实是因为不包含路径导致的
https://blog.csdn.net/ideallic/article/details/52778621/
https://blog.csdn.net/zhelijun/article/details/88868993
https://zhuanlan.zhihu.com/p/94971196
https://www.cnblogs.com/rjjhyj/p/11457766.html
只需要 多运行一个命令,在catkin_make折后,同一文件夹下。(但是现在又有个疑问就是有的包是通过apt安装的呢?还有每次换个终端就识别不出每次都要这么弄一遍么,感觉挺麻烦啊,我后来换个终端T265的功能包都也弄不了了。不对,我明白了,那些识别不出的其实都是通过源码编译安装的,比如librealsense,还有vision_to_mavros,也不对,我的realsense-ros是二进制安装的,ROS,没道理不知道啊。我弄错了,realsense的节点可以执行!!!!可能是我之前包名打错了,我感觉很可能是这样。我刚刚试了下是可以的,讲道理二进制安装的应该都不会出现这个问题,MAVROS节点也是不会的对吧(其实MAVROS好像是通过一个脚本安装的具体到底是哪种安装方式我也不确定)。就vision_to_mavros是源码编译安装,所以有这种问题。现在确实就vision_to_mavros这个节点的启动有些问题,是在不行你就去它文件夹下面重新source一下,麻烦点,但肯定管用。但我还是想最终解决这个问题
我知道为什么其他终端不行了,你少了这一步,
上面教程都说了,你自己没有运行这一步而已。
我最后是用 利用$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc新窗口也可以使用
用了这个之后需要注意,可能是我在root用户下弄的,所以你在新终端的时候也得先root,这样就可以运行vision_to_mavros了,如果不root,它依旧报错,我用 export | grep ROS 查看了下环境变量,发现非root和root的环境变量不同!!!!!这就是关键所在,可能我之前添加环境变量是在root下操作的。但现在至少其他终端可以用了。
ros的一些命令也是经常换个用户就找不到了。我最开始是通过切换用户解决的,后来是用网上的source方法解决。
再使用echo命令使得环境变量在所有命令行终端中生效。最后使用export显示当前环境变量的配置信息。)
source devel/setup.bash
我再运行那个roslaunch就没用问题了,不过我发现只在我编译过的这个终端可以,其他的终端运行还是报以前的错误。(新终端的问题已经解决见上面几行文字。)
现在应该三个节点都可以启动了,我迫不及待想试一试了!!!!!
那我就运行那个一次性能启动三个节点的命令
似乎还不行,因为的MAVROS节点的命令不是那个默认的。
三个节点都启动之后
我从地面站上可以看到飞控读取到了T265的数据!!!!!我移动T265可以看到X,Y,Z对应再变化说明是对的!!!!!!
打开地面站后按ctrl+F,就会跳出一个框,点击里面的Mavlink什么的,就可以看到下面这个白色小框框,找到VISION_POSITION_ESTIMATE,就可以实时查看T265传给无人机的位置信息了。这个APM官方手册里面有教
https://ardupilot.org/dev/docs/ros-vio-tracking-camera.html#ros-vio-tracking-camera
这是通过rostopic echo打印 /tf 和 /mavros/vision_pose/pose的数据
可以看到连接飞控和USB的USB转TTL模块红灯时亮着的其实是在快闪,代表在进行数据传输,
T265开久了也是会发热的。
我目前可以确定系统是可以跑通了的,还差试飞。
当然能弄出来我得感谢前几天发现的这个教程 https://blog.csdn.net/fcts1230/article/details/107869781
真的是前几天才发现的,不然我的realsense的安装确实没有头绪。
也熟悉了一些ROS基本命令感觉不错。
纪念一下,拍于当时实时数据传输的时候。8月20日凌晨0点多。
pixhawk上插的telem2口
三条命令
roslaunch realsense2_camera rs_t265.launch
roslaunch vision_to_mavros t265_tf_to_mavros.launch (往往要先sudo su ,不然也是会报找不到包和launch文件的错误)
roslaunch mavros apm.launch fcu_url:=/dev/ttyUSB0:57600 (一般每次要配合 sudo chmod a+rw /dev/ttyUSB0 这个命令使用,不然会报权限被拒绝的错误,现在似乎每次都报,之前用显示器时没这样,现在通过SSH这样输命令运行就这样,sudo su也没用,这个我下面谈到过的,只是这里说一下,往往要配合这个命令使用)
启动起来这三个节点就OK了!!!!
以前还经常说说明roslaunch没有这个命令要你安装,这种见过很多次了,都是用source那个方法解决,不过我发现最近这几次弄似乎这个情况没有出现了。但是你要清楚,这也是一个常见的可以称之为报错的现象。清楚解决方案。
当然还有些细节问题没有解决,就是换个终端,它就识别不出你这个ROS包了,很奇怪。还有它奇怪的文件结构。很多一些细节有必要弄清楚。
我刚刚把路由器也弄好了,就我那个小路由器,直接AP模式下就可以了(就是路由器一开始默认的模式,虽然说明书上说那个口是LAN口用来接外网网线的,但是确实我这么做弄成了,而且我还特意换成第二个模式,也就是网口作为WAN口,反而不行,而且说明书说了模式二电脑只能通过无线的方式连路由器,不管怎么样,模式一AP模式就可以了,就是买来可以直接用),直接网线接树莓派,就会分配给树莓派一个IP地址,这时候我电脑只需要连上这个路由器的wifi,就可以SSH远程和VNC了,VNC你不需要专门重启,你只需要把现在在用图形界面的树莓派的显示器电源拔了就可以了,然后你再远程VNC,是可以正常显示图像的。而且路由器是树莓派给供电的,感觉很完美。
这是连我的小型路由器的时候用VNC的截图。可以正常使用,流畅,不卡顿。
这是我用的路由器型号
T265的固定,我还是想自己弄一个3D打印件,我量了下,其实T265背面两个螺丝孔的中心的间距正好是5厘米 ,我再弄清楚螺丝孔的大小就应该OK了。我
需要打印的件又不复杂,就一个互成90度夹角的。,再加两个孔就完了。阿木那个固定T265的上面的孔的直径是3毫米。我量了下螺丝的头的直径是5毫米,螺丝有螺纹的地方直径是两毫米。直径3毫米的孔是可以的。
我量了下无人机配的螺丝,似乎都是这个规格大小,5毫米,2毫米。F450 F330板子上的孔也都是3毫米的。都是一个规格的。那我就按照这个规格去设计就好了。其实还好,他们大小都是整数毫米的,用个尺子可以清晰看出来。
现在你得想如何固定。这让我想起猛禽360 ,我感觉他们这似乎考虑得比较到位。
我还是先用阿木的固定的架子装好了先,感觉还可以
今天8月20日把树莓派装无人机上了,再把三个节点启动跑一次,发现一些新的问题
树莓派上电的时候不要插路由器网线,启动好了再插,这样才有ip地址。树莓派才有线连上路由器。
这样VNC似乎有点卡,真的后面变得好卡,我不知是树莓派卡还是网络问题?我觉得这点东西树莓派不至于卡呀。当然我之前看别人教程也说过类似问题。感觉我可能还是得靠TMUX,而且我发现VNC很狗血的一点就是不能复制自己电脑里的东西,这样命令岂不是只能手打了。
vision_to_mavros似乎非root用户还是识别不了,找不到ROS包 launch文件。root就可以了,不是终端问题了,对
,我看了下之前的解决记录,是这样的,那没问题,可能我后来忘了。
运行 roslaunch mavros apm.launch fcu_url:=/dev/ttyUSB0:57600 这个命令发现这种报错,本来不应该的,这不是昨天的那种报错,昨天的报错是说找不到飞控FCU,我找对了驱动文件后就OK了,今天我还特地又找一遍,就是拔下USB,对比两次的dev文件夹,可以确定依旧是ttyUSB0那个文件,后来我百度一下这个错误,真的有解答,也就是下面那个,赋予它权限,我这么做之后就OK了
https://blog.csdn.net/Lin_QC/article/details/90373992
还有 我发现这篇文章本身就写得很不错。建议看看。
有个意外发现,在mission point的地图右键可以看到这些,不知是不是因为我昨天改了一些APM的参数?
还有你现在可能可以更好理解APM官方手册里面那个地面站的测试了,你看这选项里还有起飞。
https://ardupilot.org/dev/docs/ros-vio-tracking-camera.html#ros-vio-tracking-camera
同时连有线和另一个wifi时就会有两个地址。所以即使我是通过我自己那个路由器远程它也能上网。
MAVROS节点起来那个usb转ttl模块的红灯就会快闪
树莓派会自动连接家里的wifi
mission point 里面看到我无人机往上举,z是负的绝对值变大因为它的坐标系朝下
tmux就看下面这个教程就可以了,其实那么多命令掌握几个就OK了。注意要先运行tmux命令,进入tmux,再运行下面的,不要进入终端直接运行下面命令,终端识别不了的。
5.1 划分窗格
tmux split-window
命令用来划分窗格。
# 划分上下两个窗格 $ tmux split-window # 划分左右两个窗格 $ tmux split-window -h
5.2 移动光标
tmux select-pane
命令用来移动光标位置。
# 光标切换到上方窗格 $ tmux select-pane -U # 光标切换到下方窗格 $ tmux select-pane -D # 光标切换到左边窗格 $ tmux select-pane -L # 光标切换到右边窗格 $ tmux select-pane -R
Ctrl+b o
:光标切换到下一个窗格。
Ctrl+b x
:关闭当前窗格。
http://www.ruanyifeng.com/blog/2019/10/tmux.html
还不错,现在全部起起来了(这似乎是今天第一次全部都跑通,继今天凌晨跑通之后不对,整个系统都通了,vnc应该也跑通过,不然之前那些错误怎么解决的,之前VNC似乎很卡,所以现在换tmux),开头几次有时候不知道什么变得很卡,甚至master节点都挂了,我多弄几次就好,可能需要反复起几次吧,或者重启。有时候有的节点莫名其妙地卡住或者si掉。那就多开几次。
但是我发现遥控器解锁不了,换其他模式也解锁不了。
我用遥控器解锁时地面站显示这个,我就有些不解了,compass不是全部被禁掉了么
无人机连着地面站时,解锁不了地面站会立马显示原因。这个比较好,至少你不会不知道因为什么原因解锁不了,以前你就是不知道。
我细看了下APM的原版教程,就我发现不是官方手册里的,而是官方手册参考的,我发现官方手册里还有几APM的参数修改没有写进去。下面这是原版教程的,
https://discuss.ardupilot.org/t/integration-of-ardupilot-and-vio-tracking-camera-part-2-complete-installation-and-indoor-non-gps-flights/43405
# For EKF2
AHRS_EKF_TYPE = 2
EK2_ENABLE = 1
EK3_ENABLE = 0
EK2_GPS_TYPE = 3
EK2_POSNE_M_NSE = 0.1
EK2_VELD_M_NSE = 0.1
EK2_VELNE_M_NSE = 0.1
# Similar for both EKFs
BRD_RTC_TYPES = 2
GPS_TYPE = 0
COMPASS_USE = 0
COMPASS_USE2 = 0
COMPASS_USE3 = 0
SERIAL5_BAUD = 921 (the serial port used to connect to Raspberry Pi)
SERIAL5_PROTOCOL = 1
SYSID_MYGCS = 1 (to accept control from mavros)
下面这几个是APM官方手册里面少了的,我决定把这些也改改。
我忽然发现这个是修改波特率的,它现在的是57 对应波特率是57600,正是我之前用的,现在要修改成921,对应波特率是921600,这也是苍穹四轴让我改成的波特率!!!!那我MVROS节点启动时命令里面的波特率也得改改了!!!!其实57600的波特率之前通信也OK呀。
我又暂时改回来了,因为我发现还是波特率卫57600时数据能正常传给飞控,地面站上看得到。
这个我很好奇要改为1么?似乎都没有1的选项?算了先改吧,不行再改回来。
似乎修改完后pixhawk可能需要重启才能生效,因为我刚刚直接运行起树莓派,MVAROS通信发现还是波特率57600飞控收到消息,921600飞控反而没有显示有消息,说明波特率没有改过来,那我重启试试
可是目前解锁依旧是报compass not healthy的错误。
当然至少是跑通的,再截图记录一下。
自己反复弄几次之后tmux也渐渐用得熟练了,真的是反复折腾,反复跑起来。用多了,就非常熟练,这也让我想起, 你记不住一个东西很可能是用得不多,你反复做题也是一种用,就是一种东西倒逼你反复输出,你就自然非常熟练了。英语说多了。无人机反复组装多了,用一个东西用多了,C++用多了。反复用反复用。 就想OZO你反复组装起来,反复拆,真的自然熟练了。一些
东西倒逼着你反复去用,你自然非常熟练了。你做了很多题,那种方法用了很多次,自然非常熟练了。你写代码写了很多次,也可以非常熟练。可惜你用得不多啊。反复的次数不够。
这样学东西就自然有感觉,就像恋词反复听了很多次一样。
你明显感觉到自己学到了东西自己在进步,不能单纯就靠看书理解,还需要反复。真的!!!!!倒逼自己反复输出。
对一个东西不光是会,而且要达到十分熟练,这种感觉就很不错,十分熟练的感觉很不错。