marsim环境配置总结

一、序言

研0,做的第一个工作。想基于强化学习做主动SLAM。

现阶段正在做第一步,特征提取和模拟器的学习。

二、marsim配置

1.marsim下载并编译

在GitHub上按照作者提供的方法配置:https://github.com/hku-mars/MARSIM

本次使用的环境:

docker下:

Ubuntu18.04

pcl-1.8.1

环境已打包至DockerHub里

2.marsim运行

这次主要是运行的single_drone_avia的launch文件。运行步骤如下:

catkin_make

source devel/setup.bash

roslaunch test_interface single_drone_avia.launch

运行完之后可在rviz实时查看无人机运动轨迹,点云图以及无人机渲染的点云图。

3.marsim调试运行

之前一直没有做成功,只能跑通单程序的调试运行,感到非常遗憾。在师兄的帮助下,才知道原来可以单节点or多节点的调试,据此开始尝试marsim的节点调试。

本次节点调试采用了single_drone_avia.launch的节点来进行调试。

参考文章:【精选】使用vscode debug ros程序(A-LOAM)_vscode 调试loam代码-CSDN博客
 

步骤:

3.1 修改文件名以及xml以及launch文件

由于marsim的命名不规范,在vscode里面不支持大小写混用的搞法,所以需要修改一些文件和代码(这个巨坑爹);

修改1:将文件名cascadePID改为cascadepid

修改2:将xml包进行修改

修改1-5行如下:

其实只需将cascadePID改为cascadepid即可。

<?xml version="1.0"?>

<package format="2">

<name>cascadepid</name>

<version>0.0.0</version>

<description>The cascadePID package</description>

修改3:修改cascadepid的CMakeList

cmake_minimum_required(VERSION 2.8.3)

project(cascadepid) ##修改1

## Compile as C++11, supported in ROS Kinetic and newer

add_compile_options(-std=c++14)

## Find catkin macros and libraries

## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)

## is used, also find other catkin packages

find_package(catkin REQUIRED COMPONENTS

nav_msgs

roscpp

std_msgs

roslib

quadrotor_msgs

)

find_package(Eigen3 REQUIRED)

# include_directories(${EIGEN3_INCLUDE_DIR})

add_definitions(${EIGEN_DEFINITIONS})

## System dependencies are found with CMake's conventions

# find_package(Boost REQUIRED COMPONENTS system)


 

## Uncomment this if the package has a setup.py. This macro ensures

## modules and global scripts declared therein get installed

## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html

# catkin_python_setup()

################################################

## Declare ROS messages, services and actions ##

################################################

## To declare and build messages, services or actions from within this

## package, follow these steps:

## * Let MSG_DEP_SET be the set of packages whose message types you use in

## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).

## * In the file package.xml:

## * add a build_depend tag for "message_generation"

## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET

## * If MSG_DEP_SET isn't empty the following dependency has been pulled in

## but can be declared for certainty nonetheless:

## * add a exec_depend tag for "message_runtime"

## * In this file (CMakeLists.txt):

## * add "message_generation" and every package in MSG_DEP_SET to

## find_package(catkin REQUIRED COMPONENTS ...)

## * add "message_runtime" and every package in MSG_DEP_SET to

## catkin_package(CATKIN_DEPENDS ...)

## * uncomment the add_*_files sections below as needed

## and list every .msg/.srv/.action file to be processed

## * uncomment the generate_messages entry below

## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)

## Generate messages in the 'msg' folder

# add_message_files(

# FILES

# Message1.msg

# Message2.msg

# )

## Generate services in the 'srv' folder

# add_service_files(

# FILES

# Service1.srv

# Service2.srv

# )

## Generate actions in the 'action' folder

# add_action_files(

# FILES

# Action1.action

# Action2.action

# )

## Generate added messages and services with any dependencies listed here

# generate_messages(

# DEPENDENCIES

# nav_msgs# std_msgs

# )

################################################

## Declare ROS dynamic reconfigure parameters ##

################################################

## To declare and build dynamic reconfigure parameters within this

## package, follow these steps:

## * In the file package.xml:

## * add a build_depend and a exec_depend tag for "dynamic_reconfigure"

## * In this file (CMakeLists.txt):

## * add "dynamic_reconfigure" to

## find_package(catkin REQUIRED COMPONENTS ...)

## * uncomment the "generate_dynamic_reconfigure_options" section below

## and list every .cfg file to be processed

## Generate dynamic reconfigure parameters in the 'cfg' folder

# generate_dynamic_reconfigure_options(

# cfg/DynReconf1.cfg

# cfg/DynReconf2.cfg

# )

###################################

## catkin specific configuration ##

###################################

## The catkin_package macro generates cmake config files for your package

## Declare things to be passed to dependent projects

## INCLUDE_DIRS: uncomment this if your package contains header files

## LIBRARIES: libraries you create in this project that dependent projects also need

## CATKIN_DEPENDS: catkin_packages dependent projects also need

## DEPENDS: system dependencies of this project that dependent projects also need

catkin_package(

INCLUDE_DIRS include

# LIBRARIES cascadePID

CATKIN_DEPENDS nav_msgs roscpp std_msgs

DEPENDS system_lib

)

###########

## Build ##

###########

## Specify additional locations of header files

## Your package locations should be listed before other locations

include_directories(

include

${catkin_INCLUDE_DIRS}

${EIGEN3_INCLUDE_DIR}

)


 

## Declare a C++ library

# add_library(${PROJECT_NAME}

# src/${PROJECT_NAME}/cascadePID.cpp

# )

## Add cmake target dependencies of the library

## as an example, code may need to be generated before libraries

## either from message generation or dynamic reconfigure

# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

## Declare a C++ executable

## With catkin_make all packages are built within a single CMake context

## The recommended prefix ensures that target names across packages don't collide

add_executable(cascadePID_node src/cascadePID_node.cpp)##修改2

## Rename C++ executable without prefix

## The above recommended prefix causes long target names, the following renames the

## target back to the shorter version for ease of user use

## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"

# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")

## Add cmake target dependencies of the executable

## same as for the library above

# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

## Specify libraries to link a library or executable target against

##修改3

target_link_libraries(cascadePID_node

${catkin_LIBRARIES}

)

#############

## Install ##

#############

# all install targets should use catkin DESTINATION variables

# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html

## Mark executable scripts (Python etc.) for installation

## in contrast to setup.py, you can choose the destination

# install(PROGRAMS

# scripts/my_python_script

# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}

# )

## Mark executables for installation

## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html

# install(TARGETS ${PROJECT_NAME}_node

# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}

# )

## Mark libraries for installation

## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html

# install(TARGETS ${PROJECT_NAME}

# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}

# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}

# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}

# )

## Mark cpp header files for installation

# install(DIRECTORY include/${PROJECT_NAME}/

# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}

# FILES_MATCHING PATTERN "*.h"

# PATTERN ".svn" EXCLUDE

# )

## Mark other files for installation (e.g. launch and bag files, etc.)

# install(FILES

# # myfile1

# # myfile2

# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}

# )

#############

## Testing ##

#############

## Add gtest based cpp test target and link libraries

# catkin_add_gtest(${PROJECT_NAME}-test test/test_cascadePID.cpp)

# if(TARGET ${PROJECT_NAME}-test)

# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})

# endif()

## Add folders to be run by python nosetests

# catkin_add_nosetests(test)

3.2 在.vscode下自动生成了c_cpp_properties.json
如下图所示

3.3 配置task

terminal–configure tasks

选择catkin_make: build

将/src/local_sensing/CMakeLists.txt和/src/map_generator/CMakeLists.txt里面的Release注释

run task或者ctrl+shift+B启动编译

terminal->run task

3.4 配置launch

在debug里面选择create a launch.json file

选择ROS

选择ROS:Launch

选择test_interface(先前编译完之后记得source一下,不然可能会找不到)

我这里选了single_drone_avia.launch的配置,最终launch文件如下

3.5 开始调试

在cpp内打断点,直接按开始调试,发现可以实现多节点调试!

运行结果

三、对marsim代码的理解

有时间就更新。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值