请选择 进入手机版 | 继续访问电脑版

0

阿木币

0

精华

182 小时

在线时间

技术大V

Rank: 4

发表于 2020-5-1 13:30:27 4731 浏览 3 回复

[仿真开发] Ros_PX4_Mavros从零入门--哪些坑

本帖最后由 chasing 于 2020-5-1 13:40 编辑

写在前面的话:
一定要确保mavros安装成功。我在安装mavros的时候采用的是官网默认的安装方式,期间一定有Error出现,没有成功,导致后面需要补充安装一些东西。验证是否安装成功,可以在本地运行`roslaunch mavros px4.launch`
注:
1. 默认的mavros源码是安装在catkin_ws文件夹下,可以 首先采用 `catkin clean` 清除源码工程,然后采用`catkin build`(不是`catkin make`)进行编译。如果源码正常编译且环境变量设置正确的话,在其他地方创建ROS工程添加mavros依赖是不会报错的,否则会出现没有找到mavros功能包的错误。(如果显示catkin build没有这个指令,则运行`sudo apt-get install python-catkin-tools`进行安装即可)
2. ROS工程中生成的 可执行文件 放在 devel/lib下面。
3. ROS工程下cpp文件要在 Cmakelist中添加依赖,如下图所示。其中第一句话表示,查找src/offnode.cpp文件进行编译,生成的可执行文件名字为{PROJECT_NAME}. 在本次实验中,如下图2所示,project name 为 px4_simu。所以,生成的可执行文件为 px4_simu_node,参见下图

                               
登录/注册后可看大图


                               
登录/注册后可看大图

                               
登录/注册后可看大图
)

4.
  1. sudo apt-get install ros-kinetic-geographic-msgs
复制代码


                               
登录/注册后可看大图

Could not find the required component 'geographic_msgs'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by "geographic_msgs"
  with any of the following names:

    geographic_msgsConfig.cmake
    geographic_msgs-config.cmake

  Add the installation prefix of "geographic_msgs" to CMAKE_PREFIX_PATH or
  set "geographic_msgs_DIR" to a directory containing one of the above files.
  If "geographic_msgs" provides a separate development package or SDK, be
  sure it has been installed.

紧接着编译仍然报错,

  1. Could NOT find GeographicLib (missing: GeographicLib_LIBRARIES GeographicLib_INCLUDE_DIRS)
复制代码

  然后安装了

  1. sudo apt-get install libgeographic-dev
复制代码

5. 当Ubuntu  install某个东西时,给出下面提示

  1. E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarly unavailable)
  2. E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is an other process using it?
复制代码


删除锁定文件,行了
  1. sudo rm /var/lib/dpkg/lock-frontend      
  2. sudo rm /var/lib/dpkg/lock
复制代码
6.  在重新编译mavros的时候,遇到下面的这个错误,当时就运行`catkin_make_isolated`了,当然这是不对的。改成`catkin build`

CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkin_workspace.cmake:95 (message):
This workspace contains non-catkin packages in it, and catkin cannot build a non-homogeneous workspace without isolation. Try the 'catkin_make_isolated' command instead.
Call Stack (most recent call first):
CMakeLists.txt:68 (catkin_workspace)
7. 此时运行 roslaunch mavros px4_2.launch 时,可能会出现如下错误 (下图所示,转载的图片)

  1. UAS:GeographicLib exception: File not readable
  2. /usr/share/GeographicLib/geoids/egm96-5.pgm |
  3. Run install_geographiclib_dataset.sh script in
  4. order to install Geoid Model dataset!
复制代码



                               
登录/注册后可看大图

解决方法:
mavros 工程下找到 `install_geographiclib_datasets.sh`,并采用sudo 运行。

8. 参照(https://answers.ros.org/question ... g-tried-three-ways/) 执行

  1. sudo apt-get install geographiclib-* ros-kinetic-geographic-*
复制代码

下面展示如何从零开发mavros!   终于进入正题了


1. 首先创建Ros工作空间。
在期望的路径上创建文件夹,比如这里我们采用如下指令创建一个空的文件夹
  1. mkdir Ros_simulation
复制代码
然后,进入该文件夹后创建src文件夹,指令同上
  1. cd Ros_simulation
  2. mkdir src
  3. catkin_init_workspace
复制代码
此时,就可以返回Ros_simulation文件夹下完成后续工作空间的创建,指令为:
  1. cd ..
  2. catkin_make
复制代码
完成之后,再次使用
  1. catkin_make install
复制代码

完成整个工作空间的创建,创建之后如下图所示:

                               
登录/注册后可看大图

2. 创建Ros功能包
在src文件夹下,执行指令

  1. catkin_create_pkg px4_simu rospy roscpp std_msgs mavros
复制代码

创建Ros功能包,其中px4_simu为功能包名称,后面三个参数为依赖。分别表示python支持,cpp支持,ROS消息支持以及mavros。
3. 然后返回工程文件夹进行编译

  1. catkin_make
复制代码

最后通过如下指令声明一下路径:

  1. source devel/setup.bash  #该语句定位到工程文件夹下devel文件夹
  2. echo $ROS_PACKAGE_PATH
复制代码

4. 在ROS功能包(本文中为px4_simu)下创建源文件,路径为px4_simu/src,使用指令
  1. touch offnode.cpp
复制代码
5. 我这里将px4官网CPP代码直接复制进来,链接为(https://dev.px4.io/master/en/ros/mavros_offboard.html),代码具体解释官网以及CSDN上有很多,在此不再赘述。ctrl+c ctrl+v之后,保存,在Cmakelist中添加依赖,具体如上图1所示。然后编译即可。
6. 最后启动需要先启动gazebo:

  1. make px4_sitl gazebo
复制代码

然后启动mavros:

  1. roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
复制代码

最后在启动Ros节点:
  1. rosrun px4_simu px4_simu_node
复制代码
就可以看到gazebo下四轴在offboard模式下起飞了。

后续
这次实验中,打开的终端为3个,下一步将考虑采用roslaunch的方式进行整合。

本文原文链接为  https://blog.csdn.net/qq_15390133/article/details/105327213


评分

参与人数 1阿木币 +3 收起 理由
admin + 3 赞一个!

查看全部评分


扫一扫浏览分享
回复

使用道具 举报

131

阿木币

0

精华

270 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

发表于 2020-5-6 11:56:57
我不为己,谁人为我,但我只为己,那我又是谁?
回复

使用道具 举报

0

阿木币

0

精华

182 小时

在线时间

技术大V

Rank: 4

 楼主| 发表于 2020-5-6 12:39:47

多谢大佬支持
回复 点赞

使用道具 举报

176

阿木币

0

精华

349 小时

在线时间

版主

Rank: 7Rank: 7Rank: 7

发表于 2020-5-6 16:27:43

有那么多阿木币可以打赏哈~~
回复 点赞

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表