协同测试总结(电台/WIFI/ID/固定端口设置和开机自启)
目录
1. 电台/WIFI设置
2.ROS中的master设置
3.地面站和ROS中的无人机ID设置
4. 在hosts中添加IP别名
5. 在usb.rules中固定usb端口号
6.设置开机自启
1. 电台/WIFI设置
首先设置每架飞机的IP,以uav5为例,在有线连接的网络设置中将uav5的IP手动设置为192.168.1.66,WIFI的设置类似。
然后,在终端中通过ifconfig指令查看IP是否设置成功,如下图所示,可看到在eth0中IP地址已被设置为192.168.1.66,表示设置成功。
配置电台时,电脑有线连接电台后输入其对应的IP进入配置网址,对于电台的功率、带宽、传输频率设置如下图所示:
2.ROS中的master设置
对于领从式集群中的无人机主机从机的IP设置需要写在.bashrc中,具体如下:
export ROS_MASTER_URI=http://192.168.1.68:11311
export ROS_HOSTNAME=192.168.1.66
export ROS_IP=192.168.1.68
其中192.168.1.68为master的IP,192.168.1.66为本机IP,若本机为master,则不需要写第二句话,roscore运行在master上,master可以是电脑端地面站或者领机,实际测试在设置开机自启文件的.sh时也需要加入上面的3句。
3.地面站和ROS中的无人机ID设置
以uav5.launch为例(这个launch文件用于建立飞控和机载电脑间的mavros通信):
- group ns="uav5"表示在mavros消息中的前缀
- fcu_url是其硬件端口号
- gcs_url是本机IP
- target_system_id是在pix中的标识号,这里需要和QGC中的同名参数保持一致,代表在QGC上的飞机ID
- target_component_id用于无人机中的组件标识(摄像头等),如果只需要在地面站中标识多架无人机则可以不特殊设置这个参数
<launch><group ns="uav5"><!-- 启动MAVROS --><node pkg="mavros" type="mavros_node" name="mavros" output="screen"><param name="fcu_url" value="/dev/ttyACM0:57600" /><param name="gcs_url" value="udp://@192.168.1.66" /><param name="target_system_id" value="5"/><param name="target_component_id" value="1" /><rosparam command="load" file="$(find mavros)/launch/px4_pluginlists.yaml" /><rosparam command="load" file="$(find mavros)/launch/px4_config.yaml" /></node></group><!-- run the swarm_estimator.cpp -->
<node pkg="fixed_wing_formation_control" type="pack_fw1_states" name="pack_fw1_states" output="screen">
</node>
<node pkg="fixed_wing_formation_control" type="follower1_main" name="follower1_main" output="screen">
</node>
</launch>
target_system_id和target_component_id的区别:
场景 | target_system_id | target_component_id | 备注 |
---|---|---|---|
单机飞行 | 无需修改(默认1) | 无需修改(默认1) | 确保不与同一网络中的其他设备冲突。 |
多机编队 | 每架飞机唯一(如1,2,3) | 可保持默认1 | 地面站通过 SYS_ID 区分飞机。 |
飞控扩展摄像头 | 无需修改 | 设为 MAV_COMP_ID_CAMERA (100) | 需在摄像头驱动代码中指定。 |
自定义组件(如机械臂) | 无需修改 | 设为未占用的ID(如150) | 避免与PX4默认组件冲突。 |
4. 在hosts中添加IP别名
在计算机中的/etc/hosts中添加IP别名,可以通过ping 别名来找到对应的设备,修改hosts需要权限,通过sudo gedit hosts添加。
hosts如下:
127.0.0.1 localhost
127.0.1.1 nvidia-desktop192.168.1.68 hust-Legion-Y9000P-IAH7H192.168.1.21 uav0
192.168.1.63 uav1
192.168.1.72 uav2
192.168.1.31 uav3
192.168.1.23 uav4
192.168.1.66 uav5
192.168.1.99 uav6
192.168.1.27 uav7# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
5. 在usb.rules中固定usb端口号
在计算机/etc/udev/rules.d中新建usb.rules来写入固定的端口号,具体操作为:
首先通过lsusb查看使用的USB端口号,找到对应的USB设备,记下该设备的设备ID,如1-2.3.1:1.0。
#查看使用的USB端口号
lsusb
#进入目录
cd /etc/udev/rules.d
#新建.rules文件,名称任意
touch usb.rules
#编辑usb.rules
sudo gedit usb.rules
usb.rules的内容如下:
KERNELS=="1-2.3.1:1.0",MODE="0777",GROUP="dialout",SYMLINK="ttyuwb"
KERNELS=="1-2.3.2:1.0",MODE="0777",GROUP="dialout",SYMLINK="cam"
KERNELS=="1-2.4:1.0",MODE="0777",GROUP="dialout",SYMLINK="ttypix"
保存后重启udev:
service udev reloadservice udev restart
重新插拔USB设备,查看端口号绑定
ls -l /dev |grep ttyUSB
找到写入的名字即成功。
6.设置开机自启
Jeston nano TX2中:
在命令框中输入
gnome-session-properities
add添加自启文件即可
OrangePi中:
在设置中的session and startup选项中add添加即可
写.sh自启文件时需要注意两者在终端上的区别:
#TX2中gnome-terminal --window -e 'bash -c "sleep 2; exec bash"' \--tab -e 'bash -c "sleep 2; roslaunch fixed_wing_formation_control uav0.launch;exec bash"' \#OrangePixfce4-terminal --window -e 'bash -c "sleep 2; exec bash"' \--tab -e 'bash -c "sleep 2; roslaunch fixed_wing_formation_control uav0.launch;exec bash"' \