# Mavproxy **Repository Path**: ssyyw/mavproxy ## Basic Information - **Project Name**: Mavproxy - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2024-03-22 - **Last Updated**: 2024-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, Cpp, ROS ## README # Mavproxy ### 介绍 基于ROS1的飞行控制包,接受特定文本指令,实现指令化飞行控制。 ```shell # 鱼香ROS一键部署安装,装ros noetic wget http://fishros.com/install -O fishros && . fishros ``` ### 软件架构 #### flight_controller 飞行控制节点,接受控制指令,然后不断执行。只有接收到新命令时才会变更操作 节点只会切换两个模式(AUTO.LAND和OFFBOARD),并不维护PX4的飞行模式,因为PX4自己也会维护,很容易造成无人机被锁定 在MAVROS中,姿态控制采用四元数,指定角度控制需要转换。 并且MAVROS、PX4、D435i相机三者坐标系均不一致,非常非常麻烦。 ![](/doc/img/image.png) ![](/doc/img/2.png) #### flight_planner (未实现) 飞行规划节点,接受文本指令,将文本指令拆分,打上时间戳后转换为控制指令,以飞行任务的形式封装起来,自己维护。 然后将控制指令按照任务规划在不同时间发送给飞行控制节点。 #### flight_cmd_parser 控制指令发布节点,接受终端输入,将终端输入转换为控制指令,主要用于测试飞行控制节点。 #### txt_cmd_receiver (未实现) 文本指令接受节点,对接外部指令发送端,将获得到的文本指令规范后传递给planner #### global_transformer (计划中) 由于通过ROS控制带有深度相机的无人机存在多个坐标系下的转换,通过这个工具类,将中转的坐标参数全都转为ROS的东北天坐标系(ENU)坐标系 ![alt text](/doc/img/3.png) ### 安装使用教程 ##### 独立节点启动 1. 进入ws_ros1目录,使用catkin_make_isolated打包 2. 在命令行执行如下操作 ```Shell # 打开bashrc文件 vi ~/.bashrc # 将下面的字段复制进去并保存 source /{本地的工作空间根目录}/mavproxy/ws_ros1/devel_isolated/mavproxy_ros1/setup.bash ``` 3. 打开新终端,启动rocore,然后使用rosrun mavproxy_ros1 xx_node就可以启动包内节点。 ##### roslaunch启动 1. roslaunch mavproxy_ros1 px4.launch 启动PX4控制 2. roslaunch mavproxy_ros1 test.launch 自动拉起仿真环境并启动相关节点。 ### 使用说明 #### 控制指令 1. flight_takeoff [height] 起飞到指定高度 2. flight_land 降落,落地后关闭螺旋桨 3. flight_hover 在当前位置悬停,自动触发 4. flight_targetpos [x] [y] [z] 飞往目标位置,不会变更无人机偏航角 5. flight_targetpos_h(不可用) 6. flight_speedup(不可用) 7. flight_speeddown(不可用) 8. flight_moveforward(不可用) 9. flight_moveback(不可用) 10. flight_movehorizontal(不可用) 11. flight_movevertical(不可用) 12. flight_rotatehorizontal [angle] 水平方向上旋转指定角度,接收其他命令后不会保持 13. flight_planadd(不可用) 14. flight_plandel(不可用) 15. flight_planedit(不可用) #### 文本指令