当前位置: 首页 > news >正文

协同测试总结(电台/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_idtarget_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"' \

http://www.lryc.cn/news/605756.html

相关文章:

  • CentOS 6.10 上安装 GCC 7+
  • PHP 与 MySQL 详解实战入门(1)
  • PHP 5.5 Action Management with Parameters (English Version)
  • 通义千问Qwen3-30B-A3B-Thinking-2507技术解析:推理模型的工程实践突破
  • 常见的中间件漏洞如tomcat,weblogic,jboss,apache靶场攻略
  • 基于瑞芯微SoC的产品开发流程详解
  • 18650圆柱电池自动面垫机:自动化生产的效率革命
  • 人工智能之数学基础:频率和概率之间的关系
  • Java项目:基于SSM框架实现的小区物业管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告+任务书+远程部署】
  • JS常见问题
  • BatchNorm 一般放在哪里?
  • InfluxDB 与 Python 框架结合:Django 应用案例(二)
  • DoRA详解:从LoRA到权重分解的进化
  • 小杰数据结构(three day)——静以修身,俭以养德。
  • 【Linux系统】库的制作与原理
  • 【数据结构】算法代码
  • 渗透RCE
  • TS 常用类型与语法
  • Cesium 快速入门(六)实体类型介绍
  • Jmeter 性能测试常用图表、服务器资源监控
  • C语言指针(三):数组传参本质、冒泡排序与二级指针详解
  • FISCO BCOS Gin调用WeBASE-Front接口发请求
  • [硬件电路-111]:滤波的分类:模拟滤波与数字滤波; 无源滤波与有源滤波;低通、带通、带阻、高通滤波;时域滤波与频域滤波;低价滤波与高阶滤波。
  • 操作系统数据格式相关(AI回答)
  • 无人船 | 图解基于LQR控制的路径跟踪算法(以欠驱动无人艇Otter为例)
  • 学习笔记《区块链技术与应用》第4天 比特币脚本语言
  • Docker部署Seata
  • Linux核心转储(Core Dump)原理、配置与调试实践
  • 前端-移动Web-day2
  • 野生动物巡查系统(H题)--2025 年全国大学生电子设计竞赛试题