创建完环境变量指令
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自身工作空间的环境变量配置脚本文件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版本
lsb_release -a
.deb文件的安装
sudo dpkg -i *.deb
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)整体结构和顺序
说明
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模式继续查找。
find_package
命令基础工作模式(Basic Signature),也是默认工作模式。find_package
命令高级工作模式(Full Signature)。 只有在find_package()中指定CONFIG、NO_MODULE等关键字,或者Module模式查找失败后才会进入到Config模式。用法
find_package(<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:
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()
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
里会定义这些变量,我们就相当于找到了这些变量
include_directories和find_package