【ubuntu20.04配置PX4仿真】ros+PX4固件+gazebo+mavros

安装PX4

下载源码

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

进入PX4-Autopilot文件夹,继续下载未下载的组件

cd PX4-Autopilot/
git submodule update --init --recursive

执行Ubuntun.sh脚本

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

出现python部分包的版本问题

python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow

再执行

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --fix-missing

reboot系统
测试进入PX4-Autopilot文件夹内

make px4_sitl_default gazebo

添加到环境变量

source ~/PX4-Autopilot/Tools/simulation/gazebo-classic/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/simulation/gazebo-classic/sitl_gazebo-classic

安装MAVROS

sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras

mavlink

wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh

chmod +x install_geographiclib_datasets.sh

./install_geographiclib_datasets.sh

启动PX4和MAVROS之间的连接

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"#gazebo方针的端口号

出现下面,表示成功启动
在这里插入图片描述

ROS程序测试

创建工程

#创建工作空间
mkdir catkin_ws
cd catkin_ws
mkdir src
cd src
catkin_init_workspace

#编译工作空间
cd ..
catkin_make

#设置环境变量
source devel/setup.bash

#创建功能包
cd catkin_ws/src
catkin_create_pkg offboard roscpp mavros geometry_msgs
cd ../
catkin_make 
#编译成功则完成

位置输入悬停代码

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

  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 offboard_set_mode;
  offboard_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(offboard_set_mode)&&offboard_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;
}

启动流程

#启动gazebo方针
cd ~/PX4-Autopilot
make px4_sitl_default gazebo
#启动mavlink通信
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
#运行节点
rosrun offboard offboard_node
#查看模式
rostopic echo /mavros/state

终端开启仿真

gedit ~/.bashrc
#放入以下的内容
source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
#关闭
source ~/.bashrc

启动:

roslaunch px4 mavros_posix_sitl.launch

当出现gazebo进程报错,大概率是之前的gazebo进程未完全关闭,可以输入

killall gzserver
  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 以下是Ubuntu 20.04配置PX4环境的步骤: 1. 安装依赖项 在终端中输入以下命令,安装PX4所需的依赖项: sudo apt-get update sudo apt-get install git zip qtcreator cmake build-essential genromfs ninja-build exiftool 2. 克隆PX4代码 在终端中输入以下命令,克隆PX4代码: git clone https://github.com/PX4/PX4-Autopilot.git --recursive 3. 安装FastRTPS 在终端中输入以下命令,安装FastRTPS: sudo apt-get install ros-foxy-rmw-fastrtps-cpp 4. 安装MAVROS 在终端中输入以下命令,安装MAVROS: sudo apt-get install ros-foxy-mavros ros-foxy-mavros-msgs ros-foxy-mavros-extras 5. 配置环境变量 在终端中输入以下命令,配置环境变量: echo "source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default" >> ~/.bashrc source ~/.bashrc 6. 编译PX4 在终端中输入以下命令,编译PX4: cd ~/PX4-Autopilot DONT_RUN=1 make px4_sitl_default gazebo 7. 运行PX4 在终端中输入以下命令,运行PX4: cd ~/PX4-Autopilot source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot roslaunch px4 posix_sitl.launch 以上就是Ubuntu 20.04配置PX4环境的步骤。 ### 回答2: Ubuntu 20.04 是一种广泛使用的Linux操作系统,在进行PX4环境配置时,它被视为最常用的发行版之一。为了配置PX4环境,您需要按照以下步骤进行操作: 1. 安装Ubuntu 20.04 如果您的计算机上尚未安装Ubuntu 20.04,请先下载最新版本并安装。您可以从Ubuntu官方网站下载。 2. 安装依赖库 PX4需要一些依赖库来编译和运行。为了安装它们,请打开终端并运行以下命令: sudo apt-get update sudo apt-get install python-argparse git-core wget zip python-empy qtcreator cmake build-essential genromfs -y 3. 安装Qt5 为了使Qt Creator可以构建PX4代码,您需要安装Qt5,可以使用以下命令安装: sudo apt-get install qtcreator qt5-default -y 4. 安装PX4 您可以从GitHub下载PX4源代码。使用以下命令: git clone https://github.com/PX4/PX4-Autopilot.git 5. 配置PX4工作空间 PX4需要一个工作空间来构建和运行。为此,您需要设置一个新的文件夹作为工作空间,并将PX4源代码克隆到其中。使用以下命令: mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/PX4/PX4-Autopilot.git cd PX4-Autopilot make px4_sitl_default gazebo 6. 启动PX4 现在,您可以启动PX4,使用以下命令: cd ~/catkin_ws/src/PX4-Autopilot make px4_sitl_default gazebo 7. 测试 现在,您已经成功安装配置PX4环境。您可以通过使用启动命令启动PX4仿真,并验证它是否已正确安装配置。 总之,Ubuntu 20.04配置PX4环境并不是一项复杂的任务。只需按照上述步骤操作,就可以轻松地进行配置。这样就可以启动PX4并开始实验。 ### 回答3: Ubuntu 20.04是目前最常用的操作系统之一,它能够为用户提供强大的功能和极好的用户体验。如果你使用Ubuntu 20.04且想配置PX4环境,以下是简单的步骤: 首先,在终端命令行中输入以下命令,以便获取“px4”存储库:sudo add-apt-repository ppa: px4 / lightweight:以此获取px4存储库。 安装依赖:sudo apt-get update && sudo apt-get install -y ant git zip python-pip python-dev python-tk python-lxml python-numpy python-pyparsing python-serial python-wxgtk3.0 python-wxtools python-yaml python-matplotlib python-setuptools make g++ openjdk-8-jdk openjdk-8-jre-headless libeigen3-dev libgenometools0 libgenometools-dev。 按照以下命令克隆PX4存储库:git clone https://github.com/PX4/PX4-Autopilot。 这个步骤需要一些时间,它将“PIXHAWK”作为默认硬件包进行设置。接下来,使用以下命令找到并打开飞控固件makefile:cd PX4-Autopilot/Tools/px4sdkmake ide-gvim-编辑 makefile以添加以下命令: pkgs/shell_cmds/usb_dev_info:; (cd Tools && $(MAKE) px_generate_uorb_topic_files)make px4_sitl_default gazebo 这样,就可以使用"ctrl+Z"暂停"ctrl+C"停止"暂停"暂停"gazebo"。JMAVSim仿真也可以这样安装:。 make px4_sitl_default jmavsim 最后,在Ubuntu 20.04的终端运行“qgroundcontrol”程序以开始PX4自动驾驶操作。PX4环境就配置好了。 在安装配置PX4环境的过程中,如果遇到任何困难和问题,可以浏览PX4论坛、自动驾驶云和其他PX4社区,寻求帮助和支持。这个开源社区通常会为您提供非常有用的信息和解决方案,以便您在不断发展的自动驾驶行业中获得自信和成功。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值