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

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

這篇具有很好參考價值的文章主要介紹了px4+gazebo無人機仿真,定點起飛,y=x2軌跡飛行。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、創(chuàng)建工作空間

1.創(chuàng)建工作空間 catkin_ws

2.編譯工作空間 catkin_make

二、offboard位置控制定點起飛

1.準備工作

2.啟動

三、offboard位置控制y=x2軌跡飛行


一、創(chuàng)建工作空間

參考ROS學習--第3篇:ROS基礎---創(chuàng)建工作空間

1.創(chuàng)建工作空間 catkin_ws

打開終端,創(chuàng)建src文件夾:

mkdir -p ~/catkin_ws/src

進入src文件夾:

cd ~/catkin_ws/src

初始化文件夾:

 catkin_init_workspace

2.編譯工作空間 catkin_make

進入catkin_ws文件夾:

cd ~/catkin_ws/

編譯:

catkin_make

二、offboard位置控制定點起飛

參考ROS+PX4學習與開發(fā) 2.0 ROS與PX4的通信、[PX4]mavros安裝+offboard控制過程記錄

1.準備工作

進入catking_ws/src文件夾:

cd ~/catkin_ws/src

創(chuàng)建功能包文件夾:

catkin_create_pkg offboard_pkg roscpp std_msgs geometry_msgs mavros_msgs

進入創(chuàng)建好的功能包文件夾的src文件夾內(nèi):

cd ~/catkin_ws/src/offboard_pkg/src/

新建一個offboard_node.cpp文件:

touch offboard_node.cpp

然后打開.cpp文件進行編輯,這里用gedit:

gedit offboard_node.cpp

復制進官方示例,然后保存關閉:

/**
 * @file offb_node.cpp
 * @brief Offboard control example node, written with MAVROS version 0.19.x, PX4 Pro Flight
 * Stack and tested in Gazebo SITL
 */

#include <ros/ros.h>
#include <geometry_msgs/PoseStamped.h>
#include <mavros_msgs/CommandBool.h>
#include <mavros_msgs/SetMode.h>
#include <mavros_msgs/State.h>

mavros_msgs::State current_state;
void state_cb(const mavros_msgs::State::ConstPtr& msg){
    current_state = *msg;
}

int main(int argc, char **argv)
{
    ros::init(argc, argv, "offb_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");

    //the setpoint publishing rate MUST be faster than 2Hz
    ros::Rate rate(20.0);

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

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

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

    mavros_msgs::SetMode offb_set_mode;
    offb_set_mode.request.custom_mode = "OFFBOARD";

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

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

    while(ros::ok()){
        if( current_state.mode != "OFFBOARD" &&
            (ros::Time::now() - last_request > ros::Duration(5.0))){
            if( set_mode_client.call(offb_set_mode) &&
                offb_set_mode.response.mode_sent){
                ROS_INFO("Offboard enabled");
            }
            last_request = ros::Time::now();
        } else {
            if( !current_state.armed &&
                (ros::Time::now() - last_request > ros::Duration(5.0))){
                if( arming_client.call(arm_cmd) &&
                    arm_cmd.response.success){
                    ROS_INFO("Vehicle armed");
                }
                last_request = ros::Time::now();
            }
        }

        local_pos_pub.publish(pose);

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

    return 0;
}

打開目錄~/catkin_ws/src/offboard_pkg/下的CMakeLists.txt,添加下面的兩行:

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

進入catkin_ws文件夾并編譯

cd ~/catkin_ws/

catkin_make

打開終端設置環(huán)境變量:

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

到此前期準備已經(jīng)完畢,可以啟動。

2.啟動

打開1號終端,進入PX4文件夾,打開gazebo:

cd ~/PX4-Autopilot/

make px4_sitl gazebo_iris

啟動QGC,等待QGC連接成功。

打開2號終端,啟動PX4與Mavros之間的連接:

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

打開3號終端,運行官方示例:

rosrun offboard_pkg offboard_node

稍微等待一會,3號終端如下圖所示,正常情況下能看到gazebo中的無人機升高到2m位置。

gazebo無人機仿真,ubuntu,無人機


?如果啟動之后,3號終端一直跳offboard enabled但是始終不見Vehicle armed,而且gazebo中無人機也沒有反應,可能是PX4版本太新了(13.0),解決辦法是安裝1.12.3。

在主文件夾中刪除PX4-Autopilot整個文件夾,然后打開終端克隆舊版本:

git clone -b v1.12.3 https://github.com/PX4/PX4-Autopilot.git --recursive

如果下載失敗提前結束,報錯:

error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Failed during: git fetch origin --force

首先檢查網(wǎng)絡情況(梯子),網(wǎng)絡檢查過沒問題還是不行,則在終端輸入,然后重新下載:

git config --global http.postBuffer 524288000
git config --global http.maxRequestBuffer 100M
git config --global core.compression 0


export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1

如果還是解決不了,參考以下帖子:

【Git】error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was rece

下載PX4固件時網(wǎng)絡太慢,經(jīng)常出現(xiàn)克隆失敗

解決git clone 完成后提示'error: RPC failed; curl 56 GnuTLS recv error (-9)'

RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.

下載成功之后,編譯。

cd PX4-Autopilot
sudo bash ./Tools/setup/ubuntu.sh


make px4_sitl_default gazebo

如果途中出現(xiàn)問題,參考PX4從放棄到精通(二):ubuntu18.04配置px4編譯環(huán)境及mavros環(huán)境

重新在.bashrc中添加一下px4源碼的路徑:

gedit .bashrc

打開后應該可以找到以前添加過得這一段:

source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot/ ~/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo

將其剪切到.bashrc的最下方,保存關閉,然后終端進行刷新

source .bashrc

之后問題解決,重新上面的啟動步驟。


如果出現(xiàn)了屏幕突然旋轉的情況,解決辦法:

xrandr --output eDP-1 --rotate normal

其中eDP-1是顯示屏名字,替換為自己的顯示屏名字。

三、offboard位置控制y=x2軌跡飛行

參考ROS+PX4無人機室內(nèi)多點飛行代碼

對其.cpp文件修改。文章來源地址http://www.zghlxwxcb.cn/news/detail-743644.html

/**
 * @file offb_node.cpp
 * @brief Offboard control example node, written with MAVROS version 0.19.x, PX4 Pro Flight
 * Stack and tested in Gazebo SITL
 */
#include <ros/ros.h>
#include <geometry_msgs/PoseStamped.h>
#include <mavros_msgs/CommandBool.h>
#include <mavros_msgs/SetMode.h>
#include <mavros_msgs/State.h>
#include <nav_msgs/Odometry.h>//里程計信息格式

int flag  = 1;

mavros_msgs::State current_state;
nav_msgs::Odometry local_pos;

void local_pos_cb(const nav_msgs::Odometry::ConstPtr& msg);
void state_cb(const mavros_msgs::State::ConstPtr& msg);


int main(int argc, char **argv)
{
    ros::init(argc, argv, "offboard_multi_position");

    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::Subscriber local_pos_sub = nh.subscribe<nav_msgs::Odometry>("/mavros/local_position/odom", 10, local_pos_cb);

    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");

    //the setpoint publishing rate MUST be faster than 2Hz
    ros::Rate rate(20.0);

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

    geometry_msgs::PoseStamped pose;
    pose.pose.position.x =   0;
    pose.pose.position.y =   0;
    pose.pose.position.z =   3;  

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

    mavros_msgs::SetMode offb_set_mode;
    offb_set_mode.request.custom_mode = "OFFBOARD";

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

    ros::Time last_request = ros::Time::now();
 
 	//此處滿足一次請求進入offboard模式即可,官方例成循環(huán)切入offboard會導致無人機無法使用遙控器控制
    while(ros::ok())
    {
    	//請求進入OFFBOARD模式
        if( current_state.mode != "OFFBOARD" && (ros::Time::now() - last_request > ros::Duration(5.0)))
        {
            if( set_mode_client.call(offb_set_mode) && offb_set_mode.response.mode_sent)
            {
                ROS_INFO("Offboard enabled");
            }
           	last_request = ros::Time::now();
       	}
        else 
		{
			//請求解鎖
			if( !current_state.armed && (ros::Time::now() - last_request > ros::Duration(5.0)))
			{
		        if( arming_client.call(arm_cmd) && arm_cmd.response.success)
		       	{
		            ROS_INFO("Vehicle armed");
		        }
		        	last_request = ros::Time::now();
			}
		}
	    
	    if(ros::Time::now() - last_request > ros::Duration(5.0))
	    {
	    	break;
	    }	
	    
		local_pos_pub.publish(pose);
        ros::spinOnce();
        rate.sleep();
    }   
    
    
    while(ros::ok())
    {
        if((flag == 1)  && (ros::Time::now() - last_request > ros::Duration(5.0)))
		{ 
			ROS_INFO("Position_1");
            		pose.pose.position.x =  0;
    			pose.pose.position.y =  0;
    			pose.pose.position.z =  3;                        
			last_request = ros::Time::now();
            		flag=2;
       		 }

	if((flag ==2) && (ros::Time::now() - last_request > ros::Duration(5.5)))
		{
			ROS_INFO("Position_2 ");
		   	pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
			pose.pose.position.z =  3;
			last_request = ros::Time::now();
			flag=3;
		}
		                   
	if((flag ==3) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
		 	ROS_INFO("Position_3 ");
		 	pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
            		pose.pose.position.z =  3;   
			last_request = ros::Time::now();
			flag=4;
		}

	if((flag ==4) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
		 	ROS_INFO("Position_4 ");
		 	pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
		 	pose.pose.position.z =  3;
		 	last_request = ros::Time::now();
			flag=5;
		}

	if((flag ==5) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
           		ROS_INFO("Position_5 ");
            		pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
            		pose.pose.position.z =  3;  		
            		last_request = ros::Time::now();
			flag=6;
        	}
	if((flag ==6) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
           		ROS_INFO("Position_6 ");
            		pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
            		pose.pose.position.z =  3;  		
            		last_request = ros::Time::now();
			flag=7;
        	}
	if((flag ==7) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
           		ROS_INFO("Position_7 ");
            		pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
            		pose.pose.position.z =  3;  		
            		last_request = ros::Time::now();
			flag=8;
        	}
	if((flag ==8) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
           		ROS_INFO("Position_8 ");
            		pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
            		pose.pose.position.z =  3;  		
            		last_request = ros::Time::now();
			flag=9;
        	}
	if((flag ==9) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
           		ROS_INFO("Position_9 ");
            		pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
            		pose.pose.position.z =  3;  		
            		last_request = ros::Time::now();
			flag=10;
        	}
	if((flag ==10) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
           		ROS_INFO("Position_10 ");
            		pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
            		pose.pose.position.z =  3;  		
            		last_request = ros::Time::now();
			flag=11;
        	}
	if((flag ==11) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
           		ROS_INFO("Position_11 ");
            		pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
            		pose.pose.position.z =  3;  		
            		last_request = ros::Time::now();
			flag=12;
        	}
	if((flag ==12) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
           		ROS_INFO("Position_12 ");
            		pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
            		pose.pose.position.z =  3;  		
            		last_request = ros::Time::now();
			flag=13;
        	}
	if((flag ==13) && (ros::Time::now() - last_request > ros::Duration(0.5)))
		{
           		ROS_INFO("Position_13 ");
            		pose.pose.position.x =  pose.pose.position.x + 0.5;
			pose.pose.position.y =  (pose.pose.position.x)*(pose.pose.position.x);
            		pose.pose.position.z =  3;  		
            		last_request = ros::Time::now();
			flag=14;
        	}
        if((flag ==14) && (ros::Time::now() - last_request > ros::Duration(8.0)))
        	{
        		break;
        	}

        local_pos_pub.publish(pose);
        ros::spinOnce();
        rate.sleep();
    }
    
    ROS_INFO("AUTO.LAND");
    offb_set_mode.request.custom_mode = "AUTO.LAND";
    set_mode_client.call(offb_set_mode);
    return 0;
}

void state_cb(const mavros_msgs::State::ConstPtr& msg)
{
    current_state = *msg;
}

void local_pos_cb(const nav_msgs::Odometry::ConstPtr& msg)
{
    local_pos = *msg;
}

到了這里,關于px4+gazebo無人機仿真,定點起飛,y=x2軌跡飛行的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關文章

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

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

    我個人使用了代理環(huán)境進行下載。Linux沒有代理的可以使用國內(nèi)源。 清華大學源 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&Simulink&Gazebo聯(lián)合仿真】在Simulink中使用ROS2控制無人機沿自定義圓形軌跡飛行并在Gazebo中可視化

    【PX4&Simulink&Gazebo聯(lián)合仿真】在Simulink中使用ROS2控制無人機沿自定義圓形軌跡飛行并在Gazebo中可視化

    本篇文章介紹如何使用ROS2控制無人機沿自定義圓形軌跡飛行并在Gazebo中可視化,提供了Matlab/Simulink源代碼,以及演示效果圖。 環(huán)境: MATLAB : R2022b Ubuntu :20.04 LTS Windows :Windows 10 ROS :ROS2 Foxy Python: 3.8.2 Visual Studio :Visual Studio 2019 PX4 :1.13.0 ROS2的應用程序管道非常簡單,這要

    2024年02月22日
    瀏覽(96)
  • 【PX4-AutoPilot教程-TIPS】PX4控制無人機在Gazebo中飛行時由于視角跟隨無人機在畫面中心導致視角亂晃的解決方法

    【PX4-AutoPilot教程-TIPS】PX4控制無人機在Gazebo中飛行時由于視角跟隨無人機在畫面中心導致視角亂晃的解決方法

    無人機在Gazebo中飛行時,無人機始終處于畫面中央,會帶著視角亂晃,在Gazebo中進行任何操作視角都無法固定。 觀察Gazebo左側World欄GUI選項,發(fā)現(xiàn)有一個track_visual項,這個是Gazebo中的跟隨視角,跟蹤目標是無人機iris,但是手動點擊無法取消,設置Gazebo使用FOLLOW選項跟隨其他目

    2024年02月22日
    瀏覽(79)
  • PX4|基于FAST-LIO mid360的無人機室內(nèi)自主定位及定點懸停

    PX4|基于FAST-LIO mid360的無人機室內(nèi)自主定位及定點懸停

    在配置mid360運行環(huán)境后,可使用mid360進行室內(nèi)的精準定位。 在livox_ros_driver2的上級目錄src下保存fast-lio的工程 為使用mid360作為硬件輸入修改源代碼中的所有 livox_ros_driver 為 livox_ros_driver2 (包括.cpp .h 以及 package.xml) 在 livox_ros_driver2 的pkg中編譯 編譯過程大概需要3g的內(nèi)存,若

    2024年04月08日
    瀏覽(22)
  • Ubuntu PX4無人機仿真環(huán)境配置

    Ubuntu PX4無人機仿真環(huán)境配置

    ?目錄 一、VM虛擬機安裝ubuntu18.04 ? 1、VMware安裝 ? 2、新建虛擬機 二、Ubuntu系統(tǒng)配置 ? 1、更改軟件安裝源 ? 2、安裝中文輸入法 三、PX4環(huán)境搭建 ? 1、安裝git ? 2、下載px4源碼 ? 3、安裝ROS ? 4、安裝MAVROS ? 5、安裝QGC ? 6、仿真測試 四、其他工具安裝 ? 1、VScode安裝 ?????

    2024年02月02日
    瀏覽(1048)
  • ubuntu搭建PX4無人機仿真環(huán)境(4) —— 仿真環(huán)境搭建

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

    前言 在搭建之前,需要把 ROS、MAVROS、QGC 等基礎環(huán)境安裝配置完成。大家可以參考我之前的教程 本次安裝是以 px4 v1.13.2 為例。 我的配置如下: 虛擬機 Ubuntu 18.04 (運行內(nèi)存 4G、硬盤內(nèi)存 80G) 、ROS melodic 、最新版 QGC 建議安裝之前可以先看看這個 ?? ubuntu搭建PX4無人機仿真環(huán)境

    2024年02月15日
    瀏覽(96)
  • (最新)ubuntu搭建PX4無人機仿真環(huán)境(4) —— 仿真環(huán)境搭建

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

    前言 在搭建之前,需要把 ROS、MAVROS、QGC 等基礎環(huán)境安裝配置完成。大家可以參考我之前的教程 本次安裝是以 px4 v1.13.2 為例。 我的配置如下: 虛擬機 Ubuntu 18.04 (運行內(nèi)存 4G、硬盤內(nèi)存 80G) 、ROS melodic 、最新版 QGC 建議安裝之前可以先看看這個 ?? ubuntu搭建PX4無人機仿真環(huán)境

    2024年02月09日
    瀏覽(90)
  • (最新)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)
  • 帶你玩轉PX4無人機仿真(3) —— 運行官方案例(RC版)

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

    前言: 本次教程是官方提供的 MAVROS Offboard (板外) 控制示例,但加上了 外部遙控器(RC)控制 (如果想要在真機上實現(xiàn),還要修改代碼) 注:搭建仿真環(huán)境可以看下面教程 ?? (最新)ubuntu搭建PX4無人機仿真環(huán)境(1) —— 概念介紹及環(huán)境建議 (最新)ubuntu搭建PX4無人機仿真環(huán)境(2) —

    2024年02月19日
    瀏覽(92)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包