参考:
https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-rpi-cm4-baseboard
自己要买个树莓派cm4
建议是买带wifi和emmc版本的
此外袋子里面还有四个螺丝用来固定树莓派
侧面有一个开关,用来切换rpi/emmc
拨到rpi,配合rpiboot可以用来刷系统
刷完了拨到emmc就正常启动系统
Linux下面
sudo apt install libusb-1.0-0-dev
git clone --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
make
sudo ./rpiboot
Windows下面
这里下载
imager
根据系统选择
把开关拨到rpi
用usb接cm4 slave到电脑
根据Windows/Linux运行rpiboot
cm4一侧的ACT和PWR灯会亮
然后打开imager,general purpose,Ubuntu,选择这个系统
这个要下载一会,也可以在这里下载https://cdimage.ubuntu.com/releases/focal/release/
下图这个,是64位的
然后在imager里面选自定义或者custom
然后选择树莓派烧录
再点击右下角齿轮,配置ssh用户名和密码,作为Ubuntu登录的用户名密码
wifi配置无所谓,反正不好使
烧录,需要二十分钟差不多
在Linux下面可以访问boot盘(可能要再跑一次rpiboot)
在usercfg.txt里面添加
dtoverlay=dwc2,dr_mode=host
不然usb不会启动,CM4 Host的两个Type-C口不能外接设备
wifis:
wlan0:
dhcp4: true
optional: true
access-points:
"你wifi的名字":
password: "你wifi的密码"
hidden: true
如果wifi可见,hidden就删了
可以参考这俩文章:
树莓派安装Ubuntu server无屏幕开机自动连接WIFI
树莓派4B安装Ubuntu Server20.04(18.04)连接wifi(对于ubuntu server 99%适用)
其中第二篇文章很有用,安装完图形化界面后还要设置wifi
断电,把开关拨到emmc,连接micro HDMI口到显示器,然后再用usb电源插入cm4 slave(电脑可能功率不足)
此处要注意,先上电树莓派,启动后再上电fc的Type-C口给飞控和风扇供电,不然可能开机乱码
用电脑或者其他的开一个2.4G的wifi给cm4用
登录用户
安装桌面
sudo apt-get install ubuntu-desktop
然后重启,接个鼠标什么的到cm4 host
/etc/netplan/nano 50-cloud-init.yaml里面删干净,不然图形化界面看不到wifi列表
$ sudo netplan -debug try
$ sudo netplan -debug generate
$ sudo netplan -debug apply
$ reboot
如果用蓝牙
sudo apt-get install pi-bluetooth
文档里面的raspi-config不好使!
所以要手动设置才行
ls -l /dev
可以看到串口列表,其中有两个是这样,目标是把他俩调换一下,serial0对应ttyAMA0
去/boot/firmware下面
找config.txt
修改:
enable_uart=1
dtoverlay=miniuart-bt.dtbo
cmdline=cmdline.txt
此处相当于用miniuart替换给了蓝牙
再找cmdline.txt
将console=ttyAMA0(或者serial0),115200的语句删除,改成这个样子
elevator=deadline net.ifnames=0 dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 rootwait fixrtc quiet splash
此处相当于关掉了串口的console
然后重启,就变换了
查看串口配置
stty -F /dev/ttyAMA0 -a #ttyAMA0为要查看的串口
配置串口
stty -F /dev/ttyAMA0 ispeed 921600 ospeed 921600 cs8
更改串口的权限,username可以在terminal输入whoami查看
sudo usermod -aG dialout username
可以安装一个cutecom,如果不用sudo就能打开这个串口,就证明配置好了
先在~/.bashrc里面配置代理,代理自寻,不然ros安装就是噩梦
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
继续安装
# 添加ros软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# 如果没有安装curl
sudo apt install curl
# 设置密钥
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
# 更新软件源
sudo apt update
# 安装ros
sudo apt install ros-noetic-desktop-full
# 设置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
# 运行该脚本,让环境变量生效
source ~/.bashrc
# 安装开发ROS必要的package
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
# 初始化
sudo rosdep init
rosdep update
sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras //安装MAVROS
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo bash ./install_geographiclib_datasets.sh
参考文档配置pixhawk6x的telem2
- MAV_1_CONFIG: 102
- MAV_1_MODE: 2
- SER_TEL2_BAUD: 921600
运行mavros
roslaunch mavros px4.launch fcu_url:="/dev/ttyAMA0:921600"
得到
python3 -m pip install mavsdk
https://github.com/mavlink/MAVSDK-Python.git
cd MAVSDK-Python
sudo python3 setup.py install
sudo python3 setup.py build
然后进入example文件夹,修改一个文件,我用的是all_params.py
system_address="udp://:14540"
改为
system_address="serial:///dev/ttyAMA0:921600"
运行
python3 all_params.py
不知道为何我每次都得先install一下才可以
参考文档即可