【Jetson Nano学习笔记】2. ORB-SLAM3及ZED 2i驱动安装

目录

  • ZED 2i驱动安装
    • 安装驱动
    • 自测
    • ROS测试
      • zed2i.launch
      • rostopic list
      • rosnode list
      • display_zed2i.launch
      • zed_rtabmap.launch
  • ORB-SLAM3
    • 安装OpenCV 3
    • 安装Glew
    • 安装Pangolin
    • 安装boost
    • 安装Eigen 3
    • 安装OpenGL
    • 安装openssl
    • 安装ORB-SLAM3
      • 建立swap
      • 准备编译
      • 编译
      • 关闭swap

平台:Jetson Nano
系统版本:4.6.1


ZED 2i驱动安装

安装驱动

在ZED 2i 官方驱动下载驱动,需要与Jetson Nano系统版本对应。
下载速度很慢,这是我备份的:ZED_SDK_Tegra_JP46_v3.7.0.run(ZED2 Jetson Nano驱动包)
在这里插入图片描述
在这里插入图片描述
将下好的驱动发送到Nano里:

scp ./ZED_SDK_Tegra_JP46_v3.7.0.run nano@192.168.1.104:~/

在这里插入图片描述
如下图,驱动已经传输过来了:
在这里插入图片描述
加权限后运行

sudo chmod +x ./ZED_SDK_Tegra_JP46_v3.7.0.run
./ZED_SDK_Tegra_JP46_v3.7.0.run

之后都选择y同意

自测

/usr/local/zed/tools中有一些测试小工具:
在这里插入图片描述
如ZED_Sensor_Viewer:
在这里插入图片描述

如ZED_Depth_Viewer:
在这里插入图片描述

ROS测试

参考博文:安装zed-ros-wrapper 并解决一些报错—— 努力~自律~开心

sudo apt-get install ros-melodic-sensor-msgs
sudo apt-get install ros-melodic-tf2-sensor-msgs
sudo cp /usr/lib/python2.7/dist-packages/em.py /opt/ros/melodic/lib/python2.7/dist-packages/
source /opt/ros/melodic/setup.bash
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
source devel/setup.bash
cd ~/catkin_ws/src
git clone --recursive https://gitee.com/chr12/zed-ros-wrapper.git
git clone https://gitee.com/zhanghao132/zed-ros-examples.git
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src -r -y
catkin_make -DCMAKE_BUILD_TYPE=Release

zed2i.launch

source ./devel/setup.bash
roslaunch zed_wrapper zed2i.launch

第一次运行会在这里卡住下载东西:
在这里插入图片描述
漫长的等待后
在这里插入图片描述

rostopic list

rostopic list

使用rqt_image_view可以查看不同节点的命令
在这里插入图片描述

/diagnostics
/rosout
/rosout_agg
/tf
/tf_static
/zed2i/joint_states
/zed2i/zed_node/atm_press
/zed2i/zed_node/confidence/confidence_map
/zed2i/zed_node/depth/camera_info
/zed2i/zed_node/depth/depth_registered
/zed2i/zed_node/depth/depth_registered/compressed
/zed2i/zed_node/depth/depth_registered/compressed/parameter_descriptions
/zed2i/zed_node/depth/depth_registered/compressed/parameter_updates
/zed2i/zed_node/depth/depth_registered/compressedDepth
/zed2i/zed_node/depth/depth_registered/compressedDepth/parameter_descriptions
/zed2i/zed_node/depth/depth_registered/compressedDepth/parameter_updates
/zed2i/zed_node/depth/depth_registered/theora
/zed2i/zed_node/depth/depth_registered/theora/parameter_descriptions
/zed2i/zed_node/depth/depth_registered/theora/parameter_updates
/zed2i/zed_node/disparity/disparity_image
/zed2i/zed_node/imu/data
/zed2i/zed_node/imu/data_raw
/zed2i/zed_node/imu/mag
/zed2i/zed_node/left/camera_info
/zed2i/zed_node/left/image_rect_color
/zed2i/zed_node/left/image_rect_color/compressed
/zed2i/zed_node/left/image_rect_color/compressed/parameter_descriptions
/zed2i/zed_node/left/image_rect_color/compressed/parameter_updates
/zed2i/zed_node/left/image_rect_color/compressedDepth
/zed2i/zed_node/left/image_rect_color/compressedDepth/parameter_descriptions
/zed2i/zed_node/left/image_rect_color/compressedDepth/parameter_updates
/zed2i/zed_node/left/image_rect_color/theora
/zed2i/zed_node/left/image_rect_color/theora/parameter_descriptions
/zed2i/zed_node/left/image_rect_color/theora/parameter_updates
/zed2i/zed_node/left/image_rect_gray
/zed2i/zed_node/left/image_rect_gray/compressed
/zed2i/zed_node/left/image_rect_gray/compressed/parameter_descriptions
/zed2i/zed_node/left/image_rect_gray/compressed/parameter_updates
/zed2i/zed_node/left/image_rect_gray/compressedDepth
/zed2i/zed_node/left/image_rect_gray/compressedDepth/parameter_descriptions
/zed2i/zed_node/left/image_rect_gray/compressedDepth/parameter_updates
/zed2i/zed_node/left/image_rect_gray/theora
/zed2i/zed_node/left/image_rect_gray/theora/parameter_descriptions
/zed2i/zed_node/left/image_rect_gray/theora/parameter_updates
/zed2i/zed_node/left_cam_imu_transform
/zed2i/zed_node/left_raw/camera_info
/zed2i/zed_node/left_raw/image_raw_color
/zed2i/zed_node/left_raw/image_raw_color/compressed
/zed2i/zed_node/left_raw/image_raw_color/compressed/parameter_descriptions
/zed2i/zed_node/left_raw/image_raw_color/compressed/parameter_updates
/zed2i/zed_node/left_raw/image_raw_color/compressedDepth
/zed2i/zed_node/left_raw/image_raw_color/compressedDepth/parameter_descriptions
/zed2i/zed_node/left_raw/image_raw_color/compressedDepth/parameter_updates
/zed2i/zed_node/left_raw/image_raw_color/theora
/zed2i/zed_node/left_raw/image_raw_color/theora/parameter_descriptions
/zed2i/zed_node/left_raw/image_raw_color/theora/parameter_updates
/zed2i/zed_node/left_raw/image_raw_gray
/zed2i/zed_node/left_raw/image_raw_gray/compressed
/zed2i/zed_node/left_raw/image_raw_gray/compressed/parameter_descriptions
/zed2i/zed_node/left_raw/image_raw_gray/compressed/parameter_updates
/zed2i/zed_node/left_raw/image_raw_gray/compressedDepth
/zed2i/zed_node/left_raw/image_raw_gray/compressedDepth/parameter_descriptions
/zed2i/zed_node/left_raw/image_raw_gray/compressedDepth/parameter_updates
/zed2i/zed_node/left_raw/image_raw_gray/theora
/zed2i/zed_node/left_raw/image_raw_gray/theora/parameter_descriptions
/zed2i/zed_node/left_raw/image_raw_gray/theora/parameter_updates
/zed2i/zed_node/odom
/zed2i/zed_node/parameter_descriptions
/zed2i/zed_node/parameter_updates
/zed2i/zed_node/path_map
/zed2i/zed_node/path_odom
/zed2i/zed_node/point_cloud/cloud_registered
/zed2i/zed_node/pose
/zed2i/zed_node/pose_with_covariance
/zed2i/zed_node/rgb/camera_info
/zed2i/zed_node/rgb/image_rect_color
/zed2i/zed_node/rgb/image_rect_color/compressed
/zed2i/zed_node/rgb/image_rect_color/compressed/parameter_descriptions
/zed2i/zed_node/rgb/image_rect_color/compressed/parameter_updates
/zed2i/zed_node/rgb/image_rect_color/compressedDepth
/zed2i/zed_node/rgb/image_rect_color/compressedDepth/parameter_descriptions
/zed2i/zed_node/rgb/image_rect_color/compressedDepth/parameter_updates
/zed2i/zed_node/rgb/image_rect_color/theora
/zed2i/zed_node/rgb/image_rect_color/theora/parameter_descriptions
/zed2i/zed_node/rgb/image_rect_color/theora/parameter_updates
/zed2i/zed_node/rgb/image_rect_gray
/zed2i/zed_node/rgb/image_rect_gray/compressed
/zed2i/zed_node/rgb/image_rect_gray/compressed/parameter_descriptions
/zed2i/zed_node/rgb/image_rect_gray/compressed/parameter_updates
/zed2i/zed_node/rgb/image_rect_gray/compressedDepth
/zed2i/zed_node/rgb/image_rect_gray/compressedDepth/parameter_descriptions
/zed2i/zed_node/rgb/image_rect_gray/compressedDepth/parameter_updates
/zed2i/zed_node/rgb/image_rect_gray/theora
/zed2i/zed_node/rgb/image_rect_gray/theora/parameter_descriptions
/zed2i/zed_node/rgb/image_rect_gray/theora/parameter_updates
/zed2i/zed_node/rgb_raw/camera_info
/zed2i/zed_node/rgb_raw/image_raw_color
/zed2i/zed_node/rgb_raw/image_raw_color/compressed
/zed2i/zed_node/rgb_raw/image_raw_color/compressed/parameter_descriptions
/zed2i/zed_node/rgb_raw/image_raw_color/compressed/parameter_updates
/zed2i/zed_node/rgb_raw/image_raw_color/compressedDepth
/zed2i/zed_node/rgb_raw/image_raw_color/compressedDepth/parameter_descriptions
/zed2i/zed_node/rgb_raw/image_raw_color/compressedDepth/parameter_updates
/zed2i/zed_node/rgb_raw/image_raw_color/theora
/zed2i/zed_node/rgb_raw/image_raw_color/theora/parameter_descriptions
/zed2i/zed_node/rgb_raw/image_raw_color/theora/parameter_updates
/zed2i/zed_node/rgb_raw/image_raw_gray
/zed2i/zed_node/rgb_raw/image_raw_gray/compressed
/zed2i/zed_node/rgb_raw/image_raw_gray/compressed/parameter_descriptions
/zed2i/zed_node/rgb_raw/image_raw_gray/compressed/parameter_updates
/zed2i/zed_node/rgb_raw/image_raw_gray/compressedDepth
/zed2i/zed_node/rgb_raw/image_raw_gray/compressedDepth/parameter_descriptions
/zed2i/zed_node/rgb_raw/image_raw_gray/compressedDepth/parameter_updates
/zed2i/zed_node/rgb_raw/image_raw_gray/theora
/zed2i/zed_node/rgb_raw/image_raw_gray/theora/parameter_descriptions
/zed2i/zed_node/rgb_raw/image_raw_gray/theora/parameter_updates
/zed2i/zed_node/right/camera_info
/zed2i/zed_node/right/image_rect_color
/zed2i/zed_node/right/image_rect_color/compressed
/zed2i/zed_node/right/image_rect_color/compressed/parameter_descriptions
/zed2i/zed_node/right/image_rect_color/compressed/parameter_updates
/zed2i/zed_node/right/image_rect_color/compressedDepth
/zed2i/zed_node/right/image_rect_color/compressedDepth/parameter_descriptions
/zed2i/zed_node/right/image_rect_color/compressedDepth/parameter_updates
/zed2i/zed_node/right/image_rect_color/theora
/zed2i/zed_node/right/image_rect_color/theora/parameter_descriptions
/zed2i/zed_node/right/image_rect_color/theora/parameter_updates
/zed2i/zed_node/right/image_rect_gray
/zed2i/zed_node/right/image_rect_gray/compressed
/zed2i/zed_node/right/image_rect_gray/compressed/parameter_descriptions
/zed2i/zed_node/right/image_rect_gray/compressed/parameter_updates
/zed2i/zed_node/right/image_rect_gray/compressedDepth
/zed2i/zed_node/right/image_rect_gray/compressedDepth/parameter_descriptions
/zed2i/zed_node/right/image_rect_gray/compressedDepth/parameter_updates
/zed2i/zed_node/right/image_rect_gray/theora
/zed2i/zed_node/right/image_rect_gray/theora/parameter_descriptions
/zed2i/zed_node/right/image_rect_gray/theora/parameter_updates
/zed2i/zed_node/right_raw/camera_info
/zed2i/zed_node/right_raw/image_raw_color
/zed2i/zed_node/right_raw/image_raw_color/compressed
/zed2i/zed_node/right_raw/image_raw_color/compressed/parameter_descriptions
/zed2i/zed_node/right_raw/image_raw_color/compressed/parameter_updates
/zed2i/zed_node/right_raw/image_raw_color/compressedDepth
/zed2i/zed_node/right_raw/image_raw_color/compressedDepth/parameter_descriptions
/zed2i/zed_node/right_raw/image_raw_color/compressedDepth/parameter_updates
/zed2i/zed_node/right_raw/image_raw_color/theora
/zed2i/zed_node/right_raw/image_raw_color/theora/parameter_descriptions
/zed2i/zed_node/right_raw/image_raw_color/theora/parameter_updates
/zed2i/zed_node/right_raw/image_raw_gray
/zed2i/zed_node/right_raw/image_raw_gray/compressed
/zed2i/zed_node/right_raw/image_raw_gray/compressed/parameter_descriptions
/zed2i/zed_node/right_raw/image_raw_gray/compressed/parameter_updates
/zed2i/zed_node/right_raw/image_raw_gray/compressedDepth
/zed2i/zed_node/right_raw/image_raw_gray/compressedDepth/parameter_descriptions
/zed2i/zed_node/right_raw/image_raw_gray/compressedDepth/parameter_updates
/zed2i/zed_node/right_raw/image_raw_gray/theora
/zed2i/zed_node/right_raw/image_raw_gray/theora/parameter_descriptions
/zed2i/zed_node/right_raw/image_raw_gray/theora/parameter_updates
/zed2i/zed_node/stereo/image_rect_color
/zed2i/zed_node/stereo/image_rect_color/compressed
/zed2i/zed_node/stereo/image_rect_color/compressed/parameter_descriptions
/zed2i/zed_node/stereo/image_rect_color/compressed/parameter_updates
/zed2i/zed_node/stereo/image_rect_color/compressedDepth
/zed2i/zed_node/stereo/image_rect_color/compressedDepth/parameter_descriptions/zed2i/zed_node/stereo/image_rect_color/compressedDepth/parameter_updates
/zed2i/zed_node/stereo/image_rect_color/theora
/zed2i/zed_node/stereo/image_rect_color/theora/parameter_descriptions
/zed2i/zed_node/stereo/image_rect_color/theora/parameter_updates
/zed2i/zed_node/stereo_raw/image_raw_color
/zed2i/zed_node/stereo_raw/image_raw_color/compressed
/zed2i/zed_node/stereo_raw/image_raw_color/compressed/parameter_descriptions
/zed2i/zed_node/stereo_raw/image_raw_color/compressed/parameter_updates
/zed2i/zed_node/stereo_raw/image_raw_color/compressedDepth
/zed2i/zed_node/stereo_raw/image_raw_color/compressedDepth/parameter_descriptions
/zed2i/zed_node/stereo_raw/image_raw_color/compressedDepth/parameter_updates
/zed2i/zed_node/stereo_raw/image_raw_color/theora
/zed2i/zed_node/stereo_raw/image_raw_color/theora/parameter_descriptions
/zed2i/zed_node/stereo_raw/image_raw_color/theora/parameter_updates
/zed2i/zed_node/temperature/imu
/zed2i/zed_node/temperature/left
/zed2i/zed_node/temperature/right

rosnode list

rosnode list

在这里插入图片描述

/rosout
/zed2i/zed2i_state_publisher
/zed2i/zed_node

display_zed2i.launch

source ~/catkin_ws/devel/setup.bash
roslaunch zed_display_rviz display_zed2i.launch

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

zed_rtabmap.launch

source ~/catkin_ws/devel/setup.bash
roslaunch zed_rtabmap_example zed_rtabmap.launch

在这里插入图片描述

ORB-SLAM3

旧记录见【RK3399Pro学习笔记】十七、Debian安装ORB-SLAM3和单目demo的运行
之前用的Fastgit来加速下载,但由于旧的镜像站不能用了,新镜像站速度也很慢,所以寄了。
在这里插入图片描述

安装OpenCV 3

安装各种依赖包

// 安装build-essential、cmake、git和pkg-config
sudo apt install build-essential cmake git pkg-config // 安装tif格式图像工具包
sudo apt install libtiff5-dev //安装视频I/O包
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev//安装gtk2.0
sudo apt install aptitude
sudo aptitude install libgtk2.0-dev//优化函数包
sudo apt install libatlas-base-dev gfortran

安装opencv及contrib

# Install minimal prerequisites (Ubuntu 18.04 as reference)
sudo apt update && sudo apt install -y cmake g++ wget unzip
# Download and unpack sources 速度很慢,在windows电脑下快些
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.16.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.16.zip

直接复制链接用下载软件下载:
在这里插入图片描述
使用scp命令发送到Nano中
在这里插入图片描述

unzip opencv.zip
unzip opencv_contrib.zip
# Create build directory and switch into it
mkdir -p build && cd build
# Configure
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.16/modules ../opencv-3.4.16
# Build
cmake --build .
# 安装
sudo make install
# 更新动态链接库
sudo ldconfig

在执行

cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.16/modules ../opencv-3.4.16

时可能会警告下载某些文件超时,可在cmake的日志中获取其下载链接和放置路径

cat ~/build/CMakeDownloadLog.txt

在这里插入图片描述

#do_copy "boostdesc_bgm.i" "0ea90e7a8f3f7876d450e4149c97c74f" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i" "/home/nano/build/downloads/xfeatures2d"
#missing "/home/nano/build/downloads/xfeatures2d/boostdesc_bgm.i"
#cmake_download "/home/nano/opencv-3.4.16/.cache/xfeatures2d/boostdesc/0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i"

在这里插入图片描述

在这里插入图片描述
自行补全后再次

cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.16/modules ../opencv-3.4.16

在这里插入图片描述

安装Glew

sudo apt install libglew-dev

安装Pangolin

git clone https://gitee.com/cuixuyang615/Pangolin_new.git
cd Pangolin_new
sudo nano ./src/CMakeLists.txt

注释掉如下内容
在这里插入图片描述

sudo nano ./src/display/device/display_x11.cpp

注释如下两行:
在这里插入图片描述

mkdir build && cd build
cmake ..
make
cmake --build .
sudo make install

安装boost

wget -O boost_1_78_0.tar.gz https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.gz

下载后发给Nano也行
在这里插入图片描述

tar -zxvf boost_1_78_0.tar.gz
cd boost_1_78_0/
./bootstrap.sh
sudo ./b2 install

安装Eigen 3

git clone https://gitee.com/kobin24/eigen-git-mirror.git
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install

执行完命令后,需要找到Eigen的安装路径,将Eigen文件夹复制到/usr/include。在Nano上用的是以下命令完成(引自Ubuntu16.04环境下安装配置ORB-SLAM3 —— Hannnnnnnk)

sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include 

安装OpenGL

sudo apt-get install build-essential libgl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev

安装openssl

sudo apt-get install libssl-dev

安装ORB-SLAM3

git clone https://gitee.com/changlc/ORB_SLAM3_detailed_comments.git
cd ORB_SLAM3_detailed_comments
sudo chmod +x ./build.sh
sudo chmod +x ./build_ros.sh

建立swap

查看剩余空间

df -h

在这里插入图片描述
建立20G的swap空间

sudo dd if=/dev/zero of=/swapfile bs=1024 count=20971520
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

在这里插入图片描述
在这里插入图片描述

准备编译

删掉
CMakeLists.txt
Thirdparty/g2o/CMakeLists.txt
Thirdparty/DBoW2/CMakeLists.txt
Examples/ROS/ORB_SLAM3/CMakeLists.txt

SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march native")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march native")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march native")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -march native")

结尾的-march native(见ORB_SLAM3运行时segment fault —— iri_descent),
以及统一这些文件中的OpenCV版本需求(见ORB-SLAM3 安装运行 —— 寒、)
有的为

find_package(OpenCV 4.0 QUIET)
if(NOT OpenCV_FOUND)find_package(OpenCV 3.0 QUIET)if(NOT OpenCV_FOUND)message(FATAL_ERROR "OpenCV > 3.0 not found.")endif()
endif()

有的为

find_package(OpenCV 3.0 QUIET)
if(NOT OpenCV_FOUND)find_package(OpenCV 2.4.3 QUIET)if(NOT OpenCV_FOUND)message(FATAL_ERROR "OpenCV > 2.4.3 not found.")endif()
endif()

建议统一之后再开始编译

编译

./build.sh
sudo nano ~/.bashrc
# ~/ORB_SLAM3_detailed_comments为自己电脑中ORB_SLAM3存放的路径

在末尾加入

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/ORB_SLAM3_detailed_comments/Examples/ROS

保存后再

source ~/.bashrc./build_ros.sh

关闭swap

sudo swapoff /swapfile

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给超链接(a标签)加onclick事件

<a onclick"alert(1)">超链接1</a><br> <a href"#" onclick"alert(2)">超链接2</a> <br> <a href"javascript:alert(3)">超链接3</a>

proj1088

滑雪Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 69608 Accepted: 25669Description Michael喜欢滑雪百这并不奇怪&#xff0c; 因为滑雪的确很刺激。可是为了获得速度&#xff0c;滑的区域必须向下倾斜&#xff0c;而且当你滑到坡底&#xff0c;你不得不再次走…

【Jetson Nano学习笔记】3. ORB-SLAM3运行双目Demo(ZED 2i)

目录修改zed-ros-wrapper的参数双目测试平台&#xff1a;Jetson Nano 系统版本&#xff1a;4.6.1 参考资料&#xff1a; zed-ros-wrapper —— ROS Wiki ZED 相机 && ORB-SLAM2安装环境配置与ROS下的调试 —— 李小铭 又一遍……ORB_SLAM2ZED相机(SDK2.2.1)CUDA9.0ROS…

PyCharm设置自动换行

在使用PyCharm码代码的时候&#xff0c;有些单行的代码比较长&#xff0c;经常需要手动拉动滚动条。 辣么怎么设置自动换行呢&#xff1f;&#xff1f; 敲黑板 在这里给大家介绍两种方式&#xff1a; 1、如果你需要频繁在【自动换行/非自动换行】模式中切换 那就需要设置一个顺…

邮件服务

http://linuxsogood.org/1121.html/comment-page-1 转载于:https://www.cnblogs.com/saolv/p/7440536.html

MySQL数据库和ACID模型

2019独角兽企业重金招聘Python工程师标准>>> ACID模型是一组强调高可靠性的数据库系统设计原则。InnoDB存储引擎坚持ACID原则&#xff0c;确保即使在软件崩溃甚至是硬件故障的情况下&#xff0c;数据也不会损坏。当你需要依赖兼容ACID原则的业务时&#xff0c;你不必…

MFC中SQLite数据库的使用

1打开数据库 BOOL playDlg::openData() { WCHAR a[100]; CString path; path m_exePathL"sentence_making\\FROG.db"; memcpy(a,path,sizeof(a)); int nRet sqlite3_open16((const char *)a,&pSQLite); // 链接到数据库&#xff0c;如果成功&#xff0c;数据…

【Jetson Nano学习笔记】4. python 3编译bridge

目录使用python3编译boostconsole_bridgepython3bridge平台&#xff1a;Jetson Nano 系统版本&#xff1a;4.6.1 参考资料&#xff1a; How to setup ROS with Python 3 Unable to use cv_bridge with ROS Kinetic and Python3 CMake Error &#xff1a;Could not find a pac…

Python作用域

Python是静态作用域&#xff0c;也就是说在Python中&#xff0c;变量的作用域源于它在代码中的位置。与C语言有一些类似&#xff0c;与C语言比起来还有一些需要注意的地方。 现在的Python支持4种作用域&#xff0c;"LEGB" L(local)&#xff1a;局部作用域&#xff1b…

解决flask端口被占用的问题

2019.04.11 实测&#xff1a; 只要停止程序&#xff0c;再运行&#xff0c;就可以了 问题提示&#xff1a;socket.error:[Errno 48] Address already in use 在编辑flask代码时&#xff0c;如果没有关闭flask的程序&#xff0c;默认的5000端口一直被占用。 再次运行的时候&am…

使用模板来解决接口继承问题

一.定义2个有继承关系的接口 struct IA {virtual void Test1()0; };struct IB:public IA {virtual void Test2()0; };二.定义2个类来实现 class A:public IA {virtual void Test1() {} };class B:public IB { public:virtual void Test2() {} };类B将无法使用,必须重新实现IA的…

python time模块详解

2019独角兽企业重金招聘Python工程师标准>>> python time模块详解 分类&#xff1a; python2009-03-28 23:35 89831人阅读 评论(9) 收藏 举报 pythonstructstringdstimportdate python 的内嵌time模板翻译及说明 一、简介 time模块提供各种操作时间的函数 说明&am…

单例写法 转

如何正确地写出单例模式 1.懒汉式&#xff0c;线程不安全 这段代码简单明了&#xff0c;而且使用了懒加载模式&#xff0c;但是却存在致命的问题。当有多个线程并行调用 getInstance() 的时候&#xff0c;就会创建多个实例。也就是说在多线程下不能正常工作 public class Singl…

【RK3399Pro学习笔记】十九、在ROS中点亮LED灯

目录创建ROS工作空间创建ROS功能包CSysFs方式&#xff08;需root&#xff09;源文件blink.cppgpiolib.cpp头文件gpiolib.hCMakeLists.txt运行代码调用shell命令方式&#xff08;无需root&#xff09;源文件blink.cppCMakeLists.txt运行代码平台&#xff1a;华硕 Thinker Edge R…

opencv中的Mat类型

Mat类型主要是跟matlab中的数据类型一样。故用起来很方便。 Mat最大的优势跟STL很相似&#xff0c;都是对内存进行动态的管理&#xff0c;不需要之前用户手动的管理内存&#xff0c;对于一些大型的开发&#xff0c;有时候投入的lpImage内存管理的时间甚至比关注算法实现的时间还…

C/C++与内存相关的函数

C语言的标准函数库与内存管理有关的函数从功能上分为两类:一类是系统对内存操作的函数,例如,读内存的函数、写内存函数,如从指定地址向内存写一个字节,一个字或向内存读一个字节或一个字操作;另一类是供用户动态使用内存的函数,例如,分配C程序一块存储区,并将该区清零函数; 1.动…

flask jinja2 如何遍历新闻列表

NEWS_DICT [{"newstitle": "新闻1", "url": "newsurl1"},{"newstitle": "新闻2", "url": "newsurl2"},{"newstitle": "新闻3", "url": "newsurl3"…

hihocoder [Offer收割]编程练习赛24

比赛https://hihocoder.com/contest/offers24/problems 应该能拿到个鼠标垫 舒服了 这个oj体验好差&#xff0c;每次都要先因为选错语言CE一发&#xff0c;而且刷新之后还是默认GCC A ⼩Hi的钟表 算秒数&#xff0c;算角度&#xff0c;注意180以内&#xff0c;所以大于180之后拿…

LaTex bib引用知网论文NoteExpress格式文献 —— cnki2bib

目录先决条件安装使用最后…棘手的用法简单用法获取NoteExpress格式到剪贴板将剪贴板内容转换在LaTex中使用调用格式效果TeXstudio 4.2.3 Windows 10 20H2 以下内容引自Python cnki2bib包介绍 先决条件 Python3 安装 pip install cnki2bibWinR打开cmd使用以上命令安装 使…

测试配置yum仓库的http镜像

测试配置yum仓库的http镜像一、基础环境 1、在tvm-base的基础上&#xff0c;复制一个镜像为tvm-yum来测试。 2、网络&#xff1a; eth0&#xff1a;host-only&#xff08;用于虚拟内网&#xff0c;手动固定IP&#xff0c;这样从宿主机可以直接连接到这个vm&#xff09; eth1&am…