国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

帶你玩轉PX4無人機仿真(3) —— 運行官方案例(RC版)

這篇具有很好參考價值的文章主要介紹了帶你玩轉PX4無人機仿真(3) —— 運行官方案例(RC版)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言: 本次教程是官方提供的 MAVROS Offboard (板外) 控制示例,但加上了外部遙控器(RC)控制(如果想要在真機上實現,還要修改代碼)

注:搭建仿真環(huán)境可以看下面教程 ??

(最新)ubuntu搭建PX4無人機仿真環(huán)境(1) —— 概念介紹及環(huán)境建議

(最新)ubuntu搭建PX4無人機仿真環(huán)境(2) —— MAVROS安裝

(最新)ubuntu搭建PX4無人機仿真環(huán)境(3) —— ubuntu安裝QGC地面站

(最新)ubuntu搭建PX4無人機仿真環(huán)境(4) —— 仿真環(huán)境搭建

ubuntu安裝ROS melodic(最新、超詳細圖文教程)

前期回顧

帶你玩轉PX4無人機仿真(1) —— 運行官方案例(C++)

帶你玩轉PX4無人機仿真(2) —— 定點飛行

一. 設置遙控器

帶你玩轉PX4無人機仿真(3) —— 運行官方案例(RC版),無人機,ubuntu,github,c++,人工智能,物聯網,自動駕駛
(富斯i6s 航模遙控器)

仿真電腦和遙控器通過Micro USB數據線 (也就是老版安卓手機的充電線) 連接
帶你玩轉PX4無人機仿真(3) —— 運行官方案例(RC版),無人機,ubuntu,github,c++,人工智能,物聯網,自動駕駛
(仿真電腦與遙控器連接圖)

當在仿真時,打開QGC,在設置中可以看到多了一個 游戲手柄 的界面,如下圖所示
帶你玩轉PX4無人機仿真(3) —— 運行官方案例(RC版),無人機,ubuntu,github,c++,人工智能,物聯網,自動駕駛
點擊按鈕分配并撥動遙控器上的撥桿,就可以看到所對應的通道,然后為撥桿配置功能。(我的配置如下,僅供參考)
帶你玩轉PX4無人機仿真(3) —— 運行官方案例(RC版),無人機,ubuntu,github,c++,人工智能,物聯網,自動駕駛

二. 仿真代碼

我們繼續(xù)使用 帶你玩轉PX4無人機仿真(1) 中的功能包,在 off_node 功能包下的 src 目錄下新建一個 offb_node_rc.cpp 文件

cd ~/catkin_ws/src/off_node/src/
touch offb_node_rc.cpp   // 創(chuàng)建文件
gedit offb_node_rc.cpp   // 打開文件

打開文件,將代碼粘貼上去

#include <ros/ros.h>
#include <geometry_msgs/PoseStamped.h>
#include <mavros_msgs/CommandBool.h>
#include <mavros_msgs/SetMode.h>
#include <mavros_msgs/State.h>
#define GREEN "\033[0;1;32m"

using namespace std;

mavros_msgs::State current_state;
void state_cb(const mavros_msgs::State::ConstPtr& msg){
    current_state = *msg;
    ROS_INFO("current mode: %s",current_state.mode.c_str());
    ROS_INFO("system_status: %d",current_state.system_status);
}

geometry_msgs::PoseStamped aim_pos;
geometry_msgs::PoseStamped curr_pos;
void arrive_pos(const geometry_msgs::PoseStamped::ConstPtr& msg){
    curr_pos = *msg;
    cout <<GREEN <<"distance: "<<fabs((*msg).pose.position.z - aim_pos.pose.position.z) <<endl;  // 打印與目標點的差距
}

int main(int argc, char **argv)
{
    ros::init(argc, argv, "off_node");
    ros::NodeHandle nh;

    ros::Subscriber state_sub = nh.subscribe<mavros_msgs::State>
            ("mavros/state", 10, state_cb);
    ros::Publisher local_pos_pub = nh.advertise<geometry_msgs::PoseStamped>
            ("mavros/setpoint_position/local", 10);
    ros::ServiceClient arming_client = nh.serviceClient<mavros_msgs::CommandBool>
            ("mavros/cmd/arming");
    ros::ServiceClient set_mode_client = nh.serviceClient<mavros_msgs::SetMode>
            ("mavros/set_mode");

    ros::Subscriber local_pos_sub = nh.subscribe<geometry_msgs::PoseStamped>
            ("mavros/local_position/pose",10,arrive_pos);

    //the setpoint publishing rate MUST be faster than 2Hz
    ros::Rate rate(10.0);  // 10Hz 100ms

    // wait for FCU connection
    while(ros::ok() && !current_state.connected){
        ros::spinOnce();
        rate.sleep();
    }

    ROS_INFO("vehicle connected!");

    //geometry_msgs::PoseStamped pose;
    aim_pos.pose.position.x = 0;
    aim_pos.pose.position.y = 0;
    aim_pos.pose.position.z = 2;

    //send a few setpoints before starting
    for(int i = 100; ros::ok() && i > 0; --i){
        local_pos_pub.publish(aim_pos);
        ros::spinOnce();
        rate.sleep();
    }

    mavros_msgs::CommandBool arm_cmd;
    arm_cmd.request.value = true;

    ros::Time last_request = ros::Time::now();

    int count = 0;  // 計時

    while(ros::ok()){
        if( current_state.mode == "OFFBOARD"){
            if( !current_state.armed){
                if( arming_client.call(arm_cmd) &&arm_cmd.response.success){
                    ROS_INFO("Vehicle armed");
                }
            }
        }
        if(current_state.mode == "OFFBOARD" && fabs(curr_pos.pose.position.z - aim_pos.pose.position.z) <= 0.3){
            count++;
            cout <<GREEN << "count: "<< count<< endl;
            if(count > 150) // 15s
            {
                mavros_msgs::SetMode land_set_mode;
                land_set_mode.request.custom_mode = "AUTO.LAND";  // 發(fā)送降落命令
                if(set_mode_client.call(land_set_mode) && land_set_mode.response.mode_sent){
                    ROS_INFO("land enabled");
                }
                //任務結束,關閉該節(jié)點
                ros::shutdown();
            }  
        }
        if(current_state.mode != "OFFBOARD"){
            ROS_INFO("switch to Offboard");
        }

        local_pos_pub.publish(aim_pos);

        ros::spinOnce();
        rate.sleep();
    }

    return 0;
}

將下面內容添加到 off_node 功能包下的 CMakeLists.txt 文件里

add_executable(offb_node src/offb_node_rc.cpp)
target_link_libraries(offb_node_rc ${catkin_LIBRARIES})

三. 編譯運行

運行下面命令,編譯代碼

cd ~/catkin_ws
catkin_make # 使用catkin build話,則為 catkin build

創(chuàng)建一個啟動腳本 offb_rc.sh

#!/bin/bash
source ~/.bashrc
gnome-terminal --window -e 'bash -c "roscore; exec bash"' \
--tab -e 'bash -c "sleep 5; roslaunch px4 mavros_posix_sitl.launch; exec bash"' \
--tab -e 'bash -c "sleep 10; rosrun off_node offb_node_rc; exec bash"' \

運行

chmod +x offb_rc.sh   
./offb_rc.sh

運行效果如下:??

PX4無人機仿真——官方案例 (RC版)

參考

MAVROS Offboard 控制示例 (C++) | PX4 自動駕駛用戶指南

Prometheus仿真入門 — 仿真中的遙控器使用說明

如有其他問題,或者發(fā)現文章有錯誤,請在評論區(qū)留言
Keep learning!文章來源地址http://www.zghlxwxcb.cn/news/detail-826075.html

到了這里,關于帶你玩轉PX4無人機仿真(3) —— 運行官方案例(RC版)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【PX4仿真】使用PX4+Gazebo+MAVROS+ROS進行無人機仿真中提高IMU消息頻率的方法

    在無人機仿真中,IMU(慣性測量單元)消息頻率對于路徑規(guī)劃和感知的仿真至關重要。然而,在使用PX4+Gazebo+MAVROS+ROS進行仿真時,可能會遇到頻率受限的情況。本文將介紹如何提高IMU消息頻率。 通過以下命令可以查看到IMU消息的發(fā)布頻率 通常情況下固定在50Hz。 然而,通過

    2024年04月14日
    瀏覽(181)
  • (最新)ubuntu搭建PX4無人機仿真環(huán)境(2) —— MAVROS安裝

    (最新)ubuntu搭建PX4無人機仿真環(huán)境(2) —— MAVROS安裝

    MAVROS是一個ROS(Robot Operating System)軟件包 , 有了它就可以讓ROS與飛控通信。這次安裝是以ubuntu 18.04 (ROS Melodic)為例,也適用于其他版本 。安裝之前確保 ROS 安裝成功,沒安裝的可以看我仿真系列教程。 (注:安裝方式有二進制安裝和源碼安裝兩種方式,源碼安裝需要從Git

    2024年02月09日
    瀏覽(114)
  • ROS-基于PX4的無人機SLAM建圖(Cartographer)仿真

    ROS-基于PX4的無人機SLAM建圖(Cartographer)仿真

    首先在電腦上安裝好Ubuntu系統(tǒng)和ROS系統(tǒng),我安裝的是Ubuntu18.04和ROS Melodic,不同的Ubuntu版本對應不同的ROS版本 ROS發(fā)布日期 ROS版本 停止支持日期 對應Ubuntu版本 2018年5月23日 ROS Melodic Morenia 2023年5月 Ubuntu 18.04 2016年5月23日 ROS Kinetic Kame 2021年4月 Ubuntu 16.04 (Xenial) Ubuntu 15.10 (Wily) 201

    2024年02月15日
    瀏覽(85)
  • (最新)ubuntu搭建PX4無人機仿真環(huán)境(1) —— 概念介紹及環(huán)境建議

    搭建PX4仿真環(huán)境一個有挑戰(zhàn)性的過程,如果沒有一個有經驗的人來帶的話會走很多彎路。我在搭建PX4仿真環(huán)境的時候,不知道Linux、ROS、git,語言也只會一個C語言,沒有任何無人機基礎,純小白一個,靠著自學與網上的各種教程,花了一兩個月才搭好基本的仿真環(huán)境框架。我

    2024年02月08日
    瀏覽(92)
  • px4+gazebo無人機仿真,定點起飛,y=x2軌跡飛行

    px4+gazebo無人機仿真,定點起飛,y=x2軌跡飛行

    目錄 一、創(chuàng)建工作空間 1.創(chuàng)建工作空間 catkin_ws 2.編譯工作空間 catkin_make 二、offboard位置控制定點起飛 1.準備工作 2.啟動 三、offboard位置控制y=x2軌跡飛行 參考ROS學習--第3篇:ROS基礎---創(chuàng)建工作空間 打開終端,創(chuàng)建src文件夾: 進入src文件夾: 初始化文件夾: 進入catkin_ws文件

    2024年02月05日
    瀏覽(101)
  • ubuntu搭建PX4無人機仿真環(huán)境(3) —— ubuntu安裝QGC地面站

    ubuntu搭建PX4無人機仿真環(huán)境(3) —— ubuntu安裝QGC地面站

    前言 QGC ( QGroundControl) 是一個開源地面站,基于QT開發(fā)的,有跨平臺的功能。這次安裝是基于Ubuntu 18.04,QGC v4.2.6 但也適用于其他ubuntu發(fā)行版,QGC 版本也可以自行選擇,如果發(fā)現不行可以降版本。 搭建仿真環(huán)境系列教程 ?? ubuntu搭建PX4無人機仿真環(huán)境(1) —— 概念介紹 ubuntu搭

    2024年02月16日
    瀏覽(32)
  • PX4+gazebo仿真中給無人機添加相機,以及改變相機的位姿

    PX4+gazebo仿真中給無人機添加相機,以及改變相機的位姿

    找到你的需要運行的lauch文件,例如mavros_posix_sitl.lauch,編輯(最好先備份一份)。 ?修改sdf部分(也就是添加一個傳感器給無人機),傳感器模塊路徑,選擇一個相機(本文選擇的是iris_depth_camera): ?根據選擇的相機修改launch文件,如下: 保存后運行roslauch??mavros_posix_sitl.la

    2024年04月11日
    瀏覽(94)
  • (最新)ubuntu搭建PX4無人機仿真環(huán)境(3) —— ubuntu安裝QGC地面站

    (最新)ubuntu搭建PX4無人機仿真環(huán)境(3) —— ubuntu安裝QGC地面站

    前言 QGC ( QGroundControl) 是一個開源地面站,基于QT開發(fā)的,有跨平臺的功能。這次安裝是基于Ubuntu 18.04,QGC v4.2.6 但也適用于其他ubuntu發(fā)行版,QGC 版本也可以自行選擇,如果發(fā)現不行可以降版本。 搭建仿真環(huán)境系列教程 ?? ubuntu搭建PX4無人機仿真環(huán)境(1) —— 概念介紹 ubuntu搭

    2024年02月09日
    瀏覽(22)
  • Ubuntu18.04搭配無人機仿真環(huán)境(ROS,PX4,gazebo,Mavros,QGC安裝教程)

    Ubuntu18.04搭配無人機仿真環(huán)境(ROS,PX4,gazebo,Mavros,QGC安裝教程)

    我個人使用了代理環(huán)境進行下載。Linux沒有代理的可以使用國內源。 清華大學源 sudo sh -c ‘. /etc/lsb-release echo “deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main” /etc/apt/sources.list.d/ros-latest.list’ 中科大源 sudo sh -c ‘. /etc/lsb-release echo “deb http://mirrors.ustc.edu.cn/ros/ubu

    2024年02月13日
    瀏覽(290)
  • PX4無人機調參

    PX4無人機調參

    PX4 1.13.2 日志分析軟件:flight review https://logs.px4.io/ 產生震動的原因: 1,槳葉損壞、動平衡差 2,電機槳座不垂直,電機動平衡差 3,機架剛性不足 4,部件松動 降低震動的方法: 軟件濾波:調低通濾波或者陷波濾波器參數 硬件減震:調減震球的軟度或者加配重 調參時可以用

    2024年02月15日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包