无人机仿真-PX4固件编译、3D仿真环境gazebo及offboard模式下控制无人机运动

225
0
2020年11月4日 09时02分

无人机仿真-PX4固件编译、3D仿真环境gazebo及offboard模式控制无人机运动

这篇博客讲的是如何使用仿真环境进行无人机的仿真和控制,如果还没搭建好仿真环境,可以参考我的上一篇博客,欢迎点赞和留言😀

PX4固件的编译、上传以及载入gazebo仿真器

  1. 在安装完环境后,就可以对PX4固件进行编译了
cd /Firmware  #进入你的机器上下载PX4固件的目录
make px4_sitl_default gazebo  # 编译固件并载入仿真环境

 

 

这一步之后就可以看到启动了仿真环境,环境中有一个无人机,pxh可以用来执行命令,比如可以执行

 

commander takeoff

 

进行自动起飞
具体支持的命令可以使用help查看,如果报错,请确认一下是否在/Firmware目录下

 

1

 

2. 这里还要说明一下,PX4固件有很多版本,可以使用git相关的命令查看固件版本信息

 

git status #查看自己当前使用的版本
git tag #查看一共有哪些版本
git checkout -b v1.9.2  #切换当前使用的版本,修改后面的版本号就可以

 

 

有时候最新的版本无法成功编译,报缺什么模块,就可以切换一下固件的版本试一下

启动ROS和仿真器

  1. 使用launch脚本就可以,不知道后面有什么参数都可以使用补全查看一下
roslaunch px4 mavros_posix_sitl.launch

 

分别启动各个软件

  1. 使用roslaunch px4 mavros_posix_sitl.launch启动完整环境有可能使用地面站或者外部命令无法对仿真环境中的无人机进行控制,这是可以考虑单独启动每个软件,这样一般都能连接成功
# 启动无人机仿真环境
make px4_sitl_default gazebo 
# 启动MAVROS,链接到本地ROS
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
# 运行外部控制程序,这里的外部控制程序编写方法参考下一节内容
rosrun offboard offboard_node

 

 

编写自己的外部控制程序包

  1. 外部控制程序offboard_node.cpp以及释义可以点击PX4中文维基网
  2. 根据ROS官网的教程,先建立一个ROS包,catkin_create_pkg命令会要求你输入package_name,如果有需要你还可以在后面添加一些需要依赖的其它程序包‘
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

 

这里我们可以执行:

 

cd ~/catkin_ws/src
catkin_create_pkg offboard roscpp mavros geometry_msgs

 

 

这一步会创建一个名为offboard的新程序包,这个程序包依赖于roscpp 、mavros以及geometry_msgs,接下来我们需要将外部控制程序offboard_node.cpp放入生成的offboard目录下的src目录下,然后需要在/catkin_ws/src/offboard目录下的CMakeLists.txt文件中添加生成的节点的信息,如果不添加,rosrun节点的时候无法找到这里编译的offboard_node节点

 

2

 

接下来就可以进行编译了

 

cd /catkin_ws
catkin_make

 

编译成功之后可以看见将这个外部程序包offboard_node进行编译了

 

3

 

  1. 到这里外部控制程序包就编译成功了,可以试试运行这个外部控制程序包控制无人机进入offboard模式,可以让无人机停留在空中,运行外部程序包的命令为:
rosrun offboard offboard_node

 

基础知识了解

  1. catkin_make 是一个命令行工具,它简化了catkin的标准工作流程。你可以认为catkin_make是在CMake标准工作流程中依次调用了cmake 和 make。
  2. rosnode 显示当前运行的ROS节点信息。rosnode list 指令列出活跃的节点,rosnode info 命令返回的是关于一个特定节点的信息
  3. rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径),

 

rosrun [package_name] [node_name] 

 

发表评论

后才能评论