实现步骤
- 构建一个新的软件包,包名叫做lidar_pkg。
cd catkin_ws/src/
catkin_create_pkg lidar_pkg roscpp rospy sensor_msgs
输入code,打开vscode
-
在软件包中新建一个节点,节点名叫做lidar_node。
-
在节点中,向ROS大管家NodeHandle申请订阅话题/scan,并设置回调函数为LidarCallback()。
-
构建回调函数LidarCallback(),用来接收和处理雷达数据。
-
调用ROSINFO()显示雷达检测到的前方障碍物距离。
步骤345的代码如下
#include <ros/ros.h>
#include <sensor_msgs/LaserScan.h>
void LidarCallback(const sensor_msgs::LaserScan msg){
float fMidDist = msg.ranges[180];
ROS_INFO("前方测距 ranges[180]=%f 米", fMidDist);
}
int main(int argc, char *argv[]){
setlocale(LC_ALL,"");
ros::init(argc, argv, "lidar_node");
ros::NodeHandle n;
ros::Subscriber lidar_sub = n.subscribe("/scan", 10, &LidarCallback);
ros::spin();
return 0;
}
编写好代码后,需要编译。
打开cmakelists.txt
add_executable(${PROJECT_NAME}_node src/lidar_pkg_node.cpp)
target_link_libraries(${PROJECT_NAME}_node
${catkin_LIBRARIES}
)
这几行其实就是里面136行和149-151行的内容。
将 这几行换成下面 几行
add_executable(lidar_node src/lidar_node.cpp)
target_link_libraries(lidar_node
${catkin_LIBRARIES}
)
编译
ctrl+alt+T打开终端,输入
cd catkin_ws/
catkin_make
以上就是项目编写 的一般过程。
接下来我们测试一下 我们的代码
首先,使用下面命令 打开gazebo仿真环境
roslaunch wpr_simulation wpb_simple.launch
使用terminator终端工具,ctrl shift+O分屏,输入
rosrun lidar_pkg lidar_node
标签:node,catkin,C++,lidar,pkg,LidarCallback,ros,gazebo,ROS1
From: https://blog.csdn.net/knighthood2001/article/details/142852820