鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    学习笔记

    已定时 已固定 已锁定 已移动
    移动平台分享
    ros2 ubuntu c++ humble foxy
    1
    2
    2.0k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 毛哥成山轮胎机油保养毛
      毛哥成山轮胎机油保养 活跃VIP
      最后由 毛哥成山轮胎机油保养 编辑

      ------------------------------常用命令-------------------------
      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.cmake

      find_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旧版本,不同版本版本会引起冲突。

      1. 先到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 条回复 最后回复 回复 引用 1
      • 毛哥成山轮胎机油保养毛
        毛哥成山轮胎机油保养 活跃VIP
        最后由 编辑

        放在这里自己看着方便,不一定都对,可以给大家做个参考

        1 条回复 最后回复 回复 引用 1
        • 第一个帖子
          最后一个帖子
        皖ICP备16016415号-7
        Powered by NodeBB | 鱼香ROS