航天智慧物流比赛过程问题记录

保存建好的地图

rosrun map_server map_saver -f filename

科大讯飞提供的步骤,还没搞懂参数

rosrun map_server map_saver --occ 70 --free 30 -f mapname

激光扫描和地图产生偏移

误差产生会主要来自于,里程计累计误差,ros的amcl会对这个误差进行一定修正,如果前面误差过大、amcl修正不到位,就会导致这个问题
误差来源:
里程计原数据不准
imu原数据不准
robot_pos_ekf融合不好
amcl定位不太好

检测是否到达目标点不准,退不出导航点

原因:我在吧dwa改成teb时候,仅仅修改了参数文件下载路径,忘记修改上面的节点配置了,座椅导致了这个问题

标定

odom坐标系和map坐标系偏差

根本原因就是amcl修正不对,因为odom坐标实际上时通各种里程数据推算出来的,长时间累加后出现偏差很正常,amcl中则会通过蒙特卡洛定位算法,对这个偏差进行修正,这里效果差,就是它修正不对

自定义消息时候,python导入模块时出现报错

ImportError: No module named  ×××.msg

ros使用python时,导入其他功能包的消息或服务

直接
from 功能包名.msg import ××.msg
例如

from qingzhou_pc_connect.msg import pub_data

vscode里面会报错,别管他,但是千万记得弄完之后 ,source一下

roslaunch报错

RLException: [saidao.launch] is neither a launch file in package [qingzhou_saidao] nor is [qingzhou_saidao] a launch file name

安装teb_local_planner

sudo apt-get install ros-melodic-teb-local-planner
rosdep install  teb_local_planner

通过程序发布目标点时候,小车没有反应

原因:注册发布者和action之后,需要延时一秒左右

set_pose_pub = rospy.Publisher('/initialpose', PoseWithCovarianceStamped, queue_size=5)
move_base = actionlib.SimpleActionClient("move_base", MoveBaseAction)
move_base.wait_for_server(rospy.Duration(60))

诡异问题,排查后是自己傻逼

    stop_line = [6.95,4.9,0.00]
    slow_line = [8.55,2.1,-90.00]

    def stop_line(self):
        if self.mission_state[2] == 0:
            print("stop line")
            self.goto(self.stop_line)
            self.mission_state[2] = 1

    def slow_line(self):
        if self.mission_state[3] == 0:
            print("slow line")
            self.goto(self.slow_line)
            self.mission_state[3] =1

我的目标点名称和我的函数名称重复了

玄学问题1

那个自己导入stl到gazebo的功能包,我仅仅改了下stl文件,突然就不好使了,然后重启它好了,连着按个bringup使用tab不出来的问题也要了

安装pip

sudo apt-get install python-pip

更新pip

pip install --upgrade pip

安装opencv

pip install opencv-python

安装opencv-contrib-python报错

pip install opencv-contrib-python

报错:

ERROR: Could not find a version that satisfies the requirement opencv-contrib-python (from versions: none)
ERROR: No matching distribution found for opencv-contrib-python

反正实验了无数方法,各种花样报错,隔了几天,我再测试,用常规安装,从阿里云安装,没有报错了,出现了下面

Requirement already satisfied: opencv-contrib-python in ./.local/lib/python3.6/site-packages (4.5.2.54)
Requirement already satisfied: numpy>=1.19.3 in ./.local/lib/python3.6/site-packages (from opencv-contrib-python) (1.19.5)

仔细一看,他好想是检测出在python3下面安装好了,但是python3下面我本来我就顺利安装的,非常莫名奇妙

nano切换python3之后,Illegal instruction(cpre dumped)报错

可能是跟nano硬件架构有关,解决:

export OPENBLAS_CORETYPE=ARMV8

若要一劳永逸,那就加到.bashrc 里面

原文链接

无法打开CSI摄像头

使用csi摄像头检测命令可以打开,没有问题:
测试1:

DISPLAY=:0.0 gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=3280, height=2464, format=(string)NV12, framerate=(fraction)20/1' ! nvoverlaysink -e

测试2:

 nvgstcapture 

(1)但是使用python3就打不开,用python2是可以打开的
(2)测试发现,使用python3时候,加上sudo,是可以打开的,原来,加上sudo之后,会变成调用python2解释器
(3)再换USB摄像头,发现python3也可以正常打开显示

python 和sudo python

我现在有python2.7和python3.6,把默认配置成3.6时候,我用python调用的就是3.6,如果用sudo python,调用的就是2.7
简直玄学

PIP3不能安装numpy,也不能安装opencv-python

解决,更新pip3

python3 -m pip install --upgrade pip

在一个功能包中引用另一个功能包

在需要引用的功能包的pakage.xml中加入:

  <build_depend> pakage_name </build_depend>
  <build_export_depend> pakage_name </build_export_depend>
  <exec_depend> pakage_name </exec_depend>

在需要引用的功能包的CMakeLists.txt中加入:

find_package(catkin REQUIRED COMPONENTS
  pakage_name
)

ros.sleep的一个问题

这种写法,写出来程序打印不正常

    ros::Rate r(10);
	while(ros::ok())
	{
        r.sleep();
        printf("loop_main \n");
	}

这样写才正常

    ros::Rate r(10);
	while(ros::ok())
	{
        printf("loop_main \n");
		r.sleep();
	}

编译报错

-- Could NOT find cmake_modules (missing: cmake_modules_DIR)
-- Could not find the required component 'cmake_modules'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by "cmake_modules"
  with any of the following names:

    cmake_modulesConfig.cmake
    cmake_modules-config.cmake

  Add the installation prefix of "cmake_modules" to CMAKE_PREFIX_PATH or set
  "cmake_modules_DIR" to a directory containing one of the above files.  If
  "cmake_modules" provides a separate development package or SDK, be sure it
  has been installed.

解决:

sudo apt-get install ros-melodic-cmake-modules

编译teb出现报错

unable to find SuiteSparse

解决:

sudo apt-get install libsuitesparse-dev

报错:

 could not find libg2o

解决:

sudo apt-get install ros-melodic-libg2o

/usr/bin/env: “python\r”: 没有那个文件或目录

1…异常原因分析:
一开始以为是sublime的格式设置问题,以为win10和ubuntu里面的缩进格式设置的不一样(TAB和空格),这个问题也曾经困扰过我。后来发现不是这个问题。在百度了该异常代码后发现是DOS系统下和Linux系统下对于换行键的表示不同。

在windows下,用连续的’\r’和’\n’两个字符进行换行。’\r’为回车符,’\n’为换行符,比如原来的’aaabbb’更改为’aaa \n bbb’后输出的结果为:aaa 换行 bbb。

!/usr/bin/env python\r\n
在Linux下,用’\n’进行换行。

!/usr/bin/env python\n
所以windows下的程序会认为#!/usr/bin/env python是一行,而linux会认为#!/usr/bin/env python\r是一行。

2.异常解决
看了很多网上的教程,说用VIM编辑器进行修改,由于我不是很常用VIM编辑器,尝试了几次并没有成功。后来发现可以用dos2unix这个包进行转换。
首先通过apt-get命令安装dos2unix的包,然后通过dos2unix这个命令即可完成转换。

sudo apt-get install dos2unix

用法:

dos2unix filename
  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值