这个帖子只是为了方便复习,网上搜资料太麻烦,总会忘记其中某一步,从而导致卡半天。
树莓派作为机载相机控制PX4,需要进入offboard模式,在上一章中完成了树莓派与PX4的连接,并且可以进行通信,可以通过树莓派查看PX4发布的话题。但是还不能进入offboard模式,运行官网的代码,同时执行rostopic echo /mavros/state指令就会发现mode模式始终不为offboard,并且无人机电机也不会转动。
刚开始以为是树莓派中安装的是ubuntu20.04,而笔记本中的为ubuntu18.04,烧录的PX4固件是在笔记本的Ubuntu系统中编译出来的,难不成是这个影响了?后来思来想去,感觉应该没什么影响,他们之间通过mavros通信,和版本应该关系不大。
通过观察地面站,发现室内没有GPS信号,在树莓派中执行打印位置信息指令,就会发现会卡住,不能打印,与此同时,执行roslaunch mavros px4.launch fcu_url:=/dev/ttyUSB0:57600指令的那个终端会显示:
HP:requesting home position
于是拿着无人机跑到外面测试了一下,发现可以进入offboard模式,并且电机可以转动,树莓派中的终端显示大概如下图所示:
虽然可以进入offboard模式了,但是总不能每次实验都要跑到室外去吧,那可也太麻烦了,所以不惜花重金买了个光流模块,准备在室内试一试能不能进入offboard模式,并且进行自由控制。
-----------------------------------
填了个光流模块,可以在室内飞行。
------------------------------------ 20240314 ------------------------------------
最近买了一个可测深度的相机,奥比中光的,花了近500大洋。。。
安装依赖可以采用这个链接中的
【树莓派4B】ubuntu20.04-ROS-noetic使用astra s相机过程_ros-noetic-libuvc-CSDN博客
但是安装编译过程中会遇到问题:
受到启发利用奥比中光astra mini和ar_trck_alvar在ubuntu20.04环境下实现识别二维码功能【保姆级教程】_二维码ar检测 ubuntu-CSDN博客z
执行指令即可
sudo apt install libgoogle-glog-dev libusb-1.0-0-dev libeigen3-dev
随后执行
roslaunch astra_camera astra.launch
rqt
效果图如下:
------------------------------------ 20240316 ------------------------------------
今天解决了一个小问题,记录一下。
目前我将pixhawk通过ch340连接到树莓派上(通过usb接口),是可以正常通信的,也可以进入offboard模式实现对无人机远程控制;但是我将rgb相机和新买的astra相机与ch340同时连接到树莓派上时,执行roslaunch mavros px4.launch指令后,rgb相机和astra相机原本能获取的图像突然无法获取。经过查阅,发现是树莓派默认只开启一个usb,需要将其他几个打开。按照下面链接执行,大概率可以解决问题:
树莓派4B之ubuntu系统配置UART_树莓派cm4配置使用ttyama1-CSDN博客
直接执行下面指令
sudo nano /boot/firmware/config.txt
添加内容:
dtoverlay=uart2
dtoverlay=uart3
dtoverlay=uart4
dtoverlay=uart5
添加后,重启即可,不需要按照上面链接执行指令
ls /dev/ttyAMA*
不需要查阅是否存在ttyAMA*,此时大概率解决了上面说的问题。另外,roslaunch mavros px4.launch指令还是用USB0口,不许用AMA0之类的口。
最后展示一下同时执行后获取的图像(左上是执行roslaunch mavros px4.launch后出现的终端口,左下是获取pixhawk的状态终端,右图中一个是深度相机获取到的深度图片,另一个是rgb相机获取到的rgb图片):
------------------------------------ 20240317 ------------------------------------
今天又解决了一个小问题,记录一下。
今天写代码的时候突然发现,pixhawk与树莓派传输数据后,发布的/mavros/local_position/pose等话题发布速率过慢,达不到我的要求,经过查阅
修改mavros中话题的发布频率_rosrun mavros mavcmd long 511 31 150 0 0 0 0 0-CSDN博客
按照其修改即可解决。
主要就是查阅MAVLink官网csdn - 安全中心,然后在官网里搜索要更改的发布话题的速率的话题名称,比如/mavros/local_position/pose,就查local_position,然后记住那个代号,随后执行下面代码(把105换成自己的代码,把10000换成自己想要的速率,10000对应100hz):
rosrun mavros mavcmd long 511 105 10000 0 0 0 0 0
此外,由于手打roslaunch mavros px4.launch fcu_url:=/dev/ttyUSB0:57600和上面代码太麻烦了,今天写了个launch文件,这样就可以不用来回手打啦。代码如下:
<launch>
<arg name="fcu_url" default="/dev/ttyUSB0:57600" />
<include file="/opt/ros/noetic/share/mavros/launch/px4.launch">
<arg name="fcu_url" value="$(arg fcu_url)" />
</include>
<node pkg="mavros" type="mavcmd" name="mavcmd_node" output="screen" args="long 511 32 20000 0 0 0 0 0"/>
</launch>