admin 管理员组文章数量: 887016
dd
sudo apt-get install ibus-pinyin
代码中启动ros节点roslaunch和rosrun
import subprocess
import rospy
import rosnode
class launch_demo:
def __init__(self, cmd=None):
self.cmd = cmd
def launch(self):
self.child = subprocess.Popen(self.cmd)
return True
def shutdown(self):
self.child.terminate()
self.child.wait()
return True
if __name__ == "__main__":
rospy.init_node('launch_demo',anonymous=True)
launch_nav = launch_demo(["roslaunch", "pibot_simulator", "nav.launch"])
launch_nav.launch()
r = rospy.Rate(0.2)
r.sleep()
rospy.loginfo("switch map...")
r = rospy.Rate(1)
r.sleep()
rosnode.kill_nodes(['map_server'])
map_name = "/home/pibot/ros_ws/src/pibot_simulator/maps/blank_map_with_obstacle.yaml"
map_node = subprocess.Popen(["rosrun", "map_server", "map_server", map_name, "__name:=map_server"])
while not rospy.is_shutdown():
r.sleep()
#include <unistd.h>
//execlp函数的作用是从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件
execlp("roslaunch", "roslaunch", "runtime_manager","runtime_manager.launch", NULL);
ROS开机自动启动节点
robot_upstart安装节点
sudo apt-get install ros-kinetic-robot-upstart
rosrun robot_upstart install package_name/launch/start.launch --logdir /$HOME/.ros/log --job mine_job
sudo systemctl daemon-reload && sudo systemctl start mine_job
restart job:
sudo systemctl restart mine_job
stop job:
sudo systemctl stop mine_job
github下载来链接
https://shrill-pond-3e81.hunsh.workers.dev
ros打包:
安装bloom-generate
sudo apt-get install python-bloom fakeroot
ros打包命令
roscd **(rosbag)
bloom-generate rosdebian --os-name ubuntu --ros-distro kinetic
fakeroot debian/rules binary
安装ros包
sudo dpkg -i ***.deb
执行sudo gedit ~/.ros/rosdep.yaml
lslidar_n301_msgs:
ubuntu: [ros-kinetic-lslidar-n301-msgs]
disinfect_msg:
ubuntu: [ros-kinetic-disinfect-msg]
disinfect_srvs:
ubuntu: [ros-kinetic-disinfect-srvs]
qrcode_srvs:
ubuntu: [ros-kinetic-qrcode-srvs]
qrcode_msg:
ubuntu: [ros-kinetic-qrcode-msg]
执行sudo gedit /etc/ros/rosdep/sources.list.d/50-my-default.list
yaml file://localhost/home/iimt/.ros/rosdep.yaml
执行rosdep update
安装gmapping
sudo apt-get install ros-kinetic-openslam-gmapping ros-kinetic-slam-gmapping ros-kinetic-usb-cam
sudo apt-get install ros-kinetic-amcl ros-kinetic-base-local-planner ros-kinetic-carrot-planner ros-kinetic-clear-costmap-recovery ros-kinetic-costmap-2d ros-kinetic-costmap-prohibition-layer ros-kinetic-dwa-local-planner ros-kinetic-fake-localization ros-kinetic-follow-waypoints ros-kinetic-global-planner ros-kinetic-map-server ros-kinetic-move-slow-and-clear ros-kinetic-nav-core ros-kinetic-navfn ros-kinetic-navigation ros-kinetic-robot-pose-ekf ros-kinetic-rotate-recovery ros-kinetic-voxel-grid ros-kinetic-waypoint-global-planner
sudo apt-get install ros-kinetic-teleop-twist-keyboard ros-kinetic-yocs-velocity-smoother
------------------------------------
navigation中只更新move_base 和eband
------------------------------------
sudo dpkg -i ros-kinetic-controlmaster_0.0.0-0xenial_amd64.deb ros-kinetic-disinfect-msg_0.0.0-0xenial_amd64.deb ros-kinetic-disinfect-srvs_0.0.0-0xenial_amd64.deb ros-kinetic-eband-local-planner_0.3.1-0xenial_amd64.deb ros-kinetic-gmapping_1.4.2-0xenial_amd64.deb ros-kinetic-lslidar-n301-decoder_1.2.0-0xenial_amd64.deb ros-kinetic-lslidar-n301-driver_1.2.0-0xenial_amd64.deb ros-kinetic-lslidar-n301-msgs_1.2.0-0xenial_amd64.deb ros-kinetic-motorcontrol_0.0.0-0xenial_amd64.deb ros-kinetic-motor-mapbuild_0.0.0-0xenial_amd64.deb ros-kinetic-move-base_1.14.4-0xenial_amd64.deb ros-kinetic-qrcode-msg_0.0.0-0xenial_amd64.deb ros-kinetic-qrcode-srvs_0.0.0-0xenial_amd64.deb ros-kinetic-robot-vision_0.0.0-0xenial_amd64.deb ros-kinetic-robot-voice_0.0.0-0xenial_amd64.deb ros-kinetic-ui_0.1.0-0xenial_amd64.deb ros-kinetic-visualorientation_0.0.0-0xenial_amd64.deb
clion
clion注册时报错:
Your activation code could not be validated(error 1653219) IntelliJ IDE
https://blog.csdn/yu88288356/article/details/95312019
1.hosts文件修改如下,即可解决激活码激活报错问题:
0.0.0.0 https://account.jetbrains:443
ubuntu开机自启动:
1.
sudo gedit profile
2.在最后一行加入启动脚本
sh /home/iimt/workspace/workspace_ros_disinfectCar/start_lidar.sh &
ubuntu u盘硬盘修复
sudo ntfsfix /dev/sdb2
QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed: 设备上没有空间
命令设置:sudo sysctl fs.inotify.max_user_watches=524288
生效: sudo sysctl -p
ros中添加qt 增加Qt5SerialPor库
sudo apt-get install ros-kinetic-qt-create
sudo apt-get install ros-kinetic-qt-build
sudo apt install libqt5serialport5-dev
qtcreate :无法覆盖文件 /home/iimt/.config/QtProject/qtcreator/devices.xml : Permission denied
sudo运行qtcreator后,下次不使用sudo打开会报以上错误 /home/xxx/.config/QtProject/Qtcreator/qtversion.xml : Permission denied
原因:在sudo下打开qtcreator时,会向用户根目录的.config下写数据,所以这个目录变为管理员权限,使用下述命令就是将.config的管理员权限取消。
解决方式:
改变主目录下.config的权限,在home用户目录,终端输入:sudo chown -R iimt:iimt ~/.config/
注意改掉用户名:比如用户名为user,则输入的就是sudo chown -R user:user ./config/
注意空格的位置。在用户名后面还有一个空格
以下是监听端口
需要先下载net-tools
netstat用法
sudo apt-get install net-tools
netstat -an|grep :8080
python2启动服务器:
浏览器输入:http://0.0.0.0:8000
即可看到目录下的文件
python -m SimpleHTTPServer
http server默认端口为8000,如果更改端口,可按如下格式
python -m SimpleHTTPServer 8080
python3启动服务器:
python -m http.server
python -m http.server 8888
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/linux/chrome/deb stable InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 78BD65473CB3BD13
sudo apt-key adv --keyserver keyserver.ubuntu --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/simple opencv-python==3.4.0.12
永久指定安装源¶
每次临时指定源地址比较麻烦,可以通过以下方式配置永久源
在主目录创建.pip文件夹
mkdir ~/.pip
编写~/.pip/pip.conf
已复制sudo gedit ~/.pip/pip.conf
并添加以下内容
[global]
trusted-host=pypi.douban
index-url=https://mirrors.aliyun/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/simple
阿里云:http://mirrors.aliyun/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu/simple/
华中理工大学:http://pypi.hustunique/
山东理工大学:http://pypi.sdutlinux/
豆瓣:https://pypi.douban/simple/
# 原有设置:
http://mirrors.aliyun/pypi/simple/
# 改为:
https://mirrors.aliyun/pypi/simple/
idea原
https://pypi.python/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/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/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun/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 笔记网站
查看摄像头
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/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 --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
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文件标签中的数据乱码,或没有数据
欧拉角与旋转矩阵互相转换验证网站查看:
3D Rotation Converter
控制台查找文件命令:
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
进行解压安装
sudo dpkg -i *.deb
reboot
Ubuntu上传项目到githup
进入要上传的文件夹中
git init
git add ./
git status
git commit -m "对文件的注释"
git remote add origin https://github/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"
查看是否已经有了ssh密钥:cd ~/.ssh
如果没有密钥则不会有此文件夹,有则备份删除
ssh-keygen -t rsa -C "422******@qq"
一直按回车,不要输入任何密码
最后得到了两个文件: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
sk@sk-PC:~/.ssh$
https://github/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/simple
1 目前国内靠谱的 pip 镜像源有:
2
3 清华: https://pypi.tuna.tsinghua.edu/simple
4
5 豆瓣: http://pypi.douban/simple/
6
7 阿里: http://mirrors.aliyun/pypi/simple/
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu/anaconda/pkgs/msys2
绕z轴转动的旋转矩阵:
4元素欧拉角对比网站
Quaternions - Visualisation
ros中有一个kdl的库,动力学解析,帮我们可以实现反解
[泰勒公式解决 泰勒公式一句话描述:就是用多项式函数去逼近光滑函数。]
Documentation - ROS Wiki
MoveIt Motion Planning Framework
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/itheima1?tab=repositories
https://github/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库安装
Eigen
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/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/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/stereolabs/zed-tracking-viewer
ROS提供了许多摄像头计算数据的包
stereo_image_proc - ROS Wiki
stereo_image_proc/Tutorials/ChoosingGoodStereoParameters - ROS Wiki
深度学习选择开发版
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在线版需要连接网络
讯飞开放平台-以语音交互为核心的人工智能开放平台
需要进入skd目录编译一下 make
catkin_make 与catkin_make_isolate --install --use-ninja 的区别是后者单独编译每一个功能包
设置代理:
版权声明:本文标题:开发环境初始化配置 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732050265h1519104.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论