ros常用命令(长期修改,自己复制粘贴参阅用) 您所在的位置:网站首页 虚拟机终端复制粘贴命令 ros常用命令(长期修改,自己复制粘贴参阅用)

ros常用命令(长期修改,自己复制粘贴参阅用)

2024-06-25 14:33| 来源: 网络整理| 查看: 265

文章目录 配置深度强化学习环境时常用的命令ros环境变量ubuntu命令ros常用命令遇到的问题

配置深度强化学习环境时常用的命令

创建完环境变量指令

echo 'export PATH="/home/yourname/anaconda3/bin:$PATH"' >> ~/.bashrc source ~/.bashrc

查看所有环境

conda env list

激活某环境

source activate base

推出虚拟环境

conda deactivate

删除某环境

conda remove -n your_env_name --all

创建环境

conda create -n ros python=3.8.5

如果需要卸载anaconda的话,只需要删除anaconda目录即可

rm -rf /anaconda/anaconda3

修改环境变量

sudo gedit ~/.bashrc

创建名为your_env_name的环境,并指定py环境

conda create --name your_env_name python=3.6

获取版本号

conda --version

查看当前存在哪些虚拟环境

conda env list ros环境变量

安装ros 的时候要设置ros的环境变量,ROS自身工作空间的环境变量配置脚本文件setup.bash在/opt/ros/kinetic路径下,ROS版本是kinetic版本,所以此处是kinetic:

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc

然后是如果创建了工作空间,同样需要讲工作空间的setup.bash写入环境变量

echo "source /home/gc/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

这行命令的意思是将重新编辑的终端配置文件.bashrc保存一下

source ~/.bashrc

也可以不执行上述语句,用以下代替。把当前工作空间刷新到当前窗口的环境变量,但是换终端窗口任然需要执行,下面的命令是在工作空间下执行的,意思是把工作空间目录下,devel文件夹里的setup.bash文件挂载到ROS的文件系统里去,这样当用户执行一些文件系统的命令时,就不会提示找不到该工作空间里的包或者文件了。

cd 工作空间 source ./devel/setup.bash

我们也可以直接打开这个.bashrc文件编辑,添加ros命令

gedit ~/.bashrc

安装ros 的时候要设置ros的环境变量,ROS自身工作空间的环境变量配置脚本文件setup.bash在/opt/ros/kinetic路径下,ROS版本是kinetic版本,所以此处是kinetic:

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc

然后是如果创建了工作空间,同样需要讲工作空间的setup.bash写入环境变量

echo "source /home/gc/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

这行命令的意思是将重新编辑的终端配置文件.bashrc保存一下

source ~/.bashrc

也可以不执行上述语句,用以下代替。把当前工作空间刷新到当前窗口的环境变量,但是换终端窗口任然需要执行,下面的命令是在工作空间下执行的,意思是把工作空间目录下,devel文件夹里的setup.bash文件挂载到ROS的文件系统里去,这样当用户执行一些文件系统的命令时,就不会提示找不到该工作空间里的包或者文件了。

cd 工作空间

source ./devel/setup.bash

我们也可以直接打开这个.bashrc文件编辑,添加ros命令

gedit ~/.bashrc ubuntu命令

查看ubuntu版本

lsb_release -a

.deb文件的安装

sudo dpkg -i *.deb ros常用命令

1.创建工作空间

mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace

编译工作空间

cd .. catkin_make

设置环境变量

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

查看环境变量

echo $ROS_PACKAGE_PATH

创建功能包 格式:catkin_create_pkg package_name depend1 depend2 depend2 package_name:功能表名称 depend1、2、3:依赖项

cd ~/catkin_ws/src/ catkin_create_pkg pkg_name std_msgs roscpp rospy

编译功能包

cd ~/catkin_ws catkin_make source ~/catkin_ws/devel/setup.bash

创建cpp节点

2.查看所有节点与话题的通讯关系

rqt_graph

3.复制了别人的功能包,给.py文件执行权限

chmod +x XXX.py chmod 777 文件位置

4.创建c++程序,CMakeLists.txt文件如何编写 算法部署 | 万字长文带你从C++案例一步一步实操cmake(起飞系列)

遇到的问题

1.anaconda2安装pytorch ros的python版本是2.7,顾配深度强化学习环境的时候安装anaconda2,pytorch要选择python2.7对应版本,否则会import失败。 nvcc -V查看cuda版本9.1,我的安装命令是:

conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=9.2

2.anaconda2安装pytorch

3.使用anaconda创建python3.6虚拟环境,安装gym一直出错,用python3.8就没问题了 4.vscode设置解释器 vscode设置解释器

#!/usr/bin/env python

4.也是设置解释器,两者的关系是什么,运行脚本时在对应的虚拟环境中,虚拟环境中的解释器又扮演什么作用? 运行py脚本的两种形式: 1)使用对应环境的Python解释器

python /home/dx/train-gym/DDPGModel.py

2)指定解释器,如下指定解释器路径/home/dx/anaconda2/envs/gymlab/bin/python

/home/dx/anaconda2/envs/gymlab/bin/python /home/dx/train-gym/DDPGModel.py

5.ros的CMakeLists 和 package到底是在干什么?

CMakeLists .txt用于调用.h头文件和.so \.a库文件,将.cpp\.c\.cc文件编译成可执行文件或者新的文件库例.so 。ros 主要是利用 catkin 命令,调用 CMakeLists.txt 把 c++ 文件转换成可执行文件。

1)整体结构和顺序

CMake版本 (cmake_minimum_required())功能包名称 (project())发现编译需要的 CMake/Catkin包 (find_package())Python模块支持 (catkin_python_setup())添加 Message/Service/Action (add_message_files(), add_service_files(), add_action_files())生成 Message/Service/Action (generate_messages())功能包编译信息导出 (catkin_package())库/可执行文件 (add_library() / add_executable() / target_link_libraries())测试 (catkin_add_gtest())安装 (install())

说明 1.catkin 版本 catkin需要2.8.3+

cmake_minimum_required(VERSION 2.8.3)

2. 功能包名称

project(package_name)

CMakeLists.txt里,可以通过${PROJECT_NAME}引用这个package_name,取什么名字都行吧

3. 发现CMake Packages

使用find_package函数,发现编译该项目所依赖的CMake packages。至少有一个catkin依赖,例

find_package(catkin)

当用find_package找到了一个package,会生成一些反映package信息的CMake环境变量,这些环境变量会在之后用到。这些环境变量描述了这些package的头文件、源文件位置,依赖库及其路径等。 对于cmake的查找路径,不得不提到find_package的两种模式(MODULE模式和CONFIG模式),其中MODULE模式是基本用法,CONFIG模式是高级用法。除非用户显式设置,否则cmake会首先在MODULE模式下查找,在查找失败时会进入CONFIG模式继续查找。

Module模式 find_package命令基础工作模式(Basic Signature),也是默认工作模式。Config模式 find_package命令高级工作模式(Full Signature)。 只有在find_package()中指定CONFIG、NO_MODULE等关键字,或者Module模式查找失败后才会进入到Config模式。

用法

find_package( [version] [EXACT] [QUIET] [MODULE] [REQUIRED] [[COMPONENTS] [components...]] [OPTIONAL_COMPONENTS components...] [NO_POLICY_SCOPE])

参数解释: package:必填参数。需要查找的包名,注意大小写。

version和EXACT:可选参数,version指定的是版本,如果指定就必须检查找到的包的版本是否和version兼容。如果指定EXACT则表示必须完全匹配的版本而不是兼容版本就可以。

QUIET:可选参数,表示如果查找失败,不会在屏幕进行输出(但是如果指定了REQUIRED字段,则QUIET无效,仍然会输出查找失败提示语)。

MODULE:可选字段。前面提到说“如果Module模式查找失败则回退到Config模式进行查找”,但是假如加入了MODULE选项,那么就只在Module模式查找,如果Module模式下查找失败并不切换到Config模式查找。

REQUIRED:可选字段。表示一定要找到包,找不到的话就立即停掉整个CMake。而如果不指定REQUIRED则CMake会继续执行。

COMPONENTS:可选字段,表示查找的包中必须要找到的组件(components),如果有任何一个找不到就算失败,类似于REQUIRED,导致CMake停止执行。

上面的例子一般写为:

find_package(catkin REQUIRED)

4. catkin_package() catkin_package是catkin提供的CMake macro,用来向编译系统指定catkin-specific的信息,编译系统会生成pkg-config和CMake文件。catkin_package需要在add_executable和add_library之前。该函数有五个optional arguments:

INCLUDE_DIRS : the exported include paths (i.e. cflags) for the packageLIBRARIES : The exported libraries from the projectCATKIN_DEPENDS : Other catkin projects that this project depends onDEPENDS : Non-catkin CMake projects that this project depends onCFG_EXTRAS : Additional configuration options An example: catkin_package( INCLUDE_DIRS include LIBRARIES ${PROJECT_NAME} CATKIN_DEPENDS roscpp nodelet DEPENDS eigen opencv )

5. 设置编译类型 写挺好的:CMake——CMakeLists.txt 的详解 add_library() / add_executable() / target_link_libraries()

target_link_libraries()

find_library(VAR name path)查找到指定的预编译库,并将它的路径存储在变量中,功能与find_package类似。

find_library( # Sets the name of the path variable. log-lib # Specifies the name of the NDK library that # you want CMake to locate. log ) target_link_libraries( # 目标库 demo # 目标库需要链接的库 # log-lib 是上面 find_library 指定的变量名 ${log-lib} )

add_executable(demo demo.cpp) # 生成可执行文件 add_library(common STATIC util.cpp util.h) # 生成静态库 add_library(common SHARED util.cpp util.h) # 生成动态库或共享库 target_link_libraries(demo common) # 链接libface.a/libface.so

在代码中就是 demo.cpp 里 include

target_link_libraries 里总是包含 ${catkin_LIBRARIES}, catkin_make 是 cmake 的更高级的封装,所以我们使用 catkin 的时候也依赖一些 LIBRARIES 即 ${catkin_LIBRARIES},所以用ros编译时,加上就完事了。

所以逻辑是

project(hello_jelly) set(LIB_SRC hello.c) set(APP_SRC main.c) add_library(hello ${LIB_SRC}) add_executable(${PROJECT_NAME} ${APP_SRC}) target_link_libraries(${PROJECT_NAME} hello) #print message message(${PROJECT_NAME})

add_library ()、add_executable () 和 target_link_libraries () include_directories () 和 find_package () Cmake之深入理解find_package()的用法 find_package()命令会在模块路径中寻找 find(.cmake) ,我们可以定义查找模式,当找到 * .cmake, * .cmake里会定义这些变量,我们就相当于找到了这些变量

include_directories和find_package



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有