PX4无人机位置控制仿真

因为网上关于PX4的教程太少了,记录一下

linux运行基础

Linux运行c++需要camke编译,这里不做介绍。

需要创建一个你代码的运行空间

-test_ws

--devel(环境变量)

--build

--src(源文件) -project(对应不同工程)--src(源码)

                                                              --inlude

                                                               --makelists(指定生成list)

一个工作空间可能有很多工程可以使用

catkin_make -DCATKIN_WHITELIST_PACKAGES="your project name"

指定编译某个工程

PX仿真启动流程

打开三个终端,分别输入

cd 你的PX4目录
make px4_sitl gazebo 

这个gazebo仿真环境

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

这个是启动marvours通讯

cd 你的工作空间
source  devel/setup.bash  #环境配置
rosrun 工程名 生成可执行文件名

这个是与运行你的程序

注意你生成的可执行文件不能叫“test"(hhh,很奇怪我也不知道为啥)

程序介绍

只讲主程序,各种配置我目前也不懂

启动无人机

启动无人机要设计offboard模式,和解锁无人机,应该是要先设置offboard模式,在解锁无人机

while(ros::ok()){
        // 无人机状态设定与判断      
        // 进入while循环后,先循环5s,然后再向客户端发送无人机状态设置的消息
        // set_mode_client.call   arming_client.call 
        //  无人机 Offboard enabled && Vehicle armed 后
        //  无人机走矩形 每到达一个点停一会
                    
        //  local_pos_pub.publish(pose);
        if(current_state.mode != "OFFBOARD"&&(ros::Time::now() - last_request > ros::Duration(2.0)))
        {
            last_request = ros::Time::now();
            if( set_mode_client.call(offb_set_mode) &&
                offb_set_mode.response.mode_sent){
                ROS_INFO("Offboard enabled");
            }
        }

 主要运行的部分在while(ros::ok())里

上面的一开始即为设置无人机offboard模式,指令之间发布不能天频繁所以设置了2s延时

else if (!current_state.armed&&(ros::Time::now() - last_request > ros::Duration(2.0)))
        {
            last_request = ros::Time::now();
            if( arming_client.call(arm_cmd) &&
                    arm_cmd.response.success){
                    ROS_INFO("Vehicle armed");
                }
        }

解锁无人机,这里有个问题,解锁无人机前似乎一定要发布一条指令,要不会报错

WARN  [commander] Arming denied: Resolve system health failures first	
INFO  [tone_alarm] notify negative

所以在解锁无人机前应该发布一下指令,这个我放在后面的else里了

无人机控制

else if(current_state.mode == "OFFBOARD"&&current_state
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值