# remote-control **Repository Path**: zbrover-team/remote-control ## Basic Information - **Project Name**: remote-control - **Description**: 远程控制 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-07-20 - **Last Updated**: 2024-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # remote-control #### 无人机和无人车远程控制介绍 基本原理介绍: 远程视频:将树莓派上的摄像头的视频流推送到公网中,通过访问公网即可读取视频流。 视频推流使用的是MediaMTX,它是一个实时媒体服务器和代理,负责将树莓派摄像头采集的视频流推送到远程服务器。frp将视频流端口推送到公网,从而实现广域网访问。 远程控制:树莓派通过串口与pixhawk连接,通过mavros读取pixhawk信息并连接QGC。手柄通过GQC发送mavros信息,树莓派获取mavros信息并转送到pixhawk中,从而实现控制。 在广域网中连接QGC是通过frp实现,将树莓派中的mavros端口转发到公网上,QGC通过连接公网端口,连接树莓派的mavros。 所用软件介绍: 1.frp frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 简单来说,就是将本地端口的服务转发到公网上,通过访问公网的特定端口,即可访问本地的服务。 2.mediamtx MediaMTX(原 rtsp-simple-server)是一个即用型、零依赖的实时媒体服务器和媒体代理,允许发布、读取、代理、录制和播放视频和音频流。它被设想为一个“媒体路由器”,将媒体流从一端路由到另一端。 简单来说,它可以帮助你发布、读取、代理、录制和播放视频和音频流。 3.DDS-router DDS Router 是一个由 eProsima 开发的开源软件应用程序,旨在连接分布在不同地理位置的 DDS(Data Distribution Service)网络。 简单来说,它可以让不同地点的 DDS 实体(如发布者和订阅者)通过互联网进行通信,就像它们在同一个本地网络上一样。 ### **DDS-router安装教程** 主要安装步骤参照官网教程,在需要通信的设备中,都需要安装!!! [官网安装教程网址](https://github.com/eProsima/DDS-Router) 注意:在进行到Colcon installation时,将其替换为仓库中的DDS-router文件夹,即可安装成功。 #### 使用说明 1. `cd DDS-Router/` 2. `source install/setup.bash` 3. `./install/ddsrouter_tool/bin/ddsrouter -c server.yaml` server.yaml是配置文件,具体配置参照官网教程 [官网配置文件教程](https://eprosima-dds-router.readthedocs.io/en/latest/) 我的虚拟机中安装的client.yaml示例: ``` version: v4.0 participants: - name: DDS_LAN_A kind: local - name: Router_Client kind: wan connection-addresses: - ip: 1.92.137.138 port: 6667 transport: tcp ``` ### **mediamtx安装教程** 直接clone mediamtx文件夹即可 #### 使用说明 1. `cd mediamtx/` 2. `./mediamtx` mediamtx.yml是主要的配置文件,其配置教程也参考官网 [mediamtx官网链接](https://github.com/bluenviron/mediamtx) ### **frp安装教程** 云服务器和树莓派都需要安装!!! 树莓派端直接clone frp_service文件夹即可。 云服务器端clone之后,删除旧的frp_0.58.1_linux_arm64,解压frp_0.58.1_linux_arm64.tar.gz,保留以下文件:frps frps.toml LICENSE 其中frps.toml的配置如下: `bindPort = 7001` #### 使用说明 按照下面的自启动教程即可 ### **mavros(ros2)安装教程** 主要安装步骤参照官网教程,在树莓派中安装 [官网安装教程网址](https://github.com/mavlink/mavros/blob/ros2/mavros/README.md) 注意:在进行到sudo apt install ros-foxy-mavros时,将ros-foxy-mavros替换为ros-humble-mavros。 #### 使用说明 ros2 launch mavros px4.launch ### **frp和mediamtx自启动教程** 示例是frp的,mediamtx同理 使用 systemd 此示例演示如何在 Linux 系统下使用 systemd 来管理 frps 服务,包括启动、停止、配置后台运行和设置开机自启动。 在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。 以下是具体的操作步骤: 安装 systemd 使用 apt 安装 systemd(Debian/Ubuntu) apt install systemd 创建 frps.service 文件 使用文本编辑器 (如 nano、vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。 sudo nano /etc/systemd/system/frps.service 写入内容 **树莓派端mediamtx配置文件** ``` [Unit] # 服务名称,可自定义 Description = mediamtx server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /home/pi4/mediamtx/mediamtx /home/pi4/mediamtx/mediamtx.yml [Install] WantedBy = multi-user.target ``` **树莓派端frpc配置文件** ``` [Unit] # 服务名称,可自定义 Description = frpc server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /home/pi4/frp_service/frp_0.58.1_linux_arm64/frpc -c /home/pi4/frp_service/frp_0.58.1_linux_arm64/frpc.toml [Install] WantedBy = multi-user.target ``` **云端frps配置文件** ``` [Unit] 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /path/to/frps -c /path/to/frps.toml [Install] WantedBy = multi-user.target ``` 使用 systemd 命令管理 frps 服务 启动frp sudo systemctl start frps 停止frp sudo systemctl stop frps 重启frp sudo systemctl restart frps 查看frp状态 sudo systemctl status frps 设置 frps 开机自启动 sudo systemctl enable frps 通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。确保替换路径和配置文件名称以匹配您的实际安装。 ### 配置完以上环境,使用以下教程实现图传和控制 1.图传 在QGC的视频流进行如下设置: ![QGC视频流设置](QGC%E8%A7%86%E9%A2%91%E6%B5%81%E8%AE%BE%E7%BD%AE.png) 进行该设置后,就能实现图传。 2.控制 pixhawk需要连接树莓派串口,然后运行mavros,然后在QGC中连接,配置如下: ![输入图片说明](QGC%E8%BF%9E%E6%8E%A5.png) 运行ros节点 cd chapt3_ws/ ros2 run example_topic_rclpy topic_subscribe_02 然后连接手柄,通过ros2订阅话题即可控制。