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

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

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

  1. 需要在图型界面下操作,建议使用no machine连接 安装gparted磁盘分区工具,

    sudo apt-get install gparted -y

  2. 启动软件

vb 复制代码
`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. 每次开机后都要重新设置才能生效

  2. 交换内存不是越大越好,不建议超过2G。设置后会减少内存压力,但会使系统变慢

  3. 交换内存会使内存卡读写变多,寿命变短。

  4. 当系统运行正常时,不建意使用交换内存,设置交换内存只会让系统变慢,

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

配置无线网络视频教程

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

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

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

bingda@robot-srpi3x:~$ ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.31.127  netmask 255.255.255.0  broadcast 192.168.31.255
        inet6 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 0
        TX packets 105234  bytes 117558020 (117.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 43  base 0xa000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::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 0
        TX packets 988  bytes 334612 (334.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 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 0
        TX packets 1034  bytes 380898 (380.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

bingda@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:off
          Power Management:on
          
sit0      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 install

cd ~/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: 冰达机器人进阶课程例程参考源码

相关推荐
IT古董4 分钟前
【漫话机器学习系列】014.贝叶斯法则(Bayes Theorem)
人工智能·机器学习
Crossoads1 小时前
【汇编语言】端口 —— 「从端口到时间:一文了解CMOS RAM与汇编指令的交汇」
android·java·汇编·深度学习·网络协议·机器学习·汇编语言
拓端研究室1 小时前
【专题】2024年悦己生活消费洞察报告汇总PDF洞察(附原数据表)
人工智能
月眠老师2 小时前
拓展AI超级智能后的人类生活场景
人工智能·生活
是十一月末2 小时前
Opencv实现图片的边界填充和阈值处理
人工智能·python·opencv·计算机视觉
Amarantine、沐风倩✨2 小时前
设计一个监控摄像头物联网IOT(webRTC、音视频、文件存储)
java·物联网·音视频·webrtc·html5·视频编解码·七牛云存储
机智的叉烧3 小时前
前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
人工智能·学习·机器学习
凳子花❀3 小时前
强化学习与深度学习以及相关芯片之间的区别
人工智能·深度学习·神经网络·ai·强化学习
泰迪智能科技014 小时前
高校深度学习视觉应用平台产品介绍
人工智能·深度学习
盛派网络小助手5 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#