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 ![](https://file.jishuzhan.net/article/1788138573271142401/23a47242cd549663bf3d7871e04fd1af.webp) 如图,点击setting -》status 勾选 start the server at system startup开机自启动即可 ![](https://file.jishuzhan.net/article/1788138573271142401/75a2d50793d16599a5181feefeebb6c8.webp) #### 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 ![](https://file.jishuzhan.net/article/1788138573271142401/cf02e80e001fa3da2f9e5dcadd1a4f6b.webp) 增加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目录 ![](https://file.jishuzhan.net/article/1788138573271142401/6bd1cba12a81e0dbc8635462c349aa68.webp) 根据不同板卡 sudo ./\*\*\*.sh即可完成,执行后重启生效 注意:冰达所有镜像均已执行,一般情况如果出现找不到端口,可以直接刷机恢复 #### 15.冰达的编程实战代码地址 B站视频:ROS编程入门[ROS机器人中级-ROS编程入门_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1pp4y1t7YA/?spm_id_from=333.999.0.0 "ROS机器人中级-ROS编程入门_哔哩哔哩_bilibili") git clone [bingda_tutorials: ROS核心教程--初级教程](https://gitee.com/bingda-robot/bingda_tutorials.git "bingda_tutorials: ROS核心教程--初级教程") B站视频:机器人编程实战[ROS机器人进阶-机器人编程实战_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1XV411J7xZ/?spm_id_from=333.999.0.0 "ROS机器人进阶-机器人编程实战_哔哩哔哩_bilibili") git clone [bingda_application: 冰达机器人进阶课程例程参考源码](https://gitee.com/bingda-robot/bingda_application.git "bingda_application: 冰达机器人进阶课程例程参考源码")

相关推荐
热爱运维的小七几秒前
从数据透视到AI分析,用四层架构解决运维难题
运维·人工智能·架构
卧式纯绿12 分钟前
每日文献(八)——Part one
人工智能·yolo·目标检测·计算机视觉·目标跟踪·cnn
巷95518 分钟前
OpenCV图像形态学:原理、操作与应用详解
人工智能·opencv·计算机视觉
深蓝易网1 小时前
为什么制造企业需要用MES管理系统升级改造车间
大数据·运维·人工智能·制造·devops
xiangzhihong81 小时前
Amodal3R ,南洋理工推出的 3D 生成模型
人工智能·深度学习·计算机视觉
狂奔solar1 小时前
diffusion-vas 提升遮挡区域的分割精度
人工智能·深度学习
资源大全免费分享1 小时前
MacOS 的 AI Agent 新星,本地沙盒驱动,解锁 macOS 操作新体验!
人工智能·macos·策略模式
跳跳糖炒酸奶2 小时前
第四章、Isaacsim在GUI中构建机器人(2):组装一个简单的机器人
人工智能·python·算法·ubuntu·机器人
AI.NET 极客圈2 小时前
AI与.NET技术实操系列(四):使用 Semantic Kernel 和 DeepSeek 构建AI应用
人工智能·.net