一、
首先电脑上已经配置好了PX4的编译环境以及gazebo9
ubuntu 版本:16.04
PX4 Firmware: v1.9.2
PX4与ROS各部分关系
二、安装ROS
根据ubuntu版本,安装ROS Kinetic版本
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
3.添加keys
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
4.安装
这个命令,会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。我们在软件包管理器里看到的软件列表,都是通过update命令更新的。
sudo apt-get update
这里选择桌面版安装,包括了ROS, rqt, rviz, and robot-generic libraries
sudo apt-get install ros-kinetic-desktop
5.环境设置
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
这里的目的是将/opt/ros/kinetic/setup.bash
添加到.bashrc
这个隐藏文件中,目的是每打开一个终端都自动配置好ROS环境,不用手动配置。
使用source
命令使其马上生效,不用重新登录
6.构建软件包的依赖项
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
初始化rosdep
sudo apt install python-rosdep
sudo rosdep init
rosdep update
这两步一般会出现问题,例如
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
几乎都是网络问题,可以设置代理,有的人说连手机热点或者打开错误中的网址,自己新建一个一样的文件再rosdep update
总之这个过程还是挺麻烦的。
printenv | grep ROS
看一下环境变量
没啥毛病,下面就跟着官网创建一个工作空间
$ mkdir -p ~/catkin_ws/src
$ catkin_make
会出现devel和include两个文件夹
source devel/setup.bash
使这个workspace在你环境的最顶层
再查看一下环境变量,应该有两个
$ echo $ROS_PACKAGE_PATH
/home/<youruser>/catkin_ws/src:/opt/ros/kinetic/share
三、MAVROS
看mavros的github官网安装
sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
chmod 777 ./
sudo ./install_geographiclib_datasets.sh
这里wget需要有代理,再配置一下proxychains,用proxychains4命令就可以了
四、外部控制节点
在catkin工作空间中,建立一个ROS包
cd ~/catkin_ws/src
catkin_create_pkg offboard roscpp mavros geometry_msgs
我们将外部控制例程offboard_node.cpp放入刚刚生成的src目录下
并且修改CMakeLists.txt
最后
$ cd ~/catkin_ws
$ catkin_make
make px4_sitl_default gazebo
roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"
rosrun offboard offboard_node
等待一小会后,结果:
rostopic echo /mavros/state
Gazebo本身是独立于ROS的,因此还需要安装ROS的Gazebo插件:
sudo apt install ros-kinetic-gazebo9-*
并且修改~/.bashrc内容 在最后加上
source ~/catkin_ws/devel/setup.bash
source ~/test/Firmware/Tools/setup_gazebo.bash ~/test/Firmware/ ~/test/Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
运行 roslaunch px4 mavros_posix_sitl.launch
Gazebo启动再使用rostopic echo /mavros/state
观察是否连接成功
可以把下面echo屏蔽掉 否则每次打开终端都会出现这个