1. 参考资料
- ROS系统的理解:https://zhuanlan.zhihu.com/p/499427714
- ROS wiki:http://wiki.ros.org/ROS/Tutorials
- Livox wiki:https://livox-wiki-cn.readthedocs.io/zh-cn/latest/tutorials/other_product/single_lidar_capture.html
- ROS中使用open3d进行点云处理:https://github.com/karaage0703/open3d_ros/tree/master, https://karaage.hatenadiary.jp/entry/2018/03/12/073000
2. ROS实用操作
2.1 Python包的创建
先进入工作空间的src
目录下,执行
catkin_create_pkg pkg_name std_msgs rospy roscpp rosmsg
# 该命令格式如下
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
此时在pkg_name
的路径下会生成相应的文件夹与文件,若后续想要增加包的依赖或更改包的名称,修改该目录下的CMakeLists.txt
和package.xml
即可。
参考:http://wiki.ros.org/ROS/Tutorials/CreatingPackage
📁workspace(ROS的工作空间)
├── 📁build
├── 📁devel
│ ├── 📃setup.bash
└── 📁src
├── 📃CMakeLists.txt
└── 📁pkg_name
├── 📃CMakeLists.txt
├── 📁include
├── 📃package.xml
└── 📁src
cd进入pkg_name
的路径下,创建scripts
路径
mkdir scripts
在此文件夹下编写python代码,注意要在文件头部添加以下两行
#!/usr/bin/env python
# coding:utf-8
完成后赋予执行权限
chmod +x your_python_file.py
编译和source:
cd workspace
catkin_make
source ./devel/setup.bash
2.2 运行节点
ROS的节点运行有两种方式,一种是先启动ROS master再run节点,另一种是使用launch文件。使用launch文件会自动启动ROS master,适用于需要一次性运行多个节点的场景。
-
roscore
# 在第一个终端中 roscore # 新启一个终端 [pkg名] [py文件] rosrun pkg_name your_python_file.py
-
launch文件
roslaunch pkg_name your_launch_file.launch
launch文件需要提前编写好。
-
※ 遇到过的问题
问题:重新编译后出现class无法import的情况。
解决:删除
devel/lib/
目录下pkg_name
的相应文件夹。
2.3 Subscriber 与 Publisher
关于queue_size:https://blog.csdn.net/benchuspx/article/details/129334680
2.4 ROS日志
- 查看日志
rosrun rqt_console rqt_console
- 检查日志情况
rosclean check
- 清理日志
rosclean purge
3. 编译C++包
参考资料:使用ros编译运行自己写的程序:https://blog.csdn.net/weixin_45617478/article/details/110205534
# 创建包
cd catkin_ws/src
catkin_create pkg_name roscpp rospy std_msgs
把包的cpp文件复制到catkin_ws/src/pkg_name/src
下,之后进入catkin_ws/src/pkg_name/
目录,修改CMakeLists.txt
.
修改的部分有:
find_package (添加4个)
include_directories
add_executable(pkg_name src/XXX.cpp)
target_link_libraries(pkg_name ${catkin_LIBRARIES})
# 编译
cd catkin_ws/
catkin_make
若遇到Error,显示找不到某个包,进行安装:
sudo apt-get install ros-melodic-pkg
再重新编译。
注意:编译完成之后要进行source!