心路历程
因为在之前搭建深度学习Caffe框架的过程中安装了Anaconda,因此后面搭建Pixhawk+Gazebo仿真环境时,不断出错(错误如下方所示)。
反反复复卸载安装相关组件,尝试了各种办法,花了至少4天时间,最终还是没能解决问题。
之后,为了排除其他因素影响,我在Windows下面直接搭了虚拟机,尝试着一步步搭建,终于可以跑通了。
在这几天的摸爬滚打的过程中,过程虽然煎熬,但自己也学习了不少Linux相关知识,对这个系统了解的程度也比以前深了些。
1
2
3
4
5
6
7
8
9 >/home/cong/src/Firmware/build/posix_sitl_default/build_gazebo/Float.pb.h:12:2: error:
>#error This file was generated by a newer version of protoc which is
> ^
>/home/cong/src/Firmware/build/posix_sitl_default/build_gazebo/Float.pb.h:13:2: error:
>#error incompatible with your Protocol Buffer headers. Please update
> ^
>/home/cong/src/Firmware/build/posix_sitl_default/build_gazebo/Float.pb.h:14:2: error:
>#error your headers.
>
安装ROS
一定要确定Ubuntu与ROS的版本对应
如果安装的是ros-kinetic-desktop-full,其自带gazebo7
ROS发布日期 | ROS版本 | 对应Ubutnu版本 |
---|---|---|
2016.3 | ROS Kinetic Kame | Ubuntu 16.04 (Xenial) / Ubuntu 15.10 (Wily) |
2015.3 | ROS Jade Turtle | Ubuntu 15.04 (Wily) / Ubuntu LTS 14.04 (Trusty) |
2014.7 | ROS Indigo Igloo | Ubuntu 14.04 (Trusty) |
2013.9 | ROS Hydro Medusa | Ubuntu 12.04 LTS (Precise) |
2012.12 | ROS Groovy Galapagos | Ubuntu 12.04 (Precise) |
… | … | … |
添加源:
1 | sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' |
或添加国内源:
1 | sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list' |
设置秘钥:
1 | sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116 |
安装最新桌面版:
1 | # 更新源 |
初始化ROS
初始化rosdep:
1 | sudo rosdep init |
初始化环境变量:
1 | echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc |
上面两句非常非常重要,很多小伙伴在日常的开发过程中,有的找不到 Package, 找不到node, 很多情况下都是没有添加source。
创建catkin工作空间:
1 | mkdir -p ~/catkin_ws/src |
安装MAVROS
1 | sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras ros-kinetic-control-toolbox |
下载一些Geoid Model dataset:
1 | sudo /opt/ros/kinetic/lib/mavros/install_geographiclib_datasets.sh |
外部控制程序
创建外部控制程序包
1 | cd ~/catkin_ws/src |
这一步会创建一个名为offboard的新程序包,这个程序包依赖于roscpp 、mavros以及geometry_msgs。
在offboard目录下生自动成两个文件夹include和src。
将外部控制例程offboard_node.cpp放入刚刚生成的src目录下。然后修改/catkin_ws/src/offboard目录下的CMakeLists.txt文件。取消掉一些注释,生成相应节点(否则会出现找不到节点的错误)。
编译
1 | cd ~/catkin_ws |
仿真
1 | # Terminal 1 切换到固件目录 |
Debugs
1 | # Bug |
1 | # Bug |