C++ 罗斯犯错误
我目前正在与ROS合作一个项目。我对ROS和它的功能是完全陌生的。目前我正在做一个关于ROS的教程,并且第一次开始使用代码。虽然我确实有C++的经验,但我不知道出了什么问题。在ROS中,我使用rosmake命令,它无法编译cpp文件/代码。有人能帮我弄清楚为什么会出错吗?(以及可能如何修复它?) 以下是cpp文件代码:C++ 罗斯犯错误,c++,ros,C++,Ros,我目前正在与ROS合作一个项目。我对ROS和它的功能是完全陌生的。目前我正在做一个关于ROS的教程,并且第一次开始使用代码。虽然我确实有C++的经验,但我不知道出了什么问题。在ROS中,我使用rosmake命令,它无法编译cpp文件/代码。有人能帮我弄清楚为什么会出错吗?(以及可能如何修复它?) 以下是cpp文件代码: #include "ros/ros.h" #include "std_msgs/String.h" #include <sstream> int main(int a
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
int main(int argc, char **argv)
{
ros::init(argc, argv, "example1_a");
ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise<std_
msgs::String>("message", 1000);
ros::Rate loop_rate(10);
while (ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << " I am the example1_a node ";
msg.data = ss.str();
//ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
}
return 0;
}
<> > C++代码中的断线只能用3种方式来完成:
cout<<"Error:This is a really long error "
"message that exceeds the maximum permitted length.\n";
<代码> c> C++代码中的断线只能用3种方式来完成:
cout<<"Error:This is a really long error "
"message that exceeds the maximum permitted length.\n";
cout改变:
ros::Publisher chatter_pub = n.advertise<std_
msgs::String>("message", 1000);
其他方法:
如果您使用catkin_make并希望清理工作区以切换到catkin build use
如果您使用catkin build并希望清理工作区以切换到catkin,请使用
rosmake vs柳絮:
由于ROS Groovy,不建议使用rosmake,以下是我们使用柳絮的原因:
- 更好地利用Cmake提供的所有工具
- Cmake的C表示跨平台。其想法是使ROS在不同的体系结构(ARM)和操作系统(OSX和Windows)上更具可移植性
- 使用rosbuild,每个包都有自己的Cmake,包依赖关系管理就不那么稳定了
- 通过并行化依赖项,Cmake可以更智能地编译
- 通过优化依赖项减少内存空间
- 单一安装目标,允许公司在ROS上运行封闭的专有软件
柳絮制作与柳絮制作:
完全相同,但最新的柳絮构建。现在,有些人建议从柳絮制作改为柳絮制作。两者之间的主要区别在于catkin build具有更好的隔离包。它将为每个包构建一个工作区 变化:
ros::Publisher chatter_pub = n.advertise<std_
msgs::String>("message", 1000);
其他方法:
如果您使用catkin_make并希望清理工作区以切换到catkin build use
如果您使用catkin build并希望清理工作区以切换到catkin,请使用
rosmake vs柳絮:
由于ROS Groovy,不建议使用rosmake,以下是我们使用柳絮的原因:
- 更好地利用Cmake提供的所有工具
- Cmake的C表示跨平台。其想法是使ROS在不同的体系结构(ARM)和操作系统(OSX和Windows)上更具可移植性
- 使用rosbuild,每个包都有自己的Cmake,包依赖关系管理就不那么稳定了
- 通过并行化依赖项,Cmake可以更智能地编译
- 通过优化依赖项减少内存空间
- 单一安装目标,允许公司在ROS上运行封闭的专有软件
柳絮制作与柳絮制作:
完全相同,但最新的柳絮构建。现在,有些人建议从柳絮制作改为柳絮制作。两者之间的主要区别在于catkin build具有更好的隔离包。它将为每个包构建一个工作区 使用C++11制作项目。
为此,请在命令中使用cmake标志:
catkin_make -DCMAKE_CXX_FLAGS=-std=c++11
或
使用C++11创建项目。
为此,请在命令中使用cmake标志:
catkin_make -DCMAKE_CXX_FLAGS=-std=c++11
或
代码中有一个奇怪的换行符,不应该出现。C++对这些错误非常敏感,并且可以产生很多不是实际错误的后续错误,而是因为早期错误而产生的问题。修复第一个错误,剩下的大部分(甚至所有)错误都应该消失。还请注意,错误消息会告诉您确切的位置(文件名、行号,甚至是遇到错误的行中的“箭头”),使用该位置可以在源代码中定位错误。此外,与问题无关,编译器也不需要,但缩进使代码更易于阅读。请以某种方式缩进您的代码,特别是如果其他人看到它(使用“其他人”,您应该在一个月、一年或更长的时间内包含您自己)。谢谢,这解决了问题。我不明白为什么我没有弄明白。只是一个旁注:你使用rosmake
而不是catkin
有什么特别的原因吗?rosmake已经过时了,一般不应该用于新的软件包。我不知道,谢谢。从今天开始使用柳絮,效果很好。代码中有一个奇怪的换行符,不应该出现。C++对这些错误非常敏感,并且可以产生很多不是实际错误的后续错误,而是因为早期错误而产生的问题。修复第一个错误,剩下的大部分(甚至所有)错误都应该消失。还请注意,错误消息会告诉您确切的位置(文件名、行号,甚至是遇到错误的行中的“箭头”),使用该位置可以在源代码中定位错误。此外,与问题无关,编译器也不需要,但缩进使代码更易于阅读。请以某种方式缩进您的代码,特别是如果其他人看到它(使用“其他人”,您应该在一个月、一年或更长的时间内包含您自己)。谢谢,这解决了问题。我不明白为什么我没有弄明白。只是一个旁注:你使用rosmake
而不是catkin
有什么特别的原因吗?rosmake已经过时了,一般不应该用于新的软件包。我不知道,谢谢。今天开始用柳絮,效果很好。
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("message", 1000);
$ cd ~/catkin_ws
$ sudo rm -r devel build install
$ catkin_make clean
$ catkin build
$ catkin clean
$ catkin_make
catkin_make -DCMAKE_CXX_FLAGS=-std=c++11
catkin build -DCMAKE_CXX_FLAGS=-std=c++11