文章目录
- 前言
- 一、编译时报错误Project ‘cv_bridge‘ specifies ‘/usr/include/opencv‘ as an include dir, which is not found.
- 二、在C 程序中启动shell脚本
- 三、启动自启动ROS程序
-
- 1.编写启动脚本
- 2.添加到自启动
- 四、使用catkin_make编译ROS代码时报错:CMake Error: The current CMakeCache.txt directory ***is different***
- 五、ROS catkin_make时报错:fatal error: turtlesim/Spawn.h: No such file or directory #include <turtlesim/Sp
- 六、ubuntu18.04源码安装ROS导航包(navigation)
- 以下签名无法验证,因为没有公钥: NO_PUBKEY 76F1A20FF987672F
- 八、catkin_make时报错 Could not find a package configuration file provided by...
- 九、sudo apt-get update报错 404 Not Found
- 十、“Could not get lock /var/lib/dpkg/lock-frontend“解决办法
- 十一、git下载克隆代码失败
- 十二、将PX4源代码移动到其他目录进行编译
- 十三、PX4飞控的偏航角一直在漂移
- 十四、PX4.由于内存不足,固件自动重启解决方案
- 十五、px4自定义曲调
- 十六、px4官网中文显示
- 十七、source insight
-
- 1.不能跳转
- 2.中文乱码
- 3.显示工程文件
- 新建工程
- 十八、ubuntu下编译qt项目出现cannot find -lGL
- 十九、pix4无法读取mb12xx传感器数据解决方案
- 二十、ros设置环境变量
- 二十一、px四旋翼无人机飞行时,按一定频率上下抖动
- 二十二、gazebo将背景色改为白色
- 二十三、将Wireframe勾上
- 二十四、px4能修改条件参数解决方案
- 二十五、pixracer飞行控制连接地面站没有姿态数据
- 二十六、px4设置舵机反向
- 二十七、编译px4 bootloader
- 二十八、pix使用RTK
- 二十九、PX4利用tfmini设置地形跟踪
- 三十、ubuntu文本文件不能新建
- 三十一、安装git时报错 依赖未安装
- 三十二、北天RTK使用GGA高程数据
- 三十三、ubuntu1804耳机无声解决方法
- 三十四、ubuntu安装gcc-arm-linux-gnueabihf编译器
- 三十五、ROS命令突然无法使用
- 三十六、ROS编译报错conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’
- 三十七、ubuntu添加用户
- 三十八、启动roscorec出现报错 error while loading shared libraries: libroscpp.so: cannot open shared object file: No such file or directory
- 三十九、ubuntu悬挂固态硬盘
- 四十、ubuntu无法识别U盘
- 四十一、ubuntu使用sudo不需要输入密码
前言
ubuntu18.04 ROS melodic
一、编译时报错误Project ‘cv_bridge‘ specifies ‘/usr/include/opencv‘ as an include dir, which is not found.
使用catkin_make编译ROS代码时报错误如下:
CMake Error at /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake:113 (message): Project ‘cv_bridge’ specifies ‘/usr/include/opencv’ as an include dir, which is not found. It does neither exist as an absolute directory nor in ‘${ {prefix}}//usr/include/opencv’. Check the issue tracker ‘https://github.com/ros-perception/vision_opencv/issues’ and consider creating a ticket if the problem has not been reported yet.
解决方案:在根目录下搜索OPENCV的安装路径 我的路径如下:在
/usr/include/opencv4/opencv2
路径下
然后打开报错中提示的文件/opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
,在其中搜索/usr/include/opencv
,用自己的路/usr/include/opencv4/opencv2
替换如下:
然后重新编译
二、在C 程序中启动shell脚本
有时需要在程序中启动shell脚本在程序中满足相应判断后自动启动shell脚本
方法一(推荐):
std::string shell=".sh文件的绝对路径"; popen(shell.c_str(),"r");
方法二:
system("gnome-terminal -- bash -c 'shell命令'")
该命令的作用是在终端执行相应的新终端shell命令,shell命令可以是单独的命令,也可以启动脚本
三、启动自启动ROS程序
1、编写启动脚本
新后缀为a.sh(名称任取,后缀为.sh可以)脚本,内容按以下格式填写,每个都是gnome-terminal -- bash -c "cd 工作空间目录;source devel/setup.bash;roslaunch xxx.launch"
中的双引号里面对应启动一个launch文件,,通过sleep 10 wait
等待10秒(等待多久可以自己测试,一般不到10秒),然后启动下一个launch. 典型的脚本xxx.sh如下:
#! /bin/bash ##根据系统启动相应版本roscore sudo chmod 777 xxxx gnome-terminal -- bash -c "cd 工作空间目录1;source devel/setup.bash;roslaunch xxx.launch"
sleep 10
wait
gnome-terminal -- bash -c "cd 工作空间目录2;source devel/setup.bash;roslaunch xxx.launch"
sleep 10
wait
exit 0
有的脚本在执行时需要输入密码,如里面含有需要sudo的命令,以上面的脚本xxx.sh为例 为了开机时自动输入密码,新建一个start.sh,内容如下:
#! /bin/bash
gnome-terminal -- bash -c "source /opt/ros/melodic/setup.bash;roscore"
sleep 10
wait
cd /home/mobot
echo '电脑密码' | sudo -S "./xxx.sh"
sleep 10
wait
exit 0
这里先启动roscore,再通过echo '电脑密码' | sudo -S "./xxx.sh""
自动输入密码执行上面的xxx.sh
2、添加到自启动
搜索并打开"启动应用程序"(如果是英文系统则搜索“startup applications”) 点击"添加" 名称和注释任取,点击“浏览”,选择start.sh 选择start.sh,注意只需选择sh启动文件即可,不需要在启动文件前面加启动命令,然后点“添加”。 然后重启电脑测试即可
四、使用catkin_make编译ROS代码时报错:CMake Error: The current CMakeCache.txt directory
将之前能编译的ROS工作空间改名或者移动到新的目录下编译时,报错:
CMake Error: The current CMakeCache.txt directory *** is different than the directory ** where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt
解决办法: 将工作空间下的build和devel文件夹删除,然后重新编译即可
五、ROS catkin_make时报错:fatal error: turtlesim/Spawn.h: No such file or directory #include <turtlesim/Sp
原因是没有安装tutorials包 执行以下命令安装即可解决
sudo apt-get install ros-melodic-ros-tutorials
六、ubuntu18.04源码安装ROS导航包(navigation)
mkdir -p nv_ws/src
cd ~/nv_ws/src/
catkin_init_workspace
cd ~/nv_ws/
catkin_make
echo "source ~/nv_ws/devel/setup.bash">>~/.bashrc
source ~/.bashrc
echo $ROS_PACKAGE_PATH
sudo apt-get install ros-melodic-navigation*
sudo apt-get remove ros-melodic-navigation ros-melodic-navigation-experimental
rosdep install teb_local_planner
打开链接后,点击页面上的 绿色按钮: Code,然后点击 Download ZIP 下载 下载导航包 https://github.com/ros-planning/navigation/tree/melodic-devel
下载teb_local_planner ROS软件包 下载链接 https://github.com/rst-tu-dortmund/teb_local_planner/tree/melodic-devel 解压后放到~/nav_ws/src
目录下(或者放到自己建立的工作空间的src目录下),然后
cd ~/nav_ws/
catkin_make
七、由于没有公钥,无法验证下列签名: NO_PUBKEY 76F1A20FF987672F
在ubuntu18.04上安装win时,执行sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'
时出现报错:
由于没有公钥,无法验证下列签名: NO_PUBKEY 76F1A20FF987672F
解决办法:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 76F1A20FF987672F
八、catkin_make时报错 Could not find a package configuration file provided by…
在ROS工作空间下使用catkin_make编译时,出现报错找不到包 解决办法,根据提示安装相应的包即可.
例1:
Could not find a package configuration file provided by “pcl_ros” with any of the following names:
pcl_rosConfig.cmake pcl_ros-config.cmake
解决办法:
sudo apt-get install ros-melodic-pcl-ros
例2:
Could not find a package configuration file provided by “jsk_recognition_msgs” with any of the following names:
jsk_recognition_msgsConfig.cmake jsk_recognition_msgs-config.cmake
fatal error: jsk_recognition_msgs/BoundingBox.h: No such file or directory #include <jsk_recognition_msgs/BoundingBox.h> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
解决办法:
sudo apt-get install ros-melodic-jsk-recognition-msgs
如果想安装其他的msgs也一样. 例如安装jsk_recognition_msgs
sudo apt-get install ros-melodic-jsk-recognition-msgs
sudo apt install ros-melodic-jsk-rviz-plugins
安装完后就可以在rviz中显示该消息类型的话题
Could not find a package configuration file provided by “serial” with any of the following names:
serialConfig.cmake serial-config.cmake
sudo apt-get install ros-melodic-serial
九、sudo apt-get update报错 404 Not Found
使用sudo apt-get update更新源时出现以下报错:
错误:7 http://ppa.launchpad.net/v-launchpad-jochen-sprickerhof-de/pcl/ubuntu bionic Release 404 Not Found [IP: 2001:67c:1560:8008::19 80] 正在读取软件包列表… 完成 E: 仓库 “http://ppa.launchpad.net/v-launchpad-jochen-sprickerhof-de/pcl/ubuntu bionic Release” 没有 Release 文件。
解决办法: 打开"软件和更新" 将报错的那个源取消勾选.然后重新载入即可
十、“Could not get lock /var/lib/dpkg/lock-frontend“解决办法
执行apt-get install
时,如果报以下错 则执行
ps afx|grep apt
查看apt的pid,并用kill杀死掉 如 则执行
kill 3603 3584 3588 3596
然后继续执行安装命令即可
十一、git克隆代码时下载失败
用git clone下载px4 Firmware时,一些子模块因为网络原因下载失败。可以连上网后,在Firmware路径下用git submodule update --init --recursive继续下载剩余的子模块。
十二、将PX4源码移动到别的目录下编译
需要先执行
make distclean
再执行具体的编译命令
十三、PX4飞控的偏航角一直飘移
解决办法,校准陀螺仪
十四、PX4固件在运行时因为内存不够用而自动重启解决办法
启动一个自己写的线程后,飞控蜂鸣器短响三声后长响三声,然后自动重启。 原因是这个线程以运行时占用的内存超过了分配的内存,解决办法是加大分配的内存
如果是自己创建的线程
将3000改成一个更大的数。
如果是PX4的工作队列,则打开文件WorkQueueManager.hpp 这个文件里包含了PX4里所有的工作队列 可以在这个文件里设置工作队列的优先级和内存空间 以static constexpr wq_config_t attitude_ctrl{“wq:attitude_ctrl”, 8000, -13};为例 括号里第一个参数是队列的名字,第二个为队列的最大内存,第三个为队列的优先级。 将第二个参数改大一点就可以解决内存不够的问题。
如果在编译的时候提示内存不够,则是cmakelist里的内存设置的不够 这个内存是运行内存,相当于sram,如果要改事先存数据的内存,也就是flash,则改cmakelist里的内存
十五、px4自定义曲调
参考 https://dev.px4.io/master/en/advanced/system_tunes.html 代码位置
Firmware/src/lib/tunes/tune_definition.desc
PX4_DEFINE_TUNE(0, CUSTOM, "", true /* empty to align with the index */)
PX4_DEFINE_TUNE(1, STARTUP, "MFT240L8 O4aO5dc O4aO5dc O4aO5dc L16dcdcdcdc", true /* startup tune */)
PX4_DEFINE_TUNE(2, ERROR_TUNE, "MBT200a8a8a8PaaaP", true /* ERROR tone */)
PX4_DEFINE_TUNE(3, NOTIFY_POSITIVE, "MFT200e8a8a", true /* Notify Positive tone */)
PX4_DEFINE_TUNE(4, NOTIFY_NEUTRAL, "MFT200e8e", true /* Notify Neutral tone */)
PX4_DEFINE_TUNE(5, NOTIFY_NEGATIVE, "MFT200e8c8e8c8e8c8", true /* Notify Negative tone */)
PX4_DEFINE_TUNE(6, ARMING_WARNING, "MNT75L1O2G", false /* arming warning */)
PX4_DEFINE_TUNE(7, BATTERY_WARNING_SLOW, "MBNT100a8", true /* battery warning slow */)
PX4_DEFINE_TUNE(8, BATTERY_WARNING_FAST, "MBNT255a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8", true /* battery warning fast */)
PX4_DEFINE_TUNE(9, GPS_WARNING, "MFT255L4AAAL1F#", false /* gps warning slow */)
PX4_DEFINE_TUNE(10, ARMING_FAILURE, "MFT255L4<<<BAP", false /* arming failure tune */)
PX4_DEFINE_TUNE(11, PARACHUTE_RELEASE, "MFT255L16agagagag", false /* parachute release */)
PX4_DEFINE_TUNE(12, EKF_WARNING, "MFT255L8ddd#d#eeff", false /* ekf warning */)
PX4_DEFINE_TUNE(13, BARO_WARNING, "MFT255L4gf#fed#d", false /* baro warning */)
PX4_DEFINE_TUNE(14, SINGLE_BEEP, "MFT100a8", false /* single beep */)
PX4_DEFINE_TUNE(15, HOME_SET, "MFT100L4>G#6A#6B#4", false /* home set tune */)
PX4_DEFINE_TUNE(16, SD_INIT, "MFAGPAG", false /* Make FS */)
PX4_DEFINE_TUNE(17, SD_ERROR, "MNBG", false /* format failed */)
PX4_DEFINE_TUNE(18, PROG_PX4IO, "MLL32CP8MB", false /* Program PX4IO */)
PX4_DEFINE_TUNE(19, PROG_PX4IO_OK, "MLL8CDE", false /* Program PX4IO success */)
PX4_DEFINE_TUNE(20, PROG_PX4IO_ERR, "ML<<CP4CP4CP4CP4CP4", true /* Program PX4IO fail */)
双引号里的即为曲调值 如果要让无人机响某种曲调,就include “commander/helper.h” 然后待用set_tune()函数。函数括号里的值为0到20,对应不同的曲调
十六、px4官网中文显示
360浏览器设为兼容模式,选中文
十七、source insight
1.不能跳转
2.中文乱码
3.显示工程文件
新建工程
第一步 第二步 第三步 第四步 选择需要看的代码的文件夹
第五步 第六步 第七步 这个时候可以在软件右侧看到各个代码文件,双击打开文件就可以查看代码,但是代码里的函数无法跳转,这时需要 第八步 第九步 设置显示行号 设置背景色 显示已添加的所有文件的列表
十八、ubuntu下编译qt项目出现cannot find -lGL
ubuntu下编译qt项目出现cannot find -lGL 解决方法 终端输入
locate libGL.so
sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so
十九、pix4无法读取mb12xx传感器数据解决办法
pix4的mb12xx使用的iic总线是#define PX4_I2C_BUS_EXPANSION2 4 pix1的mb12xx使用的iic总线是#define PX4_I2C_BUS_EXPANSION 1
二十、ros设置环境变量
gedit .bashrc
添加自己工作空间的setup.bash即可
二十一、px4固件四旋翼无人机飞的时候按一定频率上下抖动
解决办法 将这个参数改小一点
二十二、gazebo将背景色改为白色
二十三、将Wireframe勾上
更多保姆级PX4+ROS学习视频:https://b23.tv/ZeUDKqy 编译px4 gazebo仿真 make px4_sitl_default gazebo 会自动生成模型文件 然后再执行launch文件
启动mavros gazebo仿真时没有无人机模型
二十四、px4无法修改条件参数解决办法
有些参数(telem2波特率)是条件参数,只有用到相应的端口才能设置对应端口的波特率 以telem2为例,其他的也类似,先把参数设为默认 点击右上角“工具”按钮,点击“重置为载具的默认值” 然后 设置Gps1的接口为telem2,重启飞控,再查看serial参数,即可找到telem2 设置好telem2的波特率后记得把GPS的接口再设回到GPS1
二十五、pixracer飞控连接地面站没有姿态数据
下载px4 1.10.1以上版本固件
二十六、px4设置舵机反向
解决方法:在mix文件中将正负缩放的值取反
或者设置参数PWM_MAIN_REV
二十七、编译px4 bootloader
git clone https://github.com/PX4/Bootloader.git
git submodule sync --recursive
git submodule update --init --recursive
make
二十八、pix使用RTK
将GPS1的端口设置为任意一个可用的串口,
设置该端口的波特率和RTK的波特率一致,或者设为自动。然后将RTK接到串口上即可 如果接收到RTK信号,但长时间不能定点,则将GPS检查关掉,如下 由于rtk的精度比普通GPS高,而飞控在利用ekf融合gps时的默认噪声比较大,因此需要将上述参数改小,比如0.01,具体的值可以查阅rtk手册,如下
rtk使用时如果不能一直保持fix,如下 则可能存在飞控干扰,试着将飞控加一层屏蔽
如果要使用GPS数据定高,将EKF2_HGT_MODE改为GPS
二十九、PX4利用tfmini设置地形跟随
这个参数设为1 以tfmini为例 我这里接的是串口2 串口2的波特率也要设置正确,如果不知道模块波特率,可以设置为auto 在设置telem2的波特率时,如果在serial那一栏找不到telem2的波特率,就先设置GPS的端口为telem2,然后重启,看是否有设置telem2波特率的选项,如果还是没有,就重置所有参数,再设置机架,然后设置GPS的端口为telem2,重启,再设置telem2的波特率。设置完telem2的波特率后,再把GPS的端口设回默认,再把tfmini的端口设为telem2
三十、ubuntu无法新建文本文件
在home目录下的模板文件夹下打开终端
gedit 新建文本文档.txt
保存然后关闭即可
三十一、安装git时报错 依赖没有安装
执行sudo apt-get update
然后再执行sudo apt-get install git
安装成功
三十二、北天RTK使用GGA高程数据
如果rtK的移动站的高度数据不一致,可以使用GGA的高度,在U-CENTER上将下面这个框勾上
三十三、ubuntu1804耳机没声音解决办法
将耳机插主板的音频接口,如果正常会弹出设备 选择弹出的设备即可
三十四、ubuntu安装gcc-arm-linux-gnueabihf编译器
sudo apt-get update
sudo apt-get install gcc-arm-linux-gnueabihf \
g++-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf
三十五、ROS命令突然都不能使用
ROS以前都能正常用,不知为何有关ROS的命令都用不了了,提示类似下面的报错
Command ‘roscore’ not found, but can be installed with:
sudo apt install python-roslaunch
解决办法: 在home目录下执行
gedit .bashrc
将下图语句移到下面 如下图 然后
source .bashrc
就可以了,问题的原因还不清楚
三十六、ROS编译报错conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’
解决办法:
sudo mv /usr/include/flann/ext/lz4.h /usr/include/flann/ext/lz4.h.bak
sudo mv /usr/include/flann/ext/lz4hc.h /usr/include/flann/ext/lz4.h.bak
sudo ln -s /usr/include/lz4.h /usr/include/flann/ext/lz4.h
sudo ln -s /usr/include/lz4hc.h /usr/include/flann/ext/lz4hc.h
三十七、ubuntu添加用户
进入设置->Details->Users,先点击右上角Unlock输入密码解锁 点击Add USer… 然后设置用户名称,password选择第一个即可,最后点击Add 然后切换用户 然后选择刚才创建的用户登录,第一次登录需要输入两遍密码对密码进行设置,密码长度不能低于6个,后面如果想改成更短的密码,可以用下面的命令修改
sudo passwd 用户名
如果想开机不输入密码自动进入某个用户,选择需要开机自动进入的用户,使能Automatic Login即可
三十八、启动roscorec出现报错 error while loading shared libraries: libroscpp.so: cannot open shared object file: No such file or directory
解决办法: 在.bashrc上添加下面一行 export LD_LIBRARY_PATH=/opt/ros/melodic/lib
三十九、ubuntu挂载固态硬盘
先
df -h
查看固态硬盘的设备名称,如/dev/sdb 然后使用下面的命令进行挂载
sudo mount 固态硬盘的设备名称 需要挂载的目录
四十、ubuntu识别不了U盘
先不插U盘,执行:
ls /dev/sd*
再插上U盘,执行上面的语句,比较不同。看U盘是哪个设备名 然后格式化:
sudo mkfs -t ext4 设备名
再挂载
sudo mount 设备名 需要挂载的目录
四十一、ubuntu使用sudo时不需要输入密码
如果想在执行sudo时不需要输入密码,执行
sudo gedit /etc/sudoers
将%sudo ALL=(ALL:ALL) ALL
改成%sudo ALL=(ALL) NOPASSWD: ALL
保存退出即可