先将foxglove
的 ros1
的msg下载下来
schema的github地址
访问不到github的小伙伴可以移步到这里 下载资源
如果想要直接使用python3的结构的,可以从这里下载,可以直接使用,就无需看本博客了: python3结构
激活环境
source /opt/ros/noetic/setup.sh
如果还没有创建一个工作空间的话,创建一个工作空间:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_make
source devel/setup.bash
创建foxglove_msgs包
catkin_create_pkg foxglove_msgs std_msgs geometry_msgs rospy roscpp
# 进入包中
cd src/foxglove_msgs/
新建文件夹msgs,存放msg文件,名称不能改变
mkdir msg
然后把msg文件复制到新建的文件夹msg
下.(schema版的msg文件在schemas-main/schemas/ros1
下, schemas-main
为你解压后的目录)
修改package.xml
文件
vim package.xml
打开下面两个注释掉的代码,若没有,则添加:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
然后修改CMakeLists.txt
文件
vim CMakeLists.txt
修改以下内容: 无需全部复制,添加本来没有的即可
find_package(catkin REQUIRED COMPONENTS
geometry_msgs
roscpp
rospy
std_msgs
message_generation
)
# 添加自定义消息文件,本来是注释的
add_message_files(
FILES
ArrowPrimitive.msg
CameraCalibration.msg
CircleAnnotation.msg
Color.msg
CompressedImage.msg
CubePrimitive.msg
CylinderPrimitive.msg
FrameTransform.msg
GeoJSON.msg
Grid.msg
ImageAnnotations.msg
KeyValuePair.msg
LaserScan.msg
LinePrimitive.msg
LocationFix.msg
Log.msg
ModelPrimitive.msg
PackedElementField.msg
Point2.msg
PointCloud.msg
PointsAnnotation.msg
PoseInFrame.msg
PosesInFrame.msg
RawImage.msg
SceneEntityDeletion.msg
SceneEntity.msg
SceneUpdate.msg
SpherePrimitive.msg
TextPrimitive.msg
TriangleListPrimitive.msg
Vector2.msg
)
generate_messages(
DEPENDENCIES
geometry_msgs
std_msgs
)
重新构建ros包
cd ../..
catkin_make
如果不出意外的话,python文件就会被编译好了.
编译好的python文件存放在当前目录下的 devel/lib/python3/dist-packages/foxglove_msgs
的位置.
c++文件在:devel/include/foxglove_msgs/
下
一番周折,大功告成.