ROS是一个面向机器人的次级操作系统。
工作空间
Workspace是一个存放工程开发相关文件的文件夹。
src:代码空间(Source Space)
build:编译空间(Build Space)
devel:开发空间(Development Space)
install:安装空间(Install Space)
创建工作空间:
mkdir -p ~/catkin_ws/src #创建目录,-p用于判定该文件夹是否存在
cd ~/catkin_wa/src
catkin_init_workspace
工作空间src
文件夹中执行catkin_init_worksapce
进行工作空间初始化时,会在src
文件夹下创建一个名为CMakeLists.txt
的指向/opt/ros/melodic/share/catkin/cmake/toplevel.cmake
的软链接,因此,打开CMakeLists.txt
时,实际上相当于打开了toplevel.cmake
,此时对它进行修改的话,所有工作空间由catkin_init_worksapce
创建的CMakeList.txt
都会受到影响。
编译工作空间:
cd ~/catkin_ws
catkin_make #开始编译
设置环境变量:
source ~/catkin_ws/devel/setup.bash
检查环境变量:
echo $ROS_PACKAGE_PATH # echo用于显示环境变量
搭建VSCode开发环境
创建ROS工作空间
创建工作空间:
mkdir -p ~/catkin_ws/src #创建目录,-p用于判定该文件夹是否存在
cd ~/catkin_ws/src
catkin_init_workspace
可以看到catkin_ws目录下由catkin_tools自动创建的一个配置相关的目录.catkin_tools
,则成功初始化ROS工作空间。
若产生Could not start process"catkin_make" --cmake -args -G'CodeBlocks' -Unix Makefiles
错误提醒,则是因为没有安装catkin tools工具。
采用如下命令安装:
sudo apt install python3-catkin-tools python3-osrf-pycommon
编译工作空间
编译工作空间:
cd ~/catkin_ws
catkin_make #开始编译
在catkin_ws目录下生成出build、devel、logs等目录。
之后,通过code .
与vscode进行关联。
可以看到VSCode在catkin_ws
目录下创建了一个名为.vscode
的文件夹,内有c_cpp_properties.json
和setting.json
两个文件,其中,前者是关于C++相关的ROS配置,后者是关于python相关的ROS配置。
开发ROS
创建程序包
- 右键
src
,点击Create Catkin Package
,输入Project名称; - 添加依赖:
roscpp
,std_msgs
,rospy
,依赖用空格隔开;
自此,默认会生成一系列文件夹/文件:
package.xml
为该程序包的基本信息。
- 实现代码:在demo_1的文件夹下添加脚本。
- 编译配置:加载当前工程的setup.bash,
source devel/setup.bash
;用catkin_make
进行编译。结束后,采用roscore
启动master,通过rosrun
运行。
VIN-Fusion
git clone [website]
一般把下载内容存放在系统所打开的文件夹下。
可以通过将仓库地址前缀http
改成git
来实现加速。
克隆代码+编译代码+激活环境。
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash
下载测试数据集(EURoC MAV)
wget http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_01_easy/MH_01_easy.bag
单目相机+IMU测试
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
(optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag