【为了使说明更加清晰,在bash命令上使用注释说明该命令应该在主机shell中执行还是容器shell中执行】
克隆fast-planner源码
#主机终端
mkdir -p ~/quadRotor/planner_ws/src
cd ~/quadRotor/planner_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/Fast-Planner.git
设置docker pull 代理(下面的指令如果可以直接pull下来,则无需设置)
#主机终端
docker pull osrf/ros:melodic-desktop-full
设置x11服务器,从而可以在容器中运行图形化界面(rviz)
#主机终端
xhost +local:root
创建,进入容器(如果没有配置ubuntu代理,则省略http_proxy和https_proxy那两行)
#主机终端
sudo docker run -it \
-e DISPLAY=$DISPLAY \
-e http_proxy="http://127.0.0.1:7890" \
-e https_proxy="http://127.0.0.1:7890" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/quadRotor/planner_ws:/planner_ws:rw\
--name fast_planner\
osrf/ros:melodic-desktop-full
进入容器终端后,安装依赖
#容器终端
sudo apt update
sudo apt-get install libarmadillo-dev ros-melodic-nlopt
编译
#容器终端
cd planner_ws
catkin_make
编译成功,运行仿真
#容器终端
source devel/setup.bash && roslaunch plan_manage rviz.launch
在主机终端中执行,再打开一个新的容器终端
#主机终端
docker exec -it fast_planner bash
容器终端中执行
#容器终端
source devel/setup.bash && roslaunch plan_manage kino_replan.launch
可以正常仿真
使用vscode开发
vscode安装docker扩展,右键容器fast_planner 选择attach visual studio code
安装c/c++扩展,ros扩展到容器
打开终端
#容器终端
echo 'source /opt/ros/melodic/setup.bash' >> /root/.bashrc
ros扩展设置填写
然后打开planner_ws文件夹,ros扩展自动配置工作空间,.vscode目录下生成配置文件。
ctrl + shift + p选择run tasks->catkin_make,可以执行ros扩展配置的编译任务
打开项目文件planner_ws,符号跳转正常,配置完成。
如果没有成功自动配置工作空间,没有catkin_make 任务,说明ros扩展未成功识别。关闭项目,重新attach到容器,进入工作空间文件夹,一般可解决。