开发环境初始化配置

tech2023-07-18  118

Sub-process/usr/bin/dpkg returned an error code (1) 这个错误解决办法: 

Sub-process/usr/bin/dpkg returned an error code (1) 这个错误解决办法: cd /var/lib/dpkg sudo mv info info.bak #即备份一个info sudo mkdir info #新建一个新的info目录 然后采用以下命令重装那些出错的软件包 sudo apt-get –reinstallinstall 软件包名 开始我是想在一条命令中同时安装几个软件包,结果还是出现E: Sub-process/usr/bin/dpkg returned an error code (1) 。于是把新的info删掉,一个个地来安装,每装好一个软件包,就把info删掉,再新建一个,这样就没有提示E: Sub-process/usr/bin/dpkg returned an error code (1) 了。 最后用原来的info.bak 替换新的info sudo -rf info sudo mv info.bak info 之后输入 sudo apt-get update 和 sudo apt-get upgrade 以及sudo apt-get autoremove都不再有E: Sub-process/usr/bin/dpkg returned an error code (1)了

W: GPG 错误:http://dl.google.com/linux/chrome/deb stable InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 78BD65473CB3BD13  

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 78BD65473CB3BD13

更新命令

sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade sudo apt-get -f install

ubuntu控制台 终端 

terminator安装

sudo apt-get install terminator

terminator 多窗同时输入

打开多终端同步输入

win + G

关闭多终端同步输入

win + shift + G

clion 类型补全,代码补全

clion IDEA 快捷键:

Ctrl+ALT+V  循环读取,实时查看指定文件最新内容tail -f test-date.log tail -f test-date.log

clion 多窗口显示,鼠标放在文件显示栏右键点击

查看编码方式:import chardet

# coding=utf-8 def check_charset(file_path): import chardet with open(file_path, "rb") as f: data = f.read(4) charset = chardet.detect(data)['encoding'] return charset your_path = 你的文件路径 with open(your_path, encoding=check_charset(your_path)) as f: data = f.read() print(data)

Matlab 保存变量数据

positionerror2:Matlab变量数据

xlswrite('C:\Users\Administrator\Desktop\candata\1.xlsx',positionerror2) csvwrite('C:\Users\Administrator\Desktop\candata\1.csv',positionerror2) csvwrite('C:\Users\Administrator\Desktop\candata\1.txt',positionerror2)

保存后通过numpy读取数据:

data=np.loadtxt('1.csv',delimiter=',')

 

如报以下错误:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xfb in position 4: illegal multibyte sequence

是因为你的电脑被加密了

 

解决方法是:

用这个csvwrite命令保存加密软件不能识别的文件后缀就没问题了

例:

csvwrite('C:\Users\Administrator\Desktop\candata\1.txtttt',positionerror2) csvwrite('C:\Users\Administrator\Desktop\candata\1.txtttt',positionerror2)

在通过python加载就可以了:

data = np.loadtxt('1.txtttt',delimiter=',')

 

 

python-pip镜像源¶

配置Python安装源¶

临时指定安装源¶

如安装opencv-python的3.4.0.12版本,可直接使用-i参数指定源

pip3 install -i https://pypi.douban.com/simple opencv-python==3.4.0.12

永久指定安装源¶

每次临时指定源地址比较麻烦,可以通过以下方式配置永久源

在主目录创建.pip文件夹

mkdir ~/.pip

编写~/.pip/pip.conf

已复制sudo gedit ~/.pip/pip.conf

并添加以下内容

 

 

[global] trusted-host=pypi.douban.com index-url=https://mirrors.aliyun.com/pypi/simple/ timeout=6000

此时,默认pip install xxx已经可以自动走镜像地址, 但是sudo模式下的pip和pip3并不能使用此镜像。所以要把这个pip.conf复制到/root/.pip目录下

sudo mkdir -p /root/.pip sudo cp ~/.pip/pip.conf /root/.pip/

 

可用的源有:

清华大学:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://pypi.hustunique.com/ 山东理工大学:http://pypi.sdutlinux.org/ 豆瓣:https://pypi.douban.com/simple/ # 原有设置: http://mirrors.aliyun.com/pypi/simple/    # 改为: https://mirrors.aliyun.com/pypi/simple/

idea原

https://pypi.python.org/simple

ubuntu 挂载移动硬盘,U盘,移动ssd,多系统平台插拔,出现错误:

mount:unknownfilesystem type 'exfat'

ubuntu 13.10以上:

sudo apt-get install exfat-fuse

 ubuntu 13.04或以下

sudo apt-add-repository ppa:relan/exfat sudo apt-get update sudo apt-get insatll fuse-exfat

 

pip依赖修复¶

如果安装过程中遇到pip环境工具问题,可以通过以下命令重装pip和pip3

sudo apt-get install --reinstall python3-pip sudo apt-get install --reinstall python-pip

1.安装矢量图制作工具: 

sudo add-apt-repository ppa:inkscape.dev/stable sudo apt-get update sudo apt-get install inkscape

图像转svg

sudo apt install potrace

获取ros版本

${rosversion -d }

安装gcc

sudo apt-get install gcc-7 g++-7

 

ROS项目迁移:

ros的串口包

18.04

sudo apt-get install ros-melodic-serial sudo apt-get install ros-melodic-libuvc sudo apt-get install ros-melodic-bfl sudo apt-get install ros-melodic-tf2-sensor-msgs ros-melodic-move-base-msgs sudo apt-get install ros-melodic-joy sudo apt-get install ros-melodic-geographic-msgs sudo apt-get install ros-melodic* sudo apt-get install ros-melodic-geographic-msgs sudo apt-get install ros-melodic-cmake-modules sudo apt-get install ros-melodic-tf2 sudo apt-get install ros-melodic-tf2-geometry-msgs sudo apt-get install ros-melodic-nodelet sudo apt install ros-melodic-desktop-full pip3 install pyyaml pip install pyyaml pip install rospkg 不要安装serial 必须要卸载不然程序出错: pip uninstall serial 要安装: pip install pyserial

16.04 

sudo apt-get install ros-kinnetic-serial

 

 

如果是: Could NOT find SDL (missing: SDL_LIBRARYSDL_INCLUDE_DIR)

首先安装:

sudo apt-get install aptitude sudo aptitude install libsdl1.2-dev

先选择no,后选择yes,降级安装

sdl_image问题也如此

sudo apt-get install libsdl-image1.2-dev

或者

sudo aptitude install libsdl-image1.2-dev

 安装ROS 遇到报错

Command 'rosluanch' not found, did you mean:

  command 'roslaunch' from deb python-roslaunch

Try: sudo apt install <deb name>

 

 

首先确保名字正确:

而后:

usrname:~$ sudo apt install python-roslaunch

正在读取软件包列表... 完成

正在分析软件包的依赖关系树

正在读取状态信息... 完成

有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是

因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件

包尚未被创建或是它们已被从新到(Incoming)目录移出。

下列信息可能会对解决问题有所帮助:

 

下列软件包有未满足的依赖关系:

python-roslaunch : 依赖: python-roslib 但是它将不会被安装

E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

参考后,运行了如下命令:

usrname:~$ git clone https://github.com/ros/catkin.git usrname:~$ cd catkin usrname:~/catkin$ git branch melodic-devel usrname:~/catkin$ mkdir build usrname:~/catkin$ cd build usrname:~/catkin/build$ cmake .. usrname:~/catkin/build$ make usrname:~/catkin/build$ sudo make install usrname:~/catkin/build$ cd .. usrname:~/catkin$ sudo python2 setup.py install usrname:~/catkin$ sudo python3 setup.py install (这一步可能报错,只需要按照指示做就好了,比如缺少catkin_pkg 模块,请采用pip3 install catkin_pkg安装) usrname:~/catkin$ mkdir catkin_ws (非必要,可以跳过的,其实没有作用,我个人是用来做ROS的工作空 间的) usrname:~/catkin$ cd usrname:~/$ mkdir src usrname:~/$ catkin_make usrname:~/catkin$ sudo apt install ros-melodic-desktop-full usrname:~/catkin$ rosdep update usrname:~/catkin$ cd usrname:~$ source ~/.bashrc

 

Ubuntu 默认是没有chkconfig命令的,需要手动安装。

使用终端安装命令: sudo apt-get install sysv-rc-conf如果出现问题:找不到该软件包,在sources.list文件中添加阿里的镜像源即可 cd /etc/apt 先备份 cp sources.list sources.list.old vim sources.list把下面阿里的镜像源添加进去

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

更新源:sudo apt-get update 重新安装:sudo apt-get install sysv-rc-conf

更名为chkconfig sudo cp /usr/sbin/sysv-rc-conf /usr/sbin/chkconfig 赋予权限:chmod 755 chkconfig 验证是否成功:sudo chkconfig

使用chkconfig来查看某个服务的运行级别和状态: chkconfig --list 服务名

 

ssh: connect to host 192.168.169 port 22: No route to host 

出现这种原因是由于防火墙设置问题,要先检查防火墙的设置:

 

查看防护墙状态 service iptables status 关闭 service iptables stop 查看防火墙开机启动状态 chkconfig iptables --list 关闭开机启动 chkconfig iptables off 

 

r

Workspace创建

mkdir -p first_ws/src

编译工作空间

cd first_ws catkin_make

 Package创建

来到workspace的src目录下

cd first_ws/src catkin_create_pkg demo_cpp roscpp rospy rosmsg

 

启动ROS Master

roscore

 

解锁apt

sudo rm /var/lib/apt/lists/lock /var/cache/apt/archives/lock /var/lib/dpkg/lock* sudo kill apt apt-get

catkin 编译脚本

catkit_make_source.sh

用 source catkit_make_source.sh 命令启动

#!/bin/bash catkin_make if [[ $? != 0 ]]; then echo 'catkin_make :error' else echo 'catkin_make :ok' source devel/setup.bash echo 'source devel/setup.bash :ok' fi

启动clion脚本

clion_start.sh

#!/bin/bash bash ~/CLion-2020.1.1/clion-2020.1.1/bin/clion.sh

进入指定文件夹的shell脚本

inWorkspaceWorkProject.sh

用控制台命令:  source inWorkspaceWorkProject.sh  启动

或者 . ./inWorkspaceWorkProject.sh 命令运行脚本,第二个命令注意两个点之间是有空格的;

#!/bin/bash cd ~/workspace/ros_work5

9.robot.czxy.com 笔记网站

 

查看摄像头 ll /dev/video* 查询 c++ 库中的方法函数 进opencv_env/opencv-3.4.9 目录下 grep -rniI "cornerHarris(" * grep -rniI "cornerHarris(" * --include=*.cpp 制作 命令台命令: 通过一个命令启动 例如: 在 ~/.bashrc 中加入 alias sd='source devel/setup.sh' 在命令台中就可以使用 sd 命令

多机部署ros 

# 多机部署ros > 主机和从机要在同一个局域网内 1. 主机添加在hosts中添加所有节点的ip和主机名(主机配置) ```bash sudo gedit /etc/hosts ``` > ip 主机名 1.1 sudo gedit ~/.bashrc export ROS_HOSTNAME=本机ip export ROS_MASTER_URI=http://主机ip:11311 source ~/.bashrc 重启控制台 2. 从机配置master节点服务(主机也需要修改) ```bash sudo gedit ~/.bashrc export ROS_HOSTNAME=本机ip export ROS_MASTER_URI=http://主机ip:11311 source ~/.bashrc 重启控制台

 

问题1: ros环境中 opencv与ros冲突时删除 conda环境,是因为conda冲突,在ubuntu中建议不按照conda

问题2: ros多机互联后,一方收不到另一方的数据时需要在执行的那个控制台窗口执行 source ~/.bashrc

问题3: 如项目中使用的Qt 就必须加Qappliion

第二种:动态多机部署ros 方法:

主机:树莓派端配置

export ROS_IP=`hostname -I | awk '{print $1}'` export ROS_HOSTNAME=`hostname -I | awk '{print $1}'` export ROS_MASTER_URI=http://`hostname -I | awk '{print $1}'`:11311

从机:

export ROS_IP=`hostname -I | awk '{print $1}'` export ROS_HOSTNAME=`hostname -I | awk '{print $1}'` export ROS_MASTER_URI=http://树莓派的IP地址:11311

 

 

问题1:链接不上或找不到节点 可能ip问题 输入

ifconfig

echo $ROS_HOSTNAME

查看ip是否一致  强制更改 本机ip; 把动态命令写死

export ROS_HOSTNAME=`hostname -I | awk '{print $1}'`

改 

export ROS_HOSTNAME=192.168.1.10

动态命令在多网卡或网络中断会导致把本机ip发送给mast节点的ip不准确

 

ros_视觉USB驱动集成

# USB驱动集成 ## 下载驱动 来到工作空间下的src目录,下载驱动到当前目录: ```bash # 下载 cd ws/src git clone https://github.com/ros-drivers/usb_cam # 编译 cd ws catkin_make ``` ## rosrun调试 1. 运行`usb_cam`节点 ```bash rosrun usb_cam usb_cam_node ``` 2. 图像调试 ```bash rosrun image_view image_view image:=/usb_cam/image_raw ``` ## roslaunch调试 ```bash roslaunch usb_cam usb_cam-test.launch ``` ## 参数说明 `usb_cam`配置信息是通过rosparam来进行设置的。 | 参数 | 默认值 | 说明 | 编程关注度 | | :----------------: | :-----------: | :----------------------------------------------------------: | :--------: | | video_device | `/dev/video0` | 设置使用哪部相机 | ★★★★★ | | image_width | 640 | 输出图片像素宽度 | ★★★★★ | | image_height | 480 | 输出图片像素高度 | ★★★★★ | | pixel_format | `mjpeg` | 像素格式。取值范围: `yuyv`, `uyvy`, `mjpeg`, `yuvmono10`, `rgb24` 建议使用`yuyv` | ★★★★★ | | framerate | 30 | 采样率,每秒钟采样30张图片 | ★★★ | | brightness | -1 | 亮度。取值0~255 | ★★★ | | contrast | -1 | 对比度。取值0~255 | ★★★ | | saturation | -1 | 饱和度。取值0~255 | ★★★ | | sharpness | -1 | 锐度。取值0~255 | ★★★ | | io_method | `mmap` | 读取方式.`mmap`,`read`,`userptr` | ★ | | autofocus | `false` | 自动聚焦 | ★ | | focus | -1 | 聚焦值.0~255 | ★ | | autoexposure | `false` | 自动曝光 | ★ | | exposure | 100 | 曝光值. | ★ | | gain | -1 | 曝光增益值。0-100 | ★ | | auto_white_balance | `false` | 自动白平衡。 | ★ | | white_balance | 4000 | 白平衡值。 | ★ | | camera_frame_id | `head_camera` | 标记当前帧是什么设备拍摄的。 | ★ | # 图像数据转换 ## CvBridge介绍 ![](img/2.png) CvBridge主要解决的问题是将Ros的Image数据与OpenCv的Image数据进行相互转换。 **Ros Image to OpenCv Image场景** 通常Ros Node和相机硬件进行数据交互,最终拿到的是 Ros Image类型数据。 对于这种数据,我们希望通过OpenCv库进行图片数据的操作。但是OpenCv需要的是Mat类型的数据。 因此,需要进行数据类型的转换。这种场景主要是需要对图片进行一下业务操作。 **OpenCv Image to Ros Image 场景** OpenCv图片操作完成后的数据是Mat类型的,在业务场景中,如果其他节点需要这个数据的话,是需要订阅这种数据的。在Ros中,OpenCV的Mat数据是不可以在节点与节点间进行传输的,要传输只可以采用Ros的Image类型进行传输。此时就需要将OpenCv的Mat数据转换为Ros 的Image类型。 ## RosImage to CvMat(c++) **依赖配置** 1. package.xml配置 ```xml <build_depend>sensor_msgs</build_depend> <build_export_depend>sensor_msgs</build_export_depend> <exec_depend>sensor_msgs</exec_depend> <build_depend>cv_bridge</build_depend> <build_export_depend>cv_bridge</build_export_depend> <exec_depend>cv_bridge</exec_depend> <build_depend>image_transport</build_depend> <build_export_depend>image_transport</build_export_depend> <exec_depend>image_transport</exec_depend> ``` 2. CMakeLists.txt配置 ```cmake find_package(catkin REQUIRED COMPONENTS roscpp rosmsg rospy sensor_msgs cv_bridge image_transport ) ``` 3. 引入opencv库 ```cmake find_package(OpenCV REQUIRED) ``` 4. 添加链接库 ```cmake target_link_libraries(image_subscriber ${catkin_LIBRARIES} ${OpenCV_LIBS} ) ``` **转换代码** 1. 引入头 ```c++ #include <image_transport/image_transport.h> #include <cv_bridge/cv_bridge.h> #include <sensor_msgs/image_encodings.h> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include "sensor_msgs/Image.h" ``` 2. 转换逻辑 ```c++ void topicCallback(const sensor_msgs::ImageConstPtr &msg) { const cv_bridge::CvImageConstPtr &ptr = cv_bridge::toCvShare(msg); cv::Mat mat = ptr->image; ... } ```

查看相机:

 

 

ros开发时python加载静态文件的路径从 .src开始往下找

参考第一种,第二种可以尝试看效果

1.py_path当前python文件,同时适用于ros环境及非ros环境加载文件

from os import path # 当前python文件所在目录 dir_name = path.dirname(path.realpath(__file__)) #通过拼接文的件路径,找到文件left.yaml; path.join:自动判断文件夹dir_name是否需要带/ file = path.join(dir_name, "./calibration/left.yaml")

2.

file="./src/demour/scripts1/h5/abc.h5"

或尝试加入以下这句代码

sys.path.append("src/driver2/scripts")

 

ubuntu链接串口

ls -al /dev/ttyU*

如以上提示连不上串口,就看下图打开(针对虚拟机) 

得到 

开启永久权限

sudo usermod -aG dialout 'demo' sudo chmod 777 /dev/ttySo

 

ros 控制键盘调试

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

 

虚拟机链接路由器:

 

udev 配置串口设备:

  查看是否存在串口设备

ls -al /dev/ttyU*

1.查找设备

 lsusb -vvv

定义rules文件 

 激活rules

1.拷贝到以下目录 sudo cp 58-robot.rules /etc/udev/rules.d/ 或 sudo cp 58-robot.rules /lib/udev/rules.d/ 2.加载文件 sudo service udev reload 3.启动 sudo service udev restart 启动报错提示用下面的命令: sudo systemctl daemon-reload 4.插上设备 查看是否安装完成 ls -al /dev/skser* ls -al /dev/sulid*

 使用设备:

 

apt-get安装出现E: Sub-process /usr/bin/dpkg returned an error code (1)问题

cd /var/lib/dpkg/ sudo mv info/ info_bak # 现将info文件夹更名 sudo mkdir info # 新建一个新的info文件夹 sudo apt-get update # 更新 sudo apt-get -f install # 修复 sudo mv info/* info_bak/ # 执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_bak文件夹下 sudo rm -rf info # 把自己新建的info文件夹删掉 sudo mv info_bak info # 把以前的info文件夹重新改回名

Ubuntu安装.md阅读工具-Typora

官网安装: https://typora.io/#linux

# or run: # sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add - # add Typora's repository sudo add-apt-repository 'deb https://typora.io/linux ./' sudo apt-get update # install typora sudo apt-get install typora

moveit可视化配置

rosrun moveit_setup_assistant moveit_setup_assistant

notepad 安装:

sudo add-apt-repository ppa:notepadqq-team/notepadqq sudo apt-get update sudo apt-get install notepadqq

opencv文档

https://docs.opencv.org

id制作软a链接

ln -s ~/3rdparty/3rdparty_tanglaoshi/aubo_dependents .

 安装pppoeconf

sudo apt-get install pppoe pppoeconf

图形界面配置pppoe,在控制台里输入

nm-connection-editor

inux  下 adsl 拨号上网的配置(命令行)

 pppoeconf ->输入用户名和密码;

sudo pppoeconf

  启动或者重启动DSL拨号连接(联网)

sudo pon dsl-provider

停止DSL拨号连接(断网)

sudo poff dsl-provider

查看日志( 断网下)

sudo plog

重启pppoe网络

sudo pon dsl-provider && sudo pon dsl-provider sudo service networking restart

频繁断网问题解决

检查pppoe的配置文件(/etc/ppp/options)

lcp-echo-failure 4 lcp-echo-interval 30 意思大概为30秒内联接4次失败就断网,把4改大点,比如30。

 问题:

原因:是读取外部文件时,文件中的数据有问题,可能xml文件标签中的数据乱码,或没有数据

 

欧拉角与旋转矩阵互相转换验证网站查看:

http://andre-gaschler.com/rotationconverter/

 

控制台查找文件命令:

find . -name "*.*pp" | xargs gerp -rni "findChessboardCorners("

Eigen 库

 

卸载 Eigen:

 

sudo updatedb locate eigen3 sudo apt autoremove libeigen3-dev sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 /usr/share/doc/libeigen3-dev /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums sudo updatedb locate eigen3

 

执行命令:

sudo apt-get install libeigen3-dev

 

安装后执行以下命令

 

运行命令:

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

或 创建软连接

sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen //不要执行这句  sudo ln -s /usr/include/eigen3 /usr/local/include/ #sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include  sudo ln -s /usr/local/include/eigen3 /usr/include

cmake中添加: 

include_directories(/usr/include/eigen3)

 

 

#include <KinectCamera.h> // 要把Eigen声明放到OpenCV上边 #include <Eigen/Geometry> #include <opencv/cxeigen.hpp>

报错:

The FindEigen.cmake Module in the cmake_modules package is deprecated.

  Please use the FindEigen3.cmake Module provided with Eigen.  Change   instances of find_package(Eigen) to find_package(Eigen3).  Check the   FindEigen3.cmake Module for the resulting CMake variable names.

这个芬代根.cmakecmake_modules包中的模块已弃用。

请使用Eigen提供的FindEigen3.cmake模块。改变

find_package(Eigen)到find_package(Eigen3)的实例。检查

生成的cmake变量名的FindEigen3.cmake模块。

 

 

 opencv缺依赖H5P_CLS_DATASET_CREATE_ID_g问题:自己装的库有问题,换一个opencv库

显卡驱动相关

f2 进 sudo apt update sudo apt-get upgrade sudo apt full-upgrade 验证终端输入 没输出表示警用成功 lsmod | grep nouveau 更新initramfs sudo update-initramfs -u 关闭图形界面 sudo service lightdm stop 删除显卡驱动 sudo apt-get remove --purge nvidia* 查看显卡驱动 ubuntu-drivers devices 安装显卡驱动 sudo ubuntu-drivers-autoinstall sudo apt install nvidia-410 重启查看 sudo nvidia-smi sudo prime-select nvidia 检查安装的内核版本 uname -sr 内核网 https://www.kernel.org 进行解压安装 sudo dpkg -i *.deb reboot

 

Ubuntu上传项目到githup

进入要上传的文件夹中 git init git add ./ git status git commit -m "对文件的注释" git remote add origin https://github.com/suk***/AuboDriver.git git branch -M master git push -u origin master 秘钥-ssh $ git config --global user.name "su****" $ git config --global user.email "422*******@qq.com" 查看是否已经有了ssh密钥:cd ~/.ssh 如果没有密钥则不会有此文件夹,有则备份删除 ssh-keygen -t rsa -C "422******@qq.com" 一直按回车,不要输入任何密码 最后得到了两个文件:id_rsa和id_rsa.pub 打开id_rsa.pub文件,得到key sk@sk-PC:~/.ssh$ ls id_rsa id_rsa.pub known_hosts sk@sk-PC:~/.ssh$ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCX+VTRVTQcDwesEv8B32rmKkvEechvOEhPO6dKstiJK/cFyc0c0819EqkXpvaDWalD3n0WyriSLZCqMv8ukJT+Wv+h99VMsoWSvKCDfraBwGmzgXxkrscmuf7Un/ouEsPzX8PsPvcmj4qOtpHOQkA8x94vyS2CUXO9sX+DMGX6edO/o422168787@qq.com sk@sk-PC:~/.ssh$ https://github.com/settings/keys

命令启动摄像头

1.启动Astra乐视摄像头 cd /home/sk/Astra/OpenNI_2.3.0.63/Linux/OpenNI-Linux-x64-2.3.0.63/Samples/SimpleViewer/Bin/x64-Release ./SimpleViewer 2.启动Kinect2 cd /home/sk/libfreenect2-master/build/bin ./bin/Protonect 3.启动pcl cd /home/sk/pcl/pcl-pcl-1.9.1/release pcl_viewer ../test/pcl_logo.pcd https://pypi.python.org/simple 1 目前国内靠谱的 pip 镜像源有: 2 3 清华: https://pypi.tuna.tsinghua.edu.cn/simple 4 5 豆瓣: http://pypi.douban.com/simple/ 6 7 阿里: http://mirrors.aliyun.com/pypi/simple/ channels: - defaults show_channel_urls: true channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2

绕z轴转动的旋转矩阵:

4元素欧拉角对比网站

https://quaternions.online/

ros中有一个kdl的库,动力学解析,帮我们可以实现反解

[泰勒公式解决 泰勒公式一句话描述:就是用多项式函数去逼近光滑函数。]

 http://wiki.ros.org/

 

 https://moveit.ros.org/

 

sudo apt install ros-melodic-franka-ros echo $ROS_DISTRO

clion dbug

bt

clion 控制台报错

/usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128 : Eigen::internal::plain_array<T,Size,MatrixOrArrayOptions,32>::plain_array()[with T =float; int

 原因:

带分配结构体数据类型复杂导致的问题

解决: 结构体类型必须这么写: std::vector<Result, Eigen::aligned_allocator<Result>> results;

pcl控制操作

传入的参数 ./output/table_scene_0_ds.pcd 控制台命令 ./03-TemplateRtMaker ./output/table_scene_0_ds.pcd 控制台降采样命令 pcl_voxel_grid table_scene_0_ds.pcd table_scene_0_ds.pcd -leaf 0.003,0.003,0.003 控制台显示点云图 pcl_viewer table_scene_0_ds.pcd 控制台显示点云图 pcl_viewer -use_point_picking table_scene_0_ds.pcd [shift + 鼠标左键可获取点云坐标] 查看历史操作的命令 history /bin pcl_viewer ./data/chef.pcd /bin pcl_viewer ./data/rs1.pcd /bin pcl_viewer ./data/chef.pcd ./data/rs1.pcd /data1 pcl_viewer person.pcd object_template_*pcd 按 u 标注尺 按 1 切换颜色 按 2 x方向颜色 按 3 y方向颜色 按 4 z方向颜色

 

https://github.com/itheima1?tab=repositories https://github.com/PoplarTang

添加控制台快捷命令 

sudo vim ~/.bashrc alias sd='source devel/setup.sh' 安装UVC相机管理工具 写双目 sudo apt install uvcdynctrl ll /dev/video*

 

使用shell脚本修改输出

usb_mode.sh    用这个uvcdynctrl工具给设备/dev/video${id}  发送指令  '(LE)0x50ff'   可以用工具发送也可以用代码发送

#!/bin/bash id=$1 mode=$2 uvcdynctrl -d /dev/video${id} -S 6:8 '(LE)0x50ff' uvcdynctrl -d /dev/video${id} -S 6:15 '(LE)0x00f6' uvcdynctrl -d /dev/video${id} -S 6:8 '(LE)0x2500' uvcdynctrl -d /dev/video${id} -S 6:8 '(LE)0x5ffe' uvcdynctrl -d /dev/video${id} -S 6:15 '(LE)0x0003' uvcdynctrl -d /dev/video${id} -S 6:15 '(LE)0x0002' uvcdynctrl -d /dev/video${id} -S 6:15 '(LE)0x0012' uvcdynctrl -d /dev/video${id} -S 6:15 '(LE)0x0004' uvcdynctrl -d /dev/video${id} -S 6:8 '(LE)0x76c3' uvcdynctrl -d /dev/video${id} -S 6:10 "(LE)0x0${mode}00"

  修改脚本权限

chmod +x usb_mode.sh 

 

双目相机一般有四种模式

左单目模式:LEFT_EYE_MODE右单目模式:RIGHT_EYE_MODE红蓝模式:RED_BLUE_MODE双目模式:BINOCULAR_MODE

 

启动双目相机

脚本中切换:

1. 左单目模式:LEFT_EYE_MODE

./usb_mode.sh 2 1

2.右单目模式:RIGHT_EYE_MODE

./usb_mode.sh 2 2

3.红蓝模式:RED_BLUE_MODE

./usb_mode.sh 2 3

4.双目模式:BINOCULAR_MODE

./usb_mode.sh 2 4

查看图片  接收topic发送的image图片消息 查看图片

rqt_image_view

USB设备重置

有时,可能会因为各种各样的原因,导致usb设备不能正常使用,我们可以通过c代码,给其发送reset重置指令,恢复其状态,从而避免重新拔插设备。以下我们直接编译一个工具对设备进行重置。

创建usbreset.c文件,写入以下代码: /* usbreset -- send a USB port reset to a USB device */ #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <sys/ioctl.h> #include <linux/usbdevice_fs.h> int main(int argc, char **argv) { const char *filename; int fd; int rc; if (argc != 2) { fprintf(stderr, "Usage: usbreset device-filename"); return 1; } filename = argv[1]; fd = open(filename, O_WRONLY); if (fd < 0) { perror("Error opening output file"); return 1; } printf("Resetting USB device %s", filename); rc = ioctl(fd, USBDEVFS_RESET, 0); if (rc < 0) { perror("Error in ioctl"); return 1; } printf("Reset successful"); close(fd); return 0; } 执行编译命令 cc usbreset.c -o usbreset

此时,可在当前目录得到编译后的可执行程序usbreset

进行USB设备重置

查看设备及其驱动:sudo lsusb -t,找到其前边的总线、设备序号

 

ty@ty-PC:~$ lsusb Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 007: ID 5986:066d Acer, Inc Bus 001 Device 005: ID 8087:0a2a Intel Corp. Bus 001 Device 003: ID 1532:0037 Razer USA, Ltd Bus 001 Device 008: ID 18e3:5031 Fitipower Integrated Technology Inc Bus 001 Device 004: ID 24ae:4005 Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 USB设备重置

sudo ./usbreset /dev/bus/usb/001/008

 制作全局使用的USB设备重置功能

 任何位置使用 usbreset

sudo lsusb -t

usbreset /dev/bus/usb/001/006

 

 

如何创建ROS工作区,比catkin_workspace更方便

第一步:

cd〜/

mkdir ROS_WORKSPACE

编辑.bashrc

gedit .bashrc#在〜/下打开.bashrc

然后,将以下内容粘贴到源代码/opt/ros/indigo/setup.bash后面:

ROS_WORKSPACE = $ HOME / ROS_WORKSPACE

导出ROS_WORKSPACE

ROS_PACKAGE_PATH = $ ROS_WORKSPACE:$ ROS_PACKAGE_PATH

汇出ROS_PACKAGE_PATH

eigen库安装

http://eigen.tuxfamily.org/index.php?title=Main_Page

 

 

 Install eigen  看上面的(eigen安装是不需要编译的)

eigen_example

In this demo project, it illustrate the basic operation of using eigen for pose processing and basic: dot, cross, inverse operation.

I have already include the eigen librarires in this folder: if you want to download by your own

download using: git clone https://github.com/eigenteam/eigen-git-mirror.git eigenLibrary

There is no need to compile eigen, just link to your project as:

include_directories(${PROJECT_SOURCE_DIR}/eigenLibrary)

Then, under eigen_example folder:

cd build

rm -r *

cmake ..

make -j4

If you want to run the executable file:

./eigenDemo

 

 

Install Sophus

Download the file

git clone https://github.com/strasdat/Sophus.git

 shophus安装前需要

git checkout  a621ff

 

 

Install

mkdir build

cd build

cmake ..

make check (optional, runs unit tests)

make install

Here are some quite example

For python users, please follow this instruction

 推荐相机

https://github.com/stereolabs/zed-tracking-viewer

ROS提供了许多摄像头计算数据的包

http://wiki.ros.org/stereo_image_proc

http://wiki.ros.org/stereo_image_proc/Tutorials/ChoosingGoodStereoParameters

 

深度学习选择开发版

 rqt_reconfigure 调试

rosrun dynamic_reconfigure dynamic_reconfigure 过时了 rosrun rqt_reconfigure rqt_reconfigure 新的

 

 

 

rosbag record -0 testbag /camera/rgb/image_raw   后面节点参数自己加的 /camera/rgb/image_raw

 

 搜相机驱动:

apt-cache cearch openni

 下面两个就是kinect2相机的驱动

 

 sudo apt install 上面查出来的

3d点云安装

 

apt-cache cearch pcl

安装 查询出来的pcl驱动

sudo apt install 上面查出来的

安装  ccmake

apt-cache search ccmake

 

 

安装ccmake

apt-get install cmake-curses-gui

输入操作命令进ros的项目中的build目录中  ccmake..      它可以告诉你一些传参的参数如何改

ccmake ..

 看的项目依赖的 library 在哪个目录中

 

保证主机系统与树莓派系统时钟一致

主机ip:

ping通树莓派地址

操作树莓派小车建图需要保证主机与树莓派之间的时钟是一致的

在树莓派中输入命令

sudo ntpdate 10.42.0.73

树莓派中 

树莓派机器人-中有二维码-语音\hawkbo中有二维码-语音\hawkbot树莓派ROS基础包\【理论学习】--ROS理论视频\ROS机器人系列视频+资料+代码\05第五章:机器人感知

 二维码识别安装功能包

sudo apt-get install ros-kinetic-ar-track-alvar

 

 

 

 

 

 

 

 

 集成语音

ros提供的识别率不高

 sdk在线版需要连接网络

https://www.xfyun.cn/

需要进入skd目录编译一下 make

 

 

 

 

catkin_make 与catkin_make_isolate --install --use-ninja 的区别是后者单独编译每一个功能包

 

设置代理:

最新回复(0)