ROS机器人实用技术与常见问题解决

问题速查手册(时实更新)更加全面丰富的问题手册记录

1.机器人使用GPARTED挂载未分配空间

  1. 需要在图型界面下操作,建议使用no machine连接 安装gparted磁盘分区工具,
sudo apt-get install gparted -y
  1. 启动软件

sudo gparted
  1. 点击磁盘/内存卡,右键已分配空间,点击Resive/Move

  1. 将出现的滑块条扡到最右边,点击确认
  2. 点击应用按钮,一定要点,否则不生效。

  1. 再次查看磁盘,发现没有分配的空间已挂载到系统

2. 系统内存不足,使用交换内存方法

嵌入式系统在运行视觉导航建图及跑图形界面时,非常消耗内存,这时可能需要设置交换内存,将一部分存储空间作为内存来用:

free -m  #查看是否已有交换内存
mkdir swap  #新建文件夹
cd swap
sudo dd if=/dev/zero of=sfile bs=1024 count=1000000 #设置1G交换内存,不建议超过2G
sudo mkswap sfile   #生成文件
sudo swapon sfile   #启用交换内存
free -m     #查看是否成功

分别代表,全部内存(MB),已使用内存,空闲内存

swap则代表当前本机交换内存,为零代表未设置

注意:

1. 每次开机后都要重新设置才能生效

  1. 交换内存不是越大越好,不建议超过2G。设置后会减少内存压力,但会使系统变慢
  2. 交换内存会使内存卡读写变多,寿命变短。
  3. 当系统运行正常时,不建意使用交换内存,设置交换内存只会让系统变慢,

3. 使用命令配置无线网络(在Xshell中进行)

配置无线网络视频教程

首先通过有线网络或串口登录到设备上

使用ifconfig命令检查当前的网络设备和连接状态,或通过iwconfig命令查找当前设备中的无线网络设备。

如下,其中wlan0就是一张无线网卡。

bingda@robot-srpi3x:~$ ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.31.127  netmask 255.255.255.0  broadcast 192.168.31.255inet6 fe80::3aea:a1e:1c0c:3408  prefixlen 64  scopeid 0x20<link>ether 00:11:22:73:8b:64  txqueuelen 1000  (Ethernet)RX packets 54371  bytes 41065706 (41.0 MB)RX errors 0  dropped 1148  overruns 0  frame 0TX packets 105234  bytes 117558020 (117.5 MB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0device interrupt 43  base 0xa000  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 988  bytes 334612 (334.6 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 988  bytes 334612 (334.6 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500ether 08:e9:f6:ae:d8:04  txqueuelen 1000  (Ethernet)RX packets 17237  bytes 5042234 (5.0 MB)RX errors 0  dropped 934  overruns 0  frame 0TX packets 1034  bytes 380898 (380.8 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0bingda@robot-srpi3x:~$ iwconfig 
lo        no wireless extensions.eth0      no wireless extensions.wlan0     IEEE 802.11  ESSID:off/any  Mode:Managed  Access Point: Not-Associated   Tx-Power=31 dBm   Retry short limit:7   RTS thr:off   Fragment thr:offPower Management:onsit0      no wireless extensions.tunl0     no wireless extensions.

接下来通过nmcli工具配置wifi连接,其中your_ap是需要连接的wifi热点名,your_password是热点密码

Tips:在命令中输入connect后可以使用TAB自动补全工具列出周围的热点

sudo nmcli device wifi connect your_ap password your_password

输入完成后执行,提示”Device 'wlan0' successfully activated with 'd6a46eb9-c0e3-4c60-9f2b-d6f7ee32de02'.“即为连接成功。

4.修改机器人的主机名

bingda为用户名,robot-rpi4为主机名,一般不建议修改用户名,会涉及到很多权限问题

但主机名是可以修改的

bingda@robot-rpi4:~$

sudo vim /etc/hostname

如修改成robot-rpi4-1

修改成所需的,任何情况下都不建议设置成中文字符,保存后重启机器人主机即可生效

5.apt安装和源码安装功能

例如rtabmap

【ros】rtabmap源码安装_rtabmap安装_星丶星茶会的博客-CSDN博客

1.apt安装与卸载

sudo apt-get install ros-melodic-rtabmap ros-melodic-rtabmap-ros
sudo apt-get remove ros-melodic-rtabmap ros-melodic-rtabmap-ros

2.源码安装

cd ~
git clone https://github.com/introlab/rtabmap.git rtabmap
cd rtabmap/build
cmake -DCMAKE_INSTALL_PREFIX=~/pcb2pgm_ws/devel ..
make -j4
make installcd ~/pcb2pgm_ws
git clone https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros
catkin_make -j1 

6.如何修改小车的导航配置相关参数

可以参考:

如图,进入robot_navigation/param/对应车型

出现常见配置

如各文件名称所示,此处修改对应车型的对应配置

所有参数不能没有限制乱配,其参数量受车型及处理能力影响,特别是增加速度的操作必须逐步增加测试,否则会导致导航无法运行

此处配置文件即是对应的导航文件。小车所用算法均为二进制包安装方式,即无法看到源码,具体解释参考本文第5条,如果想使用源码安装,可以参考以下链接进行使用。更改算法源码及使用源码编译均需要有足够的ROS和UBUNTU使用经验,源码安装及修改请自行查找资料,不提供技术支持。

  1. 冰达仓地址:https://gitee.com/bingda-robot/
  2. move_base全局规划: https://github.com/ros-planning/navigation.git
  3. DWA局部规划:https://github.com/ros-planning/navigation
  4. TEB规划:https://github.com/rst-tu-dortmund/teb_local_planner.git
  5. gmapping建图: https://github.com/ros-perception/slam_gmapping.git
  6. cartographer建图: https://github.com/cartographer-project/cartographer_ros.git
  7. hector建图:https://github.com/tu-darmstadt-ros-pkg/hector_slam.git
  8. karto建图:https://code.ros.org/svn/ros-pkg/stacks/slam_karto/trunk
  9. RtabmapVSLAM: https://github.com/introlab/rtabmap.git

https://github.com/introlab/rtabmap_ros.git

  1. NCNN: https://github.com/Tencent/ncnn/

所有功能算法均可百度获得链接,使用及源码编译方法也可百度。

7.20.04 人脸识别例程出错

opencv版本命名的改动,导致找不到opencv包,分别执行下列命令设置一个软链接即可

sudo apt install opencv-data

sudo ln -s /usr/share/opencv4/ /usr/share/opencv

8.桌面模式要求输入密码

sudo usermod -a -G bluetooth bingda

sudo usermod -a -G netdev bingda

9.gazebo在虚拟机里很卡

可能是因为硬件加速造成的不兼容或其它问题,可以尝试关闭硬件加速

参考如下(来自网上,不保证有效)

10.有时系统明明启动,但是无法连接nomachine

出现这种情况有多种原因:

  1. 路由器有防火墙,在路由器里关闭防火墙。实测水星 360 小米三个路由器经常性发生连接异常,尽量避免使用以上三种品牌路由器
  2. 电路网络必须选择专用模式,不要用公用模式
  1. 或以远程SSH登录到小车,执行

sudo /usr/NX/bin/nxserver --restart

[sudo] password for bingda:

NX> 162 Service: nxd already disabled.

NX> 162 Service: nxserver already disabled.

NX> 162 Service: nxnode already disabled.

NX> 111 New connections to NoMachine server are enabled.

NX> 161 Enabled service: nxserver.

NX> 161 Enabled service: nxnode.

NX> 161 Enabled service: nxd.

  1. 如果3有效,则进入后,点上方nomahine show main window

如图,点击setting -》status 勾选 start the server at system startup开机自启动即可

11.如何更新冰达ROS的功能包

到达功能包下,针对新系统

  1. 移动到功能包下

cd ~/catkin_ws/src/bingda_ros1_noetic

  1. 恢复功能包状态,会删除已建好的地图及更改的代码,请注意备份

git reset --hard

  1. 强制更新功能包

git pull

如果系统比较老,没有/bingda_ros1_noetic统一功能包目录,则需进入每个功能包执行上述2-3命令

12.JETSON NANO无法识别无线网卡, 没有WLAN0 WIFI

sudo gedit /boot/extlinux/extlinux.conf

增加pcie_aspm=off保存后重启,如果不能解决修改pcie_aspm=on ,保存后重启

13.修改进代码不能用,怎么快速恢复代码

冰达的ROS包都有使用git ,使用git 进行恢复

cd ~/catkin_ws/src/bingda_xxx 进入功能包

git reset --hard 强行恢复

git pull 拉取最新代码(需联网)

如果仍不能恢复则直接

14.主板和控制器的串口连接 ubuntu串口映射

ubuntu的物理硬件端口是要权限的,并且不同设备命名不一样,所以我们需要做UDEV映射

roscd base_control/script/udev可以进入udev目录

根据不同板卡 sudo ./***.sh即可完成,执行后重启生效

注意:冰达所有镜像均已执行,一般情况如果出现找不到端口,可以直接刷机恢复

15.冰达的编程实战代码地址

B站视频:ROS编程入门ROS机器人中级-ROS编程入门_哔哩哔哩_bilibili

git clone bingda_tutorials: ROS核心教程--初级教程

B站视频:机器人编程实战ROS机器人进阶-机器人编程实战_哔哩哔哩_bilibili

git clone bingda_application: 冰达机器人进阶课程例程参考源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/833183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用vue脚手架创建项目

前言 使用vue搭建项目的时候&#xff0c;我们可以通过对应的cmd命令去打开脚手架&#xff0c;然后自己配置对应的功能插件 说明&#xff1a; 要使用Vue脚手架创建项目&#xff0c;你需要先确保你已经安装了Node.js和npm&#xff08;Node.js的包管理器&#xff09;。然后&#…

热敏电阻怎么进行性能测试?并以LabVIEW为例进行说明

过程也可用于执行热敏电阻测量。RTD和热敏电阻遵循非常相似的功能原理&#xff0c;测量步骤与下面提供的步骤相同。有关热敏电阻的更多信息&#xff0c;请参阅本文档。 查找设备引脚排列 在连接任何信号之前&#xff0c;请找到您的设备引脚排列。 打开NI MAX并展开设备和接口。…

视频素材库在哪里找免费手机版?8个可以用手机浏览的素材网

在视觉内容占据主导地位的今天&#xff0c;合适的视频素材可以大大提升项目的吸引力和效果。以下列出的视频素材网站为广告制作者、社交媒体策略师及电影制作人提供了从传统到现代风格的各种视频素材选择&#xff0c;满足不同的创作需求。 1. 蛙学府&#xff08;中国&#xff…

PyGame 文字显示问题及解决方法

在 Pygame 中显示文字时可能会遇到一些问题&#xff0c;例如文字显示不清晰、字体不正确或者文字位置不准确等。以下是一些常见的问题及其解决方法&#xff0c;具体情况可以看看情况。 1、问题背景 一位用户在使用 PyGame 库进行游戏开发时&#xff0c;遇到了一个问题&#xf…

服务器关机前未退出xampp导出MySQL无法启动

背景解决 五一放假&#xff0c;服务器关机了&#xff0c;但是关机前没有正常关闭数据库服务&#xff0c;导致数据库无法启动&#xff01; 查看错误日志如下 从报错信息可以看出是MySQL这个服务相关文件出现问题了&#xff0c;解决思路&#xff1a;重新安装xampp 重新安装xam…

automa警惕通过点击元素打开新的标签页,因为你可能会被他蒙蔽!

大家好&#xff0c;我是大胡子&#xff0c;专注于研究RPA实战与解决方案。 我们经常用到automa里面的【点击元素】组件&#xff0c;但要警惕通过点击元素打开新的标签页&#xff0c;例如下面这个场景&#xff0c;点击公众号的图文消息&#xff0c;之后&#xff0c;要自动输入标…

self-attention 的 CUDA 实现及优化 (上)

self-attention 的 CUDA 实现及优化 (上) 导 读 self-attention 是 Transformer 中最关键、最复杂的部分&#xff0c;也是 Transformer 优化的核心环节。理解 self-attention &#xff0c;对于深入理解 Transformer 具有关键作用&#xff0c;本篇主要就围绕 self-attention 展…

QT--2

Qt界面设计 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口相关设置this->resize(680,520);this->setFixedSize(680,520);this->setWindowTitle("Tim");this->setWindowFla…

ILI9341显示驱动芯片的使用

ILI9341是一种常见的TFT LCD显示驱动芯片&#xff0c;它在众多的应用中都有广泛的使用。这种芯片的一个显著特点是它支持16位RGB565颜色&#xff0c;这意味着它可以显示多达65536种不同的颜色。这使得ILI9341能够提供鲜艳、生动的色彩效果&#xff0c;对于需要表现丰富色彩的应…

【进程终止】退出信号 | 三种退出情况 | 如何进程终止returnexit_exit

目录 退出码 退出信号 进程终止情况3 如何进程终止 return退出 库函数exit 系统调用函数_exit ​exit和_exit的区别缓冲区 exit _exit 退出码 回顾上篇 代码跑完&#xff0c;结果正确&#xff08;退出码为0&#xff09;代码跑完&#xff0c;结果不正确&#xff08;退…

SpringDI方式及Redis应用场景的分享

1、为什么Spring和IDEA 都不推荐使用 Autowired 注解 大家在使用IDEA开发的时候有没有注意到过一个提示&#xff0c;在字段上使用Spring的依赖注入注解Autowired后会出现如下警告Field injection is not recommended (字段注入是不被推荐的)&#xff1b;但是使用Resource却不会…

Python基础详解二

一&#xff0c;函数 函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现某个功能的代码段 def myMethod(data):print("数据长度为",len(data))myMethod("dsdsdsds") 函数的定义&#xff1a; def 函数名(传入参数):函数体return 返回值 def m…

关系型数据库MySQL开发要点之多表设计案例详解代码实现

什么是多表设计 项目开发中 在进行数据库表结构设计时 根据数据模型和业务关系 会根据业务需求和业务模块之间的关系分析设计表结构 由于业务之间互相关联 所以表结构之间也存在着各种联系 主要分为以下三种 一对多 每个部门下是有多个员工的 但是一个员工只能归属一个部…

CMakeLists.txt语法规则:foreach 循环基本用法

一. 简介 cmake 中除了 if 条件判断之外&#xff0c;还支持循环语句&#xff0c;包括 foreach()循环、while()循环。 本文学习 CMakeLists.txt语法中的循环语句。 CMakeLists.txt语法中 有两种 循环实现方式&#xff1a;foreach循环与 while循环。 二. CMakeLists.txt语法规则…

免费https证书申请

HTTPS证书&#xff0c;也称为SSL证书&#xff08;Secure Sockets Layer&#xff09;或TLS证书&#xff08;Transport Layer Security&#xff09;&#xff0c;是一种数字证书&#xff0c;用于在互联网通信中确保数据传输的安全性、完整性和真实性。它是基于公钥基础设施&#x…

RISCV 外部GCC 工具链安装@FreeBSD15

在交叉编译的时候&#xff0c;可以使用FreeBSD15默认的工具链&#xff1a;LLVM 也可以使用GCC工具链&#xff0c;GCC可以使用现成pkg包安装&#xff0c;也可以编译安装。 LLVM的特点是高移植性和高效&#xff0c;但学习成本高。GCC的特点是成熟稳定&#xff0c;但优化能力有限…

基于FPGA的数字电子钟VHDL代码Quartus仿真

名称&#xff1a;基于FPGA的数字电子钟VHDL代码Quartus仿真&#xff08;文末获取&#xff09; 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a; 数字电子钟 1)设计一个能显示秒、分、时的24小时数字钟 2)用数码管显示出时&#xff0c;分&#xff0c;…

Unity射击游戏开发教程:(10)创建主界面

主界面开发 玩游戏时,主菜单是事后才想到要做的。实际上几乎每个游戏都有一个主界面。如果你点击打开游戏并立即开始游戏,你会感到非常惊讶。本文将讨论如何创建带有启动新游戏的交互式按钮的主界面/主菜单。 主菜单将是一个全新的场景。我们将添加一个 UI 图像元素,并在图像…

java中的变量、数据类型、人机交互

变量 变量要素 1、类型&#xff1b;每一个变量都需要定义类型&#xff08;强类型&#xff09;其它语言有弱类型&#xff08;js&#xff09; 2、变量名&#xff1b; 3、存储的值&#xff1b; 声明方式&#xff1a; 数据类型 变量名 变量值&#xff1b; public static vo…

Linux磁盘IO、网络IO、零拷贝详解

一、什么是I/O&#xff1f; 在计算机操作系统中&#xff0c;所谓的I/O就是输入&#xff08;input&#xff09;和输出&#xff08;output&#xff09;,也可以理解为读&#xff08;read&#xff09;和写&#xff08;write&#xff09;,针对不同的对象&#xff0c;I/O模式可以划分…