RoboMaster / RoboRTS

An open source software stack for Real-Time Strategy research on mobile robots
Other
823 stars 347 forks source link

Install RoboRTS in NUC: missed file, cannot find any messages and services defined in ROboRTS #26

Closed DeriZSY closed 5 years ago

DeriZSY commented 5 years ago

fatal error when "catkin_make": modules/perception/detection/armor_detection/constraint/set/proto/constraint_set.pb.h no such file or directory

can be fixed by run "cakin_make" again after the error

DeriZSY commented 5 years ago

Cannot find any messages or servicse implemented in RoboRTS (by "rosmsg list"&"rossrv list") after building successfully (everything else except for parts that utilize messages defined in RoboRTS works fine)

mryigitsen commented 5 years ago

Most of the errors that lead to the fatal errors do cause due to not running catkin_make messages_generate_messages BEFORE running catkin_make, as instructed on the documentation. For the message or service issue, RoboRTS' built messages are NOT a ROS message type, but a header file. As ROS message files end with .msg and the files used in RoboRTS ends with .h, it won't show up on the rosmsg list command.

DeriZSY commented 5 years ago

Most of the errors that lead to the fatal errors do cause due to not running catkin_make messages_generate_messages BEFORE running catkin_make, as instructed on the documentation. For the message or service issue, RoboRTS' built messages are NOT a ROS message type, but a header file. As ROS message files end with .msg and the files used in RoboRTS ends with .h, it won't show up on the rosmsg list command.

  1. For the first problem, we are pretty sure we have run catkin_make_message_generate_messages before catkin_make, but there are still missed file error, and this can only be solved by running catkin_make multiple times. I've had all the people in the algorithm group of our team installed the RoboRTS, but every one meets exactly the same problem. We are not that silly to skip steps in the guide.
  2. All topics using message types defined in RoboRTS all died automatically. What's more, when we tried to manually publish a message of message type defined in RoboRTS (for example when we tried to publish a \EnemyPos message to test the function of gimbal), it says 'Message Invalid'. By the way, messages in RoboRTS are also defined in .msg file, in "RoboRTS/modules/stream/messages/msg/" folder. As far as I know, for all messages in ROS, you have to first write a .msg file, and then compile it to .h file.
mryigitsen commented 5 years ago

That's weird, I've been testing it on multiple platforms including AWS, Azure and local computers and only error I got was some lib only compatible w/arm, but I got that only on x86&64 machines, and all arm machines compiled as it's supposed to.

If you want to try with an older version which has been tested on an Jetson, I have a fork of that, you can try using that as well.

mryigitsen commented 5 years ago

See my pull request for a fix for the message issue. (If needed)

DeriZSY commented 5 years ago

See my pull request for a fix for the message issue. (If needed)

Thanks , I'll check it

0aqz0 commented 5 years ago

You could generate the protobuf files (.pb.h, pb.cc) by yourself. For example, in the directory ~/roborts_ws/src/RoboRTS/modules/perception/detection/armor_detection/constraint_set/proto

$ protoc -I=. --cpp_out=. ./constraint_set.proto

Then you should find constraint_set.pb.h and constraint_set.pb.cc.