小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
学习笔记
-
------------------------------常用命令-------------------------
upower -i /org/freedesktop/UPower/devices/battery_BAT0 查看笔记本电量
txy:43.138.104.65
windows使用git---------------------- 1 安装
官网下载 Git 安装包 https://git-scm.com/
选择安装目录,一直点击next,点击install,最后点击finish完成。开始菜单里找到“Git”->“Git Bash”,就说明Git安装成功
文件夹内按shift鼠标右键单击--在此处打开powershell窗口 git --version查看版本号git version 2.42.0.windows.2 - 2 配置环境变量(默认安装一般不需要配置,除非加载有问题)
输入命令行 where git并回车,复制返回的地址
我的电脑右键 =》属性 =》高级系统设置 =》系统属性(高级)=》 环境变量,进入环境变量对话框
选中 系统变量 里的 Path ,点击编辑。
点击 新建 ,粘贴刚刚复制的地址去掉 git.exe
C:\Program Files\Git\cmd
终端输入git 有一大坨内容说明环境变量配置成功。 - 3 配置用户名邮箱,只需配置一次:
git config --global user.name "清风"
git config --global user.email 24879554@qq.com
查看配置是否成功:git config --global --list
Git 首次安装必须设置一下用户签名,否则无法提交代码。这里设置用户签名和将来登录 GitLab(或其他代码托管中心)的账号没有任何关系。 - 4 git常用命令
git init 初始化项目
git status 查看当前目录下文件的状态
git add (文件名 | .)添加到暂存盘,文件名代表某文件,"."代表所有文件
git commit -m "备注" 提交到git本地仓库,产生新版本,引号中的备注必须写
git log 查看所有提交的记录
git log --pretty=oneline //只查看一行日志
git clone 链接 克隆远程仓库,进行连接
git reflog 查看历史版本号
git reset --hard HEAD^ //回退上一个历史版本。
在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
git reset --hard 1094adb7 //用指针方式回退到指定版本 - 5 分支管理 创建dev分支,然后切换到dev分支
git checkout -b dev = git branch dev git checkout dev
git branch //查看当前分支
git checkout master //切换分支
git merge dev //合并分支
git branch -d dev //删除分支
因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全 - 6 把本地项目托管到码云:
1注册并激活账号
2生成并配置公钥C:\Users\Think.ssh 记事本打开id_ed25519.pub 复制公钥内容
码云 设置 安全设置 ssh公钥 把复制的公钥添加,标题可以随便写 ssh -t git@gitee.com 验证公钥是否成功
3新建仓库 输入仓库名称 私有 创建
4选ssh方式 git remote add origin git@gitee.com:mangguo123b/uni-shop2.git 关联本地仓库和码云仓库
项目根目录终端 git push -u origin "master" 本地仓库推送到码云仓库。
git branch //查看本地分支名 git branch -r ,查看远程的分支名
git如何避免”warning: LF will be replaced by CRLF“提示?linux换行LF /n windows换行CRLF 回车/n
git config --global core.autocrlf true //windows
-------------markdown格式------------------------
在文字前加个#号和一个空格就能设置成标题,一级标题就用一个#号,二级标题就用两个#号,以此类推;
在文字两边加** 表示对包围的文字加粗
在文字两边加*表示对包围的文字做斜体
在文字前加>和一个空格表示引用这句话
在空白处输入***表示一条分割线
在文字前加-和一个空格表示无序列表
在文字前加阿拉伯数字、一个英文句号.和一个空格表示有序列表,如1. 2. 3.
用[显示文本](链接地址)表示插入超链接
用![](图片链接地址)表示插入图片
--------------------------ros2------------------
ros2 launch jtbot robot.launch.py 启动机器人
ros2 launch jtbot_navigation2 navigation2.launch.py 启动导航
echo $ROS_DISTRO //显示版本环境变量
ros2 run turtlesim turtlesim_node //启动乌龟
ros2 run turtlesim turtle_teleop_key //启动键盘控制
ros2 run teleop_twist_keyboard teleop_twist_keyboard //启动键盘控制
ros2 topic pub /demo/cmd_demo geometry_msgs/msg/Twist "{linear: {x: 0.2,y: 0,z: 0},angular: {x: 0,y: 0,z: 0}}"
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args --remap cmd_vel:=cmd_vel1
sudo apt-get install python3-colcon-common-extensions //安装colcon
mkdir -p town_ws/src //创建工作空间和功能包 -p 递归创建目录
cd town_ws/src
ros2 pkg create village --build-type ament_python --dependencies rclpy //创建python功能包
ros2 pkg create village --build-type ament_cmake --dependencies rclcpp //创建c++包
colcon build --packages-select fishbot //编译某一个功能包
--symlink-install //加软链接launch文件不用编译就生效
rosdepc install -i --from-path src --rosdistro foxy -y //安装包依赖
colcon build --packages-up-to cartographer //--packages-up-to,编译其所有依赖后再编译该包
echo 'source ~/ros2_ws/install/setup.bash' >> ~/.bashrc //写入环境变量 >> 重定向文末追加
ros2 话题工具--------------------------------
ros2 topic list
ros2 topic echo /imu_data
ros2 topic info /imu_data
ros2 topic pub /chatter std_msgs/msg/String 'data: "123"' //手动发布话题
ros2 节点node----------------------------------
ros2 node list 查看节点列表
ros2 node info <节点名>查看节点详细信息
ros2 服务 service------------------------------
ros2 service list 查看服务列表
ros2 service type /set_pose 查看服务接口类型
ros2 参数 param-------------------------
ros2 param list 查看参数列表
ros2 param describe turtlesim background_b # 查看某个参数的描述信息
ros2 param get turtlesim background_b # 查询某个参数的值
ros2 param set turtlesim background_b 10 # 修改某个参数的值
ros2 param dump <node_name> //下载保存参数为yaml文件:ros2 param dump /turtlesim
ros2 param load /turtlesim ./turtlesim.yaml //恢复参数值
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name> //加载参数启动节点
ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml --remap cmd_vel:=cmd_vel1
生命周期节点-----------------------------
ros2 lifecycle get /bt_navigator
ros2 lifecycle set /bt_navigator configure //设置声明周期节点状态,可以设置的状态有下面几个
configure,cleanup,activate,deactivate,shutdown
ros2 lifecycle list /bt_navigator //状态列表
ros2接口 interface-------------------------------
ros2 interface list 查看接口列表(当前环境下)
ros2 interface packages 查看所有接口包
ros2 interface package std_msgs 查看某一个包下的所有接口
ros2 interface show std_msgs/msg/String 查看某一个接口详细的内容
ros2 interface proto sensor_msgs/msg/Image 输出某一个接口所有属性
自定义接口使用方法:话题接口 服务接口 动作接口:
1 修改package.xml 加入代码<depend>village_interfaces</depend>
2修改CMakelists.txt 加入代码
find_package(village_interfaces REQUIRED) find_package是cmake的语法,用于查找库
找到后,还需要将其和可执行文件链接起来 所以还需要修改ament_target_dependencies
ament_target_dependencies(wang2_node rclcpp village_interfaces)
ros2 工具------------------------
rqt-->node_graph 节点关系图
ros2 run tf2_tools view_frames.py //在当前文件夹生成TF树pdf文件,在humble去掉 .py
ros2安装摄像头驱动------------------
sudo apt install ros-foxy-usb-cam//foxy安装摄像头驱动
ros2 run usb_cam usb_cam_node_exe//启动摄像头节点
ros2 launch usb_cam demo_launch.py //启动摄像头节点
//启动单目摄像头orbslam3
ros2 run orbslam3 mono ~/ros2_ws/src/ORB_SLAM3/Vocabulary/ORBvoc.txt ~/ros2_ws/src/ORB_SLAM3/Examples/Monocular/EuRoC.yaml
vi /opt/ros/foxy/share/usb_cam/config/params.yaml //修改此文件可以修改启动哪个摄像头和分辨率:
video_device: "/dev/video0"//启动内置摄像头video_device: "/dev/video2"//启动外置摄像头
image_width: 640/1280 image_height: 480/720 //修改分辨率
奥比中光摄像头ros2 foxy--------------------
source /opt/ros/foxy/setup.bash
source ./install/setup.bash
ros2 launch astra_camera astra_mini.launch.py //ros2启动奥比摄像头
ros2foxy 启动rviz2
source /opt/ros/foxy/setup.bash
source ./install/setup.bash
rviz2 -d src/ros2_astra_camera/astra_camera/rviz/pointcloud.rviz
ROS机器人里程计模型:线速度V和角速度ω 左右轮速VL和VR 轮距D=2d
正运动学:V=(VL+VR)/2 角速度ω=(VL-VR)/D轮距
运动学逆解:VL =V+ωd VR =V-ωd
--------------------模型----------------
sudo apt install ros-$ROS_DISTRO-joint-state-publisher ros-$ROS_DISTRO-robot-state-publisher //安装关节发布节点
--------------------xacro->urdf ----------------------
xacro文件不能在launch直接使用,需要转成urdf文件
用法1:当前文件夹打开终端输入:xacro model.xacro > model.urdf 生成纯urdf文件
----------------------slam建图------------------------
sudo apt install ros-foxy-cartographer
sudo apt install ros-foxy-cartographer-ros
ros2 launch jtbot_cartographer cartographer.launch.py //运行建图节点
sudo apt install ros-foxy-nav2-map-server //安装地图服务节点
cd src/jtbot_cartographer/ && mkdir map && cd map
ros2 run nav2_map_server map_saver_cli -t map -f jtbot_map //保存地图
---------------------------nav2导航------------------
sudo apt install ros-foxy-nav2-
#修改nav2_params.yaml配置文件
robot_radius: 0.35 //修改机器人半径 inflation_radius: 0.1 //修改膨胀地图半径
-------------------------ros1--------------------------卸载ros的方法------------------
sudo apt-get autoremove --purge ros-* //卸载全部ros:
sudo apt-get autoremove --purge ros-indigo //卸载某个ros版本(ros版本可以共存,每次需要切换)如indigo:ROS一键安装
wget http://fishros.com/install -O fishros && . fishros
ubuntu 18.04 Melodic ros1 旋律--------------
mkdir -p demo_01_ws/src //创建工作空间
cd demo_01_ws/src
catkin_create_pkg hello roscpp rospy std_msgs //创建功能包
catkin_make -DCATKIN_WHITELIST_PACKAGES="astra_camera"//ros1单独编译包
~/demo01_ws$ source ./devel/setup.bash //添加环境变量
echo $ROS_PACKAGE_PATH //显示空间路径
roscore //启动核心 rosrun turtlesim turtlesim_node //启动乌龟 rosrun turtlesim turtle_teleop_key //启动键盘
rosnode list rosnode info //查看节点信息 rosrun rqt_graph rqt_graph //节点图形界面
rostopic echo /turtle1/cmd_vel //显示话题数据 rostopic list //话题 rostopic type /turtle1/cmd_vel //话题类型
rosservice list //服务 rosservice type /spawn //服务类型 rosparam list //参数列表
roslaunch beginner_tutorials turtlemimic.launch //启动launch
奥比中光摄像头ros1安装--------------------
https://fishros.org.cn/forum/topic/1118/ubuntu20-4-ros1noetic-安装奥比中光-astra-pro-rgbd摄像头
source ./devel/setup.bash
roslaunch astra_camera astra_pro.launch //ros1启动相机
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/m/ORB_SLAM3/Examples_old/ROS //导入ros1包临时地址
cd ORB_SLAM3
rosrun ORB_SLAM3 RGBD ./Vocabulary/ORBvoc.txt ./Examples_old/ROS/ORB_SLAM3/Asus.yaml //启动ros1 rgbd slam3
ros1相机标定-------------------
rosrun camera_calibration cameracalibrator.py --size 9x6 --square 0.02 image:=/usb_cam/image_raw camera:=/usb_camcamera:=/usb_cam
ros1安装摄像头驱动-------------------
sudo apt-get install ros-noetic-usb-cam //ros1安装摄像头驱动
rosrun usb_cam usb_cam_node //启动摄像头节点
roslaunch usb_cam usb_cam-test.launch//启动摄像头launch节点
--------------windows常用命令---------------
ipconfig //查看本机ip
tracert -d 192.168.0.104 跟踪路由
nslookup bilibili.com 查看网址ip地址
---------------------utuntu 基础知识 ---------------------------
常用命令-----------------------------
sudo init 0 //关机, sudo init 6 //linux重启, pwd //查看当前路径目录, cd ..//退到上级目录, cd //退到用户目录,
. 或者 ./是当前目录 .. 或者 ../是父级目录 /是根目录
ifconfig //查看网络信息, ip addr //查看网络信息, top //查看进程 性能分析, history 查看历史命令,
ctrl+alt+t //启动终端, ctrl+c //强制退出,
sudo find / -name *.txt 全目录查找文件
Linux du命令:全称是 disk usage,查看文件夹和文件的磁盘占用情况
du -sh * 计算子文件夹大小du -sh * |sort -hr 大小排序
df df -m df -h 查看系统磁盘分区 -m以兆为单位 -h以g为单位
free -h //查看内存和交换区free -h以g为单位, du -h //统计文件大小 -h以g为单位
date //查看时间, date -s "2023-01-18 09:30:25" //修改时间
截屏快捷键 PtrSc //全屏 shift+prtsc 截取合适大小
用户管理------------------------------------
groupadd 组名 //创建组, groupdel 组名 //删除组, vi /etc/group //组信息保存文件
useradd -N 用户名 -g 组名 -d 用户目录 //创建用户, userdel 用户名 //删除用户, vi /etc/passwd //用户信息保存位置
passwd 用户名 //修改密码, su - ubuntu //切换用户
文件操作--------------------------------
常用压缩打包命令:tar -zcvf tarame.tar.gz dir/files
常用解压缩命令:tar -zxvf tarname.tar.gz -C 指定解压后文件存放地址
mkdir <文件夹名> //创建文件夹, gedit <文件名> //创建文本文件, touch <文本名> //创建新文本
vi<文件名> //创建或者编译文件, nano <文件名> //编辑文件, cat <文件名> //查看文件内容
more 文件名 查看文件内容 空格显示下一页 b显示上一页 q退出
cp -r 旧目录或文件名 新目录或文件名 -r复制目录 没有-r只能复制文件
mv 旧目录或文件名 新目录或文件名 移动目录或者文件
ls 查看所选文件夹 ls-a 查看文件夹内所有文件
ls -l显示文件信息 ls -lt按时间顺序显示文件信息
ctrl+h 显示文件夹内隐藏文件
rm -rf 删除系统文件夹前面加 sudo -r表示删除目录,没有-r只能删除文件 -f强制删除,不需要确认
r=4 w=2 x=1 rwx=7 rw-=6 -ws=3 -w-=2 --x=1 ---=0 r读w写x执行
目录和文件权限--------------------------
chown -R 用户:组 目录和文件列表 # 转移文件或目录所有权,-R 选项表示连同子目录一起修改
chmod -R 三位8进制权限 目录或文件列表 修改文件权限,-R表示连同子目录一起设置。
sudo chmod 777 demo # 修改demo文件权限 7 usr 7 group 7 other
chmod -R u=rwx demo #修改demo文件权限另一种方法,u /g /o usr group othre = + - 重新给权限赋值 -R表示连同子目录一起设置。
ls |more 管道符号 空格 下一页 q退出
ln 文件名 链接名 文件只能创建硬链接 ln 1.txt /home/1.txt 给文件起别名,可以跨目录,不可跨文件系统
ln -s 目录或文件名 链接名 ln -s /home/aa.txt /root/aa.txt 软链接类似windows的快捷方式
超级终端terminator-------------------------------
sudo apt install terminator //安装
ctrl+shift+e 横向分屏,ctrl+shift+o 纵向分屏,ctrl+shift+w 取消分屏,alt+方向键 移动焦点
分屏失败 出现横杠e 是因为激活了输入法快捷键
终端输入ibus-setup 输入法设置 表情符号 删除对应表情符号
上古神器vi---------------------------------------
vi 文件名 打开文件 按 i 输入模式 按esc 命令
命令模式按 :x 回车 保存退出 :wq 回车 保存退出
k 上 j 下 h 左 l 右 G跳到最后一行首
ctrl +insert 相当于ctrl+c 复制 shift+insert 相当于ctrl+v 粘贴
/abcd //查找abcd n //查找下一个, u //撤销 :w //存盘 :w!//强制存盘 :w文件名 //文件另存为
:q不存盘退出 :q!不存盘强制退出
ssh----------------------------------
ssh m@192.168.0.1 输入密码远程登陆 logout退出远程连接
将远程服务器上/media/data(文件夹)下的data.ini文件复制到本地/data文件夹下,命令:
scp user_remote@172.27.14.67:/media/data/data.ini /data/data.ini
将远程服务器上/media/data(文件夹)下的所有文件复制到本地/data文件夹下,命令:
scp -r user_remote@172.27.14.67:/media/data /data
sudo apt install openssh-server 安装ssh服务端
上传下载文件-------------------------------
sftp连接服务器 ls //查看服务器文件, lls //查看客户机文件, lcd lpwd
put 文件 //上传到服务器 get 文件 //下载到window客户机
exit //退出 unzip aaa.zip //解压zip文件 通用格式
软件包安装卸载------------------------------------
sudo apt-get install <文件名> //安装程序, sudo apt-get remove <文件名> //卸载程序
linux 进程------------------------
ps -ef ps -ef|grep demo 查看系统进程
kill 进程编号 终止进程 顽固进程 kill -9 进程编号 杀死进程
网络设置-----------------------------------
ip addr 查看linux网络信息, cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33 vi编辑网络配置文件 在后面加上以下代码
#设置固定IP 桥接模式
ONBOOT=yes #默认启动网卡
BOOTPROTO=static #dhcp-动态ip,static-静态ip
IPADDR=192.168.0.11 #ip地址
NETMASK=255.255.255.0#子网掩码
GATEWAY=192.168.0.1 #网关
DNS1=8.8.8.8.8 #谷歌dns
DNS2=114.114.114.114 #电信dns
hostnamectl set-hostname 主机名 更改主机名
ping www.baidu.com 测试网络联通性
edge浏览器安装-------------------------
下载网址:https://www.microsoft.com/zh-cn/edge/download?form=MA13FJ
安装:sudo dpkg -i microsoft-edge-stable_117.0.2045.35-1_amd64.deb
环境变量----------------------------
env|grep PATH #查看环境变量 , echo $PATH #查看环境变量
export PATH=/usr/local/sbin:/usr/local/bin 设置环境变量 中间用:分割。
export PATH=$PATH:/bb export PATH=$PATH:. 新增环境变量的2种方法 .表示当前目录加入环境变量
LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。
在linux终端下输入:export LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH 设置临时环境变量 可以在 ~/.bashrc 末尾加上上面的命令每次打开 shell 都读取一次shell脚本 test.sh---------------------------------------------
#!/bin/bash //添加解释器
echo "Hello World !" //echo表示输出
//echo hello A > tmp.txt //echo hello A >> tmp.txt //将字符串输出重定向,当前目录没有tmp.txt,则创建tmp.txt,并将字符串输出到tmp.txt文件中,>>追加到文件末尾
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
----------------------c学习--------------------------
占位符-----------------------------
%c 字符 %s 字符串 %e 科学计数法输出double %p 输出内存地址
%f float 占4个字节 %lf double 占8个字节 %Lf long double 16个字节
在实际开发中,建议弃用float,只采用double就可以,long double暂时没有必要
%hd、%d、%ld 以十进制、有符号的形式输出short、int、long 类型的整数。
%hu、%u、%lu 以十进制、无符号的形式输出short、int、long 类型的整数。
3e2 310^2 3e-5 30.1^5科学计数法
数据类型(简介)
boolean 布尔型 char 字符型 unsigned char 无符号字符型 byte 字节型 int 整型 long 长整型unsigned long 无符号长整型 float 浮点型 double 双精度浮点型 string 字符串 字符串型 array 数组
-----------------------------c++学习--------------------
c++编译------------------------
sudo apt install cmake
g++ project.cpp 编译单个文件
-std=c++11 ,-std=c++14 //指定版本命令,-Wall //开启所有警告
gdb调试------------------------
sudo apt install build-essential gdb
gcc -g test.c -o test //-g带调试参数编译
gdb test //调试启动 (gdb) q 退出调试
(gdb) l // list 简写 l查看源程序代码,默认显示10行,按回车键继续看余下的。
(gdb) b 5 //break 简写 b 在某行设置断点
(gdb) r //run 简写r 运行程序直到遇到 结束或者遇到断点等待下一个命令
(gdb) n (gdb) s //next简写 n 单步执行,不进入函数 step简写 s 单步执行,遇到函数会进入函数
(gdb) c //continue简写 c 继续执行程序,直到下一个断点或者结束
cmake-----------------------------------------
#CMAKE内置变量
CMAKE_BINARY_DIR,PROJECT_BINARY_DIR,<projectname>_BINARY_DIR #顶层二进制目录
CMAKE_SOURCE_DIR,PROJECT_SOURCE_DIR,<projectname>_SOURCE_DIR #主cmakelists.txt所在路径
CMAKE_CURRENT_SOURCE_DIR //前正在处理的源目录(CMakeLists.txt所在目录)
使用message函数,分为三个消息类型:FATAL_ERROR(致命错误) WARNING(警告) STATUS(正常)
aux_source_directory(. SRC_LIST) #指定目录源文件都加入SRC_LIST变量
cmake最小系统---------------------------
cmake_minimum_required(VERSION 2.8) #版本号
project(hello) #工程名
INCLUDE_DIRECTORIES(~/cxx/include/)#添加第三方头文件搜索路径,如果头文件在usr/local/include系统目录内则可以不添加
add_library(hello SHARED hello.cpp) #生成库文件 SHARED 动态库 STATIC 静态库
add_executable(main main.cpp) #生成可执行文件main
target_link_libraries(main hello)#链接第三方库,库在系统环境变量/usr/local/lib里面可以只写库名
target_link_libraries(main /home/cxx/libhello.so)#链接第三方库,库不在/usr/local/lib里面可以写库的完整路径
add_subdirectory(src) #添加子目录src
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)生成的库文件放置路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)设置最终目标文件存放的路径。
#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/)#生成的可执行文件放置路径
#cmake install 安装默认路径 CMAKE_INSTALL_PRERIX=/usr/local/
#TARGETS 生成的目标文件 #FILES 文件安装 # PROGRAMS 非目标文件可执行脚本 # DIRECTORY 目录安装
install(FILES hello.h DESTINATION include) #安装文件(头文件 普通文件)
install(TARGETS hello_static ARCHIVE DESTINATION lib) #安装静态库
install(TARGETS hello LIBRARY DESTINATION lib) #安装动态库
find_package用法----------------------------------------
库目录编写 Findhello.cmakefind_path(HELLO_INCLUDE_DIR hello.h /usr/include/ /usr/local/include/)#find_path指定了头文件的路径 find_library(HELLO_LIBRARY NAMES hello PATHS /usr/lib/ /usr/local/lib/)#指定查找库文件.so的路径 if (HELLO_INCLUDE_DIR AND HELLO_LIBRARY) set(HELLO_FOUND TRUE) endif (HELLO_INCLUDE_DIR AND HELLO_LIBRARY)
CMakeLists.txt 设置
set(CMAKE_MODULE_PATH "/usr/share/cmake/Modules/") #设置Findhello.cmake 搜索路径
find_package(hello)
include_directories(${HELLO_INCLUDE_DIR}) #包含库的头文件
add_executable(main main.cpp) #生成可执行文件main
target_link_libraries(main ${HELLO_LIBRARY}) #将源文件与库文件链接起来
-----------类和对象封装 继承 多态-----------
多态---------------------------------
静态多态:函数重载和运算符重载属于静态多态,复用函数名。
1函数重载:重载函数的关键是函数参数列表,包括:函数的参数数目和类型,以及参数的排列顺序,重载函数与返回值,参数名无关。
2动态多态:派生类和虚函数实现运行时多态。
有继承关系 子类重写父类中的虚函数 父类指针或者引用指向子类对象
重写:函数返回值类型 函数名 参数列表完全一致为重写。
---------------------opencv-------------------------
opencv4.4安装--------------------------
首先完全卸载刷机时自带的opencv旧版本,不同版本版本会引起冲突。- 先到opencv编译安装的目录build下
cd build
sudo make uninstall
cd ..
sudo rm -r build
2.也可以手动删除,总之删除干净即可。
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv
/usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv
/usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
3.检查是否删除完
pkg-config opencv --libs
pkg-config opencv --modversion
没有删除干净在用下面的命令,干净了就不用了,下面命令劲有点大,会连同依赖给删除了。
sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update
安装opencv 4.4
2 安装cmake以及依赖库
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
3 OpenCV源码下载官网地址: https://opencv.org.
opencv_contrib下载地址: https://github.com/opencv/opencv_contrib
解压: opencv-4.4.0.zip opencv_contrib-4.4.0.zip
新建opencv文件夹,把解压的2个文件夹放入
sudo apt update && sudo apt install -y cmake g++ wget unzip
cd opencv
mkdir -p build && cd build
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules ../opencv-4.4.0
cmake --build .
sudo make install
4 把opencv的so库加入到环境变量
cd /etc/ld.so.conf.d
touch opencv.conf
sudo gedit opencv.conf
在空白文件opencv.conf里写入:/usr/local/opencv3.4.0/lib
sudo ldconfig
输入如下命令 sudo gedit /etc/bash.bashrc #在弹出文件的末尾加入PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH,保存退出。
#检测opencv
pkg-config --modversion opencv
pkg-config --cflags opencv
pkg-config --libs opencv
Ubuntu18.04 + ROS 终端在 /usr/local 路径下安装opencv4.1.1
https://blog.csdn.net/qq_38429958/article/details/123185284
opencv.cpp#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { Mat srcImage = imread("lena.jpg"); imshow("源图像",srcImage); waitKey(0); return 0; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) project(OPENCV) find_package(OpenCV REQUIRED) add_executable(opencv opencv.cpp) target_link_libraries(opencv ${OpenCV_LIBS})
------------------------orb_slam3----------------------------
//运行双目数据集MH_01_easy.zip解压 文件目录结构/ORB_SLAM3/Datasets/MH01/mav0
cd ORB_SLAM3/
./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml ./Datasets/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_sterego
ros单目运行命令
rosrun ORB_SLAM3 Mono ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml
roslaunch astra_camera astra_pro.launch //启动rgbd摄像头
//启动rgbd slam3
rosrun ORB_SLAM3 RGBD ./Vocabulary/ORBvoc.txt ./Examples_old/ROS/ORB_SLAM3/Asus.yaml
roslaunch astra_camera astra_pro.launch
rosservice call /camera/set_uvc_mirror "{data: true}" //可以为彩色图设置镜像
ros2 run ros1_bridge dynamic_bridge --bridge-all-topics
ros2 run orbslam3 rgbd ~/ORB_SLAM3/Vocabulary/ORBvoc.txt ~/ORB_SLAM3/Examples/RGB-D/TUM1.yaml //启动rgbd
----------------------usb------------------------
为什么普通账户会没有权限访问ttyUSB设备?
ls -l /dev/ttyUSB0
crwxrwxrwx 1 root dialout 188, 0 6月 20 18:06 /dev/ttyUSB0
ttyS设备的用户主是root,而所属的组是dialout,owner和group有相同的rw权限的,others没有任何权限
groups 用户名 查看用户所属的组并不在dialout组里面,只要加入这个组就有了usb权限
//加入dialout组命令:
sudo usermod -a -G dialout 用户名
在用groups命令查看就已经加入组中了,之后就可以自由的使用usb设备了。
ubuntu20.04的 brltty 导致 USB 转串口连接失败
sudo dmesg | grep brltty
[ 0.077725] printk: console [tty0] enabled //控制台[tty0]已启用
sudo apt remove brltty //删除brltty
ls /dev/ttyUSB*
/dev/ttyUSB0
usb绑定端口号,注意端口占用
lsusb 查看自己的USB串口ID
udevadm info --attribute-walk --name=/dev/ttyUSB0查看ttyUSB0的KERNELS硬件端口号
usb串口绑定
sudo gedit /etc/udev/rules.d/usb.rules //打开usb规则
KERNELS=="3-1:1.0", MODE:="0777", GROUP:="dialout", SYMLINK+="ttyTHS1" //串口起别名
sudo udevadm control --reload-rules && sudo udevadm trigger//不重启电脑配置usb设备
--------------------------untntu安装后设置-------------------
修改开机启动顺序
/etc/default内打开终端 sudo vim grub 修改GRUB_DEFAULT=4
保存退出之后,执行“sudo update-grub”来重新生成GRUB启动配置项
sudo vi /etc/systemd/logind.conf 修改关闭笔记本显示器不休眠
修改以下配置:HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
重启服务:sudo service systemd-logind restart
-------------------------设置时间-------------------------------
timedatectl 显示时间模式
sudo timedatectl set-local-rtc 1 修改时间模式
sudo hwclock --localtime --systohc 把修改的模式写入系统
---------------------------vs code 使用-----------------------
安装插件
Python C++ xml 中文插件
远程使用vscode
vscode 插件商店搜索ssh Remote—SSH并安装
F1输入Remote-SSH-Settings,设置Remote.SSH:Show Login Terminal为true
F1输入Remote-SSH选择Remote-SSH:Connect to Host… ----->选择add NEW SSH Host… ----->输入 your_name@server_ip ----->选择一个config(之后会出来配置config的信息,Host是自己给这份配置文件起的名字,HostName是远程主机的IP地址,User是登录名),之后输入密码即可登陆。
vscode包含路径方框内加入
${workspaceFolder}/**
/opt/ros/humble/**
-----------------------安装软件-----------------------
Ubuntu的软件包格式为deb。
sudo apt-get update 更新软件列表
sudo apt-get upgrade 更新软件
m@t:~/下载$ sudo dpkg -i weixin_2.1.1_amd64.deb 安装微信
https://pan.baidu.com/download 官网下载百度云盘的deb安装文件
sudo dpkg -i baidunetdisk_linux_2.0.1.deb 安装百度云盘
m@jt:~/下载$ sudo dpkg -i youdao-dict_6.0.0-ubuntu-amd64.deb 安装有道词典
sudo apt-get -f install 缺少依赖用次命令 重新在用上面安装命令
安装64位谷歌浏览器
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt install git 安装git
sudo apt install openssh-server 安装ssh
安装github内的软件
git clone https://github.com/6-robot/wpr_simulation.git
m@robot:~/下载$ sudo dpkg -i code_1.64.2-1644445741_amd64.deb 安装vscode
sudo apt-get install ros-foxy-usb-cam安装摄像头驱动
-----------------------------安装arduino-------------------------
https://blog.csdn.net/weixin_51331359/article/details/122289768 安装arduino一定要参考网页
tar -xvf arduino-1.8.19-linux64.tar.xz arduino解压文件
cd arduino-1.8.13 进入arduino文件夹打开终端
sudo ./install.sh 安装arduino
sudo usermod -a -G dialout m 把用户名m添加进dialout用户组 有使用usb权限 需要重启计算机
-------------------卸载软件----------------------------
软件卸载有两种方式:离线安装包的卸载(deb 文件格式卸载)
sudo dpkg –r 安装包名
在线安装包的卸载(apt-get 方式卸载)。
sudo apt-get remove --purge arduino 卸载arduino
sudo apt-get remove package 删除包
sudo apt-get remove package - - purge 删除包,包括删除配置文件等
sudo apt remove ros-foxy-gazebo-ros - - purge----------------aptitude 命令----------------------
aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
sudo apt-get install aptitude 安装aptitude
aptitude install pkgname 安装包
aptitude remove pkgname 删除包
aptitude purge pkgname 删除包及其配置文件
aptitude search string robot_state_publisher 搜索包 查找包
aptitude show pkgname 显示包的详细信息
-----------------------常用缩写简写----------------------------
GUI(Graphical User Interface)就是平常我们说的图形用户界面
CLI(Command-Line Interface)就是命令行界面了
API( Application Programming Interface)应用程序编程接口
RCL(ROS Client Library)ROS客户端库,其实就是ROS的一种API
rclpy(ROS Client Library python)python语言ros客户端库
rclcpp(ROS Client Library c++)c++语言ros客户端库
args (arguments) 表示位置参数
kwargs (keyword arguments) 表示关键字参数
SLAM(Simultaneous Localization And Mapping)同步定位与地图构建
cmd_vel (command velocity)命令 速度
SLAM是Simultaneous localization and mapping缩写,意为“同步定位与建图
APT(Advanced Packaging Tool)
bin为binary的简写
“dpkg ”是“Debian Packager ”的简写 为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除
SLAM是同步定位与地图构建(Simultaneous Localization And Mapping)的缩写
msg 英文全称message
rosdep其实是ros dependence,是管理包的依赖的
-i 是 install的意思
cd(changeDirectory) 命令语法
AMCL是Adaptive Monte Carlo Localization(也即是自适应蒙特卡洛定位)的简称,是基于多种蒙特卡洛融合算法在ROS/ROS2系统中的一种实现
exe executablefile 即可执行文件
STL standard template library 标准模板库
int,它是单词integer
char,它是单词character(字符)的缩写
const是constant的缩写,意思是“恒定不变的” - 1 安装
-
放在这里自己看着方便,不一定都对,可以给大家做个参考