ros创建功能包和编译过程问题处理

Posted loongembedded

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ros创建功能包和编译过程问题处理相关的知识,希望对你有一定的参考价值。

文章目录

1. 创建工作空间和功能包

参考添加链接描述

2.新建cpp文件

在创建的功能包helloworld/src下创建helloworld.cpp文件,内容如下:

//1.包含ros的头文件
#include "ros/ros.h"

//2.编写main函数
int main(int argc, char * argv[])
	//3.初始化ros节点
	ros::init(argc,argv,"hello_node");
	
	//4.输出日志
	ROS_INFO("hello wordld!");
	return 0;

3.修改CMakeLists.txt


修改helloworld/CMakeLists.txt文件,修改前后的对比图如下

总结修改有几点,在build部分
(1) 找到add_executable()去掉前面的注释,并把此函数第1个参数(节点名)改为hw(可根据需要修改),第2个参数改为新建的cpp文件,比如helloworld.cpp。

(2) 找到target_link_libraries(),并去掉注释,并把此函数第1个参数改为hw,和add_executable()第1个参数名字保持一样。

下面就开始编译

4.编译问题

在catkin_ws下用catkin_make命令编译

4.1 Could NOT find rospy (missing: rospy_DIR)


解决方案:find_package()函数注释掉第3个参数rospy的引用

5. 运行可执行文件

5.1 运行roscore的Resource not found: roslaunch的解决方法

具体信息:

... logging to /home/kandi/.ros/log/8e9b6ac4-b602-11ec-96b9-7fb5732bd610/roslaunch-ubuntu-2120.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

Resource not found: roslaunch
ROS path [0]=/opt/ros/noetic/share/ros
ROS path [1]=/home/kandi/catkin_ws/src
ROS path [2]=/opt/ros/noetic/share
The traceback for the exception was written to the log file

根据回忆,之前运行roscore是没问题的,中间在处理编译问题的时候按照了下面的软件:sudo apt-get install python3-roslaunch

解决方法:
sudo apt-get install ros-noetic-roslaunch
换成noetic对应的版本即可。

5.2 Command ‘rosrun’ not found问题

具体报错信息:

Command 'rosrun' not found, but can be installed with:

sudo apt install rosbash

解决方法:重新安装ros版本
sudo apt install ros-noetic-desktop-full

5.3 执行可执行文件

命令行终端先运行roscore启动master阶段,再在另一个终端执行可执行文件,生成的可执行文件在~/catkin_ws/devel/lib/helloworld目录下

有两种运行方法,到可行性文件所在目录:
(1) rosrun命令:rosrun helloworld hw,其中helloworld是功能包名,hw是节点名(也就是可执行文件名)
(2) 直接执行:./hw。

以上是关于ros创建功能包和编译过程问题处理的主要内容,如果未能解决你的问题,请参考以下文章

ROS: catkin和rosmake创建和编译功能包

ROS创建工作空间和功能包

虚拟机Ubuntu16.04的ROS开发环境建立

虚拟机Ubuntu16.04的ROS开发环境建立

ROS: catkin和rosmake创建和编译功能包执行节点

ROS——基于python3实现opencv图像处理任务(Melodic)