[小冬搞开发]-基础篇-飞控开发系列(二)

小冬搞机之M100demo测试

Posted by Lordon on February 23, 2020

0、关于本文

老板前不久嚷着要买飞机,前几天拿出来订单一看还真是,两个M600还有几个M200-V2,确实抛了不少钱.不过拿来直接玩的话老王肯定是舍不得的,搜了一堆论文觉得纯搞飞控的控制算法不太好抢人家的饭碗,就打起了先仿真这几个dji的想法…

1、开源项目搜集

最近开源的ROS and Gazebo packages for DJI M100 drone使用了最新的DJI Onboard-SDK和Onboard-SDK-ROS 3.8版本,测试后编译通过,本文章主要讲解此项目.

最早开源的caochao-HKU_m100提出了gazebo下m100的仿真模型,并且做了模拟跟踪标志tag并实现着陆的研究,因为时代久远,issue中建议用DJI Onboard-SDK和Onboard-SDK-ROS 3.2版本,同学测试后也编译通过,不过ros(kinetic)安装的gazebo为7.1版本,出现打不开world的情况…

2016年随着无人机平台RotorS的发布越来越多的人开始尝试自己搭建无人机平台,2019年后该项目因为ROS本身的迭代升级在编译方面出现了些许bug,后来CrazyS对该项目进行了改进,得以继续换发新的生机活力,感谢Github@gsilano.

2、DJI-SDK环境配置

安装Onboard-SDK (保存于/usr/local/include)以及 Onboard-SDK-ROS 3.8

点此跳转安装教程

We almost have all the software setup for DJI SDK ROS.因为我们没有m100的硬件,便需要对dji-m100这个项目下手了:P

3、编译过程

1
2
$ cd ~/your_catkin_ws/
$ catkin_make

缺失nmea-msgs

1
sudo apt-get install ros-melodic-nmea-msgs

缺失 apriltags_ros

一直没出melodic版本,不用怕直接clone到src/即可

1
2
cd ~/catkin_ws/src
git clone https://github.com/RIVeR-Lab/apriltags_ros.git

缺失rviz_visual_tools

1
sudo apt-get install ros-melodic-rviz-visual-tools

以及…众多的包
https://github.com/tu-darmstadt-ros-pkg/hector_quadrotor
http://wiki.ros.org/hector_pose_estimation 要删掉没有用的
http://wiki.ros.org/hector_gazebo_plugins
http://wiki.ros.org/geographic_msgs
http://wiki.ros.org/uuid_msgs

多熟悉包的安装方法,apt-get以及源码包git都好用.

4、dji_m100功能介绍

case1:

1
2
roslaunch dji_m100_gazebo start.launch 
roslaunch dji_m100_gazebo spawn_dji_m100.launch //显示静态模型

两个一起食用可创建一个安静的世界(hhhhh),可以用来查看uav结构设计的准确与否,dji_m100项目中硬件部分还是不错的,hku_m100项目摄像头部分存在bug.

case2:

spawn_drones.launch //显示多架无人机实现编队飞行,控制类型为sitl

这一launch文件包含在simulate.launch中,所以只执行下面命令即可:

1
roslaunch dji_m100_gazebo simulate.launch

这下仿真的环境基本都构建好了,下面就是遥控怎么让uav飞起来.

探索阶段…

这个项目说实话在hku_m100项目的基础上进行了一定的机械结构的优化,也对定点着陆这一目标做了调整,但是缺少了README真的难受啊.

查看simnulate节点

  • 话题类型
    1
    
    $ rostopic type /uav1/cmd_vel
    

geometry_msgs/Twist

1
$ rosmsg show /uav1/cmd_vel

geometry_msgs/Vector3 linear
float64 vx
float64 vy
float64 vz
geometry_msgs/Vector3 angular
float64 wx
float64 wy
float64 wz

1
角速度(angular_velocity)[vx vy vz]和线加速度(linear_acceleration)[wx wy wz]的类型为三维向量(geometry_msgs/Vector3)。
  • 控制指令

    cmd_vel一般来说应该是控制指令 ``` rostopic pub -1 /uav1/cmd_vel geometry_msgs/Twist – ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’

//姿态(orientation)[q0 q1 q2 q3]类型为四元数(geometry_msgs/Quaternion);

1
2
3
4

#### 键盘控制
好,它不动= = 那么就来尝试用键盘控制它一下吧.

git@github.com:ros-teleop/teleop_twist_keyboard.git

1
2
首先从上面网址下载ros键盘控制py程序,简单查看一下程序运行时候的相关信息:

dong@Inspiron-7447:~/Ros/Ros_4$ roscore dong@Inspiron-7447:~/Ros/Ros_4$ rosrun teleop_twist_keyboard teleop_twist_keyboard dong@Inspiron-7447:~/Ros/Ros_4$ rostopic list /cmd_vel /rosout /rosout_agg dong@Inspiron-7447:~/Ros/Ros_4$ rostopic info /cmd_vel Type: geometry_msgs/Twist

Publishers:

  • /teleop_twist_keyboard (http://Inspiron-7447:36347/)

Subscribers: None ``` 键盘控制的话题发布到/cmd_vel上,数据类型为geometry_msgs/Vector3,那么只要在程序中订阅一下这个话题并赋值即可控制目标的运动,当然,对于小车的话那种轮式的可以直接拿来当速度,或者积分算个路程来运动,这个飞机模型传感器都没有装..应该只是用来做与实际物体同步情况的测试.

5、总结

在家休息了一个月指令也忘得七七八八,正好跟师兄边讨论边练手又过了一遍. 仿真方面硬件存在很大问题,明天开始对建模部分进行探索,详细说明.urdf.dae.urdf.xacro.stl.blender类型的文件生成过程以及记录自己的建模探索过程.