资讯详情

Ubuntu、ROS、PX4常见问题及其解决办法

文章目录

  • 前言
  • 一、编译时报错误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保存退出即可

标签: sh8c15连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台